近況・これからの方向性についての話

ここ最近、プログラマーになろうと思ってた当時の「一通りものづくりができるプログラマーになりたい」という目標がおおよそ達成してしまったと思うようになった。Railsも2年くらいやってて簡単なWebサービスなら土日で作れるようになった。AndroidアプリもiOSアプリもそれぞれ一通り経験して、まだまだな部分もあるけど達成感がある。

そしていま、モチベーションの行き場を失ってなんだかモヤモヤしている。

ある程度作りたいものを作れるようになった。じゃあ、これからどうしようか。これからの方向性についてあれこれ考えるうちに、3つの方向性があると考えるようになった。

1つは、ものづくりの経験を重ねてものづくりのスキルを高めていく方向性。目標を達成したとはいえ、まだまだ未熟な部分もたくさんあると感じている。アプリだってひとりですべて作り上げたわけじゃないし、Railsも4.0が出たりRubyが2.0になったりと技術はどんどんアップデートされるから、最新のトレンドをキャッチアップしたい気持ちもある。そして、作ったものが多くの人に長く使ってもらえるようにするには、開発初期で必要とされるスキルとはまた異なるスキルが要求されるように思う。"キレイな"コードを書く技術やテストコードを書く技術なんかがそうだし、サーバーの運用技術もまだまだ自分には不足してると思う(っていうか、ないと思う)。なにより、僕にはオープンソースに貢献した経験がない。優秀なプログラマーはすべからくオープンソースに貢献しているものだし、いずれ僕もそうしたいと思っている。

2つ目は、ものづくりの幅を広げていく方向性。現時点では、Webサービス、Androidアプリ、iOSアプリを作った。だけど、もっといろんな領域にも手を広げていきたい気持ちがある。例えば、Mac OSXアプリだったり、Arduinoを使ったインタラクティブなデバイスも作ってみたい。特にハードウェアはすごく興味があって、先日「Arduinoをはじめようキット」を購入していじりはじめたばかりだ。ハードウェアまで扱えるようになると、プログラマーがハックできる領域がぐっと広がってくると思う。いままで扱ってきたデータは主にPCから入力されたデータにすぎなかったけど、ハードウェアのさまざまなセンサ(例えば、温度センサー、赤外線センサー、圧力センサーなど)を使えば、現実世界のいろんな情報をデジタルのデータとして扱えるようになる。ここに大きな可能性を感じている。

最後が、技術そのものを深く探求していく方向性。新しいものをつくりだすのではなくて、すでにある古くから築かれてきた技術をもっと知りたいという気持ち、知的好奇心がある。普段の開発はいろんなブラックボックスの上で成り立っていると思う。OSの仕組みやRubyの実装なんて知らなくても、Webサービスを開発することはできる。でも、開発していくにつれてブラックボックスの中身を見てみたいという好奇心が湧いてくることがあって、今まではその気持ちを抑えてものづくりを優先させてきた。だから、今度はものづくりの方をちょっと抑えて、腰を据えてブラックボックスの中身を暴いてやりたいと思う。2週間くらい前から「30日でできるOS自作入門」という本を読みながら、ゆっくりOSを開発している。実際にコードを書いてみることでOSの中身を理解しようとしている。いままで見えなかったいろんなことがわかりかけてきてて、とても面白い。OSの次はコンパイラとかHTTPサーバーとかデータベースとか検索エンジンとか、いろんなブラックボックスを暴いてやりたい。

これらの方向性はもちろんどれか1つを選ぶ必要はなくて、仕事とプライベートで切り替えながらうまく両立していけると思う。その先にどういうビジョンがあるのかまだまだハッキリしてなくてモヤモヤは晴れないけど、好奇心というリソースは貴重だからそれを抑えつけずに、好奇心のまま自由に開発していきたいと思う。