最終的に目指しているのは花のデータベースアプリなんですわ。

 道で見つけた花を登録したり、なんて名前なのかを調べる事ができるアプリ。
 で、どんな機能が必要になってくるかと考えると

  • 花や葉を写真に撮れる

  • 花の写真を登録できる

  • 花の写真に名前を登録できる

  • 撮った写真を花びらの色、数、葉の形や名前で検索できる


 てことになるわけです。
 で、これをiPhoneという具体例で考えてみると

  • カメラ

  • sqliteデータベース

  • Cocoaフレームワーク


 を使う事で実現可能なんですな。となりゃ、今すぐにでも作れるわけですが、ここでもう一つ

不特定多数の花好き達とデータベースを共有したい

 という要求が加わると、

  • ネットワーク通信

  • ネットワーク上のサーバー


 が必要になってくるわけです。
 この機能の具体例としてiPhone側が

  • CFNetworkフレームワーク

 となり、ネットワーク上のサーバーというのが、インターネットレンタルサーバプロバイダ(提供者)と提供されるマシン上で動作する

  • Apache、IIS HTTP Server

  • Perl、PHP、Pythonスクリプト言語

  • MySQL、PostgreSQLデータベース


 ということになるわけです。
 インターネットレンタルサーバプロバイダは、「レンタルサーバ」でググれば結構いろいろ出てきます。
 こいつを借りて、スクリプト言語を使ってSQLデータベースを駆使すれば

不特定多数が利用できる花のデータベース

 を提供できることになるわけですな。
 で、まあ、すぐにレンタルサーバ借りて実行してもいいんですが、スクリプト言語やSQLデータベースを勉強してる間もレンタル料がかかるんですよ。
 このブログの趣旨として、できるだけMacだけで金をかけずにiPhoneプログラミングを実践したいってのがあるわけでして...
 最終的に利用するにはレンタルサーバが必要になるにせよ、プログラムの勉強だけなら手持ちのMacだけですませたい。じゃ、どうするか?手持ちのMac上にインターネットサーバーを用意して、iPhoneとCFNetworkフレームワーク経由でやり取りしてみてはどうかってことです。
 ようは(ようはって言うな by孫権)...

Max OS XでLAMP環境を構築しよう

 ちゅーことじゃああ。

 てことで、検索するとそのものずばりがヒットしました。

Max OS X LeopardでAMP環境を構築しよう - Apache, MySQL, PHP, Perlで作る開発環境

 いやいやいや、ほんと、すばらしいです。羽田野太巳さんに蝶感謝です。

 まず、LAMPってなんだよ?
 てとこからですが...

 Linuxという名前のOS上で、Apacheという名前のウェブサーバによって、MySQLという名前のSQLデータベースサーバを使う、PHPやPerl、Pythonという名前のスクリプト言語によって書かれたウェブサービスが動いている環境。

 そんな感じなりよ。たぶん。

 Linux、Apache、MySQL、PHP、Perl、Pythonは説明しない。ググりましょう。
 で、OS XはLinuxではないけど、ほぼ同等のDarwinというOSがベースになってて、Apache、MySQL、PHP、Perl、Pythonとの親和性がWindowsより、はるかに高いわけっす。

 げんにApacheはシステム環境設定から簡単に起動できるし、PerlやPHPもプリインストール済み、PythonなんかはXcodeにプロジェクトテンプレートさえ用意されてる。

$テン・シー・シー-0
ほらね

 で、これらの運用方法やMySQLのインストール方法が上のサイトで説明されてるわけです。
 ちゅーことで「1、Apacheを起動する」から順にやっていきましょう!

1、Apacheを起動する

 簡単ですな。も~、書かれてるとおりに実行すればOK。

 って、あれ?
 /Library/WebServer/Documents側は全然問題ナッシングだけど、俺のホームディレクトリ側のSuite、ちゃんと表示できね~。etc/apache2/users/{ユーザー名}.confができてないんですよ。同じディレクトリにあるGuest.confをコピってなんとか対応しますた。
 で、調べるとTigerからLeopardにアップデートした人に特有の現象らしくて、やっぱ手動で用意しないと駄目みたいです。

LeopardアップブレードインストールでWeb共有に不具合

 ま、気を取り直して「2、CGI動作環境の構築」

