« 2008年3月 | メイン | 2008年5月 »

2008年4月 アーカイブ

2008年4月25日

Flex SDKで、Flickrの写真を表示するヤツ

前回にひきつづき、輪講の時間にてFlex SDKに挑戦中です。
Flexならではのものを作りたいよね、ということで、今回はサーバ側との連携に挑戦。
Flexのチュートリアルを眺めていたら、Flickrの画像を持ってくる、というサンプルを見つけたのでこれを叩き台にして試してみたいと思います。

Adobe - Flex Quick Starts: Loading external data with HTTPService

ここに掲載されているソースコードをそのままmxmlファイルとして作成して、前回と同様に mxmlc コマンドでコンパイルすると、こんなswfファイルがすぐに出来上がります。わーい、ちゃんと写真が出てきた!





さて。ここから改造。
この状態で表示される写真はFlickr全体でpublicなもの。どうせなら自分がアップした写真だけを表示させたいですよね。

Flickr のRSS urlの仕様をちょっと調べてみると、

■全員のRSS
http://api.flickr.com/services/feeds/photos_public.gne?lang=en-us&format=rss_200

■指定したユーザーの写真一覧RSS
http://api.flickr.com/services/feeds/photos_public.gne?lang=en-us&format=rss_200&id=(ユーザーID)

という違いがあって、idパラメタでユーザーIDを付加してあげればよいようです。





つぎにFlex側から、任意のurlをコールする方法について。
このチュートリアルに一通りのことが書いてあります。

Adobe - Developer Center : Flex quick start guide for PHP developers

なるほど、<mx:HTTPService>の要素の中に

<mx:request>
   <id>10116145@N03</id>
</mx:request>

といった具合でFlickr ユーザーIDを指定すればOKみたいです。





あと、ついでに見た目の調整も適当にやってしまいましょう。UI部品の色などは、CSSと同じようなプロパティ指定で変更できるようです。
詳細については「flex リファレンス」などで検索すると出てきますが、たとえばこんなものを参考に。

mx.containers.Panel (Flex リファレンスガイド)





そんなこんなで、今回できたのはこんなものです。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application 
    xmlns:mx="http://www.adobe.com/2006/mxml" 
    xmlns:aral="*" 
    creationComplete="photoService.send();"
    viewSourceURL="src/HTTPServiceConsumingFlickrRSSFeed/index.html"
>
    <!-- Model -->
    
    <!-- Define the HTTP service -->
    <mx:HTTPService 
        id="photoService"
        url="http://api.flickr.com/services/feeds/photos_public.gne" 
        resultFormat="e4x"
        result="photoResultHandler(event);"
        fault="photoFaultHandler(event);"
    >
      <mx:request>
         <id>10116145@N03</id>
      </mx:request>
   </mx:HTTPService>
    
    <!-- Controller -->
    <mx:Script>
        <![CDATA[
            import flash.net.navigateToURL;
            import mx.controls.Alert;
            import mx.rpc.events.FaultEvent;
            import mx.rpc.events.ResultEvent;
            
            [Bindable]

            private var photoFeed:XML;
            
            // Define and use atom namespace.
            private namespace atom = "http://www.w3.org/2005/Atom";
            use namespace atom;
                        
            // The image URL is in the HTML content 
            // so we have to parse it out.
            private function parseImageUrl(fromHtml:XMLList):String
            {
                var pattern:RegExp = /img src="(.+?)" /;
                var results:Array = pattern.exec(fromHtml);
                var imageURL:String = results[1]; // backreference 1 from pattern
                
                return imageURL;
            }

            // Result handler - gets called after RSS is loaded.
            private function photoResultHandler(event:ResultEvent):void
            {
                photoFeed = event.result as XML;
            }
            
            // Fault handler - displays the error.
            private function photoFaultHandler(event:FaultEvent):void
            {
                Alert.show(event.fault.message, "Could not load photo feed");
            }

            // Opens author's HTML page in external window.
            private function openAuthorPage(event:MouseEvent):void
            {
                var dataIndex:uint = Number(event.target.instanceIndices.toString());
                var urlRequest:URLRequest = new URLRequest(photoFeed.entry[dataIndex].author.uri)

                navigateToURL(urlRequest, "_blank");    
            }
        ]]>
    </mx:Script>

    <!-- View -->        

    <!-- Effects -->

    <mx:Fade id="fadeIn" duration="3000" alphaFrom="0" alphaTo="1"/>
    <mx:Fade id="fadeOut" duration="3000" alphaFrom="1" alphaTo="0"/>

    <!-- User Interface -->
    <mx:Panel title="My Photos" width="100%" height="100%" borderColor="blue" backgroundDisabledColor="blue" backgroundColor="#efefff" color="white">
        
        <mx:Tile width="100%" height="100%">            
            <mx:Repeater id="photos" dataProvider="{photoFeed.entry}">                
                <mx:Box 
                    xmlns:mx="http://www.adobe.com/2006/mxml" 
                    textAlign="center" 
                >

                    <mx:Image 
                        id="myImage"
                        source="{parseImageUrl(photos.currentItem.content)}"
                        completeEffect="{fadeIn}"
                        scaleX="0.7"
                        scaleY="0.7"
                    />

                </mx:Box>    
                
            </mx:Repeater>

        </mx:Tile>
        
        <mx:ControlBar horizontalAlign="center">

        </mx:ControlBar>
        
    </mx:Panel>
    
