┏━━━━━━━━━━━━━━━━━━━━━━━━━━■
┃ ■┃
●┃● ● オ ブ ジ ェ ク ト 倶 楽 部 ■ ┃
┃ ■ ┃
┗━━━━━━━━━━━━━━━━━━━━━━■━━━┛
No.349 2010/10/27
■ I N D E X
┃
┣【Topics】「参加のまちづくり入門演習」開催
┣【プログラミング】nginxから始めるWebサーバー構築入門 [4]
┣【アジャイル】アジャイル・プラクティスの見つけ方 [19]
┃ 〜壁に大事な情報を貼り出す〜
┗ 編集後記
〇━━━━━━━━━━━━━━━━━━━━━━━━━━━T o p i c s━
〇 「参加のまちづくり入門演習」開催
〇 〇━━━━━━━━━━━━━ ━━・
今年の1月にオブラブが開催した「アレグザンダー祭り」にてワークショップを
担当して頂いた中埜博さんを講師に、11/13・20に「参加のまちづくり入門演習」
というワークショップを開催します。
建築家クリストファー アレグザンダーの提唱する利用者自身で願望をパタンと
して抽出、構造化して、プロジェクトのランゲージを作り出していく、ボトム
アッププロセスを体験できます。オブラブメルマガ読者のみなさまにとっても
多くのものを持ち帰ることができる内容だと自負しております。
11/06までに下記サイトまで申し込みください。
http://kokucheese.com/event/index/4773/
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■━
■
┗【プログラミング】nginxから始めるWebサーバー構築入門 [4]
こんにちは、hsbtです。
今回は前回までに紹介したnginxの起動と設定の変更方法を応用してRailsアプ
リケーションをnginx経由で動作させる方法をご紹介します。
● Railsアプリケーションのデプロイ
本連載はnginxの特集ですので、Railsアプリケーションの構築手順については
割愛します。手元にrails sで起動するアプリケーションが存在する前提としま
すので、用意していない場合は
http://edgeguides.rubyonrails.org/getting_started.html などを参考にして
Railsアプリケーションを作成し、ブラウザから参照できる環境を準備してくだ
さい。
それではRailsアプリケーションのデプロイについて簡単に紹介します。
Railsアプリケーションを動作させるためのアプリケーションサーバーとしては、
webrick、mongrel、thinのようにコマンドを実行するだけで起動することがで
きるものがありますが、サービスとして公開する場合には大量のアクセスを処
理できるような仕組みを持ったpassengerをよく用います。
しかしながら、近年注目されているherokuではthinを採用していますし、github
ではunicornと呼ばれる新しいアプリケーションサーバーを用いていますので、
大量のアクセスを処理するためには、必ずしもpassengerを利用しなければなら
ないという理由はありません。自分が作成しているアプリケーションのユース
ケースに応じて適したアプリケーションサーバーを選択するのがよいでしょう。
今回は、nginxと組み合わせて利用するアプリケーションサーバーとしてポピュ
ラーなpassengerを用いることにします。unicornとの連携については次回以降
に紹介します。unicornの利用を検討している方はご期待ください。
● passenger moduleの組み込み
さて、nginxとpassengerを組み合わせて動作させる前にnginxのモジュールにつ
いて説明します。
nginxは、機能を拡張するためには、モジュールを組み込んだnginxの再度ビル
ドをする必要があります。一方、apache2ではapache2のビルド後であっても、
モジュールだけをビルドしてapache2の設定を変更することで利用可能となって
いましたので、若干手間が増えてしまうことになります。
前回までに紹介したlistenやworker_processesと言ったディレクティブも、モ
ジュールによって提供される機能の一部です。
参考までにlistenはHttpCoreモジュール、worker_processesはCoreモジュール
を有効にすることによって利用可能となりますが、これらはビルド時に特に指
定しなくても標準で有効となっているため、モジュールの一部であることをあ
まり意識することはありません。
nginxにpassengerを利用するためのpassengerモジュールを組み込むには以下の
ふたつの方法が存在します。
* nginxのビルド時に--add-moduleを指定してpassengerを有効にする
* passengerに付属しているpassenger-install-nginx-moduleコマンドを利用する
前者の方法はnginxにpassengerに限らず様々なモジュールを組み込む場合に利
用しますが、今回はより簡単な後者の方法を用います。
それでは最初に、passengerをrubygemsからインストールします。
$ gem install passenger
インストール完了後に、passenger-install-nginx-moduleコマンドを実行しま
す。環境によってはrakeのようにビルドに必要なアプリケーションやライブラ
リが存在しないとインストールが中断してしまうので、エラーメッセージの内
容に応じて各自環境を構築してください。
環境のチェックが完了するとnginxをダウンロードしてpassengerのインストー
ルを実行するか、自分でモジュールを組み込んでビルドするかの選択肢が表示
されますので、インストーラに全て任せる"1"を選択します。すると、nginxの
ソースコードがインストーラによってダウンロードされビルドが開始されます。
最後にインストール箇所を聞かれますので、インストールしたいディレクトリ
を入力します。なお、今回はユーザーのホームディレクトリにインストールす
ることにします。MaxOSXユーザーの方は /Users/[ユーザー名]/nginx と入力し
てください(デフォルトでは /opt/nginx となっています)。
インストーラに入力する内容はこれでおしまいです。後はインストーラが自動
的にコンパイルを行い、passengerを組み込んだnginxを用意してくれますので、
完了するまで少し待ちましょう。
● 設定ファイルの変更
インストールが完了すると、設定ファイル( /Users/[ユーザー名]/nginx/conf/nginx.conf )
を書き換えるように、passengerのインストーラが警告します。自分の環境に合
わせて設定ファイルを書き換えることにしましょう。書き換える箇所はserver
ディレクティブのrootとなります。rootにはRailsアプリケーションディレクト
リ直下にあるpublicディレクトリです。たとえば以下のような内容になります。
server {
listen 3000;
server_name www.yourhost.com;
root /Users/hsbt/myrailsapp/public;
passenger_enabled on;
}
rootの箇所を適切に設定してからnginxを起動すると http://localhost:3000 で
自分の作成したRailsアプリケーションがnginx経由で起動します。
● passengerで使用する変数
passengerモジュールではserverディレクティブで使用可能なオプションがいく
つか提供されていますが、passenger_enabledとrails_envオプションだけ今回
は紹介します。
passenger_enabled : 指定されたserverディレクティブでpassengerを有効にす
るかどうかを設定できます。通常はonにします。
rails_env : 動作させるRailsアプリケーションの環境を指定します。
デフォルトでproductionが指定されていますが、状況に
応じてdevelopmentなどを指定します。
次回はpassengerと並んで近年注目されているunicornをnginxのproxyモジュー
ルを利用して動かす方法を紹介したいと思います。(hsbt)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■━
■
┣【アジャイル】アジャイル・プラクティスの見つけ方 [19]
┗ 〜壁に大事な情報を貼り出す〜
こんにちは。こんぴろです。もう10月も終わりですね。少しずつ秋も深まり、
寒くなってきました。先日福井に行ってきました。夏場は東京の暑さとあまり
変わりないと聞いていましたが、この季節になると東京よりも肌寒かったです。
なぜ福井に行ったかと言うと、自分の所属するプロジェクトは、福井と東京で
分散開発を行っていますが、この度新しいメンバーが参加する事になりました。
少し前にリリースが無事に終わった事もあり、その打ち上げもかねて、福井で
顔合わせ会を行う事になったのです。
今、福井の事務所では、astah*のアーキテクチャ図[*1]を壁に貼っています。
これは、新しく参加するメンバーとastah*の構造を共有する意図で作成したも
のです。なので、プロジェクトメンバーみんながアーキテクチャ図の前に集ま
り、開発リーダーから簡単な説明を聞き、その場で質問を行うような場が今回
の出張にはありました。その結果、僕自身もあやふやだった、どのレイヤでど
ういった実装をすべきかが、確認できました。新たに参加されたメンバーから
は直接感想を聞いたわけではないのですが、あらかじめアーキテクチャを聞い
ておくことで防げることがあります。例えばアーキテクチャとはちぐはぐな実
装を防ぐことができるでしょう。そういう事はコードを追いかけるだけでは分
からない部分です。全体を俯瞰した絵が用意されていて、その前に集まり、話
をすると、既存の開発者も意見を交換でき、僕はいろいろと理解ができました。
PCの中では付加情報を書き込むのが大変ですが、壁に貼られたアーキテクチャ
図であれば、書き込むのも簡単です。更新が大変そう、と思われる方もいらっ
しゃるかもしれませんが、アーキテクチャを説明するための図なので、図の内
容の更新はそれほど多くはありません。
チェンジビジョンのクレドには「壁に貼る」があがるほど、壁に情報を貼り出
す事を多く実践してきたのですが、アーキテクチャ図を貼り出す事で議論の進
みがここまで変わるとは思いもよりませんでした。と言う事で、プラクティス
にまとめます。
----------------------------------------------------------------------
● プラクティス名
「システムのアーキテクチャ図を壁に貼り出す」
アナログの良さは画面に縛られないところにあります。これまでの設計をまと
め、壁に貼り出す事で、メンバー間のアーキテクチャに対する考えを引き出し、
より良いデザインをチームで作っていきましょう。
● 悪魔の囁き
「みんな普段からシステムの修正を行えるのだから、確認せずとも大丈夫」
● 天使の言葉
「チームでアーキテクチャを見直せば、各開発者がアーキテクチャの構造にそ
ぐわない実装をする事を少なくすることができます。」
● こんな気分
「チームでアーキテクチャを見直す事でよりよいアーキテクチャに出来た!」
● バランスが肝心
一般にアーキテクチャは、限られた人数で考えられるべきです。というのも、
「船頭多くして船山に登る」ということわざもある通り、意見がまとまらず、
ちぐはぐなアーキテクチャになる事が多いと言われています。
----------------------------------------------------------------------
今回はastah*のアーキテクチャ図を貼り出している例をご紹介しました。次回
もお楽しみに。(こんぴろ)
[*1] astah*のアーキテクチャ図 http://yfrog.com/4zuywwj
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
■
┗編集後記
こんにちは、編集人のナガタユウコです。なんだか突然真冬かと思うような寒
さになりましたね。私は晴れている日は自転車で通勤しているのですが、最近
は自転車だと耳や手が痛くなってしまって泣きそうになります><
着膨れるのはみっともない気もしますが、寒さに負けるのもくやしいので、イ
ヤーマフや手袋などで対策して、寒い冬も元気に自転車通勤をがんばりたいと
思います!(ナガタユウコ)
*** オブラブ2010カレンダー公開 ***
11月「スクラムのプラクティス」
/special/#calendar
3ヶ月連続でお届けしたスクラム(Scrum)特集もいよいよ最終回です。
今回はスクラムが採用しているプラクティスと進め方について書いてみました。
手に取って読んでいただけると分かりますが、スクラムは計画、進捗、課題に
関するプロジェクトの運営についてのプラクティスを中心に採用しています。
逆にXPでは中心となっているエンジニアに対するプラクティスは、ほとんど何
も定義していません。
これは何故でしょうか?
スクラムは、こういう部分を採用する現場で考えていってもらうのが、目的で
あり楽しい部分になっています。
ぜひ、一度、みなさんの現場でも考えてみてはいかがでしょうか?今回のカレ
ンダーがその切っ掛けになれば幸いです。
もし、みなさんなりの答えが見つかった時やもっと知りたいという人は、お気
軽にオブラブのイベントや勉強会等で声を掛けていただければと思います。
(nawoto)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
● ご意見、ご感想は ⇒このメールに返信ください
〇 配信中止、アドレス変更は ⇒/community/object_ml/help/
〇 免責事項、過去の記事は ⇒/community/object_ml/
■ 発行:オブジェクト倶楽部 ⇒http://ObjectClub.jp/
Copyright (c)2010 オブジェクト倶楽部. All Rights Reserved.
powered by Eiwa System Management, Inc.