今年に入ってから、3回のLTをやってきました。
話してみて思うのは、話すというアウトプットの密度の濃さです。
これまでにやってきたアウトプットは、調べたことやつくったものをブログに書くということでした。
そうしたアウトプットと話すということを比べると、消化した感がだいぶ違います。
何かについて取り組んだたら、ブログで公開して、プレゼンで話してやっとそのネタについて卒業、と。話してみてはじめて理解できる、とも言える。
それはなぜかな、と考えてみたら:
- 人前で話すためには対象をきちんと理解していないといけない。たくさんの咀嚼が求められる
- 文章を書くときと話すときとではアタマのつかいかたが違う。話すときには頭をフル回転させてる
- 話すのは緊張する。けど、自分の言葉がほんとうに人に聞こえてるのを生で見ることができる (ブログだとそうはいかない)。それがうれしい
ということなのかな、と。
自分の理解のためにも、人に考えを広めるためにも。
指を動かしてキーボードを叩くだけではなく、口で言葉に出そうよ! どんどんあちこちに出ていこうよ! というお話でした。

1000speakers:3 で話してきました。
ゆびピアノとGainerをくっつけた、どこでもゆびピアノ++というネタでした。
ゆびピアノという旬なデバイスを、いち早くハックして発表できてよかった。
こういうネタは鮮度が命ですよね。
LTネタをずらっと並べて、聴衆に選択してもらうスタイルでやろうという腹づもりでした。
しかし、焦ってしまって、すぐにゆびピアノネタで話はじめてしまいました。いかんいかん ><
話さなかった他のネタについて聴きたい人は、何かの機会に僕をつかまえてください。
いちおう全部の資料は用意してありました。
気をつけたこと
せっかくライブでしゃべるのだから、ライブでしか体験できない何かをしようと思ってました。
リア充ですね。
1. フィジカルプレゼン
コードだけじゃなくて物理的に存在するモノを動かして発表するというスタイル。
みんなGainer買うといいよ。
2. 小咄
プレゼンの定石である、背景→問題点→解決方法→まとめ というのを、ドラえもんメソッドでやってみました。
ドラえもんメソッドとはなにか
ドラえもんのストーリーは、
- のび太が泣きながら帰ってくる (つかみ)
- ドラえもんが話を聞いてやる (問題提議)
- ドラえもんが四次元ポケットから道具を出す (解決方法)
というものです。おや、これってプレゼンにつかえるんじゃない? と。
会話形式でやることで、聴衆に興味を抱いてもらえやすくなると考えたのです。
さいしょスライドはドラえもんのAAでつくっていたのですが、どうも著作権的にアウトぽかったので、
前日の夜に急いで2chのAAに差し替えました。ちょっとインパクトは下がってしまいましたが、致し方なしですね。
ドラえもんメソッド、つかってみてはどうでしょうか。
よかったこと :)
- それなりに笑いはとれた。
- おお、と思わせることができた。One More Thingというメリハリ。
- Psychsさんの隣の席で、あれこれ話せた。惚れた。僕があと12歳若ければ、恋に堕ちていただろう。
- よしおかさんに宴会でコードリーディングについて聞いた。でかいコードは動的な読み方が最速だよ、というのに同意。
- レオさんと、分業についてトークできた。最終製品にみんなが責任を持つためには、というテーマ。
- Yuyarinにおともだち認定された。いぇい
一発ネタとしてはまずまずだったかな、と。
反省 ><
- 緊張のあまりコードを断線させてしまい、プレゼンを中断してしまった ><
- せっかくライブ演奏してるのに、手元が見えてない。カメラのアングルを調べておくべき ><
- 滑舌がわるい ><
- もっと聴衆を見て話すべき ><
- 「で」でスライドをつなげてしゃべってる。はっきり区切るべき ><
- 「〜わけですよ」大杉 ><
- 小咄ではもっとなりきるべきだった ><
- 宴会でもっとたくさんの人と絡みたかった ><
言い忘れてたこと
- 英語重要。高校生のひとたちは、クルマの運転免許取得につかう30万円をもってそのままマンツーマンの英会話学校に通うべき。
- エンジニアはドラえもん。四次元ポケットからどんなコードでも出せるよ。
感じたこと
自分をアイデンティファイするものを、はっきりさせよう。
ぼくはこういうものです、という何か自分の代名詞となるものを、しっかりとつくっていこう。
すごいプログラマになる !
話してみて、こうやったらよかったなー、と気づいたことを、
1000speakersのWikiに書いておきました。
書き足していくといいんじゃないかな。
次回は4/26です。みんな話しにいくといいよ!
関連
先行事例が2つありました…
昨日のつづき。
今日のコミットで、以下の動作が確認できました。
- コンストラクタでのモード切り替え
- アナログ入力
- デジタル入力
アナログ入力の確認中に、どうも値がヘンなことになってて30分くらい悩んだのですが、参考書によると、アナログ端子はアンテナみたいになるので値が不定になるよ、とのこと。そんなことも知らない素人です。
gainer-ruby のコードでは、デジタル入力が1ポートしか取れないことになっていたので、ビット演算したりして4ポートぶんとれるようにしました。
それにしてもプロトコルの仕様が知りたいよ、とうろうろしていたら、ちゃーんと公開されてました。さすが。ちゃんと調べなきゃですね。
Gainerを、C++から使えるようなラッパを書いています。
Rubyから扱えるgainer-rubyのコードをC++に書き移して、Gainer++としてCodeReposに登録しておきました。コードはこちら。
まだI/Oポート周りのコードを移していないのですが、Gainer I/OモジュールのLEDを点灯させるサンプルプログラム (gainer-rubyのページにあるもの) は動いています。(gainer-led.cc)
せっかくより書き易いRubyのライブラリがあるのにC++で書くなんて逆行してるよ! と自分でもつっこまざるを得ないのですが、Gainerをより低レイヤ (CoreMIDIとか)と連携させてみたい、というのが動機です。
つかったりコード直したりしてみてくださいね。
関連
Aipo4というオープンソースのグループウェアがなかなかいかしてます。
Linux版のインストーラは、RedHat系のものしか用意されていないんですが、Debian etchなマシンにインストールできたのでやりかたを書いておきます。
1. パッチあて
aipo4-debian-patch を展開して出てきた installer-debian.patch を、aipo/bin/fc にて
# patch -p0 < installer.sh-debian.patch
のようにしてあてます。下に貼りつけときますが、やってることは単に必要なrpmがインストールされてるかどうかのチェックをコメントアウトしてるだけ、というもの。
2. 必要なライブラリのインストール
libreadline-dev, zlib1g-dev が必要ぽいので、apt-get install しておきます。
3. install
# cd aipo/bin/fc && sh installer.sh
でOK。
と書いてきましたが、まとめるほどのことではないですね。コメントアウトしておわり。簡単ですね。
パッチ
--- installer.sh.orig 2008-03-10 14:45:28.000000000 +0900
+++ installer.sh 2008-03-10 14:46:36.000000000 +0900
@@ -183,31 +183,31 @@
rpm -qa --qf "%{GROUP},%{NAME}\n" > $path/bin/rpmlist
-tmp_str=`cat $path/bin/rpmlist | grep readline-devel`
-
-if [ "$tmp_str" != "" ]; then
- echo "checking readline... ok"
-else
- echo "checking readline... error"
- check_str="ERROR"
-fi
-
-tmp_str=`cat $path/bin/rpmlist | grep zlib-devel`
-if [ "$tmp_str" != "" ]; then
- echo "checking zlib... ok"
-else
- echo "checking zlib... error"
- check_str="ERROR"
-fi
-
-
-if [ "$check_str" != "AIPO_INSTALL_OK" ]; then
- if [ "$1" != "check_pass" ]; then
- echo "Aipo$aipo_versionのインストールに失敗しました"
- userdel -r ${postgres_user}
- exit 0
- fi
-fi
+#tmp_str=`cat $path/bin/rpmlist | grep readline-devel`
+#
+#if [ "$tmp_str" != "" ]; then
+# echo "checking readline... ok"
+#else
+# echo "checking readline... error"
+# check_str="ERROR"
+#fi
+
+#tmp_str=`cat $path/bin/rpmlist | grep zlib-devel`
+#if [ "$tmp_str" != "" ]; then
+## echo "checking zlib... ok"
+#else
+# echo "checking zlib... error"
+# check_str="ERROR"
+#fi
+
+
+#if [ "$check_str" != "AIPO_INSTALL_OK" ]; then
+# if [ "$1" != "check_pass" ]; then
+# echo "Aipo$aipo_versionのインストールに失敗しました"
+# userdel -r ${postgres_user}
+# exit 0
+# fi
+#fi
どうも Mac mini から異音がしてます。度重なるブレーカダウンによるクラッシュでHDDがダメになってきてるぽい。
deadbeaf.org と trac.deadbeaf.org はしばらく見れない状態になってるかもしれないです。QSTwitterのダウンロードができなくなってます。ご迷惑をおかけします。blog.deadbeaf.org, en.deadbeaf.org はだいじょうぶ (別サーバで動いてるので)。
Published on
March 10, 2008 in
default.
再来週にある1000人スピーカプロジェクト 第3回 で話してきます。滑りこめてラッキー。
ネタは隙間産業的プログラミングとかWorking Effectively with Legacy Teamとか、いろいろ考えてます。なんにせよ、いまから2週間でなんかつくろう。プレゼン駆動開発ですね。
Michael C. Feathers
Prentice Hall (2004/09/16)
売り上げランキング: 6142
QSTwitter のエントリを読んでくれた異国の人が、プロジェクト一緒にやんない? と言ってきてくれたので、やってみることにしました。infowi.seというプロジェクトです。これによると、ヨーロッパ人 x 1、アメリカ人 x 2、日本人 x 1 という混成部隊。
まだいろんなことが分からなくて五里霧中のまっただなかにいますが、なんとかひとつずつやっていこうと思います。
失うものはないのだから、やるだけやるしかない、ですよね。
ここのところずっとRatingが下がりつづけていたので、挽回したいところでした。
- 250pts : とってもEasyな問題。ささっと解いて237.15pts。
- 500pts : 2つの文字列でワイルドカードの処理をする問題。40分くらいかけて書き、テストケースをぜんぶ通してsubmit。なんだけど、Challengeされて陥落。0pts。
- 1000pts : むずそうなので手つけず。こういうシンプルだけど頭を使う問題を考えつくのってすごい。
けっきょくChallengeもできずに250ptsを解いただけの237.15ptsでした。Room 6位でRatingは821→871と50pts up。まだ色無しコーダーです。しょぼいなー自分。
Room結果
TopCoderは、コードを書くだけじゃなくて読む力をつけることのできる場でもあると思いました。
Challenge phaseでは殺伐と他人のコードのアラを探し、試合終了後はハイレベルなレッドコーダーのコードを見て勉強したり、と。
ライブコーディングというか、できたてほやほやの良質なコードに触れることのできる良い機会だと思います。
みんなぜひ! そして僕より先に行かないでー。