新しい言語を学ぶにあたってやっている三つのこと

先の LT でも少し技術ネタとしてお話したのですが、現在新しいサービスを構築中で、それに向けて 11 月 (今も) 怒濤だった (である) 訳ですが、その中で幾つか新しい言語にチャレンジしています。その中で自分なりにある程度意識してやっている事を三つのポイントでまとめてみます。

写経をすること

「写経」には二パターンあるような気がします。

まず、「動いている」という感覚をまとうため、サンプルなどで提供されているソースをまるまま書いてみる「写経」。言葉通り、サンプルや、リファレンスにのっているものをまるまま書いてみます。次に、自分のやりたい事に対して少しずつ変化を加えていくような形。ただ僕の場合、完全に写経というより、ある程度似たパターンのものを見つけてきて、自分の欲しい完成形に近い形にのっけから書いてみる、という事が多い気もします。このやり方だと、うまくいけば結構速くにブツが出来上がったりもするのですが、弱点としてトラブルが発生した場合に、どこから自分が間違っているのかを切り分けるのが難しくなります。なのでそこの匙加減は自分でも気をつけねば、と思っています。

次に、既にあるソースから「言語特有の節回しや標準ライブラリの使い方などを学ぶ」ための「写経」。どちらかというと直接「写経」するというより、使っているフレームワークのソースなどをまず「読み」ます。で、そのフレームワークや言語特有の節回しを「写経」して自分のコードに反映する、と。直接パクれる事はそんなにありませんが、それっぽい雰囲気のコードになり、少し「出来る」ようになった気持ちになれます。

リファレンスへのアクセスを高速化すること

写経などである程度雰囲気つかめるようになると、泥臭くても欲しい実装が出来てしまう事は多くなります。ただ標準ライブラリにある機能を時間をかけて再開発してしまったり、、、と。また、ちょっとした事ならググっても答えを見つけられたりするのですが、バージョン違っていて動かなかったり、実は違うやり方でスマートなやり方があったり。という事でリファレンスを意識して読むようにしています。

で、少し工夫しているのが、都度ググって毎度同じページを見るのはなんなので、PDF で落とせるものはダウンロードして、開きっぱなしにしておくか、ウェブページの場合にはブラウザのツールバーに置いておきワンクリックで開くようにしています。もう一つ、リファレンスではないのですが、ある程度網羅的 (と自分で思える) 書籍を手元に一冊置いておく、という事をしてます。これで僕の場合は「リファレンスを見る」という行為への心理コストが下がります。

ある程度他の言語経験があれば「さすがにこういうのは標準機能であるだろう」というアタリがつくようにはなると思いますし、リファレンスはそういった時にも重宝します。

小さくプログラムを書く環境を整えること

僕はもっぱらウェブアプリな人なのですが、trial & error をするのに、ウェブアプリ全体を動かさないといけない事って実はそこまでないです。(もちろんフレームワーク自体の動作をみたい、等は別として。もう一つ、ウェブアプリ全体を動かして試さないといけない、っていうのは多分どこか書き方とかアーキテクチャで工夫できる点があるという指標になる) 。なので、自分が試したい事、やってみたい事を確認するために、小さくプログラムを書いて手軽に試せる環境を整える事って重要だと思っています。

それで利用しているのが、テストケース。いろんな言語で xUnit 系のモノは提供されているので、それで「ちょっと書き」「動かす」という事をやってます。
他、Python/Ruby/Perl みたいな対話的ターミナルが使えるものは、そちらも重宝しています。鶏か卵か、という話にもなりますが、「問題領域を小さく考える」癖つけにもなるのかな、と思います。