続々移行するそのワケとは
プログラマーを引き付けるMac OS Xの魅力
林信行
2008/5/15
世界最大のUNIXプラットフォームに
ネクストの基盤技術を引き継いだMac OS Xは、Mach(現在はMach 3.0)をカーネルに持つ。
Machにはもともと4.3 BSDとの互換性があったが、アップルはFreeBSDプロジェクトの共同設立者、ジョーダン・ハバードを迎え入れ、FreeBSD 5環境を実装している。
ちなみに、このMach+BSDの環境は、商用OSとして発売されているMac OS Xとは別に、「Darwin OS」というプロジェクト名で、Apple Public Source License(APSL)のオープンソースプロジェクトとして公開されている(http://developer.apple.com/opensource/)。その上では、X11などのX Window Systemも動けば、Perl、vi、EmacsやMySQLといったおなじみのツールを使うこともできる。
画面4 Mac OS Xは、多くのコンシューマーが愛用する世界で最も成功しているUNIX環境の1つだ。ターミナルから直接シェルをいじってFreeBSDやLinuxのツールを利用することもできる(Mac OS X独自のツールも多数ある)。X Window SystemやTcl/Tkなど、おなじみのツールも利用できる(画像をクリックすると拡大します) |
脆弱(ぜいじゃく)性への配慮からできるだけrootアカウントを使わないように推奨していたり、標準のシェルがbashだったり、コンシューマー用OSであるために、MySQLなどいくつかポピュラーなツールが標準で用意されていなかったりといった「違和感」を感じることはあるかもしれない。しかし、FreeBSDのパッケージ管理システムのPortsに似たMacPortsなどをインストールすれば、必要なツールは簡単にそろう。
画面5 WindowsやLinux環境で愛用者が多いEclipseなど、おなじみの開発環境もちゃんと動く。ただし、日本語化するとなると、手順がちょっと面倒だったり、ドキュメントがやや少なめだったりといった不都合がある(画像をクリックすると拡大します) |
このほか、日本人に人気のEmacs環境が「Carbon Emacs」というMac OS Xネイティブのアプリケーションになっていたりと、ほかのUNIXとは異なる独自文化もあるが、これらも今日では、Webを検索すればいくらでも必要な情報が見つかる。
UNIX環境としてのMac OS Xの魅力は、PythonやRubyといったスクリプト言語からでも、GPUを使って高精細なグラフィックを瞬時に描き出すPDFベースのグラフィックエンジン、「Quartz」をはじめとするMac OS Xのリッチなフレームワークを活用したネイティブアプリケーションを簡単に作れることだ(ドラッグ&ドロップ操作で、簡単にユーザーインターフェイスを構築できるInterface Builderというツールにも定評がある)。
開発プラットフォームとしての魅力
Mac OS Xの標準フレームワーク、「Cocoa」のネイティブなプログラミング言語は「Objective-C」だ。
マイナーな言語だが、ある程度のスキルを持つC/C++のプログラマーなら簡単に習得できるという。それどころか、ある大手電子機器メーカーのエンジニアは、「より本格的なオブジェクト指向言語であるObjective-Cを習得したところ、C/C++で書くコードも可読性が高まり、周りに『コードがきれい』と褒められることが増えた」と語っている。
もちろん、Objective-Cを使いたくないという人は、ほかの言語も選択できる。標準IDEのXcode 3.0にはGCCが含まれており、C/C++での開発もできる。さらに前述したようにPythonやRubyを使っても、ネイティブアプリケーションが作れる。
画面6 RubyからMac OS Xネイティブアプリケーション開発用のCocoaフレームワークに直接アクセスすることができ、ネイティブアプリケーション開発が容易だ。RubyCocoaは、もともと藤本尚邦氏が開発しオープンソースで提供していたもの。実はインタープリタ形式で利用することができる(画像をクリックすると拡大します) |
さらに、シェルスクリプトや初心者にも分かりやすいアップル独自のスクリプト言語、AppleScriptも利用できれば、サードパーティが提供するコンパイラの追加により、PascalやAdaなども利用できる。
Javaに関しても、OSにJava JDK一式(javac、javadoc、ANT、Mavenなど)が含まれている。実は前バージョンのMac OS X v10.4「Tiger」までは、JavaでもMac OS Xのフレームワークを直接利用してネイティブなアプリケーションを作れる「CocoaJava」という技術があった(最新OSのMac OS X v10.5「Leopard」ではなくなった)。
サーバプログラミング系のツールでは、ApacheやSQLite、PHP、Ruby on Railsなどの環境がXcodeの一部として用意されている(そもそもRuby On RailsはMac OS X上で開発された)。
ちなみにこれは、一般コンシューマー向けのMac OS Xの話だ。実はMac OS Xには、これに加えてサーバOSのMac OS X Server v10.5「Leopard」というパッケージがあり、こちらにはTomcat、WebObjects、Apache Axis (SOAP)といったアプリケーションサーバなどが標準で用意されている。これらのUNIX系ツールは、クライアント版Mac OS Xにもインストールできるが、サーバOSではGUIを使った設定画面などが用意されている点が異なる。
Mac OS Xの開発環境では、これ以外にもXcodeがZero Linkなどの先進技術をいち早く採用していたり、高度なアニメーション表現やイメージプログラミングを、グラフィカルな操作でインタラクティブに行える「Quartz Composer」という開発ツールが付いていたりと、開発者心をくすぐる要素が多い。
画面7 Mac OS Xの隠れた名開発ツール、「Quartz Composer」。パッチと呼ばれるロジックを線でつなぎ合わせていくだけで、凝ったアニメーションをプログラミングできる(画像をクリックすると拡大します) |
Macで開発する楽しみは、ツールの先進性や面白さだけではない。
いまや世界中で大きな話題となっている携帯電話「iPhone」も、Mac OS Xをベースにした携帯電話であり、開発はMacと同じXcodeを用いて行うことになっている。
2008年中には、世界中で1000万台が出荷されるというこの巨大プラットフォームは、多くのハッカーにとってもお気に入りのプラットフォームになっている。アップルが公式のツールを公開する前から、世界中の多くのプログラマーがソフトを開発しており、先日リリースされたばかりのiPhone SDKについては、中島聡氏が「『組み込み系の開発環境』としてはブッチギリでナンバーワン」と大絶賛している。
Ruby on Railsの生みの親、デビッド・ハインマイアー・ハンソン氏も、2005年3月に書いたブログ記事で「ベストな結果を得るためのツールにこだわりを見せないようではダメ」と、ソフトウェアエンジニアのMac移行を促している。
関連記事: | |
iPhone SDKが4日間で10万ダウンロード http://www.atmarkit.co.jp/news/200803/13/iphone.html |
開発者向けのさらなる支援に期待
このように、Mac OS Xは非常に魅力的な開発環境だが、欠点がないわけではない。新しいOSでありながら、十数年の歴史を持つ旧Mac OSやネクストの技術のレガシーを引きずっている部分もある。このため、アップルが力を入れて開発している新しいフレームワークなどは充実していても、古いフレームワークのバグがそのまま残っているようなこともあり、本腰を据えてMac用のネイティブアプリケーションを書き始めると「うまくいくはず」のものが、「うまく動かず」壁にぶつかることも多い。
ただし、そういう意味では、世界的に注目を集めているiPhoneの開発環境は、それだけ多くの開発者の目にさらされていることもあり、問題点の改善なども早い。いまは、iPhone向けの開発を最初のきっかけにして、Mac開発への第一歩を踏み出すいい機会だといえる。ただ、現時点では日本語の開発者向け情報は限られている。今後、日本でもMacに移行する開発者が増える中、アップルがそれをどうケアしていくかは気になるところだ。
いや、日本だけではない。アップルは世界規模での開発者サポートにも、もう少しテコ入れをする必要があるかもしれない。
例えば、iPhone開発プラットフォームとしてMacを使う開発者が急激に増えたことを受け、アップルが年に1度開催している世界開発者会議(Worldwide Developers Conference)の2008年度分(6月9日から開催)の定員が上限に達してしまい、開催2週間前には「Sold Out」となってしまった。もっとも、これまでの慣例に従えば、半年後には、アップルの登録済み開発者のWebサイトで、イベントの映像が視聴できるようになるはずだ。
2/2 |
Index | |
プログラマーを引き付けるMac OS Xの魅力 | |
Page1 広まるスターエンジニアのMac移行 Mac人気を支える7つの理由 Mac OS X=Mac OS+ネクストの技術 |
|
Page2 世界最大のUNIXプラットフォームに 開発プラットフォームとしての魅力 開発者向けのさらなる支援に期待 |
Coding Edgeフォーラム トップページ |
Mac OS X関連記事 |
プログラマーを引き付けるMac OS Xの魅力 続々移行するそのワケとは Mac一筋という熱狂的なユーザーだけでなく、「面白いことをしたい」と考えるエンジニアもMac OS Xを利用し始めている。いったいなぜだろう |
|
Mac OS XでAMP構築 3通りの方法で整備できる開発環境 Mac OS Xの上にWebアプリケーションの定番、AMP(Apache+MySQL+PHP)環境を3通りの方法で導入してみましょう |
|
Mac OS Xで動かす軽量プログラミング言語 導入からPHP拡張モジュール組み込みまで Leopardでは、インストール直後からいくつかの軽量プログラミング言語が利用できます。早速試してみませんか? |
|
Objective-Cは特殊な言語? Cocoaの素、Objective-Cを知ろう(1) iPhone用アプリケーション開発で注目を集める言語「Objective-C」。C++とは異なるC言語の拡張を目指したこの言語の基本を理解しよう |
|
Mac内にPHP4、5、6を同居させるコツ Mac OS X+PHPでオールインワン環境(インストール編) PHP4の開発は終了したが、移行の問題は残されている。異なるバージョンのPHPをスムーズに切り替えるには? |
|
- プログラムの実行はどのようにして行われるのか、Linuxカーネルのコードから探る (2017/7/20)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。最終回は、Linuxカーネルの中では、プログラムの起動時にはどのような処理が行われているのかを探る - エンジニアならC言語プログラムの終わりに呼び出されるexit()の中身分かってますよね? (2017/7/13)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。今回は、プログラムの終わりに呼び出されるexit()の中身を探る - VBAにおけるFileDialog操作の基本&ドライブの空き容量、ファイルのサイズやタイムスタンプの取得方法 (2017/7/10)
指定したドライブの空き容量、ファイルのタイムスタンプや属性を取得する方法、FileDialog/エクスプローラー操作の基本を紹介します - さらば残業! 面倒くさいエクセル業務を楽にする「Excel VBA」とは (2017/7/6)
日頃発生する“面倒くさい業務”。簡単なプログラミングで効率化できる可能性がある。本稿では、業務で使うことが多い「Microsoft Excel」で使えるVBAを紹介する。※ショートカットキー、アクセスキーの解説あり
|
|