携帯は多くの皆さんにとって、簡単に素早く何処ででも情報をチェックするツールになっているかと思います。モバイルトップページのリニューアルは、そういったニーズに応えるための試みの大きな一歩です。ここでは、代表的な機能を少しご紹介させていただきます。モバイルで検索すると、キーワードにより適した検索結果を結果画面の上部に表示するようにしました。タレント名、車種、動物などのキーワードの場合、画像情報を求めていると思われる検索にはイメージ検索の結果をまず最初に表示します。検索すると、渋谷付近のお店を表示する他、地名キーワードを自動的に理解して記録します。情報を最初に表示します。地名の記録に残ります。使う場所をこうやって随時追加しておくと、履歴からクリックするだけで簡単に設定変更もできます。サイトの検索結果から表示されますし、上記の検索結果の下部にも携帯サイトの検索結果は表示されます。回の検索で色々な情報を一覧できるようになりました。クリックで利用できるよう、トップページに用意しました。モバイルは、トップページをカスタマイズできるようにしました。ページだけで大事な情報の一覧を確認することも可能になりました。クリックしてご利用いただけます。(マーケティング)携帯は多くの皆さんにとって、簡単に素早く何処ででも情報をチェックするツールになっているかと思います。モバイルトップページのリニューアルは、そういったニーズに応えるための試みの大きな一歩です。ここでは、代表的な機能を少しご紹介させていただきます。モバイルで検索すると、キーワードにより適した検索結果を結果画面の上部に表示するようにしました。タレント名、車種、動物などのキーワードの場合、画像情報を求めていると思われる検索にはイメージ検索の結果をまず最初に表示します。検索すると、渋谷付近のお店を表示する他、地名キーワードを自動的に理解して記録します。情報を最初に表示します。地名の記録に残ります。使う場所をこうやって随時追加しておくと、履歴からクリックするだけで簡単に設定変更もできます。サイトの検索結果から表示されますし、上記の検索結果の下部にも携帯サイトの検索結果は表示されます。回の検索で色々な情報を一覧できるようになりました。クリックで利用できるよう、トップページに用意しました。モバイルは、トップページをカスタマイズできるようにしました。ページだけで大事な情報の一覧を確認することも可能になりました。クリックしてご利用いただけます。今まで時間軸、イベント別で整理していた写真を、今なら地理的にも整理できます。Googleマップの位置に各写真が表示されます。ドロップで写真の位置を地図上に簡単に指定できます。旅行日記などもっと面白くなります。新婚旅行でイタリアに行ってきました。その写真を地図で並べると、そこに行ったことがない家族や友達にとって分かりやすいし、自分たちが見ても時間と場所を思い出してくっきりなイメージが湧きますね。お父さんがマラソンに挑戦したとき、途中で撮った写真を地図のコースの上で出すと面白いでしょう。モバイルも公開しました。ウェブアルバムにアップロードした自分の写真、お気に入りの友達の写真や、公開されている写真が携帯からブラウズ、検索でき、コメントも追加できます。アクセスしてみてください。今まで時間軸、イベント別で整理していた写真を、今なら地理的にも整理できます。Googleマップの位置に各写真が表示されます。ドロップで写真の位置を地図上に簡単に指定できます。旅行日記などもっと面白くなります。新婚旅行でイタリアに行ってきました。その写真を地図で並べると、そこに行ったことがない家族や友達にとって分かりやすいし、自分たちが見ても時間と場所を思い出してくっきりなイメージが湧きますね。お父さんがマラソンに挑戦したとき、途中で撮った写真を地図のコースの上で出すと面白いでしょう。モバイルも公開しました。ウェブアルバムにアップロードした自分の写真、お気に入りの友達の写真や、公開されている写真が携帯からブラウズ、検索でき、コメントも追加できます。アクセスしてみてください。その22007年10月15日月曜日その1からの続きです。今日は実際にGWTを使ったアプリケーションの開発に挑戦してみました。AJAX的にサーバとクライアントの間で非同期に通信をおこなうアプリケーションを作るのは大変なので、とりあえずGWTのクラスライブラリに慣れるために単純なコードを書いてみました。適当なディレクトリを作り、そこから以下のようにapplicationCreatorを実行します。引数は適当なパッケージ名+メインのクラス名です。World的な単純なアプリケーションのコードが生成されます。MyApplication-shellを実行すると以下のようなホステッドモードの画面になります。これをひな型として、不要な部分を削り、必要なコードを加えていくことでオリジナルのアプリケーションを作成します。具体的にはsrc/com/google/code/myproject/client/MyApplication.javaを編集して、ホステッドモードでRefreshボタンを押すだけでOKです。JavaScriptプログラミングと同じノリですね。GWTのウィジェットが実際にHTML内にどのように配置されるかはwww/com.google.code.myproject.MyApplication/MyApplication.htmlというHTMLファイルを編集して決めます。今回作成したプログラムは以下の通りです。Googleの高度な次世代テクノロジーにより、正確かつ客観的に中年であるか判定します。GWTクラスライブラリのAPIドキュメントは以下のURLを参照。使用可能なJavaクラスの一覧は以下のURLを参照。MyApplicationをEntryPointインタフェースのonModuleLoad()メソッドを実装したクラスとして定義。年月日を選択するリストボックスが変更されたときに呼ばれるリスナー。結果文字列をlabelにセットする。日付の前後関係を使って判定する。現在の年齢を計算するより簡単。数字をリストボックスで選択するだけなので通常はエラーは起こらない。2月31日のようにカレンダー上に存在しない日を入力しても例外は発生しないらしい。一定範囲の数字を選択するためのListBoxを作って返す。EntryPointインタフェースの実装。ここでインスタンスの初期化をおこなう。要素に年月日のListBoxと判定結果labelをそれぞれ配置する。}}冗談はともかく、このような小さなアプリケーションでもGWTの有効性は実感できました。GWTのウィジェットやイベントはAWTやSwingと似ていますし、慣れているJava用のエディタやデバッガが使えるのは、新しいことをおぼえるのが億劫になりつつあるお年頃の人間にとっては助かります。コンパイル時のエラーでいくつかのバグを未然に防ぐことができましたし、実行時のバグもExceptionが(制限つきながら)使えるおかげで簡単にわかりました。どんなJavaプログラムでもJavaScriptに変換できるわけではありません。この例ではjava.util.Dateを使いましたが、Java標準クラスライブラリはjava.langとjava.utilの一部しか使えません。スレッドが使えないといったやむを得ない制約もあります。GWTを使ったからといってJavaScriptでできないことができるようにはなりません。JavaScriptでできる範囲のことを、Javaのスタイルできれいに書くためのフレームワークがGWTなのだと思います。GWTを使っているとJavaがクライアント側の開発に使われる言語だと考えられていた時代、つまりJavaといえばJavaアプレットだった時代を思い出します。いつの間にかJavaはサーバ側の開発にばかり用いられるようになってしまいましたが、思わぬ形でクライアント側に帰ってきたなあという印象です。anywhere"的でもあります。Labelerがあります。HTMLソースを見てみれば、gwt.jsを読み込んでいることがわかります。ちなみにこれは先日、当ブログで紹介されていたアレのGoogleによる実装です。APIを正式にサポートしています。GWTとGearsを組み合わせると、通常のデスクトップアプリケーションに近い操作性を持ったウェブアプリケーションの開発も容易になるでしょう。最近は様々なウェブアプリケーション開発フレームワークが登場していますが、Javaプログラマの皆さんにはGWTもぜひ選択肢の一つに入れていただければと思います。原田昌紀(ソフトウェアエンジニア)その1からの続きです。今日は実際にGWTを使ったアプリケーションの開発に挑戦してみました。AJAX的にサーバとクライアントの間で非同期に通信をおこなうアプリケーションを作るのは大変なので、とりあえずGWTのクラスライブラリに慣れるために単純なコードを書いてみました。適当なディレクトリを作り、そこから以下のようにapplicationCreatorを実行します。引数は適当なパッケージ名+メインのクラス名です。World的な単純なアプリケーションのコードが生成されます。MyApplication-shellを実行すると以下のようなホステッドモードの画面になります。これをひな型として、不要な部分を削り、必要なコードを加えていくことでオリジナルのアプリケーションを作成します。具体的にはsrc/com/google/code/myproject/client/MyApplication.javaを編集して、ホステッドモードでRefreshボタンを押すだけでOKです。JavaScriptプログラミングと同じノリですね。GWTのウィジェットが実際にHTML内にどのように配置されるかはwww/com.google.code.myproject.MyApplication/MyApplication.htmlというHTMLファイルを編集して決めます。今回作成したプログラムは以下の通りです。Googleの高度な次世代テクノロジーにより、正確かつ客観的に中年であるか判定します。GWTクラスライブラリのAPIドキュメントは以下のURLを参照。使用可能なJavaクラスの一覧は以下のURLを参照。MyApplicationをEntryPointインタフェースのonModuleLoad()メソッドを実装したクラスとして定義。年月日を選択するリストボックスが変更されたときに呼ばれるリスナー。結果文字列をlabelにセットする。日付の前後関係を使って判定する。現在の年齢を計算するより簡単。数字をリストボックスで選択するだけなので通常はエラーは起こらない。2月31日のようにカレンダー上に存在しない日を入力しても例外は発生しないらしい。一定範囲の数字を選択するためのListBoxを作って返す。EntryPointインタフェースの実装。ここでインスタンスの初期化をおこなう。要素に年月日のListBoxと判定結果labelをそれぞれ配置する。}}冗談はともかく、このような小さなアプリケーションでもGWTの有効性は実感できました。GWTのウィジェットやイベントはAWTやSwingと似ていますし、慣れているJava用のエディタやデバッガが使えるのは、新しいことをおぼえるのが億劫になりつつあるお年頃の人間にとっては助かります。コンパイル時のエラーでいくつかのバグを未然に防ぐことができましたし、実行時のバグもExceptionが(制限つきながら)使えるおかげで簡単にわかりました。どんなJavaプログラムでもJavaScriptに変換できるわけではありません。この例ではjava.util.Dateを使いましたが、Java標準クラスライブラリはjava.langとjava.utilの一部しか使えません。スレッドが使えないといったやむを得ない制約もあります。GWTを使ったからといってJavaScriptでできないことができるようにはなりません。JavaScriptでできる範囲のことを、Javaのスタイルできれいに書くためのフレームワークがGWTなのだと思います。GWTを使っているとJavaがクライアント側の開発に使われる言語だと考えられていた時代、つまりJavaといえばJavaアプレットだった時代を思い出します。いつの間にかJavaはサーバ側の開発にばかり用いられるようになってしまいましたが、思わぬ形でクライアント側に帰ってきたなあという印象です。anywhere"的でもあります。Labelerがあります。HTMLソースを見てみれば、gwt.jsを読み込んでいることがわかります。ちなみにこれは先日、当ブログで紹介されていたアレのGoogleによる実装です。APIを正式にサポートしています。GWTとGearsを組み合わせると、通常のデスクトップアプリケーションに近い操作性を持ったウェブアプリケーションの開発も容易になるでしょう。最近は様々なウェブアプリケーション開発フレームワークが登場していますが、Javaプログラマの皆さんにはGWTもぜひ選択肢の一つに入れていただければと思います。JavaScriptを活用したフレームワークに触れる機会は少なかったりします。APIやライブラリを知らないのもアレですし、たまには新しいものに挑戦しないと世の中についていけなくなるのではないか、脳年齢の上昇に歯止めがかからないのではないか、セルライトが増加したり血液がドロドロになるのではないか、といった微妙な恐怖が生活習慣病予備軍を襲います。GWTを一言で述べるなら、Java「だけ」を使ってAJAXアプリケーションを開発するためのフレームワークです。通常のウェブアプリケーションの開発では、サーバー側はJavaやPHPで、クライアント側はHTMLとJavaScriptで記述することになりますが、これはなかなか面倒です。JavaとJavaScriptのようにちょっとだけ似ていて異なる言語を使っていると頭がこんがらがります。それにHTMLとJavaScriptを本格的に使って凝ったUIを作ろうとすると、ブラウザ毎の微妙な差異を考えないといけませんし、デバッグも大変です。GWTではクライアント側もJavaを使って開発することができます。Javaを使ってコードを書き、それが完成したら、GWTの機能により、それを同等の動作を実現するHTMLとJavaScriptに変換して、サーバーにアップロードして使います。エンドユーザー側はJavaの実行環境をインストールする必要はありません。通常のJavaScript対応ブラウザだけでそのウェブアプリケーションを実行することができます。Appというサンプルアプリケーションを実行したところです。この時点ではあくまでもJavaアプリケーションがJVM上で走っているわけですが、画面表示用にはJVMと通信する特別なブラウザが用いられます。これをホステッドモードと呼びます。アプリケーションの開発やデバッグはこのモードで動作を確認しつつ、Java用のエディタやデバッガを使っておこなうことになります。次の画面は同じアプリケーションをJavaScriptにコンパイルし、Firefoxで見たところです。これをウェブモードといいます。この時点ではもはやJVMは必要なく、IEやFirefoxといった一般的なブラウザさえあれば動作するようになっています。見た目はもちろん、動作も開発段階とほぼ完全に同じになります。デスクトップアプリケーション(Java)とウェブアプリケーション(HTML+JavaScript)が同じ動作をするのを見ると、ちょっと不思議な感じがします。いやはや、すごい時代になったものです。勉強してからでないと難しいように思えます。使ってGUIを開発したことのあるJavaプログラマであれば、短時間で習得できそうです。ここまで読んでいただいて、もし興味を持たれた方は、次のような手順で実際にGWTで遊んでみることができます。ユーザ登録は不要ですし、インストールも簡単なので、Javaプログラマの皆様はぜひお試しください。オープンソースなのでGWT自体のソースコードも公開されています。種類が用意されています。使った開発に必要なソフトウェア一式が含まれているためです。インストールは展開するだけインストールはパッケージファイルをどこか適当なディレクトリに展開するだけです。インストールしておいてください。ディレクトリの下に移動して、Mail-shellを実行するだけです。Compile/Browseボタンを押すと、本物のブラウザでどのように動作するか確認できます。ちなみにこれはあくまでもサンプルなので、実際のメールの送受信には使えません。次回は実際にコードを書いてみます。JavaScriptを活用したフレームワークに触れる機会は少なかったりします。APIやライブラリを知らないのもアレですし、たまには新しいものに挑戦しないと世の中についていけなくなるのではないか、脳年齢の上昇に歯止めがかからないのではないか、セルライトが増加したり血液がドロドロになるのではないか、といった微妙な恐怖が生活習慣病予備軍を襲います。GWTを一言で述べるなら、Java「だけ」を使ってAJAXアプリケーションを開発するためのフレームワークです。通常のウェブアプリケーションの開発では、サーバー側はJavaやPHPで、クライアント側はHTMLとJavaScriptで記述することになりますが、これはなかなか面倒です。JavaとJavaScriptのようにちょっとだけ似ていて異なる言語を使っていると頭がこんがらがります。それにHTMLとJavaScriptを本格的に使って凝ったUIを作ろうとすると、ブラウザ毎の微妙な差異を考えないといけませんし、デバッグも大変です。GWTではクライアント側もJavaを使って開発することができます。Javaを使ってコードを書き、それが完成したら、GWTの機能により、それを同等の動作を実現するHTMLとJavaScriptに変換して、サーバーにアップロードして使います。エンドユーザー側はJavaの実行環境をインストールする必要はありません。通常のJavaScript対応ブラウザだけでそのウェブアプリケーションを実行することができます。Appというサンプルアプリケーションを実行したところです。この時点ではあくまでもJavaアプリケーションがJVM上で走っているわけですが、画面表示用にはJVMと通信する特別なブラウザが用いられます。これをホステッドモードと呼びます。アプリケーションの開発やデバッグはこのモードで動作を確認しつつ、Java用のエディタやデバッガを使っておこなうことになります。次の画面は同じアプリケーションをJavaScriptにコンパイルし、Firefoxで見たところです。これをウェブモードといいます。この時点ではもはやJVMは必要なく、IEやFirefoxといった一般的なブラウザさえあれば動作するようになっています。見た目はもちろん、動作も開発段階とほぼ完全に同じになります。デスクトップアプリケーション(Java)とウェブアプリケーション(HTML+JavaScript)が同じ動作をするのを見ると、ちょっと不思議な感じがします。いやはや、すごい時代になったものです。勉強してからでないと難しいように思えます。使ってGUIを開発したことのあるJavaプログラマであれば、短時間で習得できそうです。ここまで読んでいただいて、もし興味を持たれた方は、次のような手順で実際にGWTで遊んでみることができます。ユーザ登録は不要ですし、インストールも簡単なので、Javaプログラマの皆様はぜひお試しください。オープンソースなのでGWT自体のソースコードも公開されています。種類が用意されています。使った開発に必要なソフトウェア一式が含まれているためです。インストールは展開するだけインストールはパッケージファイルをどこか適当なディレクトリに展開するだけです。インストールしておいてください。ディレクトリの下に移動して、Mail-shellを実行するだけです。Compile/Browseボタンを押すと、本物のブラウザでどのように動作するか確認できます。ちなみにこれはあくまでもサンプルなので、実際のメールの送受信には使えません。次回は実際にコードを書いてみます。ヵ所でこの呼びかけに呼応したクリーンアップ活動が行われました。地球掃除プロジェクトにもかかわらず、ご参加くださいました多くの皆様、本当にありがとうございました。時過ぎには陽が出て暑いほどに。個がいっぱいになりました。この潮風公園を含め、世界各地で行われた掃除プロジェクトのひとつひとつは本当に小さなものです。歩、地球全体だと何百歩か、きれいな地球に近づいたはずです。ヵ所でこの呼びかけに呼応したクリーンアップ活動が行われました。地球掃除プロジェクトにもかかわらず、ご参加くださいました多くの皆様、本当にありがとうございました。時過ぎには陽が出て暑いほどに。個がいっぱいになりました。この潮風公園を含め、世界各地で行われた掃除プロジェクトのひとつひとつは本当に小さなものです。歩、地球全体だと何百歩か、きれいな地球に近づいたはずです。サイズという話に、多くの方々はエイプリルフールの冗談だと思われたようです。提供しているのには、明確な理由があります。とって、当時一般に使われていたウェブメールにはいくつかの難点がありました。その中のひとつが、サーバーの容量です。限界容量に達しそうだから、過去のメールを削除する、ということが普通に行われていました。お使いいただけるように、保存容量の拡大に取り組んでいます。一環として、保存容量の大幅な拡大を行いました。いうわけにはいきませんでしたが、ユーザーの皆様に可能な限りの大容量を提供し続けていくことを約束したのです。この約束を守るために、さらなる容量拡大を無料で提供することを決定しました。容量をご覧いただければ、すでに容量が拡大し始めていることにお気づきになるでしょう。快適なメール環境をお楽しみください。サイズという話に、多くの方々はエイプリルフールの冗談だと思われたようです。提供しているのには、明確な理由があります。とって、当時一般に使われていたウェブメールにはいくつかの難点がありました。その中のひとつが、サーバーの容量です。限界容量に達しそうだから、過去のメールを削除する、ということが普通に行われていました。お使いいただけるように、保存容量の拡大に取り組んでいます。一環として、保存容量の大幅な拡大を行いました。いうわけにはいきませんでしたが、ユーザーの皆様に可能な限りの大容量を提供し続けていくことを約束したのです。この約束を守るために、さらなる容量拡大を無料で提供することを決定しました。容量をご覧いただければ、すでに容量が拡大し始めていることにお気づきになるでしょう。快適なメール環境をお楽しみください。Googleマップのマイマップを活用し、それぞれの活動計画を参加者全員で共有してさらなる参加を呼びかけることで、より多くの方々に参加していだたきたいと考えています。マップにアップされており、Googlerの友人や知人900人以上に、このイベントへの参加をお願いしています。いうことで、大きな成果を上げられることになります。世界中の人々が少しずつ地球をきれいにするこのプロジェクト、皆さんも是非ご参加ください。マップ上で作成するのはとても簡単、わずか数分の作業で終了です。マップ上で公開させていただきます。人でチームを作って参加いただければOKです。清掃される場所も、遠くの知らない場所よりも、ご自宅や会社の近所の公園のほうが、よりやる気も湧いてくるかと思います。ご自分の好きな場所をお掃除ください。清掃中の写真やビデオをマップに貼り付けて、世界中の参加者と共有ください。ご自分の活動が、地球をきれいにする活動の一部であることをご確認いただけるはずです。このプロジェクトに参加をご興味をお持ちの方は、下記をご参照ください。