TitaniumとWordPressで(比較的)簡単SNSアプリ
Titanium Advent Calendar 2014の15日目。Titanium + WordPress + Node.jsの環境がうまくいっているので紹介。
書いてる途中で簡単か?と思い直し「比較的」付けた(笑
慣れると
WordPressで公開している → アプリ作りましょうか?
まずはアプリでサービス提供 → Web版も提供
が短期間で出来るようになる。
長くなったのでポイントだけ。
WordPressを使う理由
- データベースの構造がシンプルで汎用性がある
- 標準でユーザー管理、投稿、コメントなどの基本機能が揃ってる
- テーマやプラグインで本体に手を加えずに開発出来るのもいい
- アクション・フィルターの機能がNode.jsからキックするのに便利
- 重い処理や非同期処理したい場合はWP-CRONの仕組みが便利
- 情報が豊富
- 初心者でもWordPressは触った人が多いので教えなくて済む。
→ アプリ側を上級者で開発して、Web側は他人に振れる。
- PHPフレームワークと比べて遅いけど、最近は負荷分散する仕組みが豊富なので許容範囲になる。
→ アプリのリクエストはNode.jsで処理するのでWordPress(PHP)の遅さは関係なくなる
Titaniumを使う理由
- 一つのコードでAndroid, iOS両対応出来るのが強い
- ネイティブとまでいかなくてもサクサク動く
- 最悪ネイティブモジュールを作れば何とかなる
- Node.jsと組み合わせときの開発効率がうまい(全部JavaScript)
Node.jsを使う理由
- アプリからは同時に大量のリクエストが来るのでPHPでは捌き切れない
→ データベースはMySQLではなくスレッドプールが使えるMariaDBにする
- TitaniumもJavaScript。CommonJSの考え方を理解してTitanium側のコード品質も上がっていく。
→ Titaniumで作った汎用関数がそのままNode.jsで使える
ちなみにWordPressは外部にAPIを提供しているので、アプリから直接WordPressにリクエストを送るだけでも大抵のことが出来る。
Node.jsのモジュールの中にはWordPressのXML-RPC APIに接続するのもある。
私は最初アプリ向けのAPIはWordPressのプラグインで実装したけど、遅すぎて耐えられなかった。そのときの記事がこれ。
Node.jsから直接SQL実行するのが一番というのが私の結論。
Node.jsでアプリのAPIを実装するときのポイント。WordPressとどう連携するか。
- ユーザーのログイン、新規登録だけNode.jsからPHPコマンドを実行(wp_insert_userとか)
- データの取得、登録はNode.jsからSQL文を発行する。
→ そうしないと速度的に耐えられない。
→ カテゴリーの登録だけちょっと苦戦するぐらいで後は難しくない。
- WordPressのアクションを実行する汎用的なPHPを書いてNode.jsからアクション名を引数にキックすると便利。
- メール送信とかはWordPress側(プラグイン)で実装しておくと、ウェブ版を実装したときに楽。
→ Node.jsからはアクション名でキック
- ファイルアップロードもNode.js側でファイルの配置とDBにInsertして、あとの画像加工はアクション名からWordPress側(プラグイン)で実行する
- PHPシリアライズされたデータでもphpjs使えばエンコード、デコード出来る
- WordPress側でオブジェクトキャッシュを有効にしていると、直接SQLでアップデートしたデータがウェブ版に反映されない。
→ キャッシュをクリアするアクションをAPIから発行する必要あり
WordPress公式アプリはソースコードが公開されているので参考になるかもしれない。
GPLなのでコードを流用する場合はソースコードを公開しないといけない。便利な機能はTitaniumのモジュール用に切り出して公開するとみんなが幸せになれるかも。
PhoneGap + WordPressで考えている人も後でPhoneGapの限界ともっさり感で泣くより、CommonJS覚えてTitaniumで開発するのをオススメしたい。
明日のTitanium Advent Calendarはk0sukeyさんです。
< Related Posts >