飛行機の中の暇つぶしとしてスマホで文章を書いてみる。

今、プログラマとして自分が一番やるべきこと、やりたい事はなんだろう?と考えてみると、 今仕事でやっている、GPU用の独自言語を作る、というのは、かなり有力なものに思う。

一番やりたい事、やるべき事を考えた時に、それが今やってる事と一致しているのは、なかなか良い事だなぁ。

今回の仕事は、作っているものに関しては、なかなか満足のいくものだ。 自分が自分の考えで、あったら良いと思うものを作っている。 成功の栄誉も失敗の惨めさも、全て私のものと思える。

失敗した時にそれを自分のものと思える、当事者意識のある事をやるのは、健全な事にも思うし、 自分らの年齢、キャリアのステージでは当然そうあるべき事にも思う。

プログラマにとって、仕事の内容が自分のものか会社やプロジェクトのものか、というのは、ケースバイケースで結構状況により差があると思う。 今回の自分のケースではかなり自分のもの、という側面が強くなっている。 これは偶然そうなってしまったという部分も大きくて、自分がそう意図した訳では無かったが、結果としては悪くない落ち着き場所だったとは思う。

ただ、自分が特殊、という訳でもなく、仕事でやっている事が自分のもの的な性質が強い事はちょくちょくある。 たとえば自分が作り上げたものを会社を辞める前にオープンソースにして、会社を辞めたあとも続ける、というのは、よく見る話である。 この場合、かなりの部分、仕事で作ってきたものは、自分のものと言える。 それは不義理な事でも倫理的に問題がある事でも無く、割と会社の側も理解がある事が多いだろう。 実際、競合になるのでなければ、別段会社に被害も無いし、場合によってはタダで保守、改善をしてくれるという事もあるので、メリットがある場合もある。

会社で働くプログラマには、まず会社員としての自分があって、その中の一業務としてプログラマをやってるプログラマと、 まずプログラマとしてのアイデンティティがあって、その人がただその時はその会社に所属している、という場合の二つがあると思う。 もちろんその間はゼロイチじゃなくてグラデーションだけど。 仕事でやっている事が自分のものである度合いが強い人は、プログラマとしてのアイデンティティが先に立つ人が多いのではなかろうか。

いつも、なるべくプログラマとして今一番やるべき、と思っている事をやる方がいいよな。

これまでのプログラマ人生を振り返ると、いつもその時一番やるべき、と思う事をやっていたかというと、そうでも無いかもなぁ。

一回くらいハードウェアの仕事をやってみてもいいかな、とか、一回くらいクラウドの仕事をやってみてもいいかな、とか、そういう考えで選んだ仕事がそれなりにある。 それらはやってみたいと思った事をやってみた、というものなのだが、 それらがその時にプログラマとして一番やるべきと思っていたか?というと…どうだろう?あまりそういう事は考えてなかった気がする。

それらの仕事をやっていた時というのは、暗黙のうちにプログラマ人生はこのあともまだまだ続くと思ってた気がする。 そのうちやろうと思ってる事の一つでさえあれば、それが一番かどうかというのはあまり気にしてなかったんじゃないか。

でも、いつまで続くのかも分からないし、また、続くにしても一番やるべきと思ってる事をやらない理由も無いよな。 いつも一番だけしかやってはいけない、という堅苦しい考えもゆとりが無くていまいちとは思うが、 一番やるべき事をいつも後回しにしていつまでもやらない、というのも良くない気がする。 何回かに一回は一番やるべきと思ってる事をやるべきだろう。

そもそも、プログラマとして一番やるべき事はなんだろう?という事をあまり考えて来なかった気も…いや、どうかな?少し検討してみよう。

次に何をやるべきか、という事は定期的に考えてきたし、 そういう時にはその時点で一番やるべきと思う事を間接的には考えていたような気もする。 また、プログラマ人生を通して、自分はどういう事をやったプログラマであるなら満足出来そうか?みたいな事は、ぼんやりとは考えていた気もする。 また、新卒で入る会社を選ぶ時、最初の転職で入る会社を選ぶ時、などの大きな転機では、それなりにそういう事を、間接的には考えていた気もする。

ただ、次がプログラマとして最後の仕事だとしたら、自分は何を選ぶだろうか?みたいな視点で一番について考える事は、あまり無かった気もする。 今回一番と思える事をやってるのも、 一番と思う事を考えてそれをやろうとしたという訳では無く、 もう少しぼんやりとやる事を考えて決めたら、半分偶然、というと言い過ぎだが、3割くらいは偶然でそういう事をやる事になった、 という気もする。

独自言語を作る、という仕事は、やりたい事だった。特に汎用のCPUではない、変なハードウェア向けに作りたい、という思いがあった。 GPUはそこまで変なハードウェアという訳では無いが、まぁまぁぼんやりと思っていたものに近い気はする。 それを仕事に出来たのは、なかなか今回の仕事で良かったな、と思う所の一つだ。

言語を作る以外にプログラマとしてやるべき、と思ってる事は、他に何かあるだろうか? まずエディタは思いつく。 Android用の、キーボード専用のエディタを作りたい。 これはたぶん、プログラマとして一番やりたい、やるべき事の候補の一つだな、と思う。

他に思いつくのは、講義のノートをとるためのソフトウェアだ。 これは具体的にこれ、というアイデアが固まってる訳では無いが、 たぶん自分がやるべき事はそれなんじゃないか、という思いはある。 MOOCとかで勉強するのは好きだし、既存のソフトウェアはまったく満足していない(というか現時点でもほとんど自作している)ので、 これが一番やるべき事な可能性もある。

こうしたものは、ちょっとしたツールで終わってしまう可能性も高いし、今回の仕事を始める前はそういう傾向が強くて、その結果に不満を持っていた。 プログラマとして俺はこれを作ったぞ!といえるような何かじゃない、というか。 今回の仕事は、本格的に作らないとあまり意味が無い、と思うようなものを、正面から逃げずにちゃんと本格的に作った、という所は、満足している事の一つである。 そういう事をやりたい、とここ数年思っていた事をやれた。 もう一回くらいそういうのをやりたいなぁ、という気はする。

目先の今一番欲しいものをとりあえずでっち上げるのは、それはそれで重要な要素だとは思うのだけど、 次がプログラマ人生の最後となる、と言われた時に、そういう事をやりたいだろうか? 少なくとも現時点では、もし最後ならやるのはそれでは無い気がする。 もう少しやり遂げたあとならそういう最後でもいいかもしれないが。

目先では無いものとして考えるなら、 GUIのライブラリのようなものは作りたいかもしれない。 Electronのようなものを作りたいと思ってる気もする。 なんかコマンドラインで使えるような小物をぱぱっと作れる何かとか、ポータブルなGUIのアプリという問題に自分なりの答えを出したいような気もする。 これも何を作りたいと思ってるのかはぼんやりしていてよく分かってない。 ただその辺の何かに、自分がプログラマとして一番やるべきと思ってる事があるかもしれない。

Androidの本は、結果としてはやるべき事をやれた手応えもある。 代表的なアウトプットが本、というのはプログラマとしてはかっこ悪いと思うので、あれで終わり、というのは避けたいとも思うけれど。

でも今回の仕事もやるべき事をやれている気はしているので、本と合わせて二つやれればまぁまぁと言えるんじゃないか。

でももう1つくらいはやりたいな。 そのもう一つが何かはわからんが、今回の仕事が終わった次は、それと思える事をやりたいな。 それが出来たら、プログラマとしてはまぁまぁな気がする。