*** will be better than a self-styled "Rubyist" or "Pythonista"

発端

 先日、PHPを使用している人達を悪口めいた形で批判するような記事が上がり、いろいろな反発を買っていた。
 確かに、旧来めいたPHPの書き方などを見て悶絶している人が多くいて、そのフラストレーションから罵倒したくなる気もしなくはないし、自分自身はPHPから身を離れたところで、プログラムを書くことを仕事としているため、それほどPHPに対して、個人的に悪い体験をしていないという側面もあるため、ある程度PHPに対して甘めになるとしても、その気持ちは解らなくもない。
 プログラミング言語や、なんらかの技術(例えばデータベースでいうならば、MongodbといったNoSQL)というのは、「それを使うとイケている」という幻想を与えがちだし、またそれによって「過去の問題がチャラになる」といったような幻想を与えがちなのは間違いない。
  とはいえ、そのような「使っている自分が好き」という側面がプログラミングに対するモチベーションになることも間違いはないので、一概に否定はしていない。しかし、往々にして「○○を使っている俺はイケてる/××を使っているアイツはイケてない」という話になりがちになり、先日見た記事のようになったのではないか、と思ったりしていた。

PHPerか? Rubyistか? (それともPythonista?)

 自分もプログラマとして、やっと2年か3年経験を積み、Webサービス業界の片隅で仕事をさせて貰っている。基本的に自分が使っているのはPythonなのだが、趣味として、PHP、Ruby、Clojure、Node.jsなどの動向を見たりしている。あるいは、アジャイルだとか、リーンとか、いわばソフトウェア開発について調べていたり、実践したりしている。
 そして、色々と見ているうちに、実はもはや「○○を使っている/使っていない」という軸というのは、さすがに完全に無効になっていないにしろ、だいぶその価値というのは減少しているように思える。というのは、他の言語にあるプラクティスやエコシステムは、だいたい他の言語でもできるように整備されつつあるからだ。

プラクティスの問題

 ここでいうプラクティスの一例として、「継続的インテグレーション」「定期的なリファクタリング」「バージョン管理」「チケット管理」「コードの静的解析によるコードの質の担保」といったようなものがある。
 もちろん、これらのプラクティスについて、プログラミング言語そのものに依存するものではないのも含まれている。しかし、自分の問題意識として、「○○を使っている」よりも、これらの習慣があるかどうか、のほうが大きな要因になっているということを最近考えつつある。

 もちろん、これらのプラクティスは、なんかの問題を一挙に解決するような「銀の弾丸」ではない。あくまでもベタープラクティスだ。

なぜこんなことを考えるようになったのか

 僕はPython書きとして仕事しているので、当然ながらPythonを使ったプロダクトを開発することが多い。
 とはいえ、2012から2013年頃にできたプロダクトでも、使われない変数の代入が多かったり、消したコードをコメントアウトしまくっていて、何が必要なコードなのかわからなかったり、一つの関数が100行~200行あったり、MVCの原則を多少というレベルではなく破壊しまくっていたり、とはいえユニットテストによる機能の保証がないものだからリファクタリングしようにも出来なかったり、さらに加えて開発上の問題点がエクセルで管理されているから、今どこが問題なのか把握しずらかったり、みたいなカオスなプロジェクトをたまに伝聞したり、関わったりしてきた。

 そこで思ったのだ。
 単純に、プログラミング言語の問題ではない。

 そこから、僕は「Pythonista」という看板を外したのだが、「PHP」が批判される多くの理由は、僕が考えるにはPHPの言語自体やエコシステム自体(もちろん、これに踏み込んだものもあるのだが)というよりも、PHPを採用する側の問題であることのほうが多いように思う。そして、そのPHPを採用する思惑に合わせて、プロジェクトメンバーが決定されるが故の問題のように感じられた。従って、心優しき、そして意識の高いPHPerが割を食うというようなループが生まれているように感じるし、そしてそこで「坊主憎ければ、PHPも憎い」という形で、PHPに対する嫌悪もそこから派生しているように感じられる。

 今現在、Railsを利用したスタートアップが増えているように思う。僕もPython書きでありながら、最近Rails 4の勉強をしつつあり、これはこれで確かに「MVCフレームワーク」という方向性を決定づけた存在感のあるフレームワークであるということを感じつつある。しかし、だからといって「Rails」を採用すること自体が、必ずしもプロダクトの価値を担保することではないことも確かだと思う。なんらかのプログラミング言語、フレームワークを使ったとしても、それが如何にイケてたとしても、それに付随するプラクティスが無ければ、それ自体の価値というのが半減するように思う。

 僕は、Pythonが好きだし、Rubyは殆ど書かないから解らないにしろ、いい言語だと思っている。しかし、プログラミング言語が自分の価値を保証してくれるわけではない、ということは自戒しておこうと思う。PythonもRubyも、そしてPHPも、生かすも殺すも本人とそのプロジェクト自身なのだと思う。

この記事が気に入ったらサポートをしてみませんか?