Pythonが嫌いになったの?
Pythonについて嫌気が差したとか、Pythonが嫌いになったわけではありません。これからも一番好きな言語は恐らくPythonですし、実際のところ、機会があればPythonは書こうと思います。ですので、決して言語としてPythonが嫌いになったわけではありません。
そもそも、職業プログラマとして、ちゃんとしたオブジェクト思考を教えてくれたのはPythonでした。Pythonは、その言語仕様からして、出来るだけ簡潔かつ、綺麗に書けるし、Pythonについて深く知れば、プログラミングとはどういうことなのかについて、詳しく知れるほどの、わかりやすい言語であることは事実ですし、初心者向け言語として、Pythonは強く押したいという気持ちは今も変わりませんし、ずっとPythonならびにそのコミュニティに関して感謝の気持ちはずっと忘れないでしょう。
また、近年ではPythonを採用する企業も増えてきました(自分の印象では)。というのは、Pythonはその性質と理念上、「出来るだけ同じコードとして書けるなら、同じように書いた方がいい」というプロダクトの観点から、Pythonを採用する企業も増えてきました。確かにプロダクトとして、「皆が好き勝手に書ける言語」よりも、「書いたらだいたい一緒になる言語」のほうが、チーム開発において良い可能性がある。それは疑いようがありません。
実際に、過去のPythonについて、一年前に、実は辞めようとも思ったことはありました。
Pythonコミュニティには最近思うことがあるけれども、某さんが、まだスタッフとしていて、そして俺自身はPython自体に恩義があると考えているので、PyCon 2013の個人スポンサーを購入することにした :: http://t.co/Yh6pkhy4s5
— 似非原重雄 (@esehara) 2013, 8月 31
「本当の意味で」プログラミングを教えてくれたのはPythonだし、Pythonの実装も、裏にある思想も、俺は素敵だと思うが、私的理由でプロフィールから「好きな言語: Python」を消した。でも残りの部分で大きな恩義、尊敬するPythonistaがいる。その部分への感謝代です。
— 似非原重雄 (@esehara) 2013, 8月 31
でも、現実としては、今年のPyCon2014で、個人スポンサーになれないほど困窮してしまったという事実があります。本当は個人スポンサーになりたかったけれど、無理だった。そういう状況に立たされたとき、Pythonという言語に執着することが出来なくなってしまった。
じゃあなんでPythonを辞めるの?
まず一つに、僕自身のスキルと、Pythonを使う人達がドメインとするものが、あまりにもかけ離れていたというのが現状にあります。実際に、djangoで受託を行っていた会社を辞め、Pythonを利用した各社に対して転職活動を行ったのですが、何処も書類選考までは通るのですが、自分のスキル上、面接で落とされることが多く、Pythonが好きであることと、飯を食うことというのは一致しないという時期がありました。
元々、Pythonというのはどちらかといえば研究開発に近い側面に強い印象があります。例えば、Numpy、Scipy、そしてDeep Leaningなど、それらはコンピュータサイエンスに近い人間ほど、その力を発揮するかと思います。しかし、僕自身はそういう素養がなく、単純にWebベースのアプリケーションを作りたい人間であり、たまたまPythonという言語が性にあっていた。
Pythonの素晴らしいところは、出来るだけ黒魔術やメタプログラミングを避ける傾向にあるかと思います。確かにその欠点は冗長性につながりますが、逆にそれは見通しのいい、初心者にやさしいコードになるという側面は疑い得ません。
しかし、やはり自分のように30代でかつWebサービスの経験も浅い、性格的にも破綻しているような人間が、Pythonを利用して飯を食っていくというのは厳しいものがありました。それはPythonを利用する会社の絶対量が少ないというのもありますし、逆にPythonを使う会社というのは、スキルの高い会社で、自分のような人間は足切りされてしまうのが現状なのではないかと率直に思います。
Pythonの言語が云々ということではなく、ただ単純に自分のスキルが足りなく、また人材としても魅力的ではなかった。実際、自分は性格的に破綻しているという自覚もあります。ただ、それだけの話です。だからPythonは悪くない。
本当は、こんなことは、書きたくないんですよ。俺は、本当に、Pythonが好きだから。単純に俺の力不足で、Pythonに報えなかった。それだけの話です。
言語は関係ない
PHP・⌒ ヾ(*´ー`) ポイ Rubyist is better than PHPerというエントリがはやったときに、思うところがあって、書いたnoteの記事があります。そこから抜粋します。
とはいえ、2012から2013年頃にできたプロダクトでも、使われない変数の代入が多かったり、消したコードをコメントアウトしまくっていて、何が必要なコードなのかわからなかったり、一つの関数が100行~200行あったり、MVCの原則を多少というレベルではなく破壊しまくっていたり、とはいえユニットテストによる機能の保証がないものだからリファクタリングしようにも出来なかったり、さらに加えて開発上の問題点がエクセルで管理されているから、今どこが問題なのか把握しずらかったり、みたいなカオスなプロジェクトをたまに伝聞したり、関わったりしてきた。
僕は一方で言語オタクを趣味にしているから、むしろ言語によってプロジェクトの質は変わることはない。確かにThe Python Paradoxというのはあるけれども、しかし、本人がPythonのアーキテクチャを理解していなければどうしようもない。
一応公平のために言っておくけれども、Ruby on Rails製のWebアプリでも、例えばユーザーが連番のために、未来のユーザーに対してフォローが出来るという、本当にどうしようもないアプリをいくつか見かけた。そこらへんをちゃんと考えているのはCineMatch(シネマッチ)|ソーシャル映画レビュー&ランキングサイトくらいだったのは、ちゃんと付しておこう。
言語に銀の弾丸は存在しない。ある言語を使えば何かの問題が一気に解決することはない。フレームワークもそうだ。問題は、関わる人達が、如何に勉強し、成長していくかの一点にしかないと思う。
そしてRubyへ
というわけで、恐らくこの一年間は暫くRubyを勉強することに注力しようと思っている。Ruby自体は「いい言語」だとは思うけれど、性に合わないところはいくつかある。もちろん、嫌いじゃない言語だよ。ただ、俺としてはPythonのほうが性にあっている。それだけ。だからどっちがいいとか、悪いとかではない。
もし、この就職活動が上手くいったら、PyCon2015では是非個人賛同させて欲しいと思う。ただ、もしかしたら、Pythonを書くことが無くなっているかもしれない。金にならない言語を学ぶ技術というのを偉そうにRubyHiroba2014で話したけれども、俺には金にできる言語すら金に出来なかった。その事実を受け止めて、真摯にRubyを勉強しようと思う。
ありがとう、Python。さようなら、Python。そして、よろしく、Ruby。