</mx:Application>



これをコンパイルして生成されるswfはこちら。




下記もおなじswfですが、ちっちゃいサイズで貼り付けるとそれだけでブログパーツっぽくなりますね。




2008年4月23日

Macbook PRO 発熱中!

いつも結構な熱さを放つMacbookPROが、なんか今いつもに増して熱くなっているので、Dashboard Widgetで入れているTemperatureMonitorで見てみたら、CPU温度78度とか言いやがるではないですか! これって正常?大丈夫?平気?(どきどき)

 

20080423macbook_templature.png

 

 

ちなみに普段は放熱対策として「上げ底」「USBファンで冷却」の2重作戦を徹底しているおかげで、ここまで温度が上がることはありません。。。

 

2008年4月17日

Adobe Flex SDK超入門

最近の毎週火曜の昼は、輪講と称して、エンジニアで集まってオフィスでお昼ご飯を食べながら、よそのサイトを研究してみたり新しいものをみんなで試してみたりしています。

ここ数回はFlex SDKについて挑戦しています。
自分もまったく知らないところから初めて触ってみたんですが、最初のハードルこそちょっと高く感じたものの、触り始めるとたのしー!ということで、最初にやったことを備忘録がてら「Flex SDK超入門」としてまとめておきます。

 

Flexとは


Flashをベースにした、見た目がかっこいい(=リッチなインタフェースの)webアプリケーションが開発できるフレームワーク、です。(自分も全て理解し切れていないのでこの表現は正確ではないかも。。)
Flexを使うとこんなものが作れます、というサンプルがadobeのサイトにあります。たとえばこんなの。

Tシャツのデザインをカスタマイズできるもの

Dashboard。グラフ表示のパーツを並べたもの。こういったGUIコンポーネントが多数用意されている。

 

現在の最新バージョンはFlex 3。web上の情報を探すと古いバージョンを元にした記事が多数ありますが、試した範囲では互換性保たれている模様。

 

Flexで開発するには


方法がいくつかあります。

●Flex Builderを使う
Flex開発するためのIDE(統合開発環境)ソフトです。もっとも標準的な方法。有償(60日間の無料体験版あり)。

●Flex SDKを使う
mxmlファイルをテキストエディタで編集して、コンパイルしてswfを吐き出すやり方。無償。
mxmlファイルとは、ActionScriptのプログラムコードやGUIパーツの配置座標情報などを含んだ、xml形式のファイルです。ActionScriptコードは、xmlのCDATA要素の中に記述します。

 

