明日もデザインで食べていこう![16]はじめてcronを使ったよ、ってか何それ?/秋葉秀樹

投稿:  著者:  読了時間:6分(本文:約2,900文字)


こんにちは、秋葉です。
人生の先輩であり、あるスクールの先生から「秋葉さんのデジクリの記事は難しすぎてワシにはわからんわ〜」と言われてたことを思い出しました。^^;
僕自身が本業の開発者ではない分、なるべく分かりやすく説明しようと思っていたんですが、どうもややこしいことを書いていたようです...反省。

今日から噛み砕いて書いてみようと思いますが、表現的に行き過ぎたところがありましたらどうぞご指摘くださいませ!!
何卒よろしくおねがいしまっす!!!

●今週末はHTML5やCSS3を実践している人が登壇するセミナー開催

今週末の6月18日は大阪産業創造館でイベント「HTML5+CSS3 制作現場の実践アプローチ大公開!」が開催されます。
< http://m2.cap-ut.co.jp/event/col01.html >

毎日コミュニケーションズより発売予定の「CSS3デザインプロフェッショナルガイド」の著者が全員出演するというものです。実際の現場でHTML5案件に携わった人もいるので、トラブルネタとかも発表される予定です。

やはり現場の経験者がいるって強みですね。仕様書に書いてあることが聞けるセミナーは今まで何度となくあったんですが、実際案件で実装してみてどうなの? って話が出来る人は結構少ないんですよね。僕は、またここでも報告する予定ですが、SOY CMS2の開発者の宮澤了祐さんと一緒に登壇します。



テーマはWeb Socket。
Web Socketって難しそうですよね? これは今までのAjax通信とは違い、一度接続したらこちらからデータを取りにいくことはもちろん、黙っていてもサーバからデータが送られてきます。例えば10人が接続したとして、だれかがアンケートに1票投じたその瞬間、他の9人に知らせが行きます。

こう書くと「そんなの今まででもみたことあるぞ」と思われるかもしれません。従来の方法だと9人(実際は10人全員)が一定のタイミングでサーバに「誰か投票したかな?」っていう要求を送って、その結果をサーバが返すという手続きが必要なんです。しかしWeb Socketの場合、要求を送るという手続きが要りません。他の9人が黙っていてもサーバが自動的に通知をすることになるわけです。

その技術を使って、会場のみなさんとアンケートやクイズをして、なにやら賞品もあるそうなのでゲットしてください! 対応ブラウザが入った端末を持っている方は全員参加してみてください。双方向通信の技術を体験してもらいたいからです。

このセッションでは体験してもらった後、使われている以下の技術を解説します。お楽しみに!!

・Web Socket
・node.js
・Socket.IO
・Canvas
・CSS3 transform

●チャリティイベント「Untitled!!!!!!!!」のfacebookページのコンテンツをFlashで制作

これは7月に発売される「facebookプロフェッショナルガイド」にも執筆させていただいたんですが、前にもご紹介しましたイベント「Untitled!!!!!!!!」のハッシュタグを付けてTwitterに投稿した方のツイートを、Flashで表現するfacebookページを作りました。
< http://www.facebook.com/Untitled8ex?sk=app_174051459319899 >

ここではcronという技術が使われています。cronとは、簡単にいうとサーバが一定のタイミングで中にあるPHPファイルなどを自動的に実行できる技術です。例えば誰もアクセスしてなくても、サーバ内のXMLを最新のものに更新させてしまいます。

Twitterのコメントは、時間が経つと検索しても引っかかりませんが、「TOPSY」というTwitterの検索サイトではたくさん出てきます。cronを実行させることによって15分間隔でTOPSYの情報を取得し、Flashが置かれている同ドメイン内のXMLファイルを自動的に書き換えてくれます。つまり、誰かがハッシュタグをつけてつぶやくと、Flashに反映される仕組みです。

cronが15分刻みで働くから、XMLも15分後には更新されているはず......と思いきや、結構負荷がかかるんですね、これ。5分刻みでcronを仕掛けたら大変なことに......。全く更新されるどころか、XMLが空っぽ!

相当慎重に扱わないと怖いテクノロジー、というか10分刻みでもかなりキツいようでした。サーバによると思いますが、取扱は要注意! 大事なのは、もしもうまく働かなかったらその対処をちゃんとすること、いきなりXMLが空っぽ、なんてことのないように対策をしておく必要がありますね。

ん? なぜそんなcronなんて難しいことをするかって? そうですね、最初はFlashが直接TOPSYのサイトに行ってデータを取得する形を考えたんですが、これが重い重い......。

別ドメインに行って情報を取得することだけでも相当な負荷がかかり、ローディング待ちの状態が結構続きます。これはさすがにまずい、と思ってローカル(同じサーバ内)にTOPSYのデータがあればいいなと思っていました。

ただし、TOPSYの検索結果が更新されたら、自分とこのサーバ内のXMLも自動的に更新されないと、何の意味もない。誰かがせっかくつぶやいたのに、それが無視されて古い情報しか残らないのはさびしい。だからXMLを自動更新させたい。これができればFlashのパフォーマンス(というかローディング)も良くなる。

◇当初
Flash → TOPSY結果取得 → Flash内で情報を解析してローディング完了

◇改善
cronがPHPに自動アクセス → TOPSY結果取得 → PHPがXML更新(15分間隔) ← FlashがXMLを解析、ロード完了
※PHPとXMLとFlashは同サーバ内にある

随時更新されるファイルをサーバ内に置くのであれば、導入を検討したい技術であるわけです。ちなみに今回使用したサーバは「サーバーカウボーイ[ http://server-cowboy.jp/ ] 」でした。サーバによって設定がだいぶ違うようですし、そもそも対応しているかどうか、導入の際は先に調べておきましょう!

今日はここまでです、どうもありがとうございました!!

【あきば・ひでき】
hidetaro7@gmail.com
< http://www.akibahideki.com/blog/ >

テクニカルディレクター・デザイナー。DTP黎明期からグラフィックデザインを学び、東京都営団地下鉄など交通広告を多数手がける。同時に音楽活動も活発に行い、西日本半全国ツアーなどを展開、某専門学校のテーマソングを作詞作曲、編曲から楽器全てを演奏してレコーディングするなど、マルチなクリエイティブ活動も。最近では東京と大阪の教育施設などで講師業をも務める。HTML CSS JavaScript Flash ActionScript 3DCG Movie DTP GraphicDesign...多種スキルを持つ。Web標準技術だけに執着せず、全てのメディアで説得力のある表現にチカラを注ぎたい、そんな仕事をしたい。