2、CGI動作環境の構築

 CGI(Common Gateway Interface)
 PHP使う気満々なんで、必要になるかどうかはわからないけど一応準備。
 問題無しですな。ただ「ホームディレクトリでCGIを動作させる方法」のところは、vi使える人は簡単だけど、そうでない人のために紹介されてる「Finderからシステムファイルにアクセスする方法」での普通のエディタでいじる方法はちょっと面倒ですな。unix系のOSではviが使えるとなにかと便利なんで、以下のサイトを参考にvi使いにチャレンジするのもいいかもよ。

viの使い方

 もしくは「ホームディレクトリでCGIを動作させる」ことはあきらめてもいいかもね。

3、PHP動作環境の構築

 またまた、viです。さすがに避けては通れない。ApacheにPHPモジュールを使うようにさせる設定なんだけど、さすがにGUIは用意されてません。力技で「Finderからシステムファイルにアクセスする方法」か、こつこつviを勉強するように。

$テン・シー・シー-2
ばっちりiPhoneからも呼び出せます

4、MySQLのインストール

 これは割と簡単。「ターミナルからコマンドでMySQLを起動する」ことが難しいなら「システム環境設定のMySQL制御パネル」でOK。後半のphpMyAdminをインストールすればターミナルからコマンド経由でMySQLを操作しなくてもいいみたいです。ただ「MySQLのDB領域とDBアカウント」はどうなんだろ?

$テン・シー・シー-3
で、出たザンス~

5、MySQLのDB領域とDBアカウントを作成

 ここらへんは、SQLiteの経験(その(74)その(80))がばっちり役に立ってます。
 やってることだいたいわかるがな~。いいねいいね~。
 ちなみに「テーブルとレコードの作成」のところのテスト用のレコードを追加のところ記述が間違ってるから

+------+------+
| id | name |
+------+------+
| 1 | Taro |
| 1 | Taro |
+------+------+
2 rows in set (0.00 sec)

 となってしまいますな。
 めんどくさいから

mysql> INSERT INTO test (id, name) VALUES ('2', 'Hanako');
Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM test;
+------+--------+
| id | name |
+------+--------+
| 1 | Taro |
| 1 | Taro |
| 2 | Hanako |
+------+--------+
3 rows in set (0.00 sec)

 として終了。

6、PerlからMySQLに接続する(DBD::mysql)

 私は今のところPerlを使ってMySQLにアクセスする気はないんで、ここはパスしました。
 OS X 10.5は、最初からPerlを使えるようになってるんだけど、PerlからMySQLを使うためには、そのためのモジュールをインストールする作業が必要。その説明です。

7、PHPからMySQLに接続する

 おお~、みてみてみて~。

$テン・シー・シー-4

 iPhoneからばっちりMacのデータベースにアクセスしてますよん。

7、phpMyAdminのインストール

 こいつは今だとphpMyAdmin-3.1.0-all-languagesではなく、phpMyAdmin-3.2.1-all-languages.zipということになりますね。
 こいつも問題無し!

 ちゅーわけで、Mac上にLAMP環境は整いました。
 LinuxじゃなくDarwinなんでDAMP(訳:湿っぽい、じめじめした、湿気、枯れる...ろくなもんじゃねえな、もー、LAMP、LAMP、LAMPで通すから)ですな。

 次回、CFNetwork!



 余談ですが、上の「1、Apacheを起動する」での不具合を調べてる最中に気づいたのがアクセス権の(不明)ってグループ。

$テン・シー・シー-1

 なに、これー!
 これ、知らない人ー!!

 解錠して削除しようとしても、まったく無反応。
 従来の権限管理機構に加えて、OS X 10.5から導入されたACL(Access Cotrol List)機構によってフォルダ権限がおかしくなるみたいです。いったん、ACLを無効にして再度有効にすればいけるとか、いろいろ説があり、いじってみたんですが駄目でした。最終的に以下の方法で既存のフォルダに対する(不明)グループの削除はできるってのがわかったけど、これがどう影響するか未確認だし、根本的な解決になってない。それに新規にフォルダ作るときっちり、また発生するし...

 システム環境設定の共有設定に、いったん自分のホームフォルダを共有にして表示させ、そこで削除することに成功。またまた情報表示に戻って「解錠して内包している項目に適用」。


 同じ現象にみまわれてる人にお勧めはしません。

 しばらく無視だな...
 誰か解決法知ってたら教えてください。


ゲット!
treasure