創造工学:グループ決め&具体化
先週のアイデア草稿について、 全体の講評をした後、 アイデアの具体化に向けたグループ討議をしてもらう。
アイデア草稿では、具体的な方法については考えていなかったが、 その実装方法の問題点ということで、 先週紹介した電子ブロックのネタを実際に使った際に、 具体的にどんな機能が必要だったりその実装の方法を検討した内容を 説明し、同様の検討を時間内に行った。
しかしながら、グループ討議や後半の実装方法検討の際に、 Webで調べて画面を見ているだけで、何のメモも取らない人が多い。 インターンシップでも上司に質問をする際にも、メモを取らずに 質問をしたら相手がどう思うのか?、具体的な資料を作成するときに、 何をキーワードに文書を作るのかも記録が残っていないと… といった注意点を説明する。
浮動小数点、文字、文字列、真偽値
浮動小数点型(float,double)の説明として、小数点のあるN進数の説明の後、0.1が2進数となると無限小数になったり、それにともなうトラブルを紹介。 暗黙の型変換によるトラブルの説明や型キャストの説明を行いながら、浮動小数点に伴うトラブルの事例を紹介する。
次に、ASCIIコード表や文字コードの値について説明し、特殊文字'\n','\r','\f','\a','\t' や'\8進数' , '\x16進数'といった表記法などの説明と、ASCZ文字列の説明。
創造工学演習のネタ
創造工学演習で作ってみるテーマで、半期かければできそうなネタをいくつか紹介。
パソコンを操作という感覚なしで、ゲームができる事例。 手のひらの動きにあわせて、上からプロジェクタで投影する。
音と位置情報をあわせたものづくりができないか?
- GPSデータつきのTwitterのつぶやきを、自分の位置情報にあわせてサラウンドで読み上げる。
- 音を地図にマッピングし、ユーザの動きに合わせて音が変化する。
- 遠方の音ほど、小さい音で、低音がカットされた音で再生する。 ユーザに方角センサーをつけ、ユーザの向いている方角の音は大きな音で再生する。
再帰処理の処理時間の分析
再帰呼び出しの含まれる処理の、分析について説明を行う。 再帰に慣れていない人のために、fact(N) , pyra(N) , fib(N) のプログラムを示し、 適当な引数での実行結果を答えて貰う。
fact(N):階乗のような再帰であれば、処理の時間も繰り返しになることから、代入法で 簡単に説明ができる。しかし、フィボナッチ数列fib(N)であれば、自身の呼び出し回数も 簡単には説明ができない事例。ということで、まずはハノイの塔の処理ステップの証明を、 (1) 代入法による一般解の予想、(2)数学的帰納法を交えてた証明について 説明を行う。
最後に、フィボナッチ数列の再帰の処理時間を、代入法により示し、ピネの公式より オーダを示す。
C構造体からC++クラスへ
授業3回目にて、電子情報以外の学生さんが受講を取りやめ、 受講者全員が電子情報学生となった。 基本的な部分の説明が不要となるため、細かい内容まで話すことができた。 最初に、前回授業で話すことができなかった、参照渡し(ポインタ渡し,値渡し)を説明した後、 C言語でオブジェクトっぽく書くスタイルを発展させながら、下記のようなC++における、 クラス宣言を説明する。
class Person { private: char name[ 20 ] ; int age ; public: Person( char s[] , int a ) { // コンストラクタ strcpy( name , s ) ; age = a ; } inline void print() const // inline 開いたサブルーチンにする { // const メンバ変数を書き換えないメソッド printf( "%s %d\n" , name , age ) ; } } ; void main() { Person saitoh( "T-Saitoh" , 46 ) , mitsuki( "Mitsuki" , 10 ) ; saitoh.print() ; mitsuki.print() ; }
例年は説明を省略しているけど、const メンバ関数宣言や、inline 宣言による説明を行う。
今日は体育祭
昨日、雨で延期になった体育祭。朝一番の雨で開催が心配でしたが、 4年の皆さんは時間をかけて準備をした成果の発表でもあり、 無事に体育祭開催となり、一安心でした。
様々な競技と写真を撮っていまーす。 デコレと応援は動画もきちんと記録するぞ!!
デコレ
デコレも頑張っていたけど、残念ながら優秀賞などはとれませんでしたね。 審査員的には、高専だし『技術系ネタ』だと自然と評価が高くなる。 電子情報的には今年は「アバター」で「3D視差技術の違い」であれば、 専門ネタになって、評価が高かったと思いました。
応援演技
電子ブロック使ってみた
創造工学のネタで学生さんにシミュレータを作ってみようと提案してみたし、 せっかく買ったもんだし、一番簡単そうな回路図で動かしてみた。 『No.013:オーディオジェネレータ』で、アンテナ同調コイルを低周波トランスの代用とした、 RLC発信回路。
回路実験とシミュレータ作りの視点から
実際に動かしてみた感想は、バリコン(可変コンデンサ)を動かせば、 かなり広い周波数変化をするかと思ったけど、大きく周波数変化する部分もあるけど、 たいした周波数変化はしなかった。 シミュレータを作るとなると、意外に多用されている、この同調コイルの特性再現も重要な課題になるはず。
もう一つの感想は、回路図をブロックに置き換える際には、指導書の回路を配線する分には 簡単なんだけど、ちょっと特性を変化させるために抵抗追加と思っても、 ブロック配置も変わる。それにブロックの種類も限られているため、 T字型に配線されている抵抗ブロックの直通部分を配線に使うといった、 「電子ブロックの配線」のためのノウハウも重要となる。 このため、プロコン応募を目標に作るのであれば、 回路図を入力したら『EX-150』の部品の中から無理矢理ブロック配置を考えてくれる ツールも欲しいなぁ。
シミュレータを作るのなら
実際にシミュレータを作るという視点で、フリーの回路図エディタ・シミュレータの利便性を確認。 まず、Debian/Linux に含まれているツールということで確認すると、 GPL EDA 電子回路設計ソフトウェア回路図エディタ(geda-gschem)であれば、 SPICE用ネットリスト生成は簡単みたい(「gschemで回路図作成」)。 ひとまず、初めてだけど gschem をLinux上で動かしてみた。 初めてだと、該当部品をライブラリから探すだけでも一苦労ということがよく分かった。 慣れれば簡単なんだろうけど…
ちなみに、 gschemの吐き出したネットリストも見てみた。 配置された部品の座標間を、無損失伝送路(T)が大量に配置されている。 (Wikipediaの説明に無い文法も含まれてるなぁ…".END"行も出力されていないし、gschem専用文法だな…) EX-150専用エディタを作れば、回路図上の部品配置なんて関係ないので、 シンプルなネットリストを吐くことはできるだろう。
- gschemのネットリストから、SPICE用のネットリスト出力するには、gnetlist が必要みたい。
- 回路シミュレータは、Debian であれば、"Non-free"ではあるけどngspiceが、パッケージに含まれているみたい。
(( ひとまずDebianでこの辺のネタを試すのに必要なインストール作業 )) # aptitude install geda geda-gschem geda-gnetlist geda-symbols geda-utils ngspice gwave
創造工学演習・アイディア草稿
今日は、具体的なアイデアを検討することを目標に、 各グループ毎に情報交換1コマ(50分)の後、演習室にて関連情報調査2コマ(100分)の後、 実際のアイデア草稿提出資料作成の1コマ(50分)にて行った。 早くアイデアの出ている学生さんについては、草稿原稿をチェックなども行った。
アイデアといっても、初めての検討では「既存技術・アイデア」なネタがほとんどになってしまう。 このためプロコン審査員の視点でみれば「面白くない」で終わってしまう。 しかしながら、創造工学は実際に作成することも目標であり、既存だから「ボツ」アイデアと 言ってしまうだけでは、不十分。 このため、『演習指導者』の視点では、「新しいアイデア」・「技術力で作れるのはこのレベル」 とのジレンマに悩まされる。
ひとまず「プロコン応募資料作成」までは「実現可能性は別にした新しいアイデアを検討」という目標とし、 「創造工学後半」では「既存ネタでも本当に動くものを作ってみよう」という目標を示す。
レトロ系アイデア案
学生さんのアイデアといっても、なかなか新しいものは出にくいし、 アイデアの一例ということで、レトロ系のネタをいくつか示した。
案1:『Arduinoで、ベクタスキャン系ゲーム&ネットワーク対戦』
一昨年、H8 とXYモードのオシロスコープを使って、Pongを作ってみないか?との提案をして、 実際にチャレンジしてもらっている。(高専プロコンでは予選通過NG)。 現在では、Arduino を使えば同じようなものは、C言語ベースでもう少し簡単に作れそうだし、 Ethernetシールドを使って、ネットワーク対戦もできるレトロゲーム復刻版を提案してみた。 オシロスコープのXYモードのベクタースキャン表示ということで、 Pongに留まらず、StarWarsなんか作れたらもっと面白いんじゃ?と目的を膨らませてみた。
案2:『電子ブロックEX-150シミュレータ with SPICE』
先日ネタに掲載しているが、学研の大人の科学で復刻版が売られている電子ブロックEX-150の シミュレータを作ってみようというネタ。
# よく見れば、表示方式はベクタスキャン型ではないんだけどね…
# それにこの機能すべてはArduinoじゃ重すぎだろうな。
# TIEファイターもただのH表示に簡略化するしかないか…
変数の型と範囲・N進数
授業を進めるにあたって、昨年の講義録をみながら進度確認や話し忘れを確認するけど、 この数回の授業は、1コマまるっきり昨年と同じペース&内容というのが続いている。 講義録といっても、昨年の資料にきちんと書いてあるし、ペースもまるっきり同じだったり。 ということで、今日の講義についても、昨年度同時期資料へのリンクとする。 (手抜きじゃないぞ!!)