Upgrade to Pro — share decks privately, control downloads, hide ads and more …

2026_講義_コンピューティングデザイン論_第1回外部公開版.pdf

Avatar for Hisashi Ishihara Hisashi Ishihara
October 02, 2026
32

 2026_講義_コンピューティングデザイン論_第1回外部公開版.pdf

コンピューティングデザイン論第1回(2026/9/30)の講義スライド(一部改変版)です

Avatar for Hisashi Ishihara

Hisashi Ishihara

October 02, 2026

Transcript

  1. 講義概要(シラバスからの抜粋) 2 水曜(オンデマンド)・2単位・全14回  高度かつ複雑な数理演算を扱うためのコンピューティング技術を活用し、 より多彩なデザインやアート制作を実現するための技術的枠組みを学ぶ  まず、MATLABとPythonの基本を習得し、そのうえで、MATLAB App DesignerとROS2の扱い方を体験的に理解

     これらの習得を土台として、学部で修得した技術と知識を統合・発展させ、 新たなマルチモーダルな表現や対話および体験を統合的に生み出す力を養う  何らかのプログラミング言語は習得していることを推奨  第5回以降は各自のPC(Windows推奨)に開発環境を整備する必要あり  Windows上にROS2を動かせるLinux環境(WSL2など)を導入します。Macの方は応相談。
  2. MATLABとPythonを用いた学習ツリー 3 MATLABとPythonを行き来しつつ最後に統合 統合システム開発(10~14回) •学んだ内容を統合したシステム開発 •自身の研究での利用も意識 システムの大規模化に向けた構成法を理解 各PCにMATLABおよび MATLAB App

    Designer を整備して利用 ※Macでも可 ブラウザ上で動作する MATLAB Onlineを使用 ※Macでも可 MATLAB応用(5・6回) •MATLAB App Designer導入 •GUI画面の開発 •GUI画面でのデータ操作 MATLAB基礎(1・2回) •データ表現と基本的演算 •機能モジュール化と可視化 基礎を踏まえて 実践的・本格的な システム実現法を理解 共通点と相違点を 整理しながら プログラミング言語の 基本を理解 ※ROS2は伊東先生 ご担当 Python応用(7~9回) •ROS2開発環境整備 •ROS2の設計思想と構成 •ROS2でのデータ通信 Python基礎(3・4回) 各PCにPythonおよび ROS2開発環境を整備して 利用 ※ここでWindows上に Linux環境を構築 ブラウザ上で動作する •データ表現と基本的演算 JupyterLiteを使用 •機能モジュール化と可視化 ※Macでも可
  3. コンピューティング技術 情報システムの実現を支える重要技術  情報システム  組織体(または社会・個人)の活動に必要な情報の収集・蓄積・処理・ 伝達・利用にかかわる仕組み [情報システム学会]  企業情報システム:販売管理システム・在庫管理システム・顧客管理システムなど

     社会情報システム:交通管制システム・座席予約システム・預金口座システムなど  情報通信ネットワークを活用し、様々なデータを収集・共有し、伝達 することで運用されるシステム [高等学校情報科「情報Ⅱ」教員研修用教材情報II]  SNS・グループチャット・eラーニングなど  コンピューティング技術  コンピュータを使用した情報の処理や解析の技術  入力、処理、出力をコンピュータに命令する技術 4
  4. 情報システムの構成の大枠➀ 5 ネットワークを介して人・環境・コンピュータが繋がる LAN、インターネットなど Windows、MacOS、 Linuxなど 開発者 ユーザ 環境 通信装置

    ハードウェア 応用ソフトウェア (Application) モデム/ONU、 ルータなど 基盤ソフトウェア (Operating System) 入出力装置 演算装置・記憶装置 コンピュータ(ノイマン型コンピュータ) 通信装置 通信装置 ネット ワーク 通信装置
  5. 情報システムの構成の大枠➁ 6 アプリケーションの導入でコンピュータの機能が追加 開発者 ユーザ 環境 ハードウェア Excelやゲームなどに加 えて、MATLABやPython などの開発ツールも。

    通信装置 応用ソフトウェア (Application) 通信装置 NEW ! 基盤ソフトウェア (Operating System) 入出力装置 演算装置・記憶装置 コンピュータ(ノイマン型コンピュータ) 通信装置 ネット ワーク 通信装置
  6. 情報システムの構成の大枠➂ 7 多数のアプリケーションの通信でさらに高機能化 別のアプリケーション群の 通信や管理を実現するもの プロセス間通信 を特にミドルウェアと呼ぶ。 MySQLやROS2など。 通信装置 開発者

    ユーザ 環境 ハードウェア 通信装置 応用ソフトウェア (Application) 基盤ソフトウェア (Operating System) 入出力装置 演算装置・記憶装置 コンピュータ(ノイマン型コンピュータ) 通信装置 ネット ワーク 通信装置
  7. 情報システムの構成の大枠④ 8 各アプリケーションは「データと処理」の連なり データ 処理 プロセス間通信 通信装置 開発者 ユーザ 環境

    ハードウェア 通信装置 応用ソフトウェア (Application) 基盤ソフトウェア (Operating System) 入出力装置 演算装置・記憶装置 コンピュータ(ノイマン型コンピュータ) 通信装置 ネット ワーク 通信装置
  8. 本講義での コンピューティングデザイン:情報システムのためのプログラミング 全体を見据えながらデータと処理の流れを設計する データ 命令文の構成の設計= コンピューティング デザイン 処理 プロセス間通信 通信装置

    開発者 実装 = プログラミング ユーザ 環境 ハードウェア 通信装置 応用ソフトウェア (Application) 基盤ソフトウェア (Operating System) 入出力装置 演算装置・記憶装置 コンピュータ(ノイマン型コンピュータ) 通信装置 ネット ワーク 通信装置 9
  9. ひとつの視点 10 情報システム≒生命システム  様々な要素が組織的に繋がりあい大規模化して機能を獲得 情報システム 固有の状態や能力を持つ最小要素 変数・命令文 生体システム 核・細胞小器官

    固有の状態や能力を持つ最小要素 関数 細胞 特有の機能を持つ構造要素 オブジェクト 組織 筋組織・神経組織・結合組織など オブジェクトを集めて個別実行できる形にしたもの モジュール 器官 複数組織からなる機能構造物 モジュールを組み合わせて高度機能を獲得したもの アプリケーション 器官系 1つの情報装置 コンピュータ 個体 人・環境・別コンピュータも含む 情報システム 生命システム 特有の機能を持つ構造要素 多様な状態とそれらを扱う関数をまとめたもの 関連しあって大きな機能を実現するシステム 1つの生命体 生命体を維持する環境も含む
  10. 各授業回の位置づけ 12 関数化・モジュール化・ネットワーク化を段階的に 情報システム 固有の状態や能力を持つ最小要素 特有の機能を持つ構造要素 多様な状態とそれらを扱う関数をまとめたもの 変数・命令文 関数 オブジェクト

    オブジェクトを集めて個別実行できる形にしたもの モジュール モジュールを組み合わせて高度機能を獲得したもの アプリケーション 関数化による構造設計 第1・2回(MATLAB基礎) 第3・4回(Python基礎) オブジェクト化・モジュール化による構造設計 第5・6回(MATLAB App Designer) ネットワーク化による構造設計 第7~9回(ROS2) 1つの情報装置 コンピュータ 構造設計演習 人・環境・別コンピュータも含む 情報システム 研究実践 第10~14回(演習課題)
  11. デザインの最小要素:「変数」と「命令文」 Variable Value 13 Command 変数が値を保持。命令文が値を利用・加工・転送。  変数:データ読み書き用の記憶域。固有の名前で 識別される。 

    値:数値、文字列、ブール値(真偽値)など様々  命令文:コンピュータに対する作業指令。色々な 種類がある。 値 値 変数 変数 val_y = 代入  演算(operation):値の代入や算術計算、大小比較など if  制御(flow control):条件分岐やループ実行など 条件分岐  宣言(declaration):関数や値の型の設定など function 関数の宣言  呼出(call):宣言した関数の利用など 関数名 関数の呼出 val_x + 加算 for 規定数ループ [] 配列の宣言
  12. MATLAB Online画面 16 パネルメニュー コマンド履歴の 消去が可能 パネルメニュー サイドバー ワークスペース・ ファイル検索・

    コマンド履歴 のパネルの表示と 非表示の切替 コマンドウィンドウ パネルを閉じたり 最小化したり 簡単にMATLABの 命令を試せるところ ※>>の右側が新しい 命令文を入力するところ ワークスペース 作成された変数 の状態を確認 できるところ これ以降の演習は 実際にMATLAB Onlineを触りながら 進めましょう
  13. 演習1-1 数値変数の定義と値代入 17 コマンド 実行結果の自動表示 10 変数 val_x ワークスペース自動更新 val_x

    がdouble型の 数値変数として新規に生成され、 10という値が入っていることが確認できる。 自動的に表示される 結果の部分では 「val_x という 名前の変数には 今10が入っています」 の意味になる。 命令文での「=」は 「右を左に代入せよ」 の意味なので 「val_x という名前の 変数に10を代入せよ」 という命令になる。 この命令文を記載して Enterキーを押すと 命令が実行される。
  14. 演習1-2 変数の文字列での上書き 18 コマンド 「val_x という名前の 変数に”Hello”という 文字列を代入せよ」 開発メモ 二重引用符で囲うと

    (数字でも) 文字列として扱われる Hello 変数 val_x ワークスペース自動更新 val_x に文字列を突っ込んだので double型から文字列(string)型に変化。 実行結果の自動表示 「val_x という名前の 変数には文字列 “Hello”が入っています」
  15. 演習1-3 結果の非表示(コマンドの後のセミコロン) 19 コマンド 「val_x という名前の 変数に5.3を代入せよ。 結果は非表示で。」 5.3 開発メモ

    変数 val_x ワークスペース自動更新 val_x が再び double型に変化。 実行結果の 自動表示が無くなる セミコロンは結果非表示の 指示コマンド。 あえて結果を見たい場合以外は 命令文の末尾にセミコロンを つけましょう。
  16. 演習1-4 ブール値(logical型)の代入 20 真 変数 コマンド val_x ワークスペース自動更新 val_x がlogical型

    (1が真,0が偽と同値)に変化。 実行結果の 自動表示なし 「val_x という名前の 変数に「真」を代入せよ。 結果は非表示で。」 ※ここでのtrueは文字列 ではない(真の状態値)ので 二重引用符で囲わない
  17. 演習1-5 変数に入っている値の表示 21 コマンド 真 変数 val_x 「val_x という名前の 変数に入っている

    値を表示せよ」 表示結果 真/偽のブール値なので 数値の1とは異なる
  18. 演習1-6 ブール値(logical型)の反転 22 偽 変数 val_x コマンド 「val_x の論理演算NOTを val_x

    に代入せよ」 表示結果 真(=1)の反対は 偽(=0)なので0になる。
  19. 演習1-7 ブール値(logical型)の新規作成 23 偽 偽 変数 val_y 変数 val_x ワークスペース自動更新

    コマンド 「val_y という名前の 変数に”偽”を代入せよ。 結果は非表示で。」
  20. 演習1-8 2つのブール値(logical型)の論理AND 24 偽 変数 result 偽 変数 val_y 偽

    変数 val_x ワークスペース自動更新 偽と偽のANDなので 偽(=0)になる。 コマンド 「val_x と val_y の論理AND をresultに代入せよ。 結果は非表示で。」
  21. 演習1-9 2つのブール値(logical型)の論理NOTの論理AND 25 真 変数 result 偽 変数 val_y 偽

    変数 val_x ワークスペース自動更新 真と真のANDなので 真(=1)になる。 コマンド 「val_x と val_y の論理NOT の論理ANDをresultに代入せよ。 結果は非表示で。」
  22. 演習1-10 2つの変数への数値の再代入 26 真 変数 result 8.8 変数 val_y 10.2

    変数 val_x ワークスペース自動更新 double型に戻る コマンド val_x と val_y にそれぞれ 数値を代入
  23. 演習1-11 2つのdouble型変数の値の大小比較 27 偽 変数 result 8.8 変数 val_y 10.2

    変数 val_x ワークスペース自動更新 偽なので0になる コマンド val_x < val_y の真偽を resultに代入
  24. 演習1-13 数値の配列化 29 コマンド カンマもしくは スペース区切りの数値を 角括弧で囲むと配列 としてまとめられる 配列 nums

    1 5 変数 9 変数 12 変数 変数 nums(1,1) nums(1,2) nums(1,3) nums(1,4) 丸括弧の数値で何行何列目の変数なのかを識別 縦1要素,横4要素の 配列ができている 開発メモ [“red”, “blue”]のような 文字列配列も作れる
  25. 演習1-16 2次元数値配列(行列)の作成 32 コマンド 横並び配列をセミコロンで 折り返すと次の行を作れる matrix = 開発メモ 2行3列の

    行列ができている 3 5 6 1 3 4 matrix3 = zeros(4,5); で4行5列の零行列を、 matrix4 = ones(6); で6行6列の全要素が1の行列を 生成可能。
  26. 演習1-17 2次元数値配列(行列)の演算 33 コマンド 2×3行列二つの和を 計算してsumに代入 3 5 6 3

    5 6 6 + = 1 3 4 1 3 4 2 コマンド 2×3行列二つの積を 計算してproductに代入 エラーメッセージ 行列に対する「*」は要素ごとの 積ではなくて行列積(ドット積) になるので計算不可でエラーに。 要素ごとの和の 計算はできているが 積の計算はできていない 3 5 6 3 5 6 � =計算不可 1 3 4 1 3 4 10 12 6 8
  27. ここまでの演習のまとめ  変数の型は,代入される値によって随時勝手に変わる  何が代入されるのかはプログラマがきっちり監督しないといけない  多くの数値や文字列をまとめて扱うために配列が便利  同種の構成要素を配列で整理しておくとその後の構造設計に有利 

    数値配列は数学の「行列」として演算されうる  狙った通りの演算結果になっているか、手計算結果と比較することが大切  変数の状態を確認するためには「ワークスペース」が便利  狙った通りの型・配列サイズ・値になっているかを随時確認 36
  28. 演習1-20 for構文を使った「規定数繰り返し」処理(パターン➀) 38 基本のforブロック カウンタ変数 i を 1から10まで1つずつ増やしながら 毎回sumに足していく iは実行中に増えていって

    終了時に10になっている 1+2+3+4+5+6+7+8+9+10 =55 開発メモ 1:10は実は1:1:10の省略形。 「開始値:刻み値:最大値」を指定して いるのと同じ(刻み値省略は1になる)。 →次ページのパターン➁ではこれで指定
  29. 演習1-21 for構文を使った「規定数繰り返し」処理(パターン➁) 発展的なforブロック 39 カウンタ変数 i を0から始めて 5刻みで最大49まで増やして 得られる値を順に 毎回sumに足していく

    iは”0:5:49”の最後の 値である45になっている 0+5+10+15+20+25+30+35+40+45 =225 開発メモ 開始値:刻み値:最大値 は,値が並ぶ配列に読み替えられる。 たとえば、0:5:49は [0,5,10,15,20,25,30,35,40,45] の配列になる。 →次ページのパターン➂はこれを応用
  30. 演習1-26 if構文を使った「汎用的条件分岐」処理(パターン➂) 発展形のifブロック 44 「valueが100以上」と 「valueが30以下」の少なくとも どちらかが真であれば ブロック内を実行 (100を足した値をresultに代入)。 そうでなければブロック内は無視。

    条件を満たすので resultはvalue+100になる 開発メモ ifの後はブール値(真偽値) になりさえすればよいので &&(論理AND) や ||(論理OR) で条件文を複数設定できる。
  31. 演習1-27 switch構文を使った「パターンマッチ分岐」処理(パターン➀) 45 基本のswitchブロック switch直後の変数の値が case直後のパターンと 一致した場合 case下の命令を実行 開発メモ switch分でできることは

    if文でも実現できるが パターンの1つに合致するかどうかの 判定用途では可読性がifよりも良い case 2に一致するので resultには”case C”が代入される
  32. 演習1-29 try-catch構文を使った「エラー対策」処理 エラー対策前 47 value_yを未定義のvalue_zと誤記 try-catchブロック try内を試して もしエラーが出たら catch内を実行 エラー対策後

    3行目でエラーが発生して そこで強制終了するので result2を生成する4行目は実行されない エラーが起きても 続きが実行される catch内の命令も 実行される ※disp()はコマンド ウィンドウへの表示 命令
  33. ここまでの演習のまとめ  スクリプトで複数の命令をまとめて実行できる  スクリプトは「.mファイル」として保存される  制御命令でいろいろできる  規定数繰り返しはfor、条件内繰り返しはwhile 

    汎用的条件分岐はif、パターンマッチ分岐はswitch  エラー発生時でも実行を続けさせたい場合はtry-catch  制御パラメータの設定方法を知っておくとさらにいろいろできる  ifの条件は真偽値。比較演算子の使用結果は真偽値になる。  forのカウンタ設定は配列。1:5:100のような記載も配列になる。  caseの一致パターンは波括弧とカンマで複数設定できる 48
  34. 構造化の第一歩:関数化 49 うまく絡み合って機能する変数と命令文は関数にする  関数化するための命令文で変数と各種命令文を 1つの明確なまとまりにできる  MATLABでは「function」コマンド  核と小器官をまとめて細胞にするイメージ

     関数の特長  機能を反映した名前を付けられる  入力と出力を設定できる(なくてもOK)  中身を気にせずに入出力と機能に注目して利用できる  名前を呼ぶ(呼出命令)と現れる  呼ぶたびに新しいものが生成される  注意点  一通り動作すると変数ごと消失する≒寿命が短い 細胞 細胞小器官 細胞核 刺激 (作用) 応答 (変化) “細胞A” 関数の宣言 入力 function (引数) ローカル変数 出力 [] for 変数 val_y + = 関数内処理 (返り値) 変数 val_x 関数名 if function “関数名” ローカル関数
  35. 演習1-31 スクリプト内での関数(ローカル関数)の設計 51 関数meanの呼出(生成) 丸括弧内に入力を与えると 出力を吐き出す (出力値になって消滅) 関数の名前や構造を 宣言する命令 「mean」という名前の関数の設計図。

    呼び出される場面で用いられる変数 のことは気にせずに設計可能。 開発メモ 出力を設けない場合はfunction横の 「=」より前は記載不要。 入力を設けない場合は丸括弧内を空欄に。
  36. 演習1-32 スクリプトの関数化 スクリプト内で定義された 2組の数値ペアの平均値を計算する スクリプト 52 スクリプト名は 関数名と同じものに スクリプト外から入力された して保存

    2組の数値ペアの平均値を計算して 出力する関数 全体を関数化 ※簡略化のため フラグも廃止 ローカル関数(mean) とは別の名前で定義 ローカル関数 の宣言 開発メモ functionの出力(返り値)はカンマ付きの 角括弧で複数設定可能
  37. 演習1-33 関数化したスクリプトの呼出と利用 53 別の.mファイルのMultipleAverage関数 の呼出(生成) 同じフォルダ内で あれば相互に参照 できる 各数値ペアの平均値2組を配列で受け取る 平均値を

    受け取れている 開発メモ 複数ある関数の返り値の一部を 受け取る必要がないときは 変数の代わりに「~」を書いておけばよい。 たとえば[~,result2]など。 スクリプト外から入力された 2組の数値ペアの平均値を計算して 出力する関数
  38. 今回のまとめと課題 MATLAB OnlineでMATLABの基本を学習  まとめ  変数と命令文が設計の基本単位  配列化・行列化,あるいは関数化によって構造を大規模化 

    制御命令によって機能を細かくコントロール  「開発メモ」の内容は地味ながらMATLABを使いこなすうえで重要  課題  必須:演習を順に実施。わからないところを掲示板で相談して解消。もしくは掲 示板で質問に回答。  選択➀:「開発メモ」に書かれた内容が正しいかどうかを確認するのに効果的な スクリプトを独自に考えて組む。それを.mファイルとして提出。  選択➁:今回学んだ内容で気になった点(この場合はどうなるか?)や分からな かった点(どういう意味か?)を解消するためにMATLAB Online上でスクリプ トを様々に書いて実行し、それによって得られた学びを文章で紹介。 55