- 2008-10-03 (金) 13:36
- Intern Blog | blog
-
前エントリーからずいぶん日が経ってしまいました。個人的には大学の新学期が始まって一週間が経ったところですが、今回はddが開発しているTypeTraceをもとにして、プログラミングの過程に潜む情報の有用性と活かし方について考えてみたいと思います。
私たちのあらゆる行為は、繰り返されることのない一度限りの行程です。文章執筆について考えると、迷いながら文字を連ねてゆく編集過程は不可逆です。そして後には、結果として書き上げられた静的な文章だけが残ります。しかし通常かえりみられることの少ない行為の過程に着目すると、そこには豊かな情報が見いだせることに気づきます。執筆過程であれば、なかなか他者にさらされることのない一字ずつ書いたり消したりする作業のなかに、私たちの思考の流れが込められています。これは通常の文章だけでなく、プログラミングのコードについても同じです。
![]()
通常は消え去ってしまうコーディングの過程をそのままに記録することができたら、プログラミングやその学習に役立てられるのではないでしょうか。ddが開発するTypeTraceでどのようにプログラマを支援できるか、可能性を探ってみたいと思います。
<きっかけはプログラミングキャンプ>
TypeTrace(以下TT)は、タイピングの過程をビデオ録画のように記録するソフトウェアです。TTでは執筆後の完成した文章だけでなく、それを一字一字書いてゆくプロセスも後から眺めることができます。
![]()
プログラミングにTTを役立てられるのではないかと考えたきっかけは、前エントリーでお伝えしたセキュリティ&プログラミングキャンプ2008にあります。
キャンプ4日目の夜に、講師・チューター・受講生の方々を交えたBoFが開催されました。BoFとはbirds of a featherの略で、同じ羽毛の鳥達、つまり似た者同士の集まりを意味します。各自関心のあるテーマごとにグループに分かれ、意見交換や実習をしました。
私が参加したのは、講師の吉岡さんと天野さんが主催する「ハジメテの勉強会」をテーマとするグループです。キャンプ受講生が合宿終了後も自力で知識や技術を身につけていく助けとなる、IT勉強会の見つけ方・参加の仕方から発表・主催のすすめまでを、初心者向けに楽しく紹介してくださいました(「ハジメテの勉強会」のスライドは吉岡さんのブログに公開されているので、よろしければそちらもご覧ください:ブログ「ユメのチカラ」)。
BoFはフランクな雰囲気のなかで行われ、勉強会だけでなく自己紹介タイムや他のIT話でも盛り上がりました。途中から講師の宮本さんも加わり、SCM(Source Code Management・プログラムの書き足し修正などの開発過程をアーカイビングしていくこと)の話になったときにソースコード管理ツールとTTの類似に気づきました。
<ソースコード管理ツールとTypeTraceの類似性>
まずSCMの有用性は、プログラムを書き換えてゆく過程を残せることにあります。そうすることで以前のプログラムの方が良いと気づいたときに、すぐ編集前の状態に戻ることができます。
執筆の過程を記録するTTでプログラムを書けば、修正したところも時間軸をさかのぼって再生することができます。現段階ではTTはコーディングに対応していませんが、将来的にコンパイルがスムーズにできるなどの改良を加えれば、現存のSCMよりさらに細かくコーディングの過程を見返すことができるようになるでしょう。
以上はSCMの実用的な機能のことですが、それだけでなくSCMに関して宮本さんが興味深いことをおっしゃっていました。それは、バージョン管理システムの「昔のバージョンをさかのぼることで、思考の過程を追える」ということ。プロのプログラマでも自分で書いたコードの理由が後から見てはっきりと分からないこともあるそうなのですが、そうしたときにSCMのログを見返すと自分の思考のかけらを事後的に読み取ってゆくことができます。SCMによって残るコーディングの履歴を後から見て、自らの成長を実感することもあるそうです。
<TypeTraceだからできること>
執筆プロセスにひそむ思考の痕跡は、ddもかねてから着目しているポイントです。お話を聞きながらTTとの類似性を感じずにはいられませんでした。では、プログラミングにおいては既に類似したものがあるのに、あえてTTを用いるメリットは何なのか考えてみたいと思います。
結論から言うと、それは解像度の違いと言えるでしょう。今のSCMはコーディングをきりのよいところで保存し、それをコミット(管理システムにファイルを預けること)することでバージョンごとにソースコードが蓄積されてゆきます。一方でTTは、一字ずつタイプされてゆく過程も記録します。SCMでは一つのバージョンとして保存されたコードがどのように生成されたのかを見ることは出来ませんが、TTでは一つのバージョン内での一行一文字単位の修正まで確認することができます。
このように細かな過程を記録することで、プログラマがどのようにプログラムを組み立てていったのか、思考の流れをより忠実に追うことができるようになるのではないでしょうか。自身のコーディングプロセスを思い出したいときや、複数人でコラボレートしてコーディングするため思考を共有したいときなどに役立つのではないかと思います。
むろんSCMのようなバージョンという区切りの概念も欠かせませんし、一字一字を残すことによるデータの肥大化など、実用化に際して考えなければならないことは少なくありません。将来的にTTでスムーズにコーディングできるようにするには、タイピングを一字ずつを記録する一方で、きりのよいところで見出しをつけられるようにしてミクロ・マクロの切り替えが滑らかにできるようにするなど、様々な工夫が必要でしょう。
TTによる新しいプログラミング環境で、プログラマの創造性をより引き出すことができるかもしれません。こうして考えていると、私も自身の手でたくさんの人に喜んでもらえるものを作りたいという思いが改めて強まってきます。まだまだ技術力の足りないひよっこですが、プログラミングキャンプやddインターンで学んできたことを活かして、今回考えたようなアイディアを実現できるように精進していきたいと思います。
- Newer: 「ヘコむ」を楽しむコミュニティ・サービス「リグレト」 が携帯電話に対応!
- Older: 「リグレト」ユーザー・テスト参加者募集!
Trackbacks:0
- Trackback URL for this entry
- http://dividual.jp/intern-blog/%e3%82%b3%e3%83%bc%e3%83%87%e3%82%a3%e3%83%b3%e3%82%b0%e3%81%ae%e3%83%97%e3%83%ad%e3%82%bb%e3%82%b9%e3%81%a8%e6%80%9d%e8%80%83%e3%81%ae%e7%97%95%e8%b7%a1/trackback/
- Listed below are links to weblogs that reference
- コーディングのプロセスと思考の痕跡 from 株式会社ディヴィデュアル