前回までのプログラミング学習コラムに続き3回目の勉強内容です。
第3回 「いよいよWebアプリ開発環境へ」
前回は開発環境構築に欠かせないテキストエディタ「Sublime Text」と、パッケージ管理システム「Homebrew」をインストールしました。この2つをインストールすると、後の環境構築作業がグッと楽になります。これからどんどんインストールしていきましょう。
さて前回少し触れましたが、Homebrewという名前は面白かったですね。人気のツールはいろんな背景を持っていて、それを調べているだけでも楽しいです。
Homebrewの場合、Mac好きの人にとっては「The Homebrew Computer Club」の存在も無視できません。1970年代にカルフォルニア州で活動していたこの伝説的なクラブには、あのスティーブ・ジョブズやスティーブ・ウォズニアックも所属していたのです。
それからテキストエディタと言えば、少し前まで「Vim」派と「Emacs」派の2大勢力がバチバチ火花を散らしていました。そこへ彗星の如く現れ多くの若手プログラマを魅了してしまったのがSublime Textだったのですが、こういう背景は知っていて損はないと思います。なぜならテキストエディタの機能の進化には、この2大勢力の機能の特徴が色濃く反映されているからです。
同じようにパッケージ管理システムも、老舗の「MacPorts」と新興の「Homebrew」の2大勢力のつばぜり合いになっています。それぞれのユーザの支持している理由を聞けばこの分野のツールを使いこなすヒントにつながるはずです。
■ データベースの人気者「MySQL」
さて今回の最初のパッケージはデータベース管理システムの「MySQL」です。
今はデータベースの定番となったMySQLですが、実はこの業界でも「PostgreSQL」、「SQLite」などライバルとの争いとなっています。ここでは古くからサーバ構築初心者の味方になってきたMySQLを取り上げてみます。
まずHomebrewコマンドでMySQLをインストールします。
$ brew install mysql
するとズラズラとメッセージが出てくるのですが、これはその後のおすすめの作業の説明です。後で読み返したい場合は brew info mysql で確認することができます。
ということで、ここではとりあえずメッセージの最後にあるコマンドだけ実行します。
$ mysql.server start
これでMySQLサーバが起動しました。サーバが起動したということは、外部に対してサービスを開始したということです。ここで意識すべきことは、サービス開始と同時にセキュリティの問題も発生する可能性があるということです。サービスの提供と侵入されるリスクは表裏一体です。
ここでセキュリティを考慮しながらユーザの初期設定を行います。対話式なので、設問に答えていきます。
$ mysql_secure_installation
以下が対話画面です。赤文字の部分を入力してください。
Enter current password for root (enter for none): enterキーのみ Set root password? [Y/n] n Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y
ここで最初の項目 Set root password を n にする、つまり管理者パスワードを設定しないのはセキュリティ上の問題点になりますが、初心者の場合はとりあえずひと通りのサーバ環境ができあがるまではこのままにしておいたほうが良いかもしれません。というのは、この後Ruby on Railsなどをインストールするのですが、設定が間違っていてサーバ起動時にエラーメッセージが出た場合、初心者だと手順ミスのせいなのかパスワード設定のミスなのか原因がわからなくなることが多いからです。
とは言え、やはりデータベース管理者のパスワードが設定されていないとリスクも発生します。公衆無線LANに繋げる時などはいったんMySQLを停止しておきましょう。
$ mysql.server stop
必要になった時にまた mysql.server start させるようにします。
なお、先ほどの brew info mysql の内容を見るとMySQLを自動起動させる設定方法が書いてありますが、初心者としての勉強期間中は毎回作業開始時にターミナルから $ mysql.server start して、作業が終わったら $ mysql.server stop をした方が良いでしょう。その時点で何のサービスが起動しているのか常に意識することができます。
開発環境に慣れてきて、他のサーバやフレームワークの設定などとの関連が見えてきたら、きちんとMySQL管理者パスワードを設定しましょう。その頃には設定方法をすぐに自力で調べることができるようになっているはずです。自動起動についても同様です。
なお、MacOS自体のセキュリティを向上させるためには、システム環境設定のファイアーウォール設定も欠かせません。Appleのサポートページを参考にして設定しましょう。
「OS X Mavericks: ファイアウォールを使って不要な接続をブロックする」
また、OS X Mavericksの設定について、以下のサイトがとても参考になるので是非チェックしてみてください。
「OS Xインストール後にMac中級者が絶対見落とす地味設定(Mavericks対応)」
■ フレームワーク「Ruby on Rails」
さてここでフレームワークの登場です。開発環境構築においてはついに大御所登場といったところでしょう。
フレームワークの定義はなかなか難しいのですが、ざっくり言えば「定型的な処理を素早く実装できる仕組み」といったところでしょうか。いろんな説明の中で筆者が一番しっくりきたのは、「通常のプログラミングでは処理に合わせてコードを書いていくが、フレームワークを採用した場合は用意されたコード群に合わせて処理を定義していく」というものです。が、プログラミング初心者にとってはなんだかよくわからないですね。
たいていの場合、初心者にとってフレームワークの仕組みはブラックボックス化してしまいます。でもとにかくサービスを実装するのは簡単ですから、まずは動かしてみて「おお、サービスが動いた!」という感動を推進力に変えて勉強を進めていきましょう。
もう少しフレームワークという言葉と仲良くなりたくなったら、まず「MVCアーキテクチャ」という用語について調べてみてください。実現したい処理をこのアーキテクチャの形に合わせて組み込んでいくと、Webアプリ向けのフレームワークでは自然にサービスが出来上がっていきます。
Ruby on RailsはRuby言語で書かれたフレームワークで、Ruby言語が大ブレークするきっかけになったプロダクトでもあります。現在非常にメジャーなフレームワークであり、様々な場面で採用事例を見かけます。ということは、勉強する時にはWeb上の情報がきっと強い味方になってくれるはずです。実際ちょっとググっただけで膨大な量の日本語情報を見つけることができます。
ではRuby on Railsをインストールしていきましょう。まずRubyのインストールからです。OS Xでは始めからRubyがインストールされていますが、Homebrewで管理するために改めて最新バージョンのRubyをインストールします。
といっても、「最新のバージョン」というのが難しいところです。今ちょうど難しい時期なのです。2013年12月現在、安定版の最新バージョンは2.0.0なのですが、初心者が勉強するための入手しやすい情報は1.9.3以前のものです。特に書籍で学ぼうとする人にとっては、2.0.0はまだ敷居が高いかもしれません。前回テキストエディタSublime Textのインストールの時には思い切って最新バージョンにしましたが、プログラミング言語については勉強方法が重要になってくるので、一概に最新バージョンが良いとは言えなくなります。
ということで、ここでは一世代前の、といっても今最もメジャーな(情報を入手しやすい)バージョンである1.9.3をインストールしていきましょう。
Rubyには独自のバージョン管理システムがあるので、そこからインストールしてみましょう。この分野でもrvm派とrbenv派というのがあるようですが、今回はrbenvで行きます。
$ brew install rbenv $ brew install ruby-build
次にいわゆる「パスを通す」という作業を行います。前回もbrew doctorコマンドのところで同じようなコマンドが出てきました。今回は以下の通りです。慣れてきたらコマンドの意味を調べてみてください。
$ cd ~ $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> .bash_profile $ echo 'eval "$(rbenv init -)"' >> .bash_profile $ source .bash_profile
あともう少し準備作業です。
$ brew install readline $ brew install openssl
ここでrbenvのバージョン管理機能を使います。インストール可能なRubyのバージョンを調べてみます。
$ rbenv install -l
ズラズラっとたくさん出てきました。ここでは1.9.3系の最新バージョンをチェックしてインストールします。2013年12月6日現在ではRuby 1.9.3-p484となります。
$ CONFIGURE_OPTS="--with-readline-dir=$(brew --prefix readline) --with-openssl-dir=$(brew --prefix openssl)" rbenv install 1.9.3-p484
もし2.0.0系やpreview版の2.1.0系に興味を持った場合、複数のバージョンをインストールしておいて、メインで使うバージョンを切り替えることもできます。こういうところがバージョン管理システムを導入している強みと言えます。ではインストール済みのバージョンを確認してみましょう。
$ rbenv versions
今回一つしかインストールしていないので一つしか出てきません。で、一つしかインストールしてませんが、それをメインで使う宣言をしてからバージョンを確認してみます。
$ rbenv global 1.9.3-p484 $ rbenv rehash $ ruby -v
一つしかインストールしてませんが、そのバージョン名が表示されるはずです。これでRubyのインストールは完了です。
次はRailsのインストールです。Rubyではほとんどの場合「gem」というという形式でライブラリが公開され、これらをRubyGemsというパッケージ管理システムでインストールしていきます。まずはこのRubyGemsとRakeというツールのアップデートを行います。
$ gem update --system $ gem update rake
次にようやくRailsのインストールです。2013年12月6日現在、最新バージョンは4.0.2のようです。インストール後に確認してみましょう。
$ gem install rails --no-ri --no-rdoc $ rbenv rehash $ rails -v
もし一世代前のバージョンのRailsをインストールするならば、先ほどの1行目のところで
$ gem install rails -v 3.2.15 --no-ri --no-rdoc
などとすれば良いでしょう。なんと言っても一世代前のバージョンならWeb上のノウハウも豊富です。Rubyが一世代前の1.9.3ならばRailsも3.2.15が順当なのかもしれません。インストールできたら同じようにrails -vでバージョンを確認してみてください。
ここでもう一つ、node.jsもインストールしておきます。
$ brew install node
さあ、ようやく開発環境がひと通り準備完了です。いよいよサンプルWebアプリを作ってみましょう。もちろんとても簡単な構成から始めます。ホームディレクトリの下にRails用作業ディレクトリを作り、そこに移ります(もちろん他の場所に作業ディレクトリを作ってそこに移っても構いません)。
$ cd ~ $ mkdir rails_app $ cd rails_app
さらにその下に今回のサンプルアプリ、sample_appを作成し、そこに移ってからRailsを起動します。
$ rails new sample_app -d mysql $ cd sample_app $ rails s
ここで以下のようなメッセージが出れば成功なのですが、エラーメッセージが出た場合は慌てずにメッセージをじっくり読んでみて、よくわからなかったらそのメッセージでググってみましょう。辛抱強く迫ればなんとかエラーが解消するはずです。メッセージに従って何度かgemパッケージをインストールすれば解決するでしょう。
=> Booting WEBrick
=> Rails 4.0.1 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2013-12-05 21:12:48] INFO WEBrick 1.3.1
[2013-12-05 21:12:48] INFO ruby 1.9.3 (2013-11-22) [x86_64-darwin13.0.0]
[2013-12-05 21:12:48] INFO WEBrick::HTTPServer#start: pid=3831 port=3000
無事に上記のようなメッセージを確認したら、いったんRailsを終了してみましょう。Railsの終了方法は、上記のメッセージ通り「control」+「C」キーです。
ここでMySQLサーバを起動し、mysqlコマンドを使用してテスト用DBを作成します。
$ mysql.server start $ mysql -uroot mysql> create database sample_app_development; mysql> quit
準備が全て整ったので再びRailsを起動します。
$ rails s
最後にWebブラウザを起動し、URL欄に http://localhost:3000 と入力してアクセスしてみてください。「Welcome aboard」と出力されたら作業完了です。お疲れさまでした。
あとはひたすらRuby on Railsの勉強ですね。強力なチュートリアルサイトがあるので参考にしてみて下さい。
ここまで長い道のりだったような気もしますが、Webアプリ開発への道はまさに今ここから始まったばかりです。これから大変ですが、楽しくもあります。せっかくですからたっぷり楽しんでいきましょう!
次回はWebサーバ「Apache」とPHP言語を中心としたサーバ環境の構築に挑戦します。お楽しみに。