2016年2月5日金曜日

【コラム】Ruby on Railsが向上させたのは生産性でなく技術力

Ruby on Railsの公式サイト画像。バージョン5のサンプル動画が公開されている。

Ruby on Railsのversion5の公開が迫っている。目玉の新機能としてチャットが簡単に制作できるAction Cable機能が実装された。Action Cable機能を使えば、RailsにWebSocketを組み込むことができる。
この機能を使えば、2,3人のスタートアップでも、Lineのようなリアルタイムのチャット機能を組み込める。今後は、チャット機能を備えたアプリが増えるのではないだろうか。

さて、高い生産を売りにしてきてここまで発展してきたRailsだが、実際は生産性はそこまで高くはない。 それよりもRailsの功績は、一人が個人で扱える技術を高めたことにある。

Rails初期

私がはじめてRailsに触れたのはversion0.3の時だったと記憶している。
5分だが10分でweb画面が作成できるという動画を発見し、すぐにRailsに手を出したのだ。

しかし、いじったのは2日程度であったと思う。期待はすぐに失望へと代わった。当時デファクトになっていたjavaのstrutsとの完成度の違いは明らかだった。

過大広告のゴミフレームワーク

私はそう結論を下すと、再びjavaのwebフレームワークでwebサイトを作成する日常へと戻っていったのだ。

Rails3の登場

私がRailsを本格的に使い始めたのは、Rails3になってからである。
それまでは利用しようと考えるほどの魅力を感じなかった。iphoneアプリやandroidアプリ開発という選択が生まれたことで、WEB開発自体に興味を無くしていたことも大きな理由である。

しかし、スマホアプリを開発していくうちにWEBAPIを高速に開発する必要性を感じるようになった。だが、当時のjavaのフレームワークの実装のコストは大きすぎた。そこでperlやphpを利用したが、いまいちしっくりこなかった。色々とやっているうちに、再びRailsが候補になった。

既にRailsはversion3になっていた。私はまず簡単なWEBアプリを作成し、Herokuにあげてリリース作業までを試してみた。

下した結論は合格。これはjavaやphpをすぐに超えるだろう。そう判断を下すには十分の完成度だった。
実際、Railsをversion3から使い始めた開発者は多いのではないだろうか。

意外な副作用

Railsを使ってアプリを作成するようになったが、多くの問題点に遭遇することになった。
思ったように素早く開発を進めることができないのである。

もちろん、ある程度の力量が身につくまでは、調べながらの開発になるのは当然だ。
だが、Railsのversionによって発生するエラーの解決はひどく骨の折れる作業だった。

さらに、利用したい機能のgem(パッケージ)を発見しても、インストールがうまくいかないことも多かった。慣れ親しんだjavaやphpを使うべきではないかと思うことも多々あった。そして、一つの結論に至った。

windowsやmacの環境に頼るのをやめて、Linuxを利用しよう。

Rails on Linux

windowsやmacを使わないでLinuxメインで開発を行う。これが私の出した結論だった。
Railsは確かに便利だ。
だが、問題が発生するとLinuxの知識が求められることが多い。リリースするときも、javaのようにwarを変更したり、phpのようにファイルを置き換えるだけでは不十分なのである。Railsを使うにはRailsのバージョンアップについていくだけの能力が必要だ。 そしてそれには、Linuxの知識が必要である。

また、ちょうどその頃、vagrantという仮想環境をwindowsやmacで利用できるツールが生み出された。僕はこのツールを利用し、Linuxを本格的に学習することにした。

この考えは大当たりだった。私はRubyとRailsの力だけでなく、Linuxの理解をさらに深めることができた。数をこなすうちにRailsでバグを見つけても、エラー内容から自分で解決できるようになった。

基礎が大事

建物を建てる時は基礎工事が大切だ。
作る建物の種類に応じて利用する基礎を適切に選択する必要がある。

WEBアプリも同じだ。Railsはあくまで建物である。基礎部分にあたるサーバーの構築が重要になる。
Railsを動かすのにwindowsサーバーを使うケースは少ないだろう。また、LAMPのみのシンプルな構成で終了するアプリも少ないだろう。

RailsアプリのサーバーにはNginxとunicornを使うはずだ。最近のアプリを構築するならElasticsearch, Redisも導入するかもしれない。(RedisはRails5の新機能Action Cableに必須である)。構成管理にはchefを用いるかもしれない。

Railsを使いこなすためには、学習するしかない。新しい知識も古い知識も両方必要である。そして、その過程で得た知識は、エンジニアとしての基礎能力を飛躍的に向上させてくれる。

そして、基礎能力の向上は、Railsの力を最大限に引き出し、生産性が大幅にアップするのである。

まとめ

Railsの魅力は生産性にあるという意見は未だに根強い。
実際、WEBのスタートアップではRailsを採用することが多い。もし、あなたが今CEOとしてスタートアップを考えているなら、ネットで生産性が高いと噂のRailsを使ってWEBサービスを立ち上げようと考えているかもしれない。

だが、それは間違っている。

Railsの生産が高いのではない。Railsを使ってWEBアプリを組み上げられるエンジニアの生産性が高いのである。

良くも悪くもRailsを使いこなすためには、かなりの時間をコーディングだけでなく、サーバー設定や環境の自動化等の学習に費やす必要がある。ドキュメントを読んですぐうまくいくことはない。膨大な知識と経験の積み重ねが必要になる。

Railsはドラゴンボールでいう超聖水のようなものだ。悟空がカリン様との超聖水争奪戦により自然に力が養われたように、Railsを使って環境と格闘しているうちに、現代のエンジニアに必要な力が養われていくのだ。

生産性10倍の言葉に飛びつき、Railsの学習を開始し、絶望してやめた人も多いと思う。
だが、そういう人にこそもう一度Railsに挑戦して欲しい。その過程で身につけていった力こそが、世界のスタートアップで戦うことのできる力なのである。

他のコラム

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...