今回は、Flex SDKをつかって開発を試してみます。

 

Flex SDKのセットアップ


SDKをアドビのサイトからダウンロードすればいいわけなんですが、これがとてもわかりづらいところにあります。(たぶんここがハードル一番高い、と思う。。)

■Flex 3 SDKのダウンロード
Adobe - Download Adobe Flex 3

このページの上半分は有償版 Flex Builderのダウンロードなのでここはスルーして、下半分を見ましょう。「ライセンスに同意」のチェックボックスをONにすると初めて、ダウンロードのテキストリンクがアクティブになります。

 

20080417flexsdkdownload.png

 

ダウンロードが終わったら、解凍してどこか好きなディレクトリにおいておきます。

 

あと、Flex実行にはJava実行環境が必要です。まだインストールされていない場合はこちらからダウンロード&インストールしておきます。

http://java.sun.com/javase/ja/6/download.html
※このページの「JDK 6 Update 6」で。(2008.04.17時点)

 

Flex SDKでHello World


まずは手始めに、mxmlファイルをテキストエディタで作って、それをコンパイルしてswfファイルを作って、表示を確認してみましょう。

こちらのサイトにあるチュートリアルにのっとった内容です。

 

●テキストエディタでこのような内容のファイルを作ります。保存名はMyFirst.mxmlとでも。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application
    xmlns:mx="http://www.adobe.com/2006/mxml"
    horizontalAlign="center" verticalAlign="center">

    <mx:Button id="myButton" label="I'm a button!" />
</mx:Application>

●これをコンパイル

コンパイラは、ダウンロードしたSDKを解凍した中にある、bin/mxmlc.exe です。 Windowsのコマンドプロンプト上で

mxmlc --strict=true --file-specs MyFirst.mxml

こんな感じで実行します。

☆オプションは指定しなくてもコンパイルは可能。下記でもOK。

mxmlc MyFirst.mxml

☆コマンドプロンプトでパスを通す。
みんなでやってたら「パスが通らない」っつって詰まる人がちらほらいたんですが、エクスプローラ上のファイルをコマンドプロンプトへドラッグすると、フルパス文字列でプロンプト上に持ってこれます。(常識かと思っていたが意外とそうでもない?)

 

コンパイルが終わると(数秒ほどかかります)、MyFirst.mxml ファイルがあった同じディレクトリに MyFirst.swf が生成されているはずです。これをブラウザウインドウにドラッグなどすると、内容が表示されます。ボタンが表示されるだけ、のものです。


 

 

と、ここまで、超入門編でした。
アドビのチュートリアルページにはこのあと、ボタンにonclickアクションを定義したり、GUI部品を配置するときの座標系の話、他の画像ファイルやswfファイルなどを埋め込むやり方、などが解説されているのでどうぞー。

 

Flexクイックスタート - Adobe デベロッパーセンター

 

2008年4月14日

iモードHTMLシミュレータとiモードID

いつも気がついたらアップデートされているドコモ提供のiモードHTMLシミュレータですが、dcmguidをつかった処理を作ってみようかな、というついでにチェックしてみたら、シミュレータではまだiモードIDに未対応のまま、でした。
#しゃぁねえな、実機でやるしかないかー。。。

 

とはいえ現在の最新バージョンは5.1で、2007年10月に更新されたもの。手元にあったやつはもっと古かったのでとりあえずはダウンロードしなおし、っと。

 

2008年4月10日

本が出ました。「プロセス・オブ・モバイル・サクセス 企画・発案から制作・運営・SEMまで携帯サイトを成功に導く55のポイント」

本を書く計画が数ヶ月前から進んでいたのですが、いよいよ今日、発売になりました!

楽天の美谷さん、IMJモバイルの吉田さん、弊社マイネットジャパンの藤川さんとの4人での共著本です。

 

 

内容は、携帯サイトのプロデュース&ディレクションについてです。
携帯サイトを通じてビジネスを始めたい、というときに、気をつけておきたい要点を55個のポイントとして紹介しております。

 

携帯サイトを通じたビジネスチャンスが広がっている昨今ですが、じゃあ自分(たち)もやってみるか!と思っても、実践するのはなかなか難しいものです。PC向けのウェブサイトであれば、そのプランニングから制作・運用まで豊富な情報がweb上に蓄積されていて、あまり経験のない人でも敷居が低く比較的簡単に参入しやすいかと思います。
が、携帯サイトとなると話が変わる。PC向けウェブのときと同じ感覚でいると、一見同じように見えていろんなところで携帯サイトならではの落とし穴があったり、制作運用ノウハウがあまりオープンにされていなくていくらググって検索して調べようとしても欲しい情報が見つけられなかったり、数多くのカベに当たってしまうのでは、と思います。
そんなときに、誰もが躓いてしまうような携帯サイトならではのポイントを、おいしいところを要点にまとめた一冊になっております。

携帯サイト開発をする上での技術的なポイントについて、の章を私が担当させていただきました。

 

目次を紹介すると、このようになっています。

  • 第1章 携帯サイトを取り巻く環境

  • 第2章 携帯サイトでのビジネスモデル

  • 第3章 携帯サイトのプランニング

  • 第4章 携帯サイト制作のチェックポイント【基本編】

  • 第5章 携帯サイト制作のチェックポイント【技術編】

  • 第6章 携帯サイトの運用

  • 第7章 SEM(モバイル・サーチエンジン・マーケティング)

  • 第8章 ケーススタディ

 

最後のケーススタディの章では、実際に成功している携帯サイトの事例をいくつか取り上げていて、MovaTwitterやR25式モバイル、ニコニコ動画モバイルなどと並んで弊社のデコブロも紹介させていただいています。

 

出版元の翔泳社さん運営のMarkezineにて、本書の紹介記事があります。よろしければどうぞ。

MarkeZine:◎モバイル激変時代に成功を勝ちとるための新法則が一冊の本に!

 

 


2008年4月 8日

【php&ethnaで携帯サイトを作る】セッション管理(その3)

世の中はすっかりEthnaよりもCakePHPだよなー、なんて思いつつ。マイペースにこのシリーズ続けます。携帯サイト向けのセッション管理のお話。
ちょうど今月よりドコモでもimodeIDが取得できるようになったので、こういうセッション管理は今後必要なくなるかもしれないですが・・・。
今回はethnaに依存した話です。

 

session.use_cookies の変更タイミング

前々回で、php.ini設定項目の session.use_cookies を変更するとかって話をしましたが、今回はそれをどうethnaプロジェクトに実装するか、という話。

session.use_cookies の値を動的に変更するには、session_start() をするまえに変更しないと意味がないようです。これを実装する1つの方法として、Ethna_Sessionクラスを継承したクラスを作って、そのコンストラクタに記述する手があります。親クラスのコンストラクタを呼んだ直後に記述するとうまくいきました。
あ、Ethna_Sessionクラスを上書きする場合名、appディレクトリ直下の Controller.php でその名前を指定するのを忘れずに。

 

セッションパラメタ名の変更タイミング

続いてセッションパラメタ名を変更する場合の記述箇所について。「PHPSESSID=xxxx」ってやつを任意のものに変更する場合ですね。
これも上記と同じく、session_start() をする前、Ethna_Session 継承クラスのコンストラクタに記述するのがよいようです。

そんなわけで上記2つをあわせて、サンプルとしてはこんなものになります。

