新しい何かに取り組むプログラマさんたちへ

桜の季節が近くなってきましたね。

春といえば出会いと別れの季節です。

我々プログラマも、ともすると4月から就職して新しいプログラミング言語やプロジェクトに出会うのではないでしょうか。

僕は1月に戦場を移動した関係で、1月から初めてRubyに取り組みました。

またObjective-cも書き始めています。

何かの参考になればと思い、今回の経験から僕なりの新しいプログラムへの取り組み方の定石みたいなものを偉そうに書いてみようと思います。

Kiai Driven Development

新しい言語やプロジェクトに出会ったとき、KDD(気合駆動開発)信奉者の僕が気を付けている点が3つ有ります。

それを一から紹介します。

Githubをとにかく巡れ!

新しい言語に取り組むとき、僕はまずGithubのその言語に関するwatchやfolkのランキングを見てます。

ランキングは、Github上部のExploreってメニューから飛べますよ。

そんでもって、Watch数の多いプロジェクトをかたっぱしからWatch、はてブに突っ込むなりしてリストアップしつつ、各プロジェクトの概要だけReadmeを見て頭に叩き込みます。

例えばRubyを書き始めたとき、とりあえずrailsやdiasporaなどをとりあえずWatchして、またプロジェクトに必要そうなキーワードで検索、それらもwatchするなどしつつ、頭に入れていきました。

僕は細かいこと覚えるのが苦手で、常に頭にインデックスを貼ることしか考えてません。

それゆえに、使えそうなプロジェクトのインデックスを頭につくっておいて、必要なときにそこを見に行くようにしています。

この作業をしておくことで、開発中に行き詰まったら、「あ〜あんなプロジェクトあったなー」って感じで思い出してすぐ参考にしてます。

ソースコードを読め!

これは当然ですね。

説明はいらないかもしれませんけど、自分が使う言語やフレームワークには必ず書き方の定石があります。

デザインパターンとかではなくてもっと簡単なものからアプリケーション全体の設計まで。

これらを学ぶために、Githubのプロジェクトの中から一つだけ選んで、サクっとソースを読みます。

この作業をするときに、理解度の目安として、追っているコード一行一行の意味が取れる、というところまではせめて読みましょう。

意味の分かってないコードを書く、もしくはコピペしてくるプログラマほど厄介なものはありません。

テストとサンプルを読め!

プロジェクト中、どれくらいの精度のテストを導入できるかは締切りなんかにも依るかもしれませんが、その精度、有無にかかわらず、既存のテストコートは読みましょう。

その言語でどうやって精度を保っているのか、そのフレームワークでどういったテストをしてるのか、といった情報は、実際にコードを書き始める上で非常に大切です。

コードを書いてる時に、どういった点に気をつければバグが減るのか、このコードをテストしたい時どうやったらいいのか、ここを理解していれば作業が案外スムーズに進みますよ。

何か調べるときはまずはてブを当たれ!

調べ物するときなんですが、Google先生に問い合わせすると、案外精度の悪い記事とか間違った記事が引っかかったりします。

そんな時でもはてブの検索は結構良記事がヒットしやすいんですよ。

あと、入門記事的なものもはてブの検索が一番です。

とりあえず、新しい言語始めるときは、はてブでその言語検索しましょう。

絶対に両記事に当たるはず。

後は書け!

実際に書くことに勝る勉強はありませんね、やっぱり。

KDDで一番大切なのは、とにかくコード量です。

どう書いたらエラーになるとか、どういうパターンで書くとうまくいくとか、こういった情報を即座に引き出せるように何でもいいからとりあえず書きましょう。

手が勝手に動くくらい書け!

とりあえず書けよ、なにか見えるさ!

むちゃくちゃな精神論を振りかざしたところでこの辺にしておきます。

プログラミング楽しいよこわくないよ。

 

追記

3つと言ってたのに5つ書いてたので小学校からやり直したい。

Kinesis買ったので設定してみた

KinesisのAdvantage買ってしまいました。

色は黒です。

元々買おうと思っていたのですが、先日お世話になったMixiのエンジニアさんたちに背中を押された形です。

思っていた以上に変態チックで僕としては大満足。

キーボード側で細かくRemap設定できるようですし予備のキーやクッション的なものも付いくるという至れり尽くせり感。

ちなみに写真は僕の職場です。

うさぎのマークのLabit社です。

設定

とりあえず買ったら設定しますよねってことで色々設定したんで、その内容だけ書いておきます。

Remapの設定

EmacsもVimも使うため、親指にCtrl、Esc、Cmdキーを全部割り当ててます。

あと特に意味はないけども他のキーもいじってます

既存配置から下のように割り当てしてます。

  • 左右Ctrl → Esc
  • End, Home, PageUp, PageDown → Command
  • BackSpace ↔ Space

KeyRemap4MacBookの設定

このままだと全角半角切り替えがアレなので、左右のコマンドに切り替えを割り当てるように設定しましょう。

 

以上の設定だけでもだいぶ使いやすくなった感じ。

使ってみたけど、結構お腹いっぱい。

 

慣れてきたらもっと設定に関して追記していこうかなと思います。

Mixi Scrap Challengeに行ってなんか優勝してきました!

Mixi主催のScrapChallengeって大会行ってきたよ!

しかもなんかダントツ優勝したらしいよ!

 

Mixiのクローンサイトにアタックを仕掛ける楽しいイベント。

面白かったので自分のプロフィール画面に蒸気機関車走らせたり、懐かしのmarqueeタグを突っ込んでふざけたりしてました。

前者はXSS見つけた部分にSL.JSを仕込んで走らせてます。

 

真面目な感想を述べさせてもらうと、

「入力されたデータは一ミリも信用するな!」

 

来年も開催された場合も考えるとXSSとかのバリエーションってあまりたくさんあるわけでもないから、具体的な問題については触れないでおきます。

ただ、例えばXSSなんてものは、ユーザーが入力したデータを出力する場面では絶対にエスケープしましょうとか基本的なことなんだけど、それを出来てない会社さんも多かったりします。

実際僕が悪ふざけ半分おせっかい半分で知り合いのサービスを調査してあげると結構な割合で引っかかりますよ。

 

非常に基本なことだけども、HTMLに出力する場合のエスケープ、SQLに突っ込む場合のエスケープは気をつけて!

今日も午前中の勉強会で話に出てきたはまちやさんのこの記事、分かりやすくていいから見とくこと!

http://d.hatena.ne.jp/Hamachiya2/20120215/php_security

 

最後に今日お世話になりましたMixiの皆さん、ありがとうございました。

Mixiのエンジニアの皆さん、とってもGeekで熱い人達でした。

僕もKinesisキーボード教に入信いたします。