サイトを制作して、はい終わり。なんて事はあまりなく。
制作サイドで更新 or クライアント様自身で更新、管理をしたい。なんて事はよくあります。
が、制作サイドも、もちろんクライアント側からも、毎更新時にHTMLやCSSなどを新規作成・編集といった作業を行うことは非常にナンセンスであり、めんどくさい作業です。
更新時に毎回めんどくさい思いをするのは非常にストレスなので、できれば楽をしてコンテンツを管理したい! or 管理してもらいたい!と思います。
コンテンツ管理について考えてみる。
以下のような前提条件で考えてみましょう。
どんなコンテンツ管理があるか?
1) Wordpress
CMSの代表的なパッケージであるWPをWebサイト側に用意して管理する方法。
2) Movable Type
商用CMSのNo.1シェアを持つMTでサイトを管理する方法。
3) Facebook
Facebookページのフィードをサイト側に読み込んでコンテンツ表示する方法。
4) Twitter
TwitterフィードをウィジェットまたはAPI経由でサイト上に表示する方法。
5) PHP/CGIファイルで外部ファイルをインクルードする
CMSが一般化する前によく行われていた方法。
6) PHP/CGIでCSVを読み込む
「5」の方法に一定のルールを定めた方法。
7) Ajaxで外部ファイルを読み込み
「5」や「6」と同じ発想だが、処理をJSで行う方法。
どんなコンテンツ管理がいいか。
上記のメリットとデメリットを踏まえて、ほどよいコンテンツ管理の手法を、個人の好みと独断で考えてみます。
これらを満たすコンテンツ管理の方法を、作ってみます。
どういう手法で作成するか。
管理側
1. GUI箇所はFlashで作成。
2. 必要な値をFlashからサーバーにPOSTする。
3. サーバー側はFlashから受け取った値をDB等に保存させる。(今回は直でJSON)
クライアント側
1. JSでサーバーのJSONを取得する。
2. AjaxでHTML側は表示させる。
プログラム(一部抜粋)
■JSON:
FlashからPOSTして
サーバーで受け取って保存、
JSで受け取るJSONはこんな感じ。
[ { date: "2013/06/10", subject: "件名", content: "ほげほげほげほげほげ" } ]
■AS3.0:
Flash側はsubject、content用の
TextFieldを作成してあげて
TextFieldの.textの文字列をサーバーにPOSTする。
dateはPHP内でサーバーの時間を取得する。
// POSTさせる準備 var _urlLoader:URLLoader = new URLLoader(); var _request:URLRequest = new URLRequest(); _request.url = 'http://www.hogehoge.com/hoge.php'; _request.method = URLRequestMethod.POST; var _variables:URLVariables = new URLVariables(); //_subTxtFlはTextFieldでtypeをINPUTに _variables.subject = _subTxtFl.text; //_contentTxtFlはTextFieldでtypeをINPUTに _variables.content = _contentTxtFl.text; _request.data = _variables; _request.method = URLRequestMethod.POST; _urlLoader.dataFormat = URLLoaderDataFormat.TEXT; _urlLoader.addEventListener(Event.COMPLETE, onCompleted); _urlLoader.load(_request); /** * PHPとの通信が完了されたら */ function onCompleted(event:Event):void { var _urlLoader:URLLoader = event.target as URLLoader; // ちゃんとEventを付けたら外そうね! _urlLoader.removeEventListener(Event.COMPLETE, onCompleted); trace("通信完了!"); }
■PHP:
PHPはFlashから受け取った値をJSONにPushさせます。
さらにJSONに正常に書き出しができたか、
またちゃんと件名、内容が入っているかの確認をして
全てがOKだったらFlash側にOKのレスポンスコードを含めたXMLを返すようにしました。
仮にNGの時は、NG用のレスポンスコードを含めたXMLを返します。
■HTML / JS:
PHP側で作っておいたJSONをajaxで直接読みに行き
HTML側に出力させます。
と、ここまでで簡単な投稿システムが作れたかと思います。
なぜFlashで作成したのか。
コンテンツ管理に、今のご時世"PC"からのみしかコンテンツ管理(投稿など)できないのはナンセンスと個人的に思いました。
FlashはWebという世界からは最近干され気味ですが、アプリという概念ならまだまだ現役かと思ってます。
ワンソースで
と、ほぼすべてのアプリに書き出しが可能だからです。
AS側で若干の調整が必要にはなりますが、コアのプログラムを弄る事は無いはず。
UI / UXの自由度
UI / UXの自由度がHTML / CSSより遥かに楽!
今日のWebデザインとしての主流は画像をなるべく使わずCSS3でデザインして構築ですが、Flashでも、もちろんIDEで直にShapeを書いたりASでShape or Spriteを描けます。
それにプラスして画面サイズを取るのが物凄い簡単なので、CSSで諸々調整して細かい調整(計算)はJSでという2度手間が省けるかと思います。
スマホじゃFlashダメじゃん
今回は管理するのに"Flash"を使っただけなので、スマホでこの管理サイトにアクセスする事はほぼないはず。
スマホには"Flash"から書き出されたAIRアプリがあります。
PCはまだまだ"Flash Player"のシェアは多いので問題無いはずです。
今回のコンテンツ管理ではセキュリティ面は考慮していませんが、実際はセキュリティ面の考慮がものすごい必要かと思います。
なのでFlash / PHPで暗号化なりをしてあげるといいかもです。
最後にちょっと流行りにのったBuild管理ツールについて
最後に管理つながりで最近の流行り?になっているBuild管理ツールgruntについて。
最近はHTML / CSS / JSを制作するのに、
などで作成する手法が流行ってるのですが、これらは最後にコンパイルしないとだめなので、このgruntツールを使用して行くと大変便利になります。
またこのgruntについては別枠でキッチリ記事を書かせていただきますので、細かい設定やらやり方は割愛しますが以下が参考になるかと思います。