class Session_Extends extends Ethna_Session_Memcache
{
    function Session_Extends($appid, $save_dir, $logger)
    {
        //■親クラスのコンストラクタをコール
        parent::Ethna_Session($appid, $save_dir, $logger);
        
        //■セッション名を上書き
        $sessname = 'PHPSESSID';    //任意のものに変更
        $this->session_name = $sessname;
        session_name($this->session_name);
        
        //■クッキーが使えない端末からのアクセスのときは、urlパラメタでセッション引数を引き回すようにする
        if(Mobile::isEnableCookie() == false)
        {
            ini_set('session.use_cookies', 0);
        }
    }
}

 

Ethna_sessionのおせっかい機能

セッション使用時は、毎回アクセスもとのIPアドレスをチェックして、前回とちがうIPからアクセスされてきたときは別セッションとみなしてセッションを再スタートさせる処理、が、Ethna_Sessionに実装されています。PCアクセスの場合は頼りになる処理なんですが、携帯アクセスのときはコレが余計なお世話。携帯電話の場合、アクセスするたびにIPアドレスは変わりうるので、このままではセッションが継続されません。 ので、この実装を打ち消す対応が必要です。 具体的には、Ethna_session のなかの _validateRemoteAddr() が、このIPアドレスのチェックを行っています。このメソッドを、常にtrueを返すようにオーバーライドすればOKです。

 

 

過去のシリーズ記事

 

2008年4月 7日

「2008年の最新技術を見逃すな!」エンジニア交流勉強会gungi(グンギ)

直前になっての告知になっていますが、今週木曜4月10日に、エンジニア交流勉強会gungi(グンギ)が開催されます。

 

、「2008年の最新技術を見逃すな!」エンジニア交流勉強会「gungi」

 

今回のテーマは、AndroidやiPhoneなど携帯電話まわりの話、Adobe AIRの話、グリムスの話、と、なんだか盛りだくさんです。
このなかのどれかに興味がわいて、こういう勉強会イベントにも興味があって、当日の予定がない、という3拍子そろった方は上記のurlから参加申込みくださいー。そうではない方も是非。

 

 

個人的には、どの話もおもしろそうですが特に、グリムス (gremz)の中のひとたちにお目にかかれるのが楽しみだったり。前から名前だけは耳にしたことがあったんですが、せっかくの機会なので勢いで今日このブログにもグリムスのブログパーツを貼り付けてみました。

(TrackBack先) エンジニア交流勉強会「gungi」でグリムスが話します。|グリムス スタッフblog

 

新人歓迎会 with ギョーザ

4月を迎えて、マイネットジャパンにも新たなメンバーが増えました!
ということで、先週末は恒例の社内手作り歓迎会がありました。

 

20080405gyoza.jpg

 

この日のメニューは大量のギョーザと特製鍋。ギョーザはてづくりです。

 

20080405taberu.jpg

#手前のアタマにオートフォーカスされてもたw

 

社内での歓迎会は、2006年の創業当初から機会あるごとに繰り返しているのですが、あらためて「人が増えたなー」という感じです。1回で消費する食べ物や缶ビールの量も増加中。毎回半日かけて準備してくれる総務の皆様、ありがとうございます。

 

(食べ物の写真はこちらでも)
4月4日は新人歓迎会! - されど空の青さを知る

 


2008年4月 2日

キーボード入力

「検索」とキーボード入力しようとして、「券s買う」と入れてしまうという打ち間違いを毎日10回くらいする。

右手で「k」を打つスピードに左手で「a」を打つのがついてこれないのが原因だ。

 

やるたんびについイラっとしてしまうんですがなにかうまい回避方法はないものか。

 


about

平島浩一郎
株式会社マイネット・ジャパン



katy(ケイティ) - 携帯サイト作成無料CMS
newsing(ニューシング)
終電jp
まとめてブログ検索
あわせて読みたい

Powered by Movable Type
株式会社マイネット・ジャパン

About 2008年4月

2008年4月にブログ「treasuring misc.」に投稿されたすべてのエントリです。新しい順に並んでいます。

前のアーカイブは2008年3月です。

次のアーカイブは2008年5月です。