SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Adobe Developer Connection(AD)

Eclipseを使用したFlex+PHP開発

  • このエントリーをはてなブックマークに追加

コードのデバッグ

 コードをデバッグする場合、Flash Builder 4とZend Studioでは少なくとも3つの方法があります。

 Flash Builder 4には、コードのデバッグ用に、[Network Monitor(ネットワークモニター)]と[Test Operation(操作をテスト)]の2つの新しいビューが追加されています。これらのビューが表示されていない場合は、[Window(ウィンドウ)]-[Other Views...(他のビュー...)]を選択し、Flash Builderノードのビューを探すことで追加できます(ネットワークモニターはFlash Builder Premiumでのみ使用できます)。

 ネットワークモニタービューを使用すると、Flexクライアントとサーバーとの間でやりとりされるすべての通信を見ることができます。元データとオブジェクトの両方が見られます。この機能を使用したい場合、まずこれを有効にする必要があります。[Enable Monitor(モニターを有効にする)]アイコンをクリックします(図31を参照)。

図31. ネットワークモニターの有効化
図31. ネットワークモニターの有効化

 その後、アプリケーションを実行します(デバッグモードで実行する必要はありません)。アプリケーションの使用中にサーバーとの間でデータが交換されると、要求、所要時間、送受信データが表示されます(図32を参照)。

図32. ネットワークモニターの動作
図32. ネットワークモニターの動作

 [操作をテストビュー]は、名前からわかるように、使用可能な操作をテストするためのものです。[操作をテストビュー]を選択し、getData()操作を選択して、[Test(テスト)]ボタンをクリックします。4つのVOAuthorオブジェクトが表示されます(図33を参照)。操作に引数が必要な場合、このビューから引数の値を定義できます。

図33. [操作をテストビュー]の使用
図33. [操作をテストビュー]の使用

 バグを発見する最も強力な方法は、もちろんデバッグすることです。Flexのデバッガーは、バグをすばやく特定して解決するための強力なツールです。以下では、FlexとPHPのコードをデバッグする方法を説明します。

 まず、プロジェクトをデバッグモードで実行します(Flashパースペクティブにいることを確認し、ツールバーのデバッグボタンをクリックするか、flex_project.mxmlを右クリックして[Debug(デバッグ)]-[Web Application(Webアプリケーション)]を選択します。これにより、Flexデバッガーが開始されます。dataGrid_creationcompleteHandler()関数内部にブレークポイントを設定してデバッグモードで実行すると、Flexデバッガーの動作を確認できます(図34を参照)。

図34. Flexデバッガーの動作
図34. Flexデバッガーの動作

 次はPHPコードのデバッグ方法です。PHPデバッガーをZend Studioから使用することもできますが、現在FlexとPHPコードの両方をデバッグする場合に問題が発生します。Zend Frameworkによって動的にインクルードされるスクリプトを、PHPデバッガーが正しく認識できないようです。このため、例えばMyService.phpのgetData()メソッドに設定したブレークポイントに到達できません。この問題を解決できたら、この記事を更新してPHPデバッガーの使用法を説明します。

 この制限を回避するために、筆者は次のようなワークフローを使用しています。

  1. 最初に、作成したPHPクラスに構文エラーがないことと、使用するメソッドが期待する結果を返すことを確認します。これは、テストするサービスクラスをブラウザにロードすることで簡単に実行できます。そのクラスに初期化コードを追加して、テストしたいメソッドへの呼び出しを行えば、コードの実行もテストできます。具体的には、セットアップで次のURLをブラウザにロードします。
    • http://localhost/zendamf_remote/MyService.php(これはPHPサービスのURLです)
  2.  構文エラーがなければ、次のコードを(クラス定義の上に)追加することにより、getData()が期待した結果を返すことを確認できます。

    $service = new MyService();
    print_r($service->getData());
    
  3. もう1つ有効なワークフローとして、渡された変数をフラットファイルに記録する関数を使用する方法があります。例えば、次のような関数を使用します。
  4. function logMe($var) {
      $filename = dirname(__FILE__) . '/__log.txt';
      
      if (!$handle = fopen($filename, 'a')) {
        echo "Cannot open file ($filename)";
        return;
      }
      
      $toSave = var_export($var, true);
      fwrite($handle, "[" . date("y-m-d H:i:s") . "]");
      fwrite($handle, "\n");
      fwrite($handle, $toSave);
      fwrite($handle, "\n");
      fclose($handle);
    }
    

     そこで、saveData()メソッドが呼び出されたときにFlexが送信する引数を記録したい場合は、saveData()メソッド内部に次の行を追加して、Flexアプリケーションを実行し、画面上で行を編集します。

    logMe($author);
    

     ログファイルには次のような内容が記録されます。

    [10-02-18 14:20:01]
    stdClass::__set_state(array(
    'lname_aut' => 'Corlan',
    'fname_aut' => 'Mihai',
    'id_aut' => '15',
    ))     
    

 作業手順は以上です。思ったより簡単ではなかったでしょうか?

次のステップ

 Flash BuilderとZend Studio for Eclipseを組み合わせることで、Flex+PHPプロジェクトを作成し、このようなセットアップでFlexとPHPのファイルを編集する機能を利用できます。プロジェクトの範囲が拡がり、複雑さが増してきたら、FlexとPHPのコードを同時に簡単にデバッグできます。

 Flex、PHP、AMFについて詳しくは、Flexデベロッパーセンター – FlexとPHPについて学ぶのページを参照してください。

※告知:Adobe AIR Contest 2010今年も開催!

Adobe AIR Galleryに登録された優秀なAIRアプリケーションを決定するコンテスト、Adobe AIR Contest 2010が今年も開催されます。優秀作品には、Adobe MAX 2010(2010年10月/米国ロサンゼルス)への招待、Adobe Creative Suite製品のプレゼントが贈られます。登録締め切りは、2010年8月31日まで。【詳細はコチラ

「FlexではじめるRIA開発」特集、絶賛公開中!

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Adobe Developer Connection連載記事一覧

もっと読む

この記事の著者

Mihai Corlan(Mihai Corlan)

アドビ プラットフォームエバンジェリスト。以前は、コンピュータサイエンティストとしてFlex Builderのプロジェクトに従事。アドビ入社以前は、InterAKT Online(2006年にアドビと合併)でシニアデベロッパーとして、e-shop、ニュースレター、アンケートやWeb開発者向けのRAD...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5296 2010/08/09 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング