最終的に目指しているのは花のデータベースアプリなんですわ。
道で見つけた花を登録したり、なんて名前なのかを調べる事ができるアプリ。
で、どんな機能が必要になってくるかと考えると
てことになるわけです。
で、これをiPhoneという具体例で考えてみると
を使う事で実現可能なんですな。となりゃ、今すぐにでも作れるわけですが、ここでもう一つ
という要求が加わると、
が必要になってくるわけです。
この機能の具体例としてiPhone側が
となり、ネットワーク上のサーバーというのが、インターネットレンタルサーバプロバイダ(提供者)と提供されるマシン上で動作する
ということになるわけです。
インターネットレンタルサーバプロバイダは、「レンタルサーバ」でググれば結構いろいろ出てきます。
こいつを借りて、スクリプト言語を使って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にプロジェクトテンプレートさえ用意されてる。
ほらね
で、これらの運用方法や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を勉強するように。
ばっちりiPhoneからも呼び出せます
4、MySQLのインストール
これは割と簡単。「ターミナルからコマンドでMySQLを起動する」ことが難しいなら「システム環境設定のMySQL制御パネル」でOK。後半のphpMyAdminをインストールすればターミナルからコマンド経由でMySQLを操作しなくてもいいみたいです。ただ「MySQLのDB領域とDBアカウント」はどうなんだろ?
で、出たザンス~
5、MySQLのDB領域とDBアカウントを作成
ここらへんは、SQLiteの経験(その(74)~その(80))がばっちり役に立ってます。
やってることだいたいわかるがな~。いいねいいね~。
ちなみに「テーブルとレコードの作成」のところのテスト用のレコードを追加のところ記述が間違ってるから
となってしまいますな。
めんどくさいから
として終了。
6、PerlからMySQLに接続する(DBD::mysql)
私は今のところPerlを使ってMySQLにアクセスする気はないんで、ここはパスしました。
OS X 10.5は、最初からPerlを使えるようになってるんだけど、PerlからMySQLを使うためには、そのためのモジュールをインストールする作業が必要。その説明です。
7、PHPからMySQLに接続する
おお~、みてみてみて~。
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を起動する」での不具合を調べてる最中に気づいたのがアクセス権の(不明)ってグループ。
なに、これー!
これ、知らない人ー!!
解錠して削除しようとしても、まったく無反応。
従来の権限管理機構に加えて、OS X 10.5から導入されたACL(Access Cotrol List)機構によってフォルダ権限がおかしくなるみたいです。いったん、ACLを無効にして再度有効にすればいけるとか、いろいろ説があり、いじってみたんですが駄目でした。最終的に以下の方法で既存のフォルダに対する(不明)グループの削除はできるってのがわかったけど、これがどう影響するか未確認だし、根本的な解決になってない。それに新規にフォルダ作るときっちり、また発生するし...
システム環境設定の共有設定に、いったん自分のホームフォルダを共有にして表示させ、そこで削除することに成功。またまた情報表示に戻って「解錠して内包している項目に適用」。
同じ現象にみまわれてる人にお勧めはしません。
しばらく無視だな...
誰か解決法知ってたら教えてください。
ゲット!
道で見つけた花を登録したり、なんて名前なのかを調べる事ができるアプリ。
で、どんな機能が必要になってくるかと考えると
- 花や葉を写真に撮れる
- 花の写真を登録できる
- 花の写真に名前を登録できる
- 撮った写真を花びらの色、数、葉の形や名前で検索できる
てことになるわけです。
で、これを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にプロジェクトテンプレートさえ用意されてる。
ほらね
で、これらの運用方法や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を勉強するように。
ばっちりiPhoneからも呼び出せます
4、MySQLのインストール
これは割と簡単。「ターミナルからコマンドでMySQLを起動する」ことが難しいなら「システム環境設定のMySQL制御パネル」でOK。後半のphpMyAdminをインストールすればターミナルからコマンド経由でMySQLを操作しなくてもいいみたいです。ただ「MySQLのDB領域とDBアカウント」はどうなんだろ?
で、出たザンス~
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に接続する
おお~、みてみてみて~。
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を起動する」での不具合を調べてる最中に気づいたのがアクセス権の(不明)ってグループ。
なに、これー!
これ、知らない人ー!!
解錠して削除しようとしても、まったく無反応。
従来の権限管理機構に加えて、OS X 10.5から導入されたACL(Access Cotrol List)機構によってフォルダ権限がおかしくなるみたいです。いったん、ACLを無効にして再度有効にすればいけるとか、いろいろ説があり、いじってみたんですが駄目でした。最終的に以下の方法で既存のフォルダに対する(不明)グループの削除はできるってのがわかったけど、これがどう影響するか未確認だし、根本的な解決になってない。それに新規にフォルダ作るときっちり、また発生するし...
システム環境設定の共有設定に、いったん自分のホームフォルダを共有にして表示させ、そこで削除することに成功。またまた情報表示に戻って「解錠して内包している項目に適用」。
同じ現象にみまわれてる人にお勧めはしません。
しばらく無視だな...
誰か解決法知ってたら教えてください。
ゲット!