社長BLOG
スマートフォンのアクションフロー その1
- 2011-12-05 (月)
- 社長BLOG
12月にスマートフォン対応の足がかりをつくる。
アクションフローについて検討した。
色々なやり方がある。フレームワーク自体を拡張するもの。
特殊なサブクラスを作ってそこでスマートフォン用の拡張処理を行うもの。
暫定、とりあえずこのやり方で実装していこう方針がまとまったので共有しておく。
なお、このやり方で最後まで行くというよりは、なるべく愚直なやり方で積み上げていって、実績が整ったところでエレガントな実装方法にアップグレードしていこう、という堅実な方式だ。
pc_frontendを使う
方針の一つ目、携帯電話向けの実装と同じように、新しくsmt_frontendをつくるか?
という方式も検討した。
この場合、ほとんどPCと同じ挙動をするのにわざわざ分ける価値がないととりあえず判断した。
pc_frontendに詰め込んでいって、原理的に破綻してからでも遅くない。
拡張用サブクラスは作らない
これもとりあえずの対応。HOUOUの終了時にはうまーく処理をまとめた拡張が出来ているかもしれない。
ただ現段階では愚直な作戦で行く。
スマホ用のlayout.php
レイアウトテンプレートはスマートフォン用に用意する。
HOME MEMBER COMMUNITY SNS
の4種類を基本レイアウトにする。一本化しないで4レイアウトファイルにする。
OpenPNE3PC版のlayoutは深くてちょっと見通しがわるい。layoutAやBが直感的に分かりにくい。
view.ymlでどのレイアウトを選択するか明示する。
◆4つの基本レイアウト
indexActionしか使わない
投稿、削除、検索などは、スマートフォンAPIを新設して利用するので、基本的にはページ表示用のindexActionしか使わない。search post delete などのその他のアクションはスマートフォンAPI側を使う。
Actionは共有しないが流用する
スマートフォン対応で一番楽に実装できそうなのは、Actionを共有し、テンプレートやCSSだけスマートフォン用に振り分けるという物。
今回このやり方はひとまず採用しなかった。ざっと調べたところ
・テンプレートにアサインすべき値がぜんぜん違う。PCのほうが余計にアサインする。
・PCとスマートフォン同じUIの遷移をしないケースが沢山ある
このに点があるので、Actionの共有を必須にするのはやめた。
ただ、全く同じアクションフローの場所は、内部で元のアクションを呼び出したり、コピペするのはかまわない。
これを共有したからと言ってテスト工数が減るわけでもないので、スマートフォン用には独自にアクションをつくることにした。
とはいえこんな感じでつくる。
※実際には動かないコード、雰囲気だけね。
PC用のアクション関数の中に、スマートフォン用のチェック関数を入れて、リダイレクトする。
凄くベタに書いている。
テンプレートも
こんな感じでベタに書いていく。スマートフォン対応されたActionは先頭にこの$this->forwardIf()という関数が付くようになる。対応していなければそのままPCのActionを呼び出す。
とりあえずこれでしばらく実装してみて、経験を蓄積してから、拡張クラスを設計していこうと思う。
実際のソースコードができてくると、もうすこし理解しやすいとおもう。