Article

ブログ

2015/09/07

selfreeを支える技術 ~フレームワーク編~

こんにちは。本間です。

前回の記事に引き続き、今回はフレームワークについてまとめたいと思います。

前回のプログラミング言語だけでも、Webサイトやアプリなどを作ることができます。しかし、Webサイトで言えばブラウザからリクエストを受けて、HTMLにして返す、という過程の中でみんなが同じコードを書かなければならない所が出てきます。全てをみんなが一から書かないといけないのでしょうか?

この問題を解決するためにフレームワークは存在します。共通の問題はみんなで力を合わせて共通で使り、別々の部分だけをそれぞれが作れば Webサービスが作れるようにする。そうすればみんなが幸せになれます。特に最近は便利なフレームワークがたくさん出てきたので、Google並みのかっこいいWebサービスを誰でも勉強すれば作れるようになりました。

今回はselfreeでよく扱う有名なフレームワークについていくつか挙げていきたいと思います。

Bootstrap

言わずと知れたCSSフレームワークです。Webサイトを形作るには、CSSという言語で、”リンクはこの色に”、”この部分の横幅は何pxに”、というように細かく指定します。CSSだけで確かにWebサイトは作れるのですが、角丸にしたり、ダイアログを出したり、プログレスバーを出したりというのを全部自分たちで作るのは時間と労力がかかります。

Bootstrapはモダンなデザインにするための基本的なデザインテンプレートが用意されているため、開発者はそれを有り難く借用するだけでかっこいいWebサイトが作れます。今の所、CSSフレームワークといえばBootstrapというくらい地位を確立しつつあります。

ただCSSフレームワークに関して言えば色々と議論の分かれる所で、最近話題の「パクリ」とも言えるような似たようなサイトがたくさん出てきてしまいます。弊社では優秀なデザイナーがいますので、この利用は最小限に抑え、自分たちで作れる所は自分で作るよう最大限努力しています。オリジナル、大事です。

jQuery

JavaScriptの中で今も根強い人気を誇っているjQuerの登場です。 HTMLは内容、CSSは見た目、JavaScriptは動き、と簡単に以前説明しましたが、”動きのJavaScript”に関して大変シンプルで扱いやすいフレームワークです。

基本的な考えとしては、HTMLの要素(リンクとか)がクリックされた、マウスオーバーした、などのタイミングでこんな処理をしてください。というのをコードで表します。

Webサイトにおいて勝手に動き出す何かを作るというのはゲームではないのであまりありません。基本的にはユーザーが何かしらしたタイミングで動かすことになります。その際にjQueryは大変便利にその要素の動作を定義することができます。

シンプルさに加え、jQueryプラグインというものを利用すると、全世界のエンジニアの作ったjQueryの断片コードを利用することもできます。幅広く応用できる部分もjQueryの利点であります。

ただ最近はこのjQueryを脅かす存在がたくさん登場してきています。今Webエンジニア界隈で最もホットな話題と言っても過言ではないでしょう。 具体的には Backbone.js, Knockout.js, Ember.js, AngularJS, React などです。今本当に次世代JavaScriptフレームワークは戦国時代でして、今みんながどのJavaScriptフレームワークを使ったらいいかを議論しています。これらは既存のjQueryと呼ばれる巨大フレームワークに対しての問題を解決しようとしてくれています。

Ruby on Rails

前回紹介しました Ruby において、Webアプリケーションを作るためのフレームワークとして登場してきたのが Ruby on Rails です。私はこの作者の DHH(David Heinemeier Hansson)のちょっとしたファンでして、彼はデンマーク出身のエンジニアで、大変少数のスタートアップでたくさんのクライアント企業を抱えている世界的に有名なサービス Basecamp を運用されています。そこで使われているコードをみんなが使えるようにフレームワーク化したのがRuby on Rails です。

dhhandme私とDHH. (Railsconf 2012にて)

Ruby on Rails の登場でWebアプリを作る環境が大きく変わったと言っても過言ではありません。今では他の言語でRuby on Rails っぽく作ったフレームワークが色々とあります。

何がそんなにすごいかというと、Rails を使えば本当に素早く、自分の作りたい機能を実装できます。変化の早いこの業界において、早く作って早く検証するスピードが大切です。そんなニーズを叶えてくれるツールだと考えています。

コミッタについて

ちょっと余談ですが、エンジニア界隈の中で、特に有名どころのフレームワーク (Ruby on Rails など) のソースコードに貢献している人は”コミッタ”と呼ばれ、その分野の神のような存在として崇められます。本当に一握りですが日本でも世界の最新技術を引っ張っていっている方がいます!

Webサービスを作って尊敬される他にこのようにして尊敬されるエンジニアもいるのです。彼らこそ、ホンモノのエンジニアと言えるでしょう。

終わりに

まだまだフレームワークをあげるとキリがないのですが、Webアプリを作る上で特に重要となる3つのフレームワークを上げました。

プログラミング言語を学んだ後はフレームワークを学ぶ。これがエンジニアの次にやらなければならないことです。

しかもこのフレームワークもどんどん時代とともに新しいものが登場してきます。私が思うに、エンジニアにとって最も大切な素質は「好奇心」だと思っています。好奇心がなければ、新しい技術が出た時に触ってみようと思えません。そうするとこのスピード激しい時代にどんどん取り残されていくエンジニアとなってしまいます。新しい技術は技術レベル問わずみんなが同じスタートラインです。スタートラインにそもそも入っていかないと、レースに参加すらできないのです。私は常に技術に対し好奇心を持ってこれからも取り組んで参りたいと考えております。

前回のプログラミング言語とか今回のフレームワークとかの話は、”本当の”エンジニアにとってはとても楽しく語れるキーワードだと思いますので、ちょっとでも概要を知っておくといいかもしれません。