プログラミングハイウェイ関連のエントリを読んで

プログラミング能力をつけるための高速道路を造りたいという話 - タムケンブログ
Geekなぺーじ : Re: プログラミング能力をつけるための高速道路を造りたいという話 - タムケンブログ
プログラミングハイウェイ - プログラマーの脳みそ


これらのエントリを読んで個人的な感想などダラダラ書きます。
支離滅裂でまとまっていません。

” コーダ ” なのか ” プログラマ ” なのか

僕はどっちなんだろう?
職業としてプログラミングしていないのでそう言った意味ではホビープログラマなので ” プログラマ ” なのかな?


でも、僕が主に書いた*1のSafariGesturesとSafariTabMementoは別に今までに無かった物を新しく作り出したわけではないです。
他のブラウザにある機能をSafariで出来るようにしただけで。まあ、機能面でパクリです。
つまり、感動巨編を執筆したわけでなく、すでにある文章を書き写した ” コーダ ”かな?
特にSafariGesturesのイベントハンドリングは既存のコードをかなり参考*2にしているといった意味で ” コーダ ” かもしれないです。


自分をよく言うと、限りなく ” コーダ ” に近い ” プログラマ ”でしょうか。

高速道路ってなんだろう?

基本学習

プログラミングの基本的なこと*3の学習に関しては最近は書籍もかなり噛み砕いたものが多くなってきているし、
Web上にもたくさんそういった物があるのでこのあたりは特別整備したりする必要はないような気がします。
僕みたいに理解力の乏しい人間だとそれらを読んだだけではイマイチわからなかったりするのでそこはサンプルコードとかをまず動くようにして微妙に書き換えたりして試すほかないかなと思います。

作りたい物を実現するために

プログラミングしたい・覚えてみたいって思った時って「こんな機能があればいいのに」みたいなことが動機になってませんか?
僕は書店員時代にお客さんの欲しい本を自店舗に在庫があるかどうかを調べる時に

e-honで検索 → 該当する本のISBNを選択しコピー → 店内検索Webアプリの検索フィールドにペースト → やっと在庫の有無、場所がわかる。

というコピペ作業が面倒でした。そこで当時、店で使っていたブラウザSleipnirのスクリプト機能を使ってその無駄を改善したかったのが動機です。
個人的に重要だと思うのがその動機を実現するためにはどういう風にプログラムを書けばいいのか?という部分だと思います。

師匠

そこで「こうすればできるんじゃない?*4」というのを提示してくれるような人が居てくれるとかなり理想の実現の為に高速化できます。
僕の場合、由々識さんがそれを提示してくれました。
特に印象に残っているのは、当時、初期の動機*5はクリアしてさらに便利にできないかと
考えていて僕はSleipnirのスクリプト(JavaScript)を使って
「選択文字列(ISBN)を使って、ページを表示させずにバックグラウンドで検索し、その結果だけ受け取りたい。」
と思ってそういった方法はないのか掲示板に書き込みました。
よくあるのが親切に教えてくれたとしても関連メソッドのリファレンスのサイトのURLだけとかを教えてくれます。
でも、初心者ってリファレンスが読めないんです。
リファレンスの読み方って意外とプログラミングの本に書いてなかったりしません?そこで途方に暮れることとがあったりします。
でも、由々識さんは
「こういうメソッドがあって、こういう動作をします。URLを引数として渡すだけで取得したいページのHTMLソースが返ってくるように関数にしてまとめたよ。」といった部分まで教えてくれました。
実際、その関数を使ってその当時の目標は達成しました。そうしていく内になんとなくわかってくるようになりました。


こういった師匠のような存在がものすごく急速にプログラミングの速度を上げてくれます。
Objective-Cに関してはまずcooさんとの出会いです。cooさんがSafariGesturesのベースとなるソースを提供して下さったおかげで、それを元にどうにかVer0.0.1をリリースしました。
リリースした時に当時たくさんあったバグを解消するためにいろいろとコメント欄で助けて下さったのがcanberlandさんです。
SafariGesturesVer0.0.1のリリースをキッカケにcanberlandさんと出会い、お互いにメールなどでやりとりしながら凄く親切にObjective-Cのことを教えてくれています。
cooさんとcanberlandさんがいなければたぶん今も全くObjective-Cは書けないでしょう。

余談

僕がその時々で学びたかったことが本流と違っていたのも学習の障壁だったような気もします。
Sleipnirスクリプトを書き始めた当初のJavaScriptは「Webサイトの飾り」くらいな感じがメインだった気がします。
実際、書籍を見てもHTML内に書くものばかりな感じで初心者には即活かせるようなサンプルはなかったと思います。
Objective-Cも普通のCocoaの単体アプリじゃなくていきなりSIMBLプラグインでしたので英語の情報ばかりだったりでとっかかりが厳しかったです。

高速道路 = 頼れる師匠

何か話しが反れまくってますが、個人的には
高速道路 = 頼れる師匠
かなと思います。

師匠に出会う可能性を上げるために

思っていることをWeb上にアウトプットしてみることが重要だと思います。
「こんなのが作りたい」「ここがわからない」と思っていても思っているだけだとなかなか解決できません。
なんらかの掲示板、ブログ、Twitterでどんどんアウトプットしましょう。
これだけで師匠に出会う可能性は飛躍的に増えます。

場合によってはソースコードを晒す(見てもらう)ことで添削してくれるかもしれません。これも非常に重要なスキルアップチャンスだと思います。

まとめ

プログラミングを学習するときは

  • ブログを書こう。
  • Twitterでつぶやこう。

*1:発案しただけ?

*2:パクって

*3:変数ってなに?配列ってなに?関数?メソッド?クラス?とか

*4:初心者なので可能な限り具体的に

*5:上記コピペ簡略化問題