2012/10/11

ライブコーディングの会でライブコーディングしました

人がコーディングしている様子を見る、というのは僕にとって愉しみの一つです。機会があればよく「どんな環境で実装されているんですか?」というようなことだったり、「今なぜそこから実装されようとしたんですか?」というようなことを聞いてみたいけれど隣で色々思いを馳せながら眺めていたりします。

などと思っていたら自分のコーディングしている様子が晒されるイベントにいつの間にか参加することになり(!)、そのイベントが昨日行われました。

僕が学生(就活生がメイン)の前で1時間ひたすらコーディングをするという会です。ディスプレイをプロジェクタで投影し、手元の動きをカメラで2枚目のプロジェクタに映されながらコーディングします。隣で @katzchang さんに解説していただきました。(といっても事前打ち合わせはほとんどなかったです。)

お題は自由だったので、ひとまず最近勉強しているFlaskで小さな掲示板でも作る、ということにしました。スキーマ定義が面倒なのでMongoDBで、あとはローカルでサーバたちあげてテストすればいいだろう、という極めてざっくりな方針で進めることとしました。


ひとまず気合をいれてツイート。

まずGithubリポジトリを作成。(https://github.com/suzuken/livecoding2012-10-09)

次にローカルのpipでFlask周りの物をインストール。ひとまずREADME.md書いてcommit。git push origin master。

init · 78e80b4 · suzuken/livecoding2012-10-09
https://github.com/suzuken/livecoding2012-10-09/commit/78e80b4b24dbb171e36989ec0461fe1d83bc19b0

そして次にFlaskの最小限のコードを書く。この時にvim環境について質問があったのでツイート。
そしてcommit。

add endpoint · fba1f7f · suzuken/livecoding2012-10-09
https://github.com/suzuken/livecoding2012-10-09/commit/fba1f7f43121223ecf3fc6bf3fe8828cc9db1591

次にMongoつなぎましょう。ということでMongoKitをimportして、簡単にDocumentクラス書いて、とりあえずエンドポイント書いてpush。

adding mongokit · 728381c · suzuken/livecoding2012-10-09
https://github.com/suzuken/livecoding2012-10-09/commit/728381cd57a740f8ddf572ce977420c76df76870

そしてここから色々調整。ひとまずviewを作ろう、ということでTwitter bootstrapを落としてきてstaticディレクトリへ。そしてささっとviewと作成。表示完了。次にログイン作ろう、と思ったらFlaskのsession周りについて全然調べていない、ということで色々焦っていたら時間が経ってきたので、とりあえずブログのエントリを表示できるようにしよう。ということでテストデータを挿入するためのエンドポイントを作成。更新。しかしMongoKitでエラー。Documentの定義ミス。もう一度更新、しかしエラー。挿入は成功したが、redirectの設定を間違える。このあたりでつい弱音が…。


そしてもう一度挿入。今度はうまくいった。ここで大分時間消費…。あと20分…、とかだった気がします。 実際にやっていて気がついたんですが、60分間も人目にさらされながらコーディングするっていうのはなかなか体力が要ります。45分を過ぎた当たりで若干酸欠になってきます(※個人差有り)。ということでこの時間帯はもう全然進まなかったです…。とりあえずMongoへのinsertとfindだけ作って表示しただけになってしまいました。おまけにcommitするのも全然忘れていたため、下記のカオスなコミットオブジェクトが生成されることになります。コミットメッセージからも余裕の無さが伝わってきますね。

bootstrapたして、dbつないで、addして、findしました。余裕がありません · a2580d3 · suzuken/livecoding2012-10-09
https://github.com/suzuken/livecoding2012-10-09/commit/a2580d320b6d5480a3f701a8e2e21e048e1e9190 




という当たりで1時間経ちました。ライブコーディング終了。ヘトヘトです。やってみるといろいろテンパッていろいろ想定外で進まない…などなど色々起こってますね…。

コーディング後は、まぁとりあえずビールを飲みつつ、色々質疑応答しました。割りとツール周りのことを多く聞かれました。zshの話、tmuxの話、あと多かったのがvim周りの質問でした。補完(僕の補完はvimデフォルトのままです。でもみんな意外と知らないのかも知れません。)、バッファ、移動、削除、カーソル移動、などなどです。あとはドキュメントの読み方についても聞かれました。

そういえば僕も学生の時には「現場のエンジニアは一体どんな風にコーディングしているんだろう」とよく思ったものでした。実際にそれを見れるというのは面白い機会だったのかなぁと思います。なんというか、実際そんなに差はないと思います。なんだろう、僕自身あまり学生の時からすごく変わったかというと、確かに触れている時間は増えましたが、すごくコーディングスタイルが変わったかというとそうではないです。でもいろんな要件や環境になれてきた、というのはあると思います。良くも悪くも現場感の伝わるイベントになったような気がします。

とは言え、思わず漏れる本心…。
でも他のエンジニアの方々のライブコーディングはみたいです。(できればビール片手に!)