読者です 読者をやめる 読者になる 読者になる

uzullaがブログ

uzullaがブログです。

PHPだってアプリたい! - Webアプリエンジニア養成読本 AdventCalendar2014 12日目

AdventCalendar2014 php

サワディカープ、タイから帰国して数時間のuzullaです。12月だというのにめっちゃ日焼けしました。

「帰国日の今日が俺の担当だ!!ヤバイ!できてない!!」って感じで1時間くらいで一気にかいてるので、週開けにも直したいとおもいます…。


本エントリはWebアプリエンジニア養成読本アドベントカレンダーです。


Webアプリエンジニア養成読本 Advent Calendar 2014 - Qiita

PHPって…

基本ウェブアプリにしかつかえない。CLIのアプリも書けるけど、書いてる人すくない。
「でもやっぱりプログラミングやるなら、アイコンダブルクリックしたら起動するアプリやりたいよね…」

ワカリマス

nightrain

nightrainをつかってみましょう。

Convert your PHP Web Application to Windows, Mac & Linux!
naetech/nightrain · GitHub

これをつかうと、GUIのアプリをPHPで書く事ができます!!!

「これは一体なんなの?」

オチから言えば、ウェブアプリをパッケージするためのツールです。

PHPとJSとHTMLでネイティブ(?)アプリを作成できる
Mac、Win、Linux対応
・基本的に、PHPでできることはできる*1
・当然ローカルファイルも読める
SQLiteとかつかえば同梱でDBも用意できる、勿論Mysqlだって使える

似ているものとして、PhoneGapとかああいうのを想像してもらえればよいかなと思います。

例、Tinitterをパッケージしてみる

ウェブアプリエンジニア養成読本のPHP編では、Tinitterというサンプルアプリを作成します。コードは以下で公開されています。
uzulla/Tinitter · GitHub


f:id:uzulla:20141212234231p:plain

これを、NightrainでOSXのapp化してみました、以下からどうぞ。

http://bit.ly/tinitter-app

サンプルアプリなので、内容的にはしょうもないものであり、どうこうはありませんが。

イジり方(OSXの場合)

配布されているnightrainのファイルや、上のtinitterのサンプルappをDLして、右クリックして「パッケージの内容を表示」とすると、中のファイルを見ることができます。

そこから(デフォルトでは) アプリ名.app/Contents/MacOS/www といったディレクトリをひらき、その中に、まるでウェブサイトをつくるようにファイルを作成・配置・修正していくと、そのまま反映されていきます。

上のTinitterアプリの場合は、DocumentRootより上にライブラリを置きたかったので、settings.iniを修正し、ディレクトリ配置を少しだけかえています。

ファイル修正後、特にコンパイルは必要ありません。

細かい話

現在のNightrainは、要はOSXに最初からはいっているPHPをビルトインサーバーとして起動して、同時にそのURLを簡易なウェブブラウザで表示する、ということをやっています。

なので、アプリ起動中にhttp://localhost:8000(デフォルトの場合)にブラウザでアクセスすることで、普段のブラウザでも見る事ができます。

というか、開発時はそっちでやったほうがリロードとかが楽です。

わりと制限がないので、gitレポを同梱しちゃう!みたいなのもまあできますね、そうしたらgit pullでバージョンアップできる!!!かっこいい!!!(大分頭おかしい)

これって「PHPで作れる」っていえるの?

実際のところ、アプリっぽくしていくには、相応にHTMLとJSの腕も必要になるので、PHPだけでできるって感じではありませんね

ただ、PHPをやっていたら、当然ウェブアプリをつくるでしょうから、その腕をそのままもってこれるので、非常に学習コストが低いですね。

PHPはウェブアプリしかつくれないからつまんない!というご意見について、色々涙ぐましい努力によって多少魅力的になってくればいいですね!!
(まあこれもウェブアプリっちゃウェブアプリなんですけど)

で、使いものになるの?

オチからいえば、まだバグが多い。

なんというか、しょうもないバグが多い、アプリ終了してもビルトインサーバが終了しないとか、そういうやつです。
そういう細かいしょうもないバグがつぶれれば、こういうのはこういうので面白いかなっておもってます。

あと、欠点として、上のTinitterみたいにDBをSqliteにして、appの中に同梱してしまうと、バージョンアップでDBが消滅します。

~/Libraryとかに適切に作成していくとか、多少そういった、OSX向けの流儀は必要になるのではないですかね。

ちなみに

中身はPythonだそうです、ウケる。


最後に、しなければならない宣伝

さて、宣伝タイムです。帰らないで下さい。

Webアプリエンジニア養成読本[しくみ、開発、環境構築・運用…全体像を最新知識で最初から! ] (Software Design plus)

Webアプリエンジニア養成読本[しくみ、開発、環境構築・運用…全体像を最新知識で最初から! ] (Software Design plus)

まず再度の書籍の宣伝です、本アドベントカレンダータイトルの書籍です。

このエントリが役立つ方には、まだちんぷんかんぷんかもしれません。即座に買えとはいいませんが、いつかは買って欲しいです。まあ、本屋にいって他の書籍のついでに立ち読みしてみるのも良いでしょう、買って欲しいですが。

もし、この書籍の内容が理解できれば、おそらく仕事でもなんとかやっていけるレベルにいるのではないでしょうか。そのようなベンチマークとしても役立つと考えております。つまりは買っていただきたい!ということです。

しなければならない宣伝2

来年の夏に開催されるYAPC::Asia Tokyo 2015についてです。


YAPC::Asia Tokyo 2015, Aug 20, 21, 22

YAPC::Asia Tokyoは世界最大級のエンジニアの手による草の根技術カンファレンスです。これまで9回開催され、様々な技術に関する発表そして技術者同士の出会いを生んできました。

「なんかエンジニアコミュニティってきいたことがあるけど…」「カンファレンスってどんなの?いったことない」という人でもきっと新しい発見があるイベントとなりますので是非ともチェックしてください。

f:id:uzulla:20141201013416p:plain

YAPCPerlのカンファレンスと思われがちですが(実際そうなのですが)、どんな言語の人でも、きっとPHPの人でも楽しめるイベントになっております。なにせ去年のベストトーク賞はPHPのトークでした*2


来年は10年目かつ、今の運営における最後の開催となり、規模も、話題のバリエーションも間違いなくパワーアップしますので、是非来年のスケジュールにいれておいてはいかがでしょうか?

f:id:uzulla:20141201013436p:plain


…といっても、来年の話では忘れてしまうでしょう。近日中にお知らせをとどけるメールマガジン的なものができるはずです(鋭意作成中)

本日の所は、まずは公式Twitterアカウントのフォローなどをされてはいかがでしょうか?


といった宣伝をおこなった所で、こちらからは以上です。また次回お会いしましょう!

次回はrrreeeyyyさんで、タイトルは「IT インフラエンジニアに Web アプリエンジニア養成読本をオススメする n 個の理由 (n は書いたあとに決定されます)」とのことです!!!

*1:PHPビルトインサーバでできることなら

*2:というか私です