![]() |
安藤幸央のランダウン[30]
Ruby on Railsのチームから学ぶ仕事術
安藤幸央(yukio-ando@exa-corp.co.jp)
株式会社エクサ
2006/3/25
| Ruby on Rails自体についての解説は、「WebプログラマはRailsに乗るべきか?」や、「Rubyでアジャイルプロトタイピング」にもありますので、そちらもぜひご覧ください。本記事は2006年に執筆されたものです。RubyやRuby on Rails全般の最新情報は@IT |
「Java News.jp(Javaに関する最新ニュース)」の安藤幸央氏が、CoolなプログラミングのためのノウハウやTIPS、筆者の経験などを「Rundown」(駆け足の要点説明)でお届けします(編集部)
素早く開発が行えるRuby on Railsに驚くとともに、Railsのプロジェクトの素早さの根源はどこにあるのか不思議に思った人も多いことでしょう。
Ruby on Railsの開発には、37singals社のDavid Heinemeier Hansson氏を中心とする11名で構成されたチームがかかわっています。
Ruby on RailsによるWebアプリケーション構築風景を撮影したいくつかのスクリーンキャストから分かるように、MacOS Xを主な開発環境としていることが分かります。うわさによるとコアチームの11人全員がMacOS Xを開発環境としているようです。
■37signal社に学ぶ素早い仕事術
さて、プロジェクト管理ツールであるBasecamp等、プロジェクト進行に役立つアプリケーションサービスを提供している37signals社は、自ら開発したそれらのツールも活用しながら、素早く仕事をするためのノウハウを蓄えているようです。37signalのブログから、彼らがどのように素早い仕事を実現しているのかを考察してみましょう。
- テキスト編集、HTML/CSSコーディングにはTextWrangler、TextMate、Vimを利用
TextMateはサジェスチョンやコード補完が絶妙に賢い、プログラマ向けの軽量テキストエディタです。Ajaxでよく使われるprototype.jsやRubyへの対応が充実しています。日本語入力には対応していません。
- Quickbooks Pro 2006 for Mac
中小企業向けの会計ソフト。
- 技術的サポートにはGmailと英単語向けのインプットメソッドTypeIt4Meを利用
バグトラッキングにはTracを利用。Wikiベースのプロジェクトポータルとして利用できるツールです。
- ニュースレターの配布にはCampaign Monitorを利用
レポート機能が充実している配布ツールです。
- 社内外向けの開発ブログにはMovable Typeを利用
- 新着情報、RSS用のフィード生成にはFeedburnerを利用
- プロジェクト管理ツールBasecamp、Backpackのフォーラム機能にはPunBBを利用
- 開発マシンとしてPowerBookとiMac G5を利用。テスト用PCとしてDellのマシンを利用
- オンライン課金、クレジット課金サービスとしてAuthorize.netを利用
- Webサーバのホスティングは彼らの地元であるシカゴのTiltedを利用
- 整形されたドキュメント作りにはAdobe InDesignを利用
- グループ内の遠隔コミュニケーションにはiChat、Skype、Adium(マルチIM)、Campfireを利用
- CRMツールとしてSunrise(現在37signalsが開発中のもの)を利用
上記リストから必要十分であり、ぜい肉のない小回りの利く軽量で素早い開発スタイルであることが見て取れます。一見漠然としているように見えつつも、リストの中にはWebアプリケーション開発を主軸とする企業に必要なものがすべてそろっています。これからWebアプリケーションサービスを提要しようともくろんでいる人も、現在企業でWebアプリケーションを開発/サービス提供している人も参考になる点があるのではないでしょうか。
37signalsが提供する数々のツール(Writeboard、Ta-da List等)は、実際に彼ら自身の開発プロジェクトに使われることによってより品質の高い使いやすいものとなっていることがよく分かります。
■開発作業をスムーズに進めるデプロイツール(旧SwitchTower)
Capistrano(カピストラーノ:旧名SwitchTower)は主にRuby on Rails用として生まれたアプリケーションデプロイ(配備)ツールです。旧名であるSwitchTowerはRaindance CommunicationsというWeb会議ソリューションを提供する会社の登録商標とぶつかっていることが分かったため最近改名されました(Capistrano自身は一応一般的なデプロイツールとしてRuby on Rails以外のWebアプリケーションでも利用することができるそうです)。
Webアプリケーションを開発していると、ローカルな開発環境でのプログラム開発、実行/テストを繰り返し、その後公開されたインターネット/イントラネット上のサーバに公開し実行/テスト/運用を行うことでしょう。バグが発見された場合は、また上記の手順を何度も繰り返すことになります。ローカルでの機能追加などによる更新状況やバグフィックスの状況は少しでも手順を間違えるとアプリケーション更新の失敗はもとより、アプリケーションそのものが動作しなくなる危険性もあります。
Railsのホスティングサービスrailsmachineでは“Deploy in 5 minutes”というスクリーンキャストが公開されています。Capistranoによるデプロイがいかに簡単で間違いなくスムーズに行えるかをアピールしたデモです。Capistranoの良いところは、各種設定ファイルを自動生成し、サーバ環境をリモートで操作することによって、作業の煩雑さを軽減するアプローチであることです。GUIベースのデプロイツールの中にはどのようなファイルがサーバのどこにどう配備されるのかがよく分からない透明度の低いツールも存在します。Capistranoには派手さはないものの、ツールによって行われる事象の透明度が高いことが開発者に安心を感じさせる要因ともなっています。
![]() |
| Capistranoによるデプロイ操作中の画面 |
開発の初期やプロトタイプ開発時はファイル構成は簡単で、デプロイ作業も単純である場合が多いと思われます。ところが実際に運用開始後や、頻繁なバグフィックス、機能拡張などにおいて、デプロイの重要度と、複雑化していくファイルの構成にあぜんとすることでしょう。また1つのローカル開発環境を数多くのサーバにデプロイする場合、簡単にデプロイできることは台数が多いほどありがたみを感じることでしょう。さらにCapistranoを利用しているのであれば、クリティカルな不具合が発見された際、正常に動作していたころにアプリケーション環境を戻すというロールバックも簡単に可能になるのです。
開発のごく初期段階の余裕のある時期からCapistranoを利用した一連の流れを確立することにより、よりスムーズな成功へのレール(Rails)に乗っていくことになるのです。
■関連書籍
- 「RailsによるアジャイルWebアプリケーション開発」(オーム社刊、前田修吾監訳)
- 「Ruby on Rails: Up And Running」(Oreilly刊、Bruce A. Tate/Curt Hibbs著)
安藤幸央のランダウン バックナンバー
- 第1回 Javaを速くするための心構え
- 第2回 サーバサイドで進化するグラフィックス
- 第3回 ユーザビリティ(使いやすさ)の大切さ
- 第4回 Javaプログラマのお役立ちサイト
- 第5回 伝説のイベントJava Night
- 第6回 次世代のインターネット言語curl登場!
- 第7回 次世代を予感させるグリッドコンピューティング
- 第8回 音声はコンピューティングを変える?
- 第9回 GoogleをWebサービスから利用するAPIの登場
- 第10回 これは使える!Java風スクリプト
- 第11回 PtoPはいよいよビジネスのステージに
- 第12回 ハリウッド映画並のCGがPCに到来する日
- 第13回 知的ゲーム「Robocode」でJavaのチャンピオンに
- 第14回 海の上のJava Night
- 第15回 Java版テラリウム? ただいま開催中
- 第16回 進化したアプレット、Viewletとは?
- 第17回 Eclipse:新しい開発環境モデルの誕生
- 第18回 Webサービス、どこまで実用になっている?
- 第19回 SWTは本当に高速なGUIを実現するのか?
- 第20回 JavaOne 2003の注目トピックを振り返る
- 第21回 SIGGRAPH 2003に見るJavaの進化
- 第22回 AmazonWebサービスの可能性
- 第23回 オープンソースの検索エンジン登場
- 第24回 技術者の祭典JTC BOFとJava Night
- 第25回 リッチクライアント時代の到来
- 第26回 Eclipse 3.0のリッチクライアントとは?
- 第27回 データ中心型、簡単リッチクライアントJDNC
- 第28回 浸透する新世代のシンクライアント
- 第29回 WebプログラマはRailsに乗るべきか?
- 第30回 Ruby On Railsのチームに学ぶ仕事術
- 第31回 JavaプログラマはAjaxに乗るべきか
- 第32回 Java SE 6へ移行する理由と移行をとどまる5つの理由
- 第33回 見つけて得するソースコード専用の検索エンジン
- 第34回 Podcastでプログラマーに必要な英語をStudyしよう!
- 第35回 人気のAPI/フレームワークを作るための39カ条
- 第36回 あなたのサイトはiPhoneで見られますか?
- 第37回 バッチ処理はJavaでバッチリ?その現状とこれから
- 第38回 Cometに代表されるサーバ・プッシュ技術の復権
- 第39回 ソースコードの宝石箱、●●Forgeを見逃すなかれ
- 第40回 Webアプリ開発環境としてのSafariを知ってますか?
- 第41回 夏休みに世界へ挑戦! プログラミングコンテスト
- 第42回 開発者が知っておくべきJavaと仮想マシンの歴史
- 第43回 あなたの知らないJDKの便利ツールたち
- 第44回 時を欠ける症状−うるう秒から考えるサステナビリティ
- 第45回 IT業界で楽しく仕事をするための10カ条
- 第46回 そのWebサービスで“対価”をもらえますか?
- 第47回 IT系でも活用しなければ損。論文を読んで広がる知見
- 第48回 Webからの知見、見つけた論文の読み解き方
- 第49回 Java技術者も知っておきたい「AR(拡張現実)」
- 第50回 クラウド活用「雲活」のために押さえるべき39のポイント
- 第51回 意外と知らないバージョン表記・数字の豆知識
- 第52回 グーグルは、○○おもいっきり、テレビ
- 第53回 いま購読するべき15の開発者ブログ
- 第54回 技術者なら知っておきたい「ソーシャルゲーム」とは
- 第55回 開発者は覚えておきたいアプリストア/マーケット大全
- 第56回 売れるスマホアプリを目指せ! テスト達人への道
- 第57回 プレゼン巨人の星となるためのツールと手法のまとめ
- 第58回 ぼくらの七ボタン戦争 - Social Buttons War
- 第59回 師走を楽しもう。技術系アドベントカレンダーの魅力とは
- 第60回 GitHubをもっとソーシャルに使いこなすための7つ道具
| プロフィール |
安藤幸央(あんどう ゆきお) 1970年北海道生まれ。現在、株式会社エクサ
マルチメディアソリューションセンター所属。フォトリアリスティック3次元コンピュータグラフィックス、リアルタイムグラフィックスやネットワークを利用した各種開発業務に携わる。コンピュータ自動彩色システムや3次元イメージ検索システム大規模データ可視化システム、リアルタイムCG投影システム、建築業界、エンターテインメント向け3次元
CG ソフトの開発、インターネットベースのコンピュータグラフィックスシステムなどを手掛ける。また、Java、Web3D、OpenGL、3DCG
の情報源となるWebページをまとめている。ホームページ: http://www.gimlay.org/~andoh/java/ 所属団体: OpenGL_Japan (Member)、SIGGRAPH TOKYO (Vice Chairman) 主な著書 「VRML 60分ガイド」(監訳、ソフトバンク) 「これがJava だ! インターネットの新たな主役」(共著、日本経済新聞社) 「The Java3D API仕様」(監修、アスキー) |
| ご意見、ご感想は掲示板へどうぞ |
| JavaコラムINDEX |
TechTargetジャパン
- WebLogicサーバ最新版「12c」の気になる4つの特徴 (2012/1/31)
久々にメジャーアップグレードしたJavaアプリケーションサーバについて、製品担当者に軽量インストーラなどの特徴を聞いた - GitHubをもっとソーシャルに使いこなすための7つ道具 (2012/1/23)
ソースコードホスティングのGitHub周辺で便利な新サービスが続々登場しているので、まとめて紹介しよう。特に連動クラウド「fluxflex」が注目だ - 新キャラ登場!スクラムやるならRedmineとALMinium (2011/12/26)
「黒板を“かんばん”にしてたら先生に怒られた(T_T)」「管理はPC内でやればいいのよ」「承知しました」 - Javaの例外処理で知らないと損する7つのテクニック (2011/12/20)
例外とエラー処理を使いこなすために独自に例外を定義する方法や、ちょっとした例外のテクニック・心構えを紹介します
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -



1970年北海道生まれ。現在、株式会社エクサ
マルチメディアソリューションセンター所属。フォトリアリスティック3次元コンピュータグラフィックス、リアルタイムグラフィックスやネットワークを利用した各種開発業務に携わる。コンピュータ自動彩色システムや3次元イメージ検索システム大規模データ可視化システム、リアルタイムCG投影システム、建築業界、エンターテインメント向け3次元
CG ソフトの開発、インターネットベースのコンピュータグラフィックスシステムなどを手掛ける。また、Java、Web3D、OpenGL、3DCG
の情報源となるWebページをまとめている。