いよいよ春ですね! 読者の中にも新年度から人生のステージが変わり、職業的・趣味的にコードをいじるようになった方も多いかと思います。筆者もあることがきっかけで、今年に入ってからコードをいじる機会が増えました。
実は筆者はNucleus CMS というオープンソースプロジェクトに関与しており、今年からプロジェクトをリードする立場となりました。Nucleus CMSはHTTPサーバ上で動作するPHPスクリプト群であり、ウェブブラウザからのアクセスに応じて整形したXHTMLファイルを出力するソフトウェアです。いわゆる「コンテンツ・マネジメント・システム(CMS) 」の一種です。データベースとしてMySQLを利用しています。
今回は、このNucleus CMS開発の裏側をチラ見しつつ[1] 、筆者が開発に多用している統合開発環境Eclipseに関するレシピをお届けします。
統合開発環境Eclipseとは
統合開発環境(IDE = Integrated Development Environment)とは、開発のために必要なツールを詰め込んだソフトウェアのことです。たくさんのファイルを扱ったり、複数人で開発したり、ツール間で連携をするのにとても便利です。
Eclipseはこういった統合開発環境のひとつで、現在はEclipse Foundationにおいてオープンに開発されています。この集まりには世界中の様々な業種の企業といろんな人が関与してます。もともとはJavaの開発環境を整えるところからスタートしました。
図1 Eclipseの画面。ここでは「C/C++」パースペクティブのワークベンチで、ALSAカーネルモジュールのソースを見ている
Eclipseを使うメリットとして、以下の事柄が挙げられます。
マークアップやパースエラーを教えてくれる
リソース作成・コンパイル・デバッグをEclipse上で行うことができる
WWW上にあるSVNやCVS、Gitのリポジトリーを利用できる
用途に応じて機能を切り替えられるので、いちいち環境を準備する必要がない
設定することで開発者間のコードフォーマットを統一することができる
Eclipseに関する歴史や開発体制、詳細な使い方などは別途書籍などを参照していただくことにして、今回はEclipseを使って開発するためのスタート部分を説明します。
Eclipseのインストール
インストールするには、Ubuntuのソフトウェアセンターからパッケージ「eclipse」をインストールします。Eclipse本体もファイルサイズが大きく、さらに依存関係でたくさんのパッケージをインストールするため、処理が終わるには時間がかかることに留意してください。
図2 Synapticパッケージマネジャーの画面。これはLucidでeclipseを検索した結果
Ubuntuのリポジトリーで提供されているEclipseのバージョンは、いつも最新の物とは限りません。これは一見するとデメリットのように思えますが、パッケージ管理者によるメンテナンスの結果として安定したバージョンが提供されていると言えるため、メリットの方が大きいでしょう。開発は長い時間を要するため、安定したバージョンが長い期間使えることが理想と言えるのではないでしょうか。
そういう意味からも、筆者はLTS(Log Term Support)のLucidに開発環境(作業用デスクトップと専用サーバ)を置いています。とは言うもののラップトップにNattyの環境も作ってあり、どちらも大差なく動いてくれます。集中してやりたいときはデスクトップで作業し、気分転換や新しいアイディアをひねり出したいときなどは、ラップトップを持ち出して作業しています。
拡張機能
EclipseはもともとJavaの開発環境でしたが、現在では拡張機能を適用することでさまざまな用途に利用できます。筆者はこの拡張機能を利用することで、PHP、XHTML、CSS、JavaScriptの作業環境を整えています。
Ubuntuの場合、拡張機能は2通りの適用方法があります。
ひとつはUbuntuのリポジトリーからパッケージとしてインストールする方法です。例えばCDT(C/C++ Development Tools)やPleiadesはこのタイプの拡張となっています。Ubuntuソフトウェアセンターなどでインストールが可能なため、簡単に適用できます。以下の表がパッケージタイプの主な拡張の一覧ですが、表内の上4つは依存関係により標準でインストールされます。
表1 パッケージでインストールできる拡張機能
拡張機能名
パッケージ名
RCP(Rich Client Platform)
eclipse-rcp
EMF(Eclipse Modeling Framework)
eclipse-emf
PDE(Plug-in Development Environment)
eclipse-pde
JDT(Java Development Tools)
eclipse-jdt
CDT(C/C++ Development Tools)
eclipse-cdt
RSE(Remote System Explorer)Maverick以降
eclipse-rse
Pleiades日本語化拡張
pleiades
特にpleiades日本語化拡張 は、eclipseの設定ファイルを1行修正するだけでEclipseのほとんどを日本語にしてくれる、とても強力な拡張です。
Eclipseの設定ファイルは「/etc/eclipse.ini」です。pleiadesをインストールしたら、管理者権限でこのファイルを開き、以下の一行を追記します。
-javaagent:/usr/lib/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
このプラグインはスプラッシュスクリーンを素敵な画像に差し替えることもできます。その場合は、先の設定ファイル「/etc/eclipse.ini」から以下の行を削除します。
-showsplash
org.eclipse.platform
図3 pleiadesのスプラッシュスクリーン
もうひとつは、Eclipseの操作画面から新規ソフトウェアのインストール機能を利用する方法です。こちらはEclipseにおいて標準的な方法で、オペレーティングシステムを問わず同じ方法となりますが、Ubuntuの場合、パッケージが提供されていない拡張、例えばWTP(Web Developer Tools)やPDT(PHP Development Tools) 、Subversiveはこの方法で適用します。また、Lucid以前のRemote System Explorerもこちらの方法となります。この場合、Eclipseに「update-site」と呼ばれるリポジトリーを登録し、そこから拡張をインストールすることになります。
拡張をインストールするには、メニューバーから「ヘルプ」 、「 新規ソフトウェアのインストール」と進みます。ウィンドウが新たに開きます。プルダウンリスト「作業対象」から適当なソフトウェア・サイトを選択します。しばらく待つと、適用可能な拡張の候補が表示されます。
図4 新規ソフトウェアのインストール画面。大抵の拡張は登録されているGalileo Update Site からインストールできる
もし希望する拡張がない場合は、プルダウンリストの下の「使用可能なソフトウェア・サイト」というリンクをクリックします。そうすると別なダイアログが開きます。ここで、すでに登録しているupdate-siteのロケーションを使用可能にしたり、新規に登録したりすることができます。
図5 使用可能なソフトウェア画面。ソフトウェア・サイトの追加・編集・除去などの操作ができる
インストール機能で適用できる拡張機能(リンクはupdate-siteのURL):
ワークスペース、ワークベンチ、ビュー、プロジェクト、パースペクティブ
ワークスペースやワークベンチ、ビュー、プロジェクト、パースペクティブはEclipseの用語ですので、実際にEclipseを操作しながらひとつひとつ説明します。
UbuntuのメニューからEclipseを選択して起動すると、まずワークスペースの選択を促されます。ワークスペースとはEclipseで作成するプロジェクトの置き場です。大抵はユーザのホームディレクトリの、たとえば「/home/mocchi/workspace」のようなディレクトリとなるでしょう。Eclipseで作成したファイルはすべてここに保存されるため、それなりのサイズが確保できるディレクトリを指定してください。
図6 ワークスペース選択ダイアログ。登録したワークスペースは、Eclipseの設定から項目「一般」 、「 開始およびシャットダウン」 、「 ワークスペース」で管理することができる
ワークスペースを選択すると、Eclipseのメイン画面である「ワークベンチ」となります。ワークベンチにはさまざまな「ビュー」が配置されています。ビューはそれぞれ異なる役割を持っています。
ワークベンチの右上で「パースペクティブ」を選択できます。パースペクティブを変更することで、ワークベンチを特定の用途に適したものに切り替えます。例えば「C/C++」を選択するとコンパイル・デバッグ、Makeターゲットといったビューを備えたワークベンチに切り替わり、「 SVNリポジトリーエクスプローラー」を選択すると登録しているSVNリポジトリーの内容や更新履歴を参照するビューを備えたワークベンチに切り替わります。
図7 パースペクティブはワークベンチの右上に表示される
図8 パースペクティブ選択ダイアログから追加することができる
使いたいパースペクティブを選択したら、プロジェクトを作成します。「 エクスプローラー」ビューでマウスの右クリック・メニューを表示し、新規を選択します。メニューに従って操作します。
図9 プロジェクトの作成画面。「 PHP」パースペクティブ上のビューからメニューを表示している
「エクスプローラー」ビューはたいていワークベンチの左に配置されていますが、メニューの「ウィンドウ」から「ビューの表示」と進むことで、ビューを自力で開くことも可能です。パースペクティブによってはエクスプローラー・ビューでリポジトリーへの接続を作ったり、あるいはリモートファイルへの接続を作ったりと用途が異なるので、注意してください。
目的のパースペクティブのプロジェクトを作成したら、いよいよ作業開始です。
SVNリポジトリーの利用
SVNとは、ソースコードのバージョン管理をするための仕組みです。今回は筆者がリードしているNucleus CMS日本語版パッケージがホスティングしている、sourceforge.jpのリポジトリー を利用してみます。
まずパースペクティブを「SVNリポジトリー・エクスプローラー」に切り替えます。ワークベンチ左の「SVNリポジトリー」ビューで右クリックをし、「 新規」 、「 リポジトリー・ロケーション」と進み、「 新規リポジトリー・ロケーション」ダイアログが開きます。
図10 新規リポジトリー・ロケーションの登録ウィンドウ
タブ「一般」のテキストボックス「URL」に、nucleus-jpのプロジェクトURL「http://svn.sourceforge.jp/svnroot/nucleus-jp」を入力します。
有効なURLが入力されると、テキストボックス右のボタン「参照」をクリックしてリポジトリーの中を見ることができます。
図11 新規ルートURLの選択画面。nucleus-jpリポジトリーの中を閲覧できている
http接続であれば認証は不要ですので、登録したい階層を選択し、OKを押してダイアログを閉じます。最初に開いたダイアログのテキストボックス「カスタム・ラベル」で表示名を入力し完了をクリックすると、このリポジトリーが登録されます。
リポジトリーからチェックアウトするには、「 SVNリポジトリー」ビューで右クリックして表示されるメニューから、項目「チェックアウト」を選択します。そうすると、ソースがすべてプロジェクトとしてワークスペースにコピーされます。
図12 「 SVNリポジトリー・エクスプローラー」ビューに登録されたリポジトリーで表示したメニュー。チェックアウトやリポジトリーの再設定を行うことができる
Nucleus CMSはPHPプロジェクトなので、PHPパースペクティブでプロジェクトを見てみましょう。プロジェクトとしてローカルに保存された後も、履歴などは維持されるため、「 エクスプローラー」ビューでファイルやディレクトリのリビジョンを確認することができます。またSVNリポジトリーのリソースが更新された場合も通知されます。
「PHPエクスプローラ」ビューで右クリックをすると、項目「チーム」が表示されます。ローカルファイルをリポジトリーのファイルに同期させたり、更新履歴を表示したり、バージョン情報を含まない形でエクスポートすることができます。
図13 PHPパースペクティブにおいて、リポジトリーからチェックアウトしたプロジェクトを表示した画面。「 チーム」メニューでSVNリポジトリー関係の操作を行うことができる
筆者はこのプロジェクトのコミット権限を持っているため、ローカルファイルの内容をリポジトリーに反映する操作(コミット)が許可されています。認証方法はhttp/httpsによる方法、パスワードあるいは認証鍵によるSSH認証、SSL証明書による認証などが利用できますが、sourceforge.jpへ登録作業を行いかつプロジェクト管理者に依頼して開発者登録を行う必要があります。
筆者はこのようにして、プロジェクトメンバーと協力してバグ修正やマルチバイト文字処理の実装に取り組んでいます。
FTP/SFTP/SSH接続による外部サーバの利用
Nucleus CMS日本語版コミュニティではウェブサイトを運用しており、筆者はここのサービス管理もちょこちょこ手伝っています。ここでも、Eclipseが大活躍してくれます。
RSE(Remote System Explorer)は、FTP/SFTP/SSHなどでサーバに接続して、リソースに手を加えるための拡張です。RSEのインストール方法はLucid以前とMaverick以降で異なります。Lucid以前ではEclipseのupdate-siteから「リモート・システム・エクスプローラー・エンドユーザー・ランタイム」を、Maverick以降はSynapticパッケージマネジャーなどでパッケージ「eclipse-rse」をインストールすることになります。RSEをインストールしたら、ワークベンチでパースペクティブ「リモート・システム・エクスプローラー」を選択できるようになります。
接続を作成するには、ワークベンチ左の「リモート・システム」ビューで右クリックし、項目「新規接続」をクリックします。ダイアログに従ってサーバの情報を登録します。うまく登録できると、画面のように「リモート・システム」ビューに接続が作成されます[2] 。
十分な権限があれば、RSEのターミナル機能を使ってSSH接続でログインし、サーバをコマンドラインから操作することもできます。
図14 リモートシステム・エクスプローラーの画面。筆者の自宅サーバ上(192.168.1.200)のリソースを参照している
[2] なお、FTP接続は初期状態では利用できないので、「 使用可能なソフトウェア」ダイアログで「Remote System Explorer User Actions」で表示される拡張をインストールしてください。
HTTPサーバ機能とパッケージ
ここから先はEclipseから少し離れた話題となります。
Nucleus CMSを開発するにはこれまで説明した以外に、HTTPサーバに相当する環境も整える必要があります。すなわちApache2に代表されるHTTPサーバとPHPのランタイム、MySQLサーバをインストールする必要があります。
Apache Friends プロジェクトでは、これらをまとめたXAMPPというソフトウェアのLinux用バイナリを提供しています。筆者はUbuntuを使い始めた当初はこちらを利用していました。しかしパッケージ管理システムの便益に気づいた現在は、Ubuntuのリポジトリーで提供しているApache2、MySQL、PHPの各パッケージを利用しています。
これらソフトウェアは、パッケージ「php5-mysql」をインストールすると依存関係ですべてが整います[3] 。Apache2のドキュメントルートはパス「/var/www」 、MySQLのルートアカウントはインストール時に決定を促されます。
さらにUbuntuでは、PHPMyAdmin のパッケージ「phpmyadmin」も提供されており、Nucleus CMSの開発に必要なものがほとんど提供されています。
また、作業用デスクトップ(Ubuntu Studio)と開発用サーバ(Ubuntu Server Edition)というように環境を分けることで、デスクトップの環境が開発環境に影響を及ぼさないようにしています。以前はすべての環境を一つのコンピュータに集めて作業していたのですが、操作のミスで開発用コードをすべて失った ことがあってからは、このようにして事故を防いでいます。
筆者がUbuntuを使い始めたのは、そもそも、Nucleus CMSの開発環境を整えるコストが低いというのがきっかけでした。その割にこの連載ではマルチメディア編集環境に特化して執筆しているんですが、それはたぶん、Linuxの世界の広大さにやられたからなのでしょう。
音楽編集したり、映像編集したり、お絵描きしたり、アニメーションを作成したり、3Dモデルとキャッキャウフフしたりと、Linuxには開発以外にも使い方の切り口がたくさんあります。新生活を始めたみなさんにとって、Ubuntuが新たな遊び道具となれば楽しくて素敵なことだと思います。