<?xml version="1.0" encoding="UTF-8"?><!-- generator="WordPress/2.8.6" -->
<rss version="0.92">
<channel>
	<title>イージーネット Tech Blog</title>
	<link>http://blog.eni.co.jp/tech</link>
	<description>株式会社イージーネットのスタッフによる技術系ブログです</description>
	<lastBuildDate>Tue, 12 Jan 2010 01:46:58 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>ja</language>
	
	<item>
		<title>ExtJS3.0でWebアプリケーションのテーブルをリッチにしよう（完）</title>
		<description>
このエントリーは下記の記事の続きです。

ExtJS3.0でWebアプリケーションのテーブルをリッチにしよう（その１）
ExtJS3.0でWebアプリケーションのテーブルをリッチにしよう（その２）


遅くなりましたが、明けましておめでとうございます。
笹山です。

前回の記事から更新が滞ってしまいました。（気づいたら2010年！）
記事用の時刻表ExtJSソースは準備していたのですが更新を怠けておりました。
（怠けている間にExt JS 3.1.0がリリースされておりました）
ですので必死で思い出しながら書きます。（本当に完全に忘れている・・・やばい。）

今回はExtJS3.0を用いて時刻表を作成する完結編です。
前回は、

ページング機能
Gridの高さ変更
Grid内のツールチップ表示

について書きましたが、やはり検索機能や飛行機の情報なんかも欲しくなるわけです。
今回は検索機能、飛行機の情報表示を実装してオレオレ時刻表の作成を終わりたいと思います。



検索機能の実装
検索機能の実装も難しくはありません。
実はExt.ux.data.PagingMemoryProxyのdoRequestメソッドにはすでにfiltering機能が備わっています。
前回Ext.ux.data.PagingMemoryProxyを使用したソートで問題があったので、オーバーライドしてoverride-paging-memory-proxy.jsを作成しました。
ですからoverride-paging-memory-proxy.jsを使用して検索機能を実装します。


override-paging-memory-proxy.js（フィルタリング部分）



Ext.override(Ext.ux.data.PagingMemoryProxy,{
    doRequest: function(action, rs, params, reader, callback, scope, options){

～　省略　～

        // filtering
        if (params.filter !== undefined) {
            result.records = result.records.filter(function(el){
  ...</description>
		<link>http://blog.eni.co.jp/tech/2010/01/extjs3_grid_table_last.html</link>
			</item>
	<item>
		<title>iPhoneとAndroidケータイ(HT-03A)を比べてみた</title>
		<description>こんにちは。
プロダクト&#38;サービス事業部 リーダーの末田です。

[caption id="attachment_2032" align="alignright" width="240" caption="iPhone 3GS と Androidケータイ (HT-03A)"][/caption]

以前、Androidケータイ(HT-03A)買いました という記事を書きましたが、
実は、iPhone 3GS を買ってしまいました。
１ヶ月ほどですが、iPhoneとAndroid(HT-03A)を両方使う期間がありましたので、
両方を比べてみた感想を書いてみたいと思います。
iPhoneをいつ買えばいいか、Androidにした方がよいのか等の話が聞こえてきますが、
この記事が参考になれば幸いです。




iPhoneの良い点・悪い点
良い点

みんなが持っている
やはりトレンドということで、iPhoneをもっている事自体が話のネタ、きっかけになります。
このブランド力がApple最大の強みですね。

速い
3GSからですが、速いです。フリック入力等、レスポンスが悪いと使い物にならないのですが、
快適です。スマートフォンにとって、速いことがこんなに大事なのかと再認識させられます。
遅いと、使うことそのものを躊躇してしまうこともしばしばあるのですが、
速いと逆にいつでも取り出したくなります。

かっこいい
まず、iPhoneのハードウェア自体がかっこよく、高級感があります。
持っているだけで「良いものを持っている」感じがします。
アプリケーションもAppleがデザインの指標を出しており、デザインに凝っているアプリが多いです。

アプリが豊富、わかりやすい
なんといってもiTune Storeによる、豊富なアプリと、簡単な購入につきます。
いまや一大マーケットとなっていますので、日本語の問題もほぼなく、良いアプリがなんでもそろいます。

悪い点

マルチタスク
iPhoneにはマルチタスク、という考え方がありません。1つのアプリを使ったら終了し、次のアプリを立ち上げる。
今までの作業の状態がリセットされてしまうことが多く（アプリに依存します）、
ちょっとメールやブラウザで確認して、ということができません。今後に期待です。

アプリ間の連携
マルチタスクとカブリますが、iPhoneではアプリ同士の連携、という考えがありません。
例えば、RSSリーダーの中から、URLのリンク先を見たいという場合、通常では、RSSリーダーが終了して、
ブラウザが立ち上がります。再度RSSリーダーを起動すると、状態はリセットされてしまいます。
または、RSSリーダー内で、ブラウザを実装する必要があります。
Androidでは、インテントという機能で、別々のアプリを連携して使うことができます。

デスクトップ
iPhoneのデスクトップは、ただのランチャーです。
唯一の機能は、アイコンの上に数字を表示させて、メールの未読数などを表示する機能ぐらいです。
Androidでは、ウィジェットや、ユーザーへの通知機能などがあります。

データのコピー・移動
iPhoneへ外部からデータを入れるのは、基本的にはiTuneからの同期のみです。
アプリによっては、内部にWebDAVやFTPのサーバー機能を持たせて、データを取得出来るものもありますが、
3G回線や無線LAN経由となりますので、動画等の大きなデータは非常に時間がかかります。
また、アプリ同士でデータの共有はできないので、アプリごとにデータを転送する必要があります。


Android(HT-03A)の良い点・悪い点
良い点

Googleサービスとの連携
やはりGoogleサービスとの親和性は、iPhoneより上です。
電話帳やスケジュールなど、WebからのGoogle以上に快適に使えます。
PCからとAndroidから、双方からシームレスに使えます。

アプリ間の連携（インテント）
Android最大の特徴です。
例えば、ファイルマネージャーアプリから、画像を選択して表示したいという場合、
iPhoneでは画像を表示する機能を実装る必要が有りますが、
Androidでは、インストールされている画像表示アプリがリストアップされ、利用したいアプリを選択して利用できます。
また、画像表示を終わる際も「戻る」ボタンを押せば、もとのファイルマネージャーアプリに戻ります。
画像表示アプリは、あたかもファイルマネージャーアプリの画像表示機能のように機能します。

マルチタスク
メモリがある限りどんどん起動します。使用頻度が低いものから終了します。
メールを書きながら、ブラウザで情報をチェックして、またメールに戻る、なんてことも簡単です。

通知機能の豊富さ
アプリからの通知機能、メールの着信やカレンダーの通知など、統一されたインタフェースで通知領域に通知が出ます。

デスクトップ
Androidのデスクトップは、PCのデスクトップと同じで、ウィジェットを配置することができます。
Twitterのつぶやきをリアルタイムで表示することが出来ます。

データのコピー・移動
データは、USB経由でPCとマウントできますし、microSDカードを利用することができます。
大容量データでも快適です。
また、アプリからのデータ利用も、どのディレクトリでも自由にアクセスできます。

変化のスピード
Android OS、アプリ、ともに更新頻度がすごいです。
1週間もほっておくと、更新通知で真っ赤になります。

開発の自由度
Androidの開発はGoogleからSDKを無料で落とせます。
環境はWindowsでもMacでもよいですし、開発言語も今では主流のJavaです。
実機へのインストールも簡単です。
アプリで出来ることもGoogleの審査などはないので自由です。
iPhoneは、環境はMacオンリーで、Objective Cというマイナーな言語、Appleの審査アリとなります。
実機へのインストールはAppleに開発者登録(有料)をしなければ入れられません。


悪い点

遅い
iPhoneに乗り換えた一番の原因ですが、「遅い」です。
CPU、メモリが足りないWindows PCの「遅い」と全く同じ感覚です。
スマートフォンのようないつも持ち歩く、さっと取り出して使う機器としては致命的だと思います。
ソフトウェアとしてはかなり頑張ってる感じで、タッチパネルの操作感はかなりいいんですが、
それでもつらい。root化というiPhoneでいう「脱獄」をすれば、CPUクロックを上げられるらしいのですが、
OSを1.6にしちゃうとそれもできないようです(12/21現在。かなりがんばればいけるかも？)。

ハードウェアとしての「魅力」が少ない
iPhoneは、持っているだけでいい感じの「所有欲」が満たされる、すばらしいデザインをもっています。
しかし、HT-03Aは普通のプラスチックのガワで、シンプルでいいのですが、プラスαの無い、質実剛健なデザインです。
その分安いのですが、もうちょっとがんばってほしいですね。

維持費が高い
bizホーダイ、mopera Uと、ちょっとお高め。
今回、Docomo携帯は、通話オンリーの一番安いプランに変更して、新規にiPhoneを持っていても、月々の支払は安いぐらいです。
回線の品質と相反するかもしれませんが、ちょっと他キャリアさんと比べて高いです。

アプリのマーケットがわかりにくい
アプリの数は飛躍的に増えていますが、うまく活用するのが難しいです。
スクリーンショットが表示されるようになってマシにはなりましたが、
それでもわかりにくいです。Appleのようにアプリの審査はしていないのが原因かもしれないですが、
さまざまなアプリが渾然一体となった感じです。
Googleの十八番のはずの検索の精度も低く、目的のアプリがわかっていても探すのに一苦労。
今後の改善が望まれますね。


HT-03Aとの2台持ちについて
今まで、Docomoに約8000円/月でしたが、
Softbankに約6000円/月、Docomoに約1500円/月となり、トータルでは若干安くあがる予定です。
現時点の選択では悪くないと思います。
ただ、最近は2年縛り等ややこしい仕組みがたくさんありますので、よく比較検討する必要がありますね。
ちなみに、Androidケータイ(HT-03A)は、初期設定時はSIMカードが必要ですが、それ以降はSIMカードが無くても使えます。（もちろん3Gは使えず、無線LANのみです。）

まとめ
結果的には、AndroidをやめてiPhoneを持つことになりましたが、
来年以降、新しい魅力的なAndroid端末出たら、考え直してしまうかもしれません。
Androidはソフトウェアとして非常に高機能で、今どんどん成長しています。
残念ながら、ハードウェアが追いついていなくて、せっかくのソフトウェアの魅力を
生かしきれていない気がします。
日本の大手メーカーも本気で参入して
ガラパゴスなんて言われないでほしいものです。
次期iPhoneがどうなるかわかりませんが、来年再来年はスマートフォン市場、大いに楽しみですね。 </description>
		<link>http://blog.eni.co.jp/tech/2009/12/iphone_android.html</link>
			</item>
	<item>
		<title>easyFiLEX特設サイトオープン</title>
		<description>はじめまして。早坂です。

弊社のセキュアファイル送信システム「easyFiLEX」の良さをもっと知ってもらいたい！ということで、この度easyFiLEX専用サイトがオープンしました。

弊社サイト内ではなかなか紹介しきれていなかった便利な機能や活用シーンなど分かりやすく紹介していますので、ぜひお立ち寄りいただけると幸いです。

easyFiLEXの便利な機能を一部紹介しますと、、、



	「ダウンロード時認証」

easyFiLEXは、デフォルト設定ですとファイル送信時に「ダウンロードキーワード」が自動設定されるのですが、機密情報が含まれていないファ イルを送るのに、受信者にわざわざ別メールで届くダウンロードキーワードを使って認証する手間かけるのもちょっと気が引ける・・・なんて場合、ダウンロー ドキーワードを使用しないこともできます。

逆に、重要なファイルを送る場合、ダウンロードキーワードがメールで送られるのも困る！ということもあるでしょう。そんな場合は「ダウンロードキーワード」を通知しない設定にして別の方法（電話など）で伝えることもできます。または事前に合言葉を決めておいて設定することもできます。

	「制限ユーザ」

easyFiLEXは、利用者（easyFiLEXではメンバと呼びます）毎に、送信先に制限かけることができます。ファイルを受信したい取引先のユーザを作成し、制限をかけたユーザ（イー ジーネットなら「eni.co.jp」のみに送れるように制限する）を作成して、そのアカウントを取引先の担当者へ渡します。そのアカウントからファイル 送信する場合、「eni.co.jp」のメールアドレス以外には送ることができないので、目的と違う使い方を避けることができます。

社内のユーザでも送信先を登録制にするなど、ポリシーを作って運用することもできます。

などなど便利な機能も紹介してますのでぜひeasyFiLEX専用サイト覗いてみてください。



私事ですが、先日兄の結婚式で沖縄へ行ってきました。12月とはいえ、大阪より気温は約10度程高いのでとても暖かく過ごしやすかったです。両親は北海道から来ていたので気温差は約20度。帰りたくなくなってしまいました。。
リンク

	easyFiLEX
	easyFiLEX SaaS版
	イージーネット
 </description>
		<link>http://blog.eni.co.jp/tech/2009/12/easyfilex_site.html</link>
			</item>
	<item>
		<title>easyFiLEX SaaS版 サービス開始</title>
		<description>こんにちは。笹山です。
今日は弊社(株式会社イージーネット)から「easyFiLEX SaaS版がリリースされますよー！」というお知らせです。

FiLEXって何？
まず「FiLEX」って何？という方のために簡単に説明します。

正式名称は「easyFiLEX」です。
「EASY・FILE・EXPRESS」から名づけられました。
その名の通りブラウザを用いて「簡単にファイルを送信」するためのWEBアプリケーションです。しかも大容量ファイル(10GBまで)を安全、確実に届けることができます。

大容量ファイルを簡単・安全・確実に！
WEBブラウザさえあれば、あまりパソコンに詳しくない方でも流れに沿って操作するだけで、重要ファイルや機密データを簡単・安全・確実にファイル送信するとができます。
[caption id="attachment_1874" align="aligncenter" width="300" caption="FiLEX ファイルアップロード"][/caption]
[caption id="attachment_1875" align="aligncenter" width="300" caption="FiLEX アドレス帳"][/caption]

「すばやくデスクトップから簡単にファイル送信したい！」という方のために「デスクトップAIRアプリケーション」もご用意しております。
送信するファイルを「ドラッグ＆ドロップ」、「右クリック-送る」で指定するだけ！
[caption id="attachment_1876" align="aligncenter" width="300" caption="easyFiLEX Application"][/caption]

また、ファイル受信者がファイルをダウンロードする際は、ファイル送信者が指定したダウンロードキーワードがなければダウンロードすることはできません。
重要ファイルや機密データをより安全に相手先まで届けることが可能です。

私が言うのもなんですが、本当に簡単なんです！
FiLEXの詳しい製品説明はこちら。
SaaS版の特徴
現在easyFiLEX パッケージ版を販売中ですが、もっと手軽に使っていただきたいと思いeasyFiLEX SaaS版をリリースすることとなりました。
「SaaS」というのは、ソフトウェアをネットワーク経由のサービスとしてお客様に提供することです。(参考URL: SaaS - Wikipedia)
よってお客様は自社でサービスを持つことなく大容量ファイル送信サービスを利用することができます。

SaaS版の特徴は以下です。

	月額制でお手頃価格
	詳しくはこちらのページにありますが、10ユーザ/10GBで月額5,800円より提供しております。1ユーザあたり580円という低料金でご使用いただけます。200ユーザ/200GBですと1ユーザあたりなんと380円になります。
		(参考URL: easyFiLEX SaaS版 価格表)
	
	すぐに導入可能
	お申し込みから5営業日を目処にお使いいただけます。自社設置型に比べて導入までのスピードに特徴があります。
	小規模導入可能
	10ユーザ/10GBで月額5,800円からご使用頂けますので、例えば部門レベルでの導入にも適しています。
	マシン・インストール・運用不要
	サーバ不要もインストールも不要です。いつでもお使いいただけます。


部門別や部署別で使いたいけど「導入、運用やメンテナンスにコストをかけたくない」という企業様にぜひ使っていただきたいと思っています。

「easyFiLEX体験サービス」をご用意しております。まず体験サービスでFiLEXを思う存分使っていただきご検討いただければと思います。

導入・運用コストを抑えながら、「簡単操作、大容量ファイル送信、安全確実送信」が可能な「FiLEX」をぜひご検討ください！

FiLEXで使用しているソフトウェア
ここからは、当ブログ用の技術的なお話です。
FiLEXでは以下のソフトウェアが使われています。



JSF(JavaServer Faces)
Java Webアプリケーションフレームワーク


Facelets
JSFアプリケーションを作成するためのフレームワーク


Spring
Java/J2EEアプリケーションフレームワーク（JSF連携機能で使用）


iBatis
O/Rマッピングツール


YUI(Yahoo UI Library)
Ajaxライブラリ


AIR/Flex
リッチインターネットアプリケーション


SeleniumRC
Webアプリケーション自動テストツール



FiLEX開発で採用された技術情報はブログで公開しています。こちらもよろしくお願いします。

AIR/Flexでアップロード
AIR/Flexでドラッグ アンド ドロップ
リッチなAdobe AIR/Flexのツールチップをよりリッチに
Seleniumの自動テストを止めることなく、Flexを手動操作する方法
SeleniumRCで自己署名証明書使用のWEBアプリケーションをテストする際、セキュリティ警告を表示させない方法


開発に参加して
　私ごとで恐縮ですが、私も開発メンバーの一員として参加しました。
私にとってJavaフレームワークを使用したWEBアプリケーション開発はこれが初めてでした。
他のJavaフレームワークもろくに使いこなせないのに「大丈夫かな？」と不安だらけでした。
しかし不安は的中！（しょぼーん）
JSFの情報も入門程度の内容しかネットになく、書籍も古いものしかありませんでした。
すこし難しいことを実現しようとするとすぐにつまずいてしまいました。
例えばJSFだけでHtmlDataTableのページングはどうしたらいいのかとか。
くだらないところではFaceletsでEL式を含む行をコメントアウト(&#60;!- -　- -&#62;)しても、コメントアウトが有効にならず実行されてしまうとか。
あげればたくさんありますが、どれも良い経験になりました。

そんな貴重な経験を積ませてもらったFiLEXです。FiLEXはまさに私の師匠なのです。（言い過ぎか？）
FiLEXをお使いいただければ必ず師匠が良い体験をさせてくれること間違いなしです。
どうぞFiLEX SaaS版をよろしくお願いいたします。

リンク

easyFiLEX
easyFiLEX体験サービス
株式会社イージーネット

 </description>
		<link>http://blog.eni.co.jp/tech/2009/10/easyfilex_saas_release.html</link>
			</item>
	<item>
		<title>Wicket小話その3. Wicketで確認メッセージを出すにはどうすればよいのか？(その2)</title>
		<description>ども、武輪です。

前回のWicket小話で、Confirmメッセージを出すにはどうすればよいのか？と言った話をしたのですが、今回も引き続きConfirmメッセージの話をしたいと思います。

前回、AjaxボタンでConfirmメッセージを表示する方法として、Wicket-extensionのコンポーネントであるModalWindowを使い、独自のポップアップメッセージを表示する方法をとりました。
しかしながら、これってぶっちゃけConfirmメッセージじゃないよね…！

というわけで今回はAjaxボタンで正真正銘(?)のConfirmメッセージを表示する方法をご紹介します。


AjaxボタンでConfirmメッセージ
&#62;Ajaxで中身を入れ替える以上、onclickアトリビュートをいじるのはややこしそうなので...

と前回書いたのですが、
「confirmで確認後、OKだったら既存AjaxのJavaScriptを実行してあげて、キャンセルだったらfalseを返す」
ようなJavaScriptを書けば問題ないんじゃ…？と思いまして。

そんなわけでさらっとサンプルを書いてみました。
サンプルは前回同様、ボタンを押した時に確認メッセージを表示し、OKだったらカウントする、キャンセルだったら何もしない、といった仕様です。

Confirm2.java

public class Confirm2 extends WebPage{

	private int count = 0;
	private Label result;

	/**
	 * コンストラクタ
	 */
	public Confirm2() {
		add(result = new Label("result", new PropertyModel(this, "count")));
		result.setOutputMarkupId(true);
		Form form = new Form("form");

		form.add(new AjaxButton("count", new Model("カウントしますか？")){

			private static final long serialVersionUID = 1L;

			@Override
			protected void onSubmit(AjaxRequestTarget target, Form form) {
				count++;
				target.addComponent(result);
			}

			@Override
			protected IAjaxCallDecorator getAjaxCallDecorator() {
				return new AjaxPreprocessingCallDecorator(super.getAjaxCallDecorator()) {
					private static final long ...</description>
		<link>http://blog.eni.co.jp/tech/2009/09/wicket_03_confirm02.html</link>
			</item>
	<item>
		<title>ExtJS3.0でWebアプリケーションのテーブルをリッチにしよう（その２）</title>
		<description>
このエントリーは下記の記事の続きです。

ExtJS3.0でWebアプリケーションのテーブルをリッチにしよう（その１）



こんにちは。笹山です。

前回Ext.grid.GridPanelを用いてシンプルな時刻表を作成しました。

まだまだ物足りないので機能を追加していきます。
せっかくなのでExtJS3.0の新機能を用いてもっとリッチにしていこうと思います。
（前回のGridは実際のところExtJS3.0でなくても作成できます。）

今回は以下の機能追加を行います。

	ページング機能を追加する
	Gridの高さを自由に変更可能にする
	Gridの各Cellにマウスを合わせた時、内容をツールチップに表示する


※今回は全便の時刻表データを使ってサンプルを作成します（8月時刻表全便データ）


新機能ライブラリの追加
ExtJS3.0のサンプルサイトで紹介されている新機能を使用するには、新機能用のライブラリが必要です。
新機能用のライブラリは、ExtJS3.0を展開したexmaple\uxフォルダ以下にあります。（新機能なのに何でexampleフォルダなんだろう？）

必要なファイルは以下になります。

	ext-3.0.0\examples\ux\ux-all.js
	ext-3.0.0\examples\ux\css\ux-all.css
	ext-3.0.0\examples\ux\images以下のファイル全て


前回作成したサンプルをもとに変更を加えていきます。

	grid-timetable.htmlのHEADタグ内に「新機能に必要なファイル」と「全便の時刻表データファイル」を追加します
※override-paging-memory-proxy.jsについては新規作成します

  
  
  
  

※linkタグ、scriptタグ中の「path」 : ファイルを配置したディレクトリ名に変更してください



	grid-timetable.html





    
        
        
        
        
    ...</description>
		<link>http://blog.eni.co.jp/tech/2009/09/extjs3_grid_table_part2.html</link>
			</item>
	<item>
		<title>Wicket小話その2. Wicketで確認メッセージを出すにはどうすればよいのか？</title>
		<description>ども、武輪です。

Webアプリケーションでは、データを登録したり編集したり削除したりといった操作が日常茶飯事です。
そして「削除ボタンを押した時にいきなり削除するのではなく、confirmメッセージを出す」というのはよくあるパターンですね。

さてWicket小話その2では、「Wicketで確認メッセージを出すにはどうすればよいのか？」について、実際のコードを踏まえて試してみようと思います。


非Ajaxボタンの場合
例えばこんなボタンがあるとします。

これはcountボタンを押すと画面上に何回クリックしたのかを表示する簡単なサンプルです。

Confirm.html




	Wicket Examples - confirm


	 回目
	
		
	




Confirm.java(非AjaxButton編)

public class Confirm extends WebPage {

	private int count = 0;
	
	/**
	 * コンストラクタ
	 */
	public Confirm() {
		add(new Label("result", new PropertyModel(this, "count")));
		Form form = new Form("form");
		Button countButton;
		form.add(countButton = new Button("count") {
			private static final long serialVersionUID = 1L;

			@Override
			public void onSubmit() {
				super.onSubmit();
				count++;
			}

		});
		add(form);
	}

	/**
	 * countを取得します。
	 * @return count
	 */
	public int getCount() {
		return ...</description>
		<link>http://blog.eni.co.jp/tech/2009/09/wicket_02_confirm.html</link>
			</item>
	<item>
		<title>ExtJS3.0でWebアプリケーションのテーブルをリッチにしよう（その１）</title>
		<description>こんにちは。笹山です。

WebアプリケーションでDBなどからデータを取得して一覧表示させる方法は、HTMLのTABLEタグで書かれたものが多いと思います。
もちろんスタイルシートを駆使すればカッコよくはなるのでしょうが、今回はこれをもう少し手軽にリッチにしようとExtJSを使ってみました。

余談ですが今回のExtJSサンプルは、私自身の趣味のために作成しました。
趣味でよく伊丹空港に飛行機を撮影に行きます。エアーバンドで便名を聞いて、その飛行機が
「どこ行き？どこから来た？機種は何？」
というのが知りたいことがよくあります。（私だけか？）
これから数回に渡り、ExtJSで伊丹空港の8月の時刻表を私好みにしていこうと思います。


ExtJSとは
インターネットで検索すればすぐに分かると思いますので簡単に紹介します。
まず、ExtJSとは、リッチなWEBアプリケーション開発のためのJavaScriptライブラリです。
コンポーネントも揃っており、拡張も簡単にできます。
また、ドキュメントやサンプルも揃っていますので、比較的簡単にリッチなUIが実現できます。
一般的なテーブル
時刻表をHTMLのTABLEタグで作成するとこんな感じでしょうか。



対象空港
航空会社
便名
機種
伊丹空港時間
対象空港時間
出発/到着種別


札幌（千歳）
JAL
3911
B6
8:00
9:50
Departure


札幌（千歳）
JAL
2001
B7
8:35
10:25
Departure


札幌（千歳）
ANA
771
B6
8:55
10:45
Departure


札幌（千歳）
ANA
775
A32
11:45
13:35
Departure


札幌（千歳）
ANA
777
B6
14:15
16:05
Departure


札幌（千歳）
JAL
2019
CRJ
18:30
20:20
Departure


札幌（千歳）
JAL
2000
CRJ
10:25
8:30
Arrival


札幌（千歳）
JAL
3912
CRJ
13:00
11:05
Arrival


札幌（千歳）
ANA
774
B6
14:15
12:25
Arrival


札幌（千歳）
ANA
776
A32
16:00
14:10
Arrival


札幌（千歳）
JAL
2016
B7
19:25
17:30
Arrival


札幌（千歳）
ANA
778
B6
19:30
17:40
Arrival


一覧の表示だけで何もできません。
例えば、時間の降順に一覧を表示したい場合、プログラムでデータをSortし、その結果で一覧を作成し直す必要があります。
一覧のカラム順番を変えたい場合（例えば、出発/到着種別カラムを一番前のカラムにしたい）、一覧表示後はカラム順番を変えることはできません。

ExtJSを使うと簡単に実現できてしまいます。
ExtJSのインストール

	ExtJS3.0をダウンロードして適当な場所に展開します
	ExtJSに必要なファイルは以下になります

	ext-3.0.0/resources/css/ext-all.css （ExtJSのスタイルシート）
	ext-3.0.0/adapter/ext/ext-base.js （ExtJSのcore utilitiesとfunctions）
	ext-3.0.0/ext-all.js （ExtJSの全ての機能）
	ext-3.0.0/src/locale/ext-lang-ja.js （ExtJSのリソースを日本語化）


	ExtJSを使用するHTML（以降grid-timetable.htmlとします）のHEADタグ内に必要なファイルを指定します

  
  
  

※linkタグ、scriptタグ中の「path」 : ファイルを配置したディレクトリ名に変更してください

これでExtJSが使用できるようになります。
Ext.grid.GridPanelで時刻表を作成
先ほどのgrid-timetable.htmlに以下を追加します

	HEADタグ内にSCRIPTタグを追加して今回ExtJSで作成する外部ファイル（以降 grid-timetable.jsとします）を指定します
	BODYタグ内に、DIVタグを追加してidにgrid-timetableを指定し、時刻表を配置する場所を指定します


	grid-timetable.html（※linkタグ、scriptタグ中の「path」 : ファイルを配置したディレクトリ名に変更してください）




    
        
        
        
      ...</description>
		<link>http://blog.eni.co.jp/tech/2009/09/extjs3_grid_table_part1.html</link>
			</item>
	<item>
		<title>アンドロイダー育成日記 -Androidと仲良くなるには- その4</title>
		<description>
このエントリーは下記の記事の続きです。

アンドロイダー育成日記 -Androidと仲良くなるには- その3



こんにちは。正木です。

大事なコトを書きそびれていたのを思い出しましたので白状します。

当方、Android1.5 + Eclipse3.5 を使って開発してます。

技術がコンセプトのブログでこのような失態を犯していた事を、深くお詫び申し上げます
丸刈り……は しません。今年の3月に剃ったトコロなんで。

それでは、本文へど～ぞ～。

（※ 記事中の役立つ凡例 =&#62; ☆：役立つ外部リンク）
前回まで（～#39）
・第2弾アプリ（『天気予報アプリ』）の開発・実装を開始。
・第2弾アプリと前作とでは全く趣向が違うので、何がどうなるのかが見えていない。
・GPSまわりを調査し始めて、前回は終了。

#40
緯度経度から地名をはじき出すには『ジオコーディング』とやらが必要…なのだが、AndroidのAPIに標準で用意されているらしい。
（android.location.GeocoderクラスのインスタンスのgetFromLocationメソッドに緯度と経度を渡すと、地名等の情報を保持しているandroid.location.Addressクラスのインスタンスが取得できる。下記リンク先を参照の事。）
APIが標準で用意されているとは、なななんとココロ優しい。

というワケで、GPSまわりに関しての「ホンマに実装できんのか？」という不安は然程無くなった、のだが、障壁がもうひとつ。

『数時間おきのお天気情報』なんて、どこでダウンロードできんねや？
そんなコトまではGoogle先生のシラバスには載ってなかったか。

☆ジオコーディングとは 「アドレスマッチング」 (Geocoding)： - IT用語辞典バイナリ
☆GPSの緯度経度から住所へ変換 - 泥縄トラップ

#41
緯度経度（簡単に）取得できませ～ん。（←あの警察映画のように。）

LocationManagerクラスからgetCurrentLocationメソッドが消えとる。はぁ～？？
（↑Android1.5では既に実装されていない。）

#42
『ライフサイクル』について、このエントリが解かりやすいんでねーか？

☆Androidのド肝 » Activityのライフサイクル

#43
DDMSに「こーゆー経路を歩きますよ」という登録をすると、実際にその経路を歩きながらAndroid端末を操作するみたいな感じで、GPS機能が働いてくれるらしい。
KMLファイルとかGPXファイルみたいな、聞き慣れない拡張子のファイルがあれば実現可能。
（結局この機能は使ってはいないし、この記事を作成する頃はこの機能の使い方を知らない。）

開発環境を提供する側も、いろいろと考えてくれてはるんやなー。感謝感謝。

あと、素晴らしい翻訳を発見。
こういう実のある事が出来るスキルがあると締まっていいんだけど……省みれば、今の自分は「緩急」の『緩』しかない。どーしよ。

☆AndroidのDDMSの使用方法のドキュメントを翻訳しました - Android(アンドロイド)情報-ブリリアントサービス
☆GMAP2GPX: Google MapでGPXファイルとMioMap地点ファイル　（←このサイトでGPXファイルが作成できる）

#44
緯度と経度を固定指定したら、ひとまず地名が取得できた。（こちらを参考に。）
あとは、くだんのデバグツール（DDMS）を用いてGPSから緯度と経度を取得するのみ。

#45
う～ん…。KMLファイルをDDMSでどーのこーの。反応しーひんかったら意味ないやんか。
（「KMLファイルをDDMSに読み込ませて、DDMSのリストに出てきた位置情報をクリックしても、エミュレータ側では何の反応もしなかった」の意。結局はそもそも自分の実装にバグがあった。）

☆八角研究所 : Android DDMSでKMLから位置情報の取得方法
☆勉強会/GPS - 日本Androidの会（日本アンドロイドの会）

#46
Tech Blogの3本目の記事を入稿。

このTech Blogの記事（「アンドロイダー日記」シリーズ）用として、Twitter的な感じで簡単な一言メモを取っている。
そのメモで、本当に「一言」の時があるのだが、そっからの 後のせサクサク やらなんやらで、結局立派な文章になってしまう。

普段、そんなオシャベリでもないんだが…。

#47
お天気情報を、RSS形式かなんかで配信しているサイトを探す。

だが、そういうサイトは、少ないように感じる。

…のだけれども、しゃーないといえばしゃーない気もする。
天気予報にプロが居たりビジネスとして成立している手前、猫も杓子も無料では配信しないだろう。
とは言うものの、素人の予報など誰も期待していないから、そこはプロの意見が必要。
Androidケータイにカメラが付いてるからって空を映しても何もならないし、写真を解析してどーこーなど、そんな仕様を採用するはずもない。

はぁ～。

そんな絶望の中で、参考にできそうなサイトを3つ。
（一番下は、MacでのAndroidアプリ開発環境の構築方法に関してのエントリ。Macは触ったコトないがいつか役立ちそうだと思ったので、ここにリンクを。）
　
☆天気予報をRSSでお届けする「ひとくち予報 in Feed」
☆Japan Weather Forecasts
☆GPL天気予報（google plus livedoor 天気）
☆flashcast：フリーで働くITエンジニア集団のブログ: Android SDK 1.5をインストールしてみる

#48
他プラットフォームとの関係について、お言葉を紹介。

◎『美学のiPhone、実用主義のandroidという印象』（直下リンク先より引用）
☆android、三日目。androidを見直したアプリ - Keep Crazy;shi3zの日記

#49
「洗濯物たとむ」の「たとむ」ってどこの方言なんや？

「たとむ」って言い慣れてる言葉なんだけども、文字面はヘンやね。

☆たとむ とは(Weblio)

#50
やっぱ、技術系の記事ってば、丁寧に書いたらアクセス数は伸びるのかな？
下記リンク先の記事が丁寧に書かれているのでそう思った次第。

☆Google Androidで画面遷移 - yamashinaの日記

#51
☆画面遷移 &#124; テックファーム
☆ブラウザや地図、ストリートビューの基、Intentとは？ ...</description>
		<link>http://blog.eni.co.jp/tech/2009/09/android_beginner_diary_04.html</link>
			</item>
	<item>
		<title>Wicket小話その1. とりあえずWicketを始めよう</title>
		<description>ども、武輪です。

Wicket小話と題しまして、Wicket初心者の私がWicketを使ってみて、

これちょっと便利な機能だなー
こんなコンポーネントを使ってみたよ！
こんな実装やってみたよ！

などなど。
そんなちょっとしたメモ書きを徒然と残していこうと思います。

基本的に情報はWebと書籍「オープンソース徹底活用 WicketによるWebアプリケーション開発」(矢野勉さん著)から得ています。
あとはWicketのソースとか。

さてWicket小話その1として、「とりあえずWicketを始めよう」という副題で徒然と書いていきます。


はじめに
そもそもWicketって何よって方に簡単に。
Wicketとは、Webアプリケーションフレームワークの1つです。
HtmlとJavaでWebアプリケーションが作れちゃいます。
設定ファイルはほとんど必要ありません。(そりゃweb.xmlは必須ですけども)

2009年8月現在Wicketは1.4がリリースされています。
Wicket小話では特に注意書きがない限り、この最新リリースのWicket1.4で試したことを書いていこうと思います。

開発環境などは以下の通り。

    
        
        バージョン
    
    
        JDK
        1.6.0_13
    
 ...</description>
		<link>http://blog.eni.co.jp/tech/2009/08/wicket_01_start.html</link>
			</item>
	<item>
		<title>Androidケータイ(HT-03A)買いました</title>
		<description>こんにちは。
プロダクト&#38;サービス事業部 リーダーの末田です。

突然ですが、Android携帯 docomo HT-03Aを買ってしまいました。




メインケータイとしてのAndroid(HT-03A)

もともとdocomoユーザな上に、経済的にケータイ2台持ちはキツイので、
iPhoneは泣く泣く見送り(iPod touchは買ったけど)、docomoからAndroid携帯が出るという情報を聞きつけ、心待ちにしておりました。

docomo的にはスマートフォンは2台目という位置づけらしいのですが、
私としては、おもいっきり1台のメイン携帯として利用してます。
ですが、

	iモードが使いたい
	おサイフケータイが使いたい

という人は、2台目として利用するしかありません。
iモードメールは、ビミョーです。
iモード.netというWebメールサービスで利用できるし、
新着iっていうよくできたアプリがあるので利用可能ですが、
iモード対応携帯で定期的にメール受信しないと、10MBたまると使えなくなる等、いろいろあるみたいです。(iモード.netでメールを消しても、サーバ上からは消えないみたいです。)
私の場合、まだ10MBにいってないのでいけてるのかもしれませんが、検証できてません。
電話としてのAndroid(HT-03A)
メールやアプリなどスマートフォンとしての機能については、良くレビューされてるのですが、ケータイとして、つまり「電話」についての情報はあまりないので、ここでちょっと説明を。

電話

	「電話」は、「電話」というアプリを起動します
	通話履歴はありますが、発信と着信はごちゃ混ぜです。（アイコンで区別）
	通話履歴から電話をかけることはできます

連絡先

	電話帳は「連絡先」という名前で管理されます
	「連絡先」のデータは、GMailの「連絡先」と同期されます
	グループ設定はできません。PCでGMailのグループ設定をすると、グループを選ぶことができるようになります。
	普通の携帯の場合、あかさたな・・・等でのタブでの切り替えができることが多いですが、できません。

着信音・バイブ

	一般的な「ジリリリ」等の音はデフォルトで入ってます。
	着メロは、Androidで再生できる形式の音楽データを設定できます
	iモード等で配布されている着メロ、着うたは使えません
	「連絡先」の人毎に着信音の設定ができます
	「連絡先」のグループ毎に着信音の設定はできません
	バイブは、着信時にON/OFFを指定することができます
	バイブは、人毎、グループ毎の設定、バイブパターンの設定はできません
	マナーモード、サイレントの設定はできます

その他

	他のアプリが重かったりすると、「電話」アプリのレスポンスも悪くなります。つまり、ケータイだからといって「電話」が特別扱いされてたりしません。他のアプリと同じ扱いです。

上記の説明は、標準のアプリの話です。
連絡先アプリ等出ていますので、いろいろカスタマイズできます。

電話の機能としては、最低限基本的な機能しかないので、
電話としてガシガシ使う人はやっぱりちょっとキビシイかもしれません。
私のように「帰るコール」するぐらいしか電話しない人は問題ないです。

次は
さて、docomoでは「ケータイするGoogle」として売ってますが、
技術者的には、GoogleというよりAndroid OSというところが、ヒジョーに注目度高いですので、
次回は、Androidアプリを作ってみました話をしようと思います。
それでは！


あわせて読みたい

	アンドロイダー育成日記 -Androidと仲良くなるには- その1
	アンドロイダー育成日記 -Androidと仲良くなるには- その2
	アンドロイダー育成日記 -Androidと仲良くなるには- その3
 </description>
		<link>http://blog.eni.co.jp/tech/2009/08/bought_android_ht-03a.html</link>
			</item>
	<item>
		<title>アンドロイダー育成日記 -Androidと仲良くなるには- その3</title>
		<description>
このエントリーは下記の記事の続きです。

アンドロイダー育成日記 -Androidと仲良くなるには- その2



こんにちは。正木です。

今回は読者の方々から応援メッセージをたくさんいただいておりますので、そちらの方を少しご紹介したいと思います。

アンドロイダーとして成長する姿を見ていると、とても清々しい気分になります！　がんばってください！
実機もなくエミュレータだけで開発されているのでしょうが、そんな困難を恐れず立ち向かっている事に好感が持てます！
空腹も眠気も吹き飛ばして、いっぱしのアンドロイダーを目指してください！


温かい、励ましのコメント、本当にありがとうございます！
今回ご紹介させていただいた方々には、番組オリジナル『見習いアンドロイダーTシャツ』をお送りいたします。
まだまだ応援メッセージの方は受け付けておりますので、どしどしお寄せください！


…というワケで、以上のくだりはフィクションですんで、軽く右から左へ受け流してください。
それでは、本編をご覧あれ～。

（※ 記事中の役立つ凡例 =&#62; ☆：役立つ外部リンク）
前回まで（～#28）
・Google Android向けアプリが1つ完成したが、「インターネット等の通信」や「GPS」といったものを全く活用していないアプリになった。
・アプリを作成する際の超基本的な考え方は身についたように感じている。だが、応用はまだまだ。

#29
第1弾アプリが辛くも完成したので、第2弾アプリの製作に取り掛かりたいと思う。

それに先立って、Android端末ユーザの先輩から要望をいただいた。
テーマは『天気予報』で、
必要な機能としては『数時間ごとの予報が見たい』とのこと。

この【数時間ごと】というのがミソだったりする。
「日ごと」の天気予報はヨシとして、「数時間ごと」の予報だと配信されていない事が多い、らしい。
たしかに、数時間ごとの天気予報を配信しているサイトってば、ほんの一握りのように感じられる。
気付かなかった。

何から調査すればよいのか？？？　…まずは落ち着こう。

#30
このTech Blog用の記事（Android日記①や②）を書き終えたので、Blog管理者の方へ入稿。空腹の極み。

#31
第2弾アプリ作成にあたり……しっかし、何から手を付けていけばよいものか。

どうやら「単に天気予報を出す、というのがどうも…」という点が、自分の中で引っ掛かっている気がする。

#32
先日の帰りしなあたりに先輩からいただいたアイディアを元に、アプリの設計図を書いてみる。

なんとなくできた…が、ほどよい量の調査事項もでてきた。どーなるやら。

#33
あー、夏休み。

なので4、5日間ほど手を止める。
手を止めたのは、ちょいと泳ぎ疲れたからではない。

#34
このTech Blogの管理者の方から「記事をリリースする前に、ちょっとレイアウトを修正してほしい」との依頼をいただいたので対応する。

Tech Blog用記事を入稿すると、リリース前に多少のチェック（「内容が適切か」「話の筋が通ってるか」「レイアウトは整っているか」程度の一般的なもの）が入るのだが、今の今まで「内容」に対してはほとんどおトガメがない。
会社の人間の声が外部に、これだけストレートに響き渡るこの場で、こんな砕けた文章を書いてていいのか？という疑問はあるのだけども、しばしば杞憂で終わったりする。

これこそが言論の自由、表現の自由かと。

考えてみれば、著作物を拝見した際に「これ、すごいな」と衝撃を受けずにはいられなかったという作家さんが、2名ほど居りまして。
スタパ斎藤氏と西原理恵子氏。
その方々から勝手に影響を受けて、いまの自分はこんな文体になっているんだな、という自己分析もあったりします。

…文体だけの問題ではないか。

#35
Android向けアプリの動作に必要なファイルってば『1つだけ』なんだな。APKとかいう拡張子のファイルが1つだけ。

構造が簡潔すぎて驚いた。
でも、例えばiPhone向けのアプリもこんな感じなんだろうか…。この形式がスタンダードになってたりする、とか。

あと、Androidアプリは『JavaであってJavaでない』らしい。
（カギカッコ内の語句、下記リンク先より引用）

☆Android Market配布を目指しEclipseでHelloWorld！ (1/3) - ＠IT

#36
SpinnerというViewにAdapter（ArrayAdapterオブジェクト）をセットする方法がわからん。例外しか出ないんですが…。


package com.example.weatherTest;

public class WeatherTest extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        // 省略

        final String[] ...</description>
		<link>http://blog.eni.co.jp/tech/2009/08/android_beginner_diary_03.html</link>
			</item>
	<item>
		<title>Ubuntu 9.04 + GCC 4.4.1でC++0xを試してみた</title>
		<description>こんにちは。
プロダクト&サービス事業部の青野です。

C++0xの一部の機能はGCC 4.3から使用することが可能になっています。そこで今回はC++0xで少し遊んでみようと思います。

C++0xとGCCの対応状況について

	C++0xの概要(Faith and Brave - C++で遊ぼう)
	C++0xの言語仕様(ドラフト)
	GCCのC++0x対応状況




コンパイル環境の準備
Ubuntu 9.04で配布されているGCC(g++)は4.3系の為、autoがまだ実装されていません。とりあえずautoを試してみたいので7月22日にリリースされた4.4.1をソースからコンパイルしてインストールします。

        GCCのダウンロードと展開

$ mkdir ~/src
$ cd ~/src
$ wget ftp://ftp.dti.ad.jp/pub/lang/gcc/releases/gcc-4.4.1/gcc-4.4.1.tar.gz
$ tar xvzf gcc-4.4.1.tar.gz

        
        GMPのダウンロードと展開

$ cd ~/src
$ wget ftp://ftp.gmplib.org/pub/gmp-4.3.1/gmp-4.3.1.tar.gz
$ tar xvzf gmp-4.3.1.tar.gz
$ mv gmp-4.3.1 gcc-4.4.1/gmp

 ...</description>
		<link>http://blog.eni.co.jp/tech/2009/08/ubuntu-gcc-cpp0x-getting-started.html</link>
			</item>
	<item>
		<title>アンドロイダー育成日記 -Androidと仲良くなるには- その2</title>
		<description>
このエントリーは下記の記事の続きです。

アンドロイダー育成日記 -Androidと仲良くなるには- その1




こんにちは。正木です。

おまっとさんでございました。
Google Android向けアプリ作成日記の、続きでございますよ。

それでは、めしあがれ～。

（※ 記事中の役立つ凡例 =&#62; ◎：役立つ教訓 &#124; ☆：役立つ外部リンク）
前回まで（～#11）
・Google Android向けアプリの開発環境を作った。
・雑誌『SoftwareDesign』を見ながら、アプリ作成の『いろは』の『い』を見ていった。
・そのほか、コーディングの方法や挙動などを確認した。
#12
アプレットの『DroidDraw』が、案外使いづらい、のではないか？？

デザインが思い通りいかない事があるんだ。

適当なレイアウトのコンテナみたいなLayoutに、適当なViewを包含させると、
子になっているViewが、マウスでクリックしてもアクティブにならなかったりする（そうなるとViewのプロパティがレイアウト画面から設定できない）。

Visual Studioで、カスタムコントロールのレイアウトをデザインしてる時に顔を出す、
あの「いーっとなる」感じを思い出す。
親コンテナと子コントロールのAnchor プロパティやDockプロパティを適宜設定したけど、
期待していないサイズ変わり方しよるぞ、コイツ、みたいな。

…VSのくだりに何の共通点があるかわかんないけど、とにかくめんどくさい。

「まぁ、ベータ版だしな…」と自分に言い聞かせる。
#13
オリジナルアプリの作成を始める事にする。

まずは設計書…のようなものを作る。

テキトーな裏紙に、機能とレイアウトの概要を、嵐のような勢いで書けばハイできあがり♪

（個人的には）面白そうなアプリだと思うのだが…そもそも実現できるのかどうか。

（アプリの概要は「あとがき」を参照のこと。）

#14
なんとなくではあるが、画面レイアウトは構想に近付いてきた。
一部（たとえばEditTextのBackColorやTextColorプロパティを変えたりとかしたり）の設定を除けば、イイ感じ。たぶん。

今後の実装にあたり、気付いた点・不安な点を挙げる。


Eclipseの画面レイアウト機能にあるプロパティからでは、ViewのBackColorやTextColorは設定できないのでは？
イメージのリソースは、どこにどうやって持たせるのだ？
おなかへった。
Android端末に、どれだけの負荷をかける事が許されるのか。実機が無くても検証する方法ってないんかな？
自分が作りたいアプリの仕様的に、問題データを簡単に追加したいのだが…。どうやってもたせようか？　ダウンロードとかやっちゃう？
画面レイアウトを作るのは『DroidDraw』だけではしんどい。そもそも、『DroidDraw』のXMLが表示されるエリアは、あれはエディタではないんだな。よくわからないがカーソルキーが死んでしまう時がある。きっかけもわかんない。いきなりお亡くなりになる。なので、『DroidDraw』だけでなく、Eclipseでのレイアウト機能も併用した方がよい。
おなかへってたけど、コーヒー飲んだからちょっとはマシになったかな。



※後日談として、上記の疑問点の見解を書いておく。

調査せず。今回はソースの中で指定した（ViewのsetTextColorメソッドなどに、android.graphics.Colorクラスの定数を渡す）。
画像ファイル自体は専用のフォルダに保持。ただ、その画像の参照は「パス指定」でなく「画像に割り振られたint型の定数」でやる。
お昼休憩までがんばりましょう。
これを使えばOKかと。
結局、今回は対応しなかったのでパス。
（上記の意見に変わりなし）
ごはんはちゃんと食べましょう。

#15
久しぶりに、食事してて「あきらめ」と「敗北感」を悟った。

自分で大盛りをオーダーしときながら…。

パスタは怖い。もーしばらく要らん。

つべこべ言わず作業再開。
#16
AndroidのスタートアップJavaクラス（src\(任意のパッケージ)\(一番最初に生成されるクラス).java）のonCreateメソッドは、
WicketのJavaクラスのコンストラクタメソッドみたいに、
ボタン押下時に何度も何度も呼び出されることはない。

期待通りでちょっと安心。
#17
各Viewの可視状態は、boolean値でなくint値で設定しなくちゃならん。
（setVisibilityメソッド とかのパラメータのこと。左記メソッドだと、android.view.Viewクラスの定数（int）を渡す必要がある。）

なんというか、わかりづらい…のは固定観念のせいか！？
#18
ねむいでございます。
#19
秒変わりきっかけのイベントもフックできた…が、これでいいのか？
タイマーのスタートはできたけど、
「タイマーをストップしてから、再スタートする」というアクションが、これでは実現できないっぽい。
（※ この時点ではandroid.os.Handlerクラスを用いて実装していた。結局は#25のような実装になったが、Handlerクラスを使っても「タイマーをストップしてから、再スタートする」のは実現可能であると思われる。）

それ以外の疑問（#14で挙げた項目たち）はほとんど解消できた。

ただ新しい疑問も出現したが…それは進捗の証としてヨシとしよう（甘いね）。

あと1日ぐらいで、なんとか使用できるぐらいまでもっていこう。

たかが自己満足のために、
未経験のものに対してここまでコーディングできるものかと、我ながら感心してます。

本日の作業は終了！！

☆5.4 タイマーイベント ‎(Android Docs(初級編))‎
☆八角研究所 : Android で再開する Java プログラミング（3） - モグラ叩き
☆デジモノ狂想曲！: Android で タイマー処理 を考えてみた

#20
おはようございます。
#21
今日はなんだか手がよく動く。マリオでいうところの「無敵状態」。
#22
無敵状態が終わった。ものの1時間だったですけど。
#23
タイマー制御が難しい。thread.sleepが期待通り動いてくれない。
（※ 後日談だが、thread.sleepは実装しなかった。）

☆勝手にAndroidブログ - PukiWiki
#24
並列処理が大事！

☆Androidで学ぶ並列処理とGUI - やさしいデスマーチ

#25
秒刻みのイベントをフックするのが難しかったので、
ChronometerとかいうViewのChronometerTickイベントをフックするようにした。

なんか…違うよなぁ。

コーディング量は少なくて済んでるし、やりたい事も全部実現できてるんだけど、
これが最適解だって気がしない。

でも、今回はこれでいこう。

あと、クラス変数の宣言の時点で、「(Viewクラス)this.findViewById(R.id...)」を代入するとコケる。
当然と言えば当然、なのか？
とにかくVBでも似たようなミスをした憶えがあるので、記念に書き留めておく。

☆クロノメーター(Chronometer)を使用するには - 逆引きAndroid入門
#26
問題をアプリの外部から追加したいんだけど…無理かなぁ。

いろいろ考えたけど、何とも難しそうなのでその対応はやめておこう。

知恵が生まれるほどの知識が蓄えられたら、改めて考えようかしら。

進捗としては、もうゴールの手前ぐらいまで来ている感じがする。
「負けないで」が聞こえてもおかしくないぐらいゴールに近い。
大きなタマネギはすぐそこ。

なんというか、アプリの雰囲気的に『マジカル頭脳パワー』になってきた。

…どーせなら、もっと似せようか。
#27
◎TextViewのsetTextメソッドに、数値（intとかlongとか）を渡すと例外が発生する。

もーちょっとで完成なのに…。
#28
ソース中にコメントも入れ終わったし、ひとまず完成！！

あとがき
どんなアプリを作ったのかを簡単に書いておこうと思う。

【イメージ】


【概要】

『Mosaics』（モザイクス）というゲームアプリ。
『「何か」が25枚のモザイクによって隠されているので、それを制限時間内に当てる』のが目的。
モザイクは数秒おきに1枚ずつはがされていく。残り時間が少なくなると、モザイクの はがれ方も速くなる。
問題がスタートしてから正解するまでが早いほど高得点。得点は100点から減っていき、最低で-50点。
答えがわかれば、回答エリアのすぐ右にある白いボタンを押す。押すと回答モードに入り、タイマーが止まる。ボタンを押さなくても回答は入力できる。
判定ボタンを押すと、入力された回答がチェックされる。正解ならばモザイクが全部はずれて正解用メッセージが表示される。不正解ならばタイマーが再スタート。
こたえボタンを押すと問題終了（「制限時間内に正解できなかった」扱いになる）。


【対応していない事】

インターネットを用いた機能（逆に言えば、圏外でもアプリの動作は可能、なはず）
問題の追加（動的な問題データの追加方法が思い浮かばなかった。特にリソースオブジェクト系の追加について）
点数のセーブ（アプリを終了すると通算の獲得得点がクリアされる）
コンフィグ機能（最高点、最低点、タイマーの開始値、モザイクがめくれる速度 などの諸々の設定が不可）
国際化、メッセージのプロパティ化
「1000点を取ればミステリーツアーにご招待」とか「正解できないから檻から出られない」みたいなもの

などなど
次回予告
次回は、自作アプリ第2弾の実装開始の場面から綴ります。
ありがとうございました。

あわせて読みたい

	アンドロイダー育成日記 -Androidと仲良くなるには- その1
	アンドロイダー育成日記 -Androidと仲良くなるには- その2(本記事)
	アンドロイダー育成日記 -Androidと仲良くなるには- その3

 </description>
		<link>http://blog.eni.co.jp/tech/2009/08/android_beginner_diary_02.html</link>
			</item>
	<item>
		<title>アンドロイダー育成日記 -Androidと仲良くなるには- その1</title>
		<description>
このエントリーには続きがあります。

アンドロイダー育成日記 -Androidと仲良くなるには- その2




こんにちは。正木です。

GoogleがAndroidというプラットフォームを発表したのが、いまから2年近く前の2007年下旬。

その頃の私は「VBまっさかり」で、Visual Basic .NetかOracle以外の技術系の情報は、まったく無関心でした。

それから、時は過ぎました。
時流が変わり、世界の経済が変わり、日本の首相が変わり、日本の裁判が変わり、阪神タイガースの監督が変わり、私にも変化が起きて…。

手っ取り早い話が『Androidをさわりはじめた』というワケであります。最近になって。

そこで、でございます。
Android向けアプリ作成にあたり、したためていた私の作業日誌とやらを公開する次第であります。

実際のところ、現在は「これぞAndroidケータイにピッタリ！！」というようなアプリは作るコトができていません。

とか言いながら、読者ターゲットとしては、

・VBやってたんだけど、Androidにも興味がある！！
・VBもわかんないけど、Androidもわかんない！！
・Androidそこそこわかってるけど、初心に帰って学習したい！！
・僕だけ・私だけのアンドロイドを造りたい！！　　お茶の水さんのようになりたい！！

という感じで、なんだかんだで全方位に定めています。結構したたかです。

それでは、ど～ぞ～。

（※ 記事中の役立つ凡例 => ◎：役立つ教訓 &#124; ☆：役立つ外部リンク）


#1
不意に時間ができたので、Androidを触り始める事にした。

最初は、学習するなら『Ajaxとか使えるユーザビリティに優れたJavaフレームワークを使って何か作る！』と意気込んでいたが、ターゲットを探すのに時間がかかり断念した。

…正直に言えば、大事なところで優柔不断さが出た。

でもさぁ、Ajaxにそこまで深い執念がなかったから（時にはイイワケも必要）、
「どーせ時間があるんなら」と思い、漠然とカッコよく輝いて見えていたAndroidに手を出す事にした。

自作アプリで儲けてる人もいらっしゃるみたいだし、
そのうち出てくるであろうchromeOSを触る事になっても、今回の学習で多少のアドバンテージを得られるだろう、という、そんな策略もあったり。

ソースをダウンロードし、エミュレータが起動できる事を確認して、EclipseにAndroid開発用プラグインをインストールして、
Android開発用プロジェクトを作成し（Hello World的なソースが端っから実装されている）、それを実行させる手前まで完了。

「手前まで」と表現したのは、実行したけどうまくいかなかったため。

「SDKの存在が確認できません」だと。なにぃ？？

#2
『@IT』で、興味深い記事を発見。

「見えてきた!? ケータイ以外でのAndroidの適用例 － ＠IT MONOist」
　
何がすごいかって、記事中に出てくるカーナビみたいなヤツを「Androidを初めて触ったエンジニアが片手間で2週間程度で作り上げ」られるんだからすごい。
（カギカッコ内、リンク先より抜粋）

Androidを用いれば、「何を実現させたいか」と「実現方法」が『ある程度』頭に浮かぶだけで、アプリの量産体制に入るコトができるんだろうな、と。
（もっともAndroidだけではないだろうが、Android向けアプリはそういう風に持っていきやすいんだと思う。）

気分を切り替えて、引き続き「SDK失踪事件」の捜査を再開する。

#3
結果から言うと、事件は解決した。

犯人はこの中にいた。
たぶん…私。

はっきりとした理由はわからないけど、
正解を知りもせずに（お手本：Webでの解説サイトを見なかったり とか）、勘だけでやろうとしていたのが間違いだった気がする。

「Eclipse3.5」にアップデートしたり、ディレクトリ構成もWebサイトのお手本（下記リンク先参照）に倣いやってみたところ、
あっさりと「Hello, Android!!」が表示された。

上記の罪を償いながらも、
事件だの何だのと騒いだ割には、わりかし簡単に開発環境が整えられたように感じる。

◎Eclipseからエミュレータ実行コマンドを実行してから、アプリの起動が完了するまで、自分の開発環境だと20秒ぐらい要する（深く突っ込まず目安として捉えてください）。
◎エミュレータ実行時、エミュレータ画面の複数起動は不可。
☆Androidインストール - PukiWiki
☆Android開発環境のセットアップ - kariostroの日記

#4
『SoftwareDesign』を使いながら基礎を固めよう、とする。
（2009年3月号にAndroidの特集が組まれていた。2009年8月中旬現在、公式サイトによると同刊は品切れ状態。）

本に載っているサンプルゲームを、実装してみる。

そして、サンプルゲームを実装しつつ、おもしろコトバが本に載っていたのでちょっと紹介してみる。

◎『Androidアプリケーションは、ゲームであろうが何であろうが「画面に何かを表示する」プログラムであることがほとんどです。』（『SoftwareDesign』 2009年3月号より抜粋）
◎『理系の皆さんの大好きな(?)クイックソートと、理系でない皆さんの大好きな(?)バブルソート』（上記と同様）

#5
立体的に表示させる機能があるらしい。特殊なカードを使うみたい。

「なんじゃこりゃ」という驚きが、思わず声になった。

☆FrontPage - NyARToolkit

#6
「windowsキー + Break」→ 『システムのプロパティを起動』らしい。初めて知った。

#7
『SoftwareDesign』（#4 参照）に記載されていたソースを実装して、
実行させたら、期待している動きになった。

見事にうまくいってしまった。

「絶対にうまいこといくはずない」という直感を覆してまで…。

◎JavaファイルとXMLファイルの書き換えだけでうまくいった。

#8
『GeoPointAPI』のキー取得の為にやる、アカウントの登録ではまる。

「サービス名」とか「ドメイン」とか。サンプルアプリなのに、どう入力すればよいのだ！？

結局、頓挫。

☆シリウスラボのGeoPlatformAPI/GeoPointAPI

#9
暑い。

#10
AndroidアプリのGUIのデザインの定義は、XMLとして保持するらしい。

『どろいどどろう』とかいうヤツで、Visual Studioでのデザイン画面的にレイアウト用ソースの生成が可能。

☆DroidDraw : Graphical User Interface Editor for Android Cell Phone Development and Programming
（リンク先のようなアプレットではなく、クライアントアプリとしても「DroidDraw」は存在する。）

#11
VBでいうところの『テキストボックス・ラベル・ボタンをフォームに貼り付けて、ボタンを押下すると、テキストボックスへの入力値がラベルに反映される』というプログラムができた。
（AbsoluteLayoutの上にTextView・EditText・Buttonを設置して、ButtonのClickをフックする。Javaファイルに5行弱程度で実装可能。）

実現するために然程時間もかからず、またコーディング量も少なく済んで、感心している。

編集したのは、
・「デザイン用のXMLファイル」（res\layout\main.xml）
・「実処理を書いているJavaのメインクラス」（src\(任意のパッケージ)\(一番最初に生成されるクラス).java）
の2つだけ。

Javaのことだから、もっとXMLファイルがごちゃごちゃしてきたりするもんだと思っていたが、そーでもなかった。

☆Javaの学習ならJavaDriveのAndroid入門

次回予告
次回は自作アプリの実装について綴ります。
ありがとうございました。

あわせて読みたい

	アンドロイダー育成日記 -Androidと仲良くなるには- その1(本記事)
	アンドロイダー育成日記 -Androidと仲良くなるには- その2
	アンドロイダー育成日記 -Androidと仲良くなるには- その3


 </description>
		<link>http://blog.eni.co.jp/tech/2009/08/android_beginner_diary_01.html</link>
			</item>
	<item>
		<title>Inspiron9400のキーボードを交換してみた</title>
		<description>こんにちは、武輪です。

私は自宅でDELLのInspiron9400というノートPCを使っていまして。
彼これ何年くらいですかね、結構長く使っているんですけども。

先日の朝ですね、寝起きに寝惚けたままで本をぽんとその上に投げてしまったわけです。
そしたらなんか引っかかったらしく…



Shiftキーが吹っ飛んだ＼(＾o＾)／


なんとかくっつけてみようとするものの、背面の爪部分が折れてて、にんともかんとも。
ざっと調べてみた感じ、ノートPCはメーカーは部品売りなどはしていなく、PC送付→修理(部品交換)な流れのようです。
キートップが壊れてしまった場合は、キーボード丸ごと交換になるそうな。
修理に出せば、キーボード交換は1万～1.5万くらいかかるみたいです。
高いよ…！

そんなわけで、ヤフオクでノートPCのキーボード単体をゲットしまして、自分で交換してみることにしました。

まずは壊れた旧キーボードを外すところからです。
一応バッテリーは外し、ケーブル類も全て外しています。
Inspiron系はキーボードの上部分のカバー右横にマイナスドライバーを挿しこめそうなとこがありますので、そこにマイナスドライバーを挿しこみ、内部の爪を折らないように少し浮かせます。


あとは端っこから内部の爪を折らないよう、慎重に外していきます。
カバーのキーボード側をよく見るとところどころ凹んでいたので、そこをマイナスドライバーでこじ開けていけば割と簡単に外せました。


カバーを外したら、キーボードを少し上にずらしながら外します。


キーボードのケーブルはこんな感じで固定されています。


ちょっと分かりにくいですが、ケーブルが挟まれてるので、それを起こしてあげると簡単に外れます。


あとは外した時の逆の手順で元に戻していきます。
新しいキーボードのケーブルをくっつけ、キーボードをはめ込み、カバーをはめ込んで、完成。


PC起動後、メモ帳などで全部のキーを押してみて軽く動作を確認。
無事交換完了です。

今回は、送料手数料こみこみで5千円ちょっとでキーボードを手に入れれたので、修理依頼に出すよりもずっと早く、リーズナブルに交換することができました。
案外簡単に交換できるので、ノートPCのキーボードが壊れてしまった場合は、自己責任ですが自分で交換することを選択肢に入れてみてもいいかもしれません。 </description>
		<link>http://blog.eni.co.jp/tech/2009/08/inspiron9400_keyboard_exchange.html</link>
			</item>
	<item>
		<title>コマンドを便利に切り替える update-alternatives 使いこなし講座</title>
		<description>こんにちは、プロダクト&#38;サービス事業部の白石です。

唐突ですが、日本はよく豊かな国だと言われることがあります。
それは、ただ単に日本人の所得が高いというわけではなく選択の幅があるからです。

いざ美味しいものを食べたいなと思った時、
日本の料理はもちろんのこと、中華料理、韓国料理、イタリア料理などすぐに見つかります。
さらにちょっと手間を掛けて、大きな街中に足を運んだりするともっと多彩な国のグルメを楽しむことが出来ます。
また、こだわりのあるバーなんかに行くと世界中のお酒が並んでたりしますよね。
こういった選択の幅がある国って他にはなかなか無いそうですよ。

このように何かしようと思った時に、
色々あるものの中から好きなものを選べるのことはとても恵まれていることだと思いませんか?

そんな選択肢を文字通りLinuxに与えてくれるのが update-alternatives というコマンドです。

今回はCentOSでの検証を基に話をしますが、
CentOSの他に、Debian、RedHat系(RHEL、Fedora)にも
この update-alternatives という

シンボリックリンクを管理してデフォルトのコマンドを決定(man参照)するコマンド

があります。
簡単に言うと、複数のバージョン(または似たような機能)を持つプログラムを切り替える(管理する)コマンドです。

CentOSにSUNの Java を入れたことがある方は、一度は使ったことがあるのではないかと思います。

今回はこの update-alternatives コマンドについて解説したいと思います。




目次


    update-alternatives とは
    update-alternatives の使い方
    
        グループのプログラムを切り替える
        グループにプログラムを追加する
        グループの状態を表示する
    ...</description>
		<link>http://blog.eni.co.jp/tech/2009/08/update-alternatives.html</link>
			</item>
	<item>
		<title>読書とブログ</title>
		<description>私ごとで恐縮ではありますが、最近“ブクログ”というブログを始めました。

端的に言ってしまえば「書評」ができるブログです。

ただ、そこは“本”をメインテーマに据えているだけに、
ただの文字の羅列になっていない事が魅力だったりします。


魅力を紹介すると、
例えば「どの本についての紹介されているか」が一目で判ります。

なぜなら、個人のトップページには【本棚】が存在するから。

その本棚に置いてある本を選択すると、
そのブクログ運営者の、その本についての書評が閲覧できます。

本棚への本の並べ方も「通常の表紙」「背表紙」のどちらかを選択することができます。
「Cover Flow」なんていう、どこかで耳にしたような機能もおいおい正式に追加される予定みたいです。
（※「背表紙」…本当の背表紙ではなく、通常の表紙を細長く圧縮し“擬似”背表紙として表示している）

本は「文字の集合体から内容を読み取る」という性質を持っているだけに、
外観だけパッと見ても、探している本が見つかることはそう多くないでしょう。

しかし、ブログとしてのデザインやレイアウトという面からすると、
「表紙の集まり」にする事で、その役割を果たせるのだと思います。

記事のエントリについても、「一括投稿機能」があるので触れておきます。

通常のブログと同じように記事を1つずつエントリできるのはもちろん、
ISBNコードを用いて、複数の本を一括で投稿できるんです。

私もこの機能を使ってみましたが、これはラクですね。
ラクですし、本を読むスピードに関係なく使えるものだと思います。

この仕様を思いついた方はエラい！と思いました。
「一般のブログ」と この「ブクログ」の違いを際立たせる一つの要素になったんではないか、と。

さてさて。

「本は、読んだら読みっぱなし」という方は、やはり多いんではないでしょうか。
私も、恥ずかしながら、読了後は何もアクションを起こさない人です。

その「読書していた過去」に、どう意味を持たせるか。

確かに「本を読んだ」という、一種の満足のような快感はあるでしょうが、
果たして、それが未来の糧になりえるかどうか。快感が長持ちするのかどうか。

読書した事に意味を持たせるようとすると、
例えば、「（読書で思いついた事柄を）ノートにメモを取りながら」など、
色々な方策が（それもまた本によって）挙げられています。
（※「ノートにメモ」… 『読書は1冊のノートにまとめなさい』 奥野宣之 著）

この“ブクログ”で考えてみると、
「読んだ本(の内容)」を「見栄え良く」「万人に」「アウトプット」できることが、
過去を財産として残す一つのアプローチであると考えられるでしょう。

個人的には「twitter」より長く続けていけるような、そんな気がしていますが…どうでしょう。

以上、気になったサービス“ブクログ”の紹介でした！

参考
・ブクログ -ウェブ本棚サービス-　　(筆者のアカウント) </description>
		<link>http://blog.eni.co.jp/tech/2009/07/reading_and_writing.html</link>
			</item>
	<item>
		<title>SeleniumRCで自己署名証明書使用のWEBアプリケーションをテストする際、セキュリティ警告を表示させない方法</title>
		<description>こんにちは。プロダクト&#38;サービス事業部の笹山です。

前回のブログ(Seleniumの自動テストを止めることなく、Flexを手動操作する方法)で「FlashSeleniumについて調査をして、このブログに公開できたら・・・」などと書きましたが、全く調査できておりません。お詫び申し上げます。

前回のブログ執筆時後、SeleniumRCのバージョンも1.0.1に上がっていますし、FlashSeleniumもSeleniumRC1.0互換のものが出ているようです。
ですから、現時点では「あっさり動いてしまう？」のかもしれません。

今回もSeleniumRCネタではありますが「SeleniumRCで自己署名証明書使用のWEBアプリケーションをテストする際、Firefoxからのセキュリティ警告を表示させない方法」について書きたいと思います。

自己署名証明書使用のWEBアプリケーションをテストする際の問題
SSL対応のWEBアプリケーションのテストを行う際に、自己署名証明書を作成してテストすることは多いと思います。

SeleniumRCで自己署名証明書使用のWEBアプリケーションのテストを行うことはもちろん可能です。
しかし、面倒くさい操作が発生してしまうのです。

サーバに接続する際に、「信頼できない接続 - 接続の安全性を確認できません」と警告が出ます。
[caption id="attachment_895" align="aligncenter" width="300" caption="警告 - 信頼できない接続"][/caption]

例外として追加しても毎回警告が表示され、そのたびに例外に追加する操作を行わなければいけません。
これでは、SeleniumRCを用いての自動テストの意味がありません。

問題の解決方法
これを解決する方法が分かりました。ただしFirefoxでのみです。
FirefoxでSeleniumServer用のProfileを作成し、SeleniumServer起動時にそのProfileを指定させれば良いのです。

それでは、まず最初にFirefoxでSeleniumServer用のProfileを作成する手順について説明します。

SeleniumServer用のProfile作成手順

	アクセサリ-ファイル名を指定して実行でFirefoxのProfileManagerを起動します
[caption id="attachment_896" align="aligncenter" width="300" caption="ファイル名を指定して実行 - ProfileManager"][/caption]

firefox.exe -ProfileManager

	「新しいプロファイルを作成」でSelenium用のプロファイルを作成します
[caption id="attachment_897" align="aligncenter" width="300" caption="新しいプロファイルを作成"][/caption]

	プロファイル作成ウィザードで順番に作成していきます
※安全のため保存先は、Selenium用のフォルダを作成し、そのフォルダを指定することをお勧めします
[caption id="attachment_898" align="aligncenter" width="300" caption="プロファイル作成ウィザード"][/caption]

	Selenium用のプロファイル作成後、作成したプロファイルを指定して自己署名証明書使用のサイトにアクセスします
「信頼できない接続 - 接続の安全性を確認できません」と警告が出ます
[caption id="attachment_895" align="aligncenter" width="300" caption="警告 - 信頼できない接続"][/caption]

	自己署名証明書使用のサイトを例外として追加し、セキュリティ例外を承認します
[caption id="attachment_900" align="aligncenter" width="300" caption="例外として追加"][/caption]

[caption id="attachment_899" align="aligncenter" width="300" caption="セキュリティ例外を承認"][/caption]


後にも先にも、Firefoxで自己署名証明書使用のサイトを例外として追加する操作はこの1回だけです。

次に、SeleniumServerへProfileを指定する方法を説明します。

JUnitテストソースでSeleniumServer起動時にProfileを指定させるコード
使用するProfileを指定して、SeleniumServerを起動するコードです。

// 自己署名証明書使用のURL
testUrl = "https://localhost:8443";

// テストを行うブラウザ
testBrowser = "*firefox";

// SeleniumServerのインスタンス化
seleniumServer = new SeleniumServer();

// ...</description>
		<link>http://blog.eni.co.jp/tech/2009/07/selenium_firefox_self_signed_ssl.html</link>
			</item>
	<item>
		<title>Solr/SolrJ1.3のCoreAdmin(マルチコア)機能を用いて動的にCoreを追加する方法(SolrJのバグの対処方法)</title>
		<description>こんにちは。
株式会社イージーネット プロダクト&サービス事業部 の久保です。

前回書いたSolrの記事 全文検索サーバ: これからSolrを始める人のためのApache Solr概要と便利なリンク集 はおかげさまで沢山のアクセス/ブックマークをいただきました。
来週火曜日の7/21には、Lucene/Solrで有名なロンウイットの関口さん(参考: 関口宏司のLuceneブログ)などが参加されるSolr勉強会も開催されるようですので、Solr人気は高まっているのかもしれません。


今回は前回から変わって小さなネタになりますが、
Solr/SolrJ1.3のCoreAdmin(マルチコア)機能を用いて動的にCoreを追加する際にはまるSolrJのバグと、その対処方法について書きます。





Solr1.3のマルチコア機能とは
単純に言うと、1つのSolrアプリケーション(サーブレットアプリケーション)の上で、論理的に複数のSolrアプリケーションを動かすことができる機能です。
詳しくは前回の記事の「マルチコア構成」をご覧ください。


Coreを追加するためのURL(Query String)
Coreを追加するのに必要なURL(Query String)は次のようになります。
(参考URL: Solr Wiki - CoreAdmin)


http://server/solr/admin/cores?action=CREATE&name=[name]&instanceDir=[dir]&config=[solrconfig]&schema=[schema]


(例)

http://testserver:8080/solr/admin/cores?action=CREATE&name=test&instanceDir=test&config=/solr/conf/solrconfig.xml&schema=/solr/conf/schema.xml



    
        [name]
        coreに付ける名前(例: test)
    
    
        ...</description>
		<link>http://blog.eni.co.jp/tech/2009/07/apache_solr_13_coreadmin_multicore_solved.html</link>
			</item>
	<item>
		<title>才能と時間</title>
		<description>先日、「日経ビジネス Associe」を読んでいると、勝間和代さんのコラムに目をひかれました。



出てきたキーワードは“1万時間”。

先日話題になったピアノ奏者の辻井伸行さんや、プロゴルファーの石川遼選手を例にあげ、
「才能を開花させた人は、例にもれず訓練に“1万時間”を費やしている」
というお話が載っていました。

驚きましたね。
「下積み」という、どちらかと言えば暗いイメージのものに対して、具体的な数字が提示されていた事に。

記事中の言葉を引用すると、
「1日3時間訓練したとして、10年間続けると、ようやく1万時間を超え」る、
そういうものらしい。

もう、デーモン小暮閣下なんか、すごいんでしょうねぇ。
10万歳を超えてられますからねぇ。
ものすごい、言わば、悪魔の極みなんでしょうねぇ。

でも、1万時間を費やしたとしても、
ポケモンの赤バージョンだけでは、ニャースやマダツボミがゲットできないとは、
任天堂もよく考えているものであります。

そんなこんなで、
私も「極み」になれるように、
プログラミングで1万時間を超えてみたいと思います。


さーて次回のVBさんは？

・ソフ開合格生のコードはどうして美しいのか
・1Q84159265358979323846
・ソースレスプログラマー

の三本、いや、どれかです……？

じゃんけん、ぽん！　グフフフフフフ☆

引用記事
「1万時間の訓練を積んで才能を開花させる環境に身を投じよう！」 - 日経ビジネス Associe(アソシエ) </description>
		<link>http://blog.eni.co.jp/tech/2009/07/ability_and_times.html</link>
			</item>
	<item>
		<title>AIR/Flex でファイルアップロード</title>
		<description>こんにちは。
プロダクト&#38;サービス事業部 リーダーの末田です。

今回は、AIR/Flex でファイルのアップロード(HTTPのPOST)について書こうと思います。

ファイルアップロードにおけるAIR/FlexとINPUTタグの違い

ファイルのアップロード自体は、わざわざAIR/Flexで行わなくても、HTMLのINPUTタグで可能ですが、AIR/Flexで行うと以下のような利点があります。


ブラウザが固まらない
INPUTタグによるファイルアップロードの場合、
アップロードを行っている間、ブラウザは無反応になります。
大きなファイルをアップロードしている場合、特に顕著に発生します。
その時にブラウザ内をクリックするとOSから「応答なし」という判断になることもあります。
AIR/Flexでは、そのようなことは起きません。
また、アップロード中に他の操作を受け付けることもできます。

アップロードの進捗が見えやすい
INPUTタグによるファイルアップロードの場合、
アップロードの進捗は見えない、もしくはプログレスバーが動いてはいるが、よくわからない、といった表示になります。
Ajaxを利用して、自作のプログレスバーを表示することもできますが、
クライアント側、サーバ側それぞれに仕組みが必要になります。
AIR/Flexでは、アップロードの進捗をイベントとして受け取ることができるので、クライアント側だけで、自作のプログレスバーを表示することができます。

ドラッグアンドドロップ等でファイルを選択できる(AIRのみ)
INPUTタグによるファイルアップロードの場合、
アップロードするファイルを指定する方法は、標準のファイル選択ダイアログのみとなりますが、AIRでは、ファイルパスの指定方法は限定されません。
Flexでは、標準のファイル選択ダイアログのみとなります。




基本的なファイルアップロード

AIR/Flexの場合
AIR/Flexでの基本的なファイルアップロードのサンプルコードです。
以下のように動作します。

ボタンをクリックすると、
ファイル参照ダイアログが開き、
ファイルを選択してOKをクリックすると、
ファイルがアップロードされます。





  
    
  
  
  
  




Flexでは、flash.net.FileReference クラスを使います。
このクラスだけで、ファイルの選択（ダイアログ表示）とアップロードを行うことができます。

AIRの場合
AIR上では、このクラスだけでなく、flash.filesystem.Fileクラスも利用することができます。
このクラスではファイルパスを指定できるので、ファイル参照ダイアログを開かなくても、アップロードするファイルを指定できます。

これにより、ドラッグアンドドロップ等、様々な方法でアップロードするファイルを指定できます。

AIR上でflash.filesystem.Fileクラスを使用した場合のサンプルです。

以下のように動作します。

ボタンをクリックすると、
ファイルがアップロードされます。





  
    
  
  
  
  





アップロード時のパラメータ
ファイルのアップロード時、一緒にリクエストパラメータを送信する場合は、
flash.net.URLVariablesクラスを使用します。

URLVariablesクラスに、リクエストパラメータのキー名をプロパティ名、値をプロパティの値として設定し、URLRequestクラスのdataプロパティに設定することにより、送信できます。


var req = new URLRequest();
var param:URLVariables = new URLVariables();
param.hogekey="hogevalue";
req.data = param;


アップロードの進捗の取得
アップロードの進捗度合いは、flash.net.FileReference クラスもしくは、flash.filesystem.Fileクラスのflash.events.ProgressEventから、全体のバイト数(bytesTotal)と現在アップロードしたバイト数(bytesLoaded)を取得できます。


file.addEventListener(ProgressEvent.PROGRESS, function (event:ProgressEvent):void {
  trace("bytesTotal=" + event.bytesTotal);
 ...</description>
		<link>http://blog.eni.co.jp/tech/2009/06/air_flex_upload.html</link>
			</item>
	<item>
		<title>全てのVisual Basicの挑戦者へ -即Bookmarkモノのリンク集-</title>
		<description>はじめまして。プロダクト&#38;サービス事業部の正木です。

私は、技術者としてのほとんどのキャリアを、Visual Basic と共に歩んできました。

今回は、短いながらも私の進んできた道を照らしてくれたVisual Basicのオススメ解説サイトを、3点、ご紹介したいと思います。

紹介する非常に上質なWebサイトは、押さえておいて全く損はありません。
ぜひ、リンク先を開いたと同時に、お使いのWebブラウザにお気に入り登録をしましょう！

さて、今回、スポットライトの当たるVisual Basic。

「Basic」というほどなので、「初心者にも組みやすく」がモットーのプログラミング言語です。

しかし、取り組始めたばかりは、一歩目の踏み出し方が解からないモノ。
私もそうです。
右足と左足、どちらの足を使って地を踏みしめてよいものかすら解かりません。

そんなあなたに、一歩目の踏み出し方、
ひいては、走り方、駆け抜け方のヒントになるWebサイトが紹介できると考えています。



まず、一つ目

「@IT」（あっとまーくあいてぃ）は、必ず押さえておきましょう。
はい、まだお気に入られていないあなた。登録しましょう！

「最新情報」「Tips」「巨大コミュニティ」の三要素を兼ね備えた、みんな大好き「@IT」です。

言わずもがな、このサイトの強みは「巨大コミュニティ」だと思います。

過去・現在・未来にあなたがぶち当たる問題は、
他の誰かにも問題として降りかかり、そして、それは既に解決されていたりするものです。

ぜひ、覗いてみましょう！
膨大な過去のコミュニケーションを知ってから、思い切って質問してみましょう！

さて。

右も左も解からず、立ち往生するあなた。
そんなあなたに「@IT」は手を差し伸べてくれます。
ボタンをフォームに貼り付け、
押せば『Hello World!!』と書かれたメッセージボックスを見て、
「なんと壮大な挨拶なんだ！」と感動したあなた。
「@IT」に感謝し、やがて歩を進める事になり、
データベースプログラミングという未知の領域に踏み入れた時も、
この「@IT」は、DBのベンダなんて関係なく、
そっとあなたのゆく道を照らしてくれるはずです。

次、二つ目

Visual Basicを、入学してでも勉強したい！
先生が海外に居ようが、駅前で留学しようが、何でもいいから勉強したい！！

そんなあなた。大丈夫です。

VBには学校も存在します。

その名も「Visual Basic中学校」。

この学校…もとい、このWebサイトの素晴らしい箇所は、やはり“丁寧さ”に尽きます。

主宰者の方は、「小学生　中学生　高校生に優しいページを目指して」おられます（カギカッコ内は、サイトより引用）。

これ幸いとばかりに、勝手に入学し、むさぼるように先生…もとい、サイトに教えを請いました。

ちゃんと勉強すれば、成果は出るものです。

なんと言っても、やればやるほど『基礎』ができます。
守破離 の 守 ですね。

サイト内のページで言うトコロの、「授業」の .Net版の「初級講座」を理解していけば、
プログラマとしての足腰がしっかり作られる事でしょう。

とっつきやすい解説サイトをお求めの方には、ぜひオススメ！
一回の入学の価値アリ！であります。

そして、三つ目

学び舎から巣立ち、仰げば尊しくなり、
VBを使って、なんだか小難しい事にも挑戦したいという、そんなワクワクが催してきたあなた！

そんなあなたには、「どぼん」がおすすめ！　

「DOBON.NETプログラミング道」です。

プログラミングの道を突き進みましょう！
Visual Basicにハマりましょう！！　ドボンといっちゃいましょう！！

“.Net”と銘打っているだけあり、Tipsには、VBだけでなく Visual C# の両方のソースが掲載されています。
VBとVC#の互換（例えば、キーワード）に対する記事なども存在します。

そして、掲載されているTipsの上質さを物語るのが、訪問者の「評価」です。

Tipsのページひとつひとつに、閲覧者の評価が載っているのですが、その大方が「良い」と評価されています。

.Net Frameworkはフルスタックフレームワークだけあるので、
実現可能な機能も多ければ、それに比例して知りたい事も膨大になるはずです。

この「どぼん」は、プログラマの心の隙間、もとい、プログラマのソースにできた隙間を埋めてくれることでしょう。

おわりに

以上で、Webサイトの紹介は終了です。

「障害物を避ける進み方」というのも大事かもしれませんが、「障害物にぶち当たる」事も意外に重要だったりします。
これらのサイトは、あなたが壁にぶち当たっても、テンションを下げすぎず、かつ冷静に居られるようしてくれる、
そんな手助けをしてくれるはずです。

先輩風を吹かせてしまっているかも知れませんが、私も発展途上です。
本エントリーを読まれている皆さんと一緒に、成長していきたいものであります。

そして、今回紹介させていただいたWebサイト以外にも、素晴らしいVisual Basicの解説サイトは数多く存在します。
それらをどう発見してどう活用するかは、あなた次第ではありますが、
あなたをバックアップしてくれる環境が既に整っているという事実は、憶えておいて損はないかと思います。

さぁさぁさぁ、一歩目を踏み出す準備はできましたか？

モチロンできましたよね！

足取り軽やかに、素晴らしいVisual Basicライフを楽しみましょう！！

さーて次回のVBさんは？

・ループから逃げ出したい
・クラスと構造体 三番勝負
・SQLのそっくりさん

の三本…いや、どれかです。

またね！

今回紹介したサイト

＠IT - アットマーク・アイティ
Visual Basic 中学校
DOBON.NETプログラミング道

紹介させていただいたWebサイトの運営者の方々には、この場を借りてお礼を申し上げます。 </description>
		<link>http://blog.eni.co.jp/tech/2009/06/visual_basic_helpful_links.html</link>
			</item>
	<item>
		<title>CentOS5.2でWEBアプリケーション開発環境を作るまでの注意点</title>
		<description>初めまして。プロダクト＆サービス事業部新人の中村です。

私はイージーネットに入社して半年程でまだまだ新人なのですが、
そのせいもありLinux上でWEBアプリケーションを開発する環境を整えるまでに意外と時間がかかりました。
私の場合OSはCentOS5.2を使用していたのですが、CentOS5.2は特にEclipseを起動し動的WEBプロジェクトを動作させるまでで、注意すべき点が多いような気がします。

そこで今回は同じように悩んでる方がいるのではないのかと思い、
CentOS5.2上でEclipseを用いてWEBアプリケーション開発環境を構築するまでの手順についてお伝えしたいと思います。

使用したimageは"CentOS-5.2-i386-bin-DVD.iso"で、デスクトップはGNOMEを採択しています。
なお今回の記事ではOS自体のインストール方法は割愛させて頂きます。



手順
手順一覧
手順は大きく以下の流れになります。

	Firefoxパッケージをアップデートする
	java1.5以上を導入する
	Eclipseをインストールする
	tomcatをインストールする
	動作を確認する


1. Firefoxパッケージをアップデートする



CentOSではpackage updaterというものがあり、アップデートが可能なパッケージについて知らせてくれます。
あまり知られていない問題かも知れませんが、Firefoxのバージョンが原因でEclipseが正しく起動しない場合があります。
package updaterからFirefoxのアップデートを行うことで正しく起動するようになることを確認していますので、まずはFirefoxのアップデートを行いましょう。

以下、詳細解説を行います。
"CentOS-5.2-i386-bin-DVD.iso"のイメージには"firefox-3.0-0.beta5.6.el5.centos.i386.rpm"が含まれているのですが、
そのバージョンでEclipseを起動しようとした際以下のようなメッセージが出力されました。
(使用したEclipseは、eclipse-jee-ganymede-SR2-linux-gtk.tar.gzになります。)


  org.eclipse.swt.SWTError: XPCOM error -2147467262
          at org.eclipse.swt.browser.Mozilla.error(Mozilla.java:1638)
          (以下略)


"XPCOM error"といったキーワードで検索してみると、3.0b5以外のFirefoxのバージョンによっても同じエラーが起きている人がいることがわかります。

（Eclipse bugレポート記事）
https://bugs.eclipse.org/bugs/show_bug.cgi?id=103620


2. java1.5以上を導入する
Eclipseの動作条件はjavaのバージョンが1.5以上です。
CentOS5.2ではデフォルトでインストールされているjavaの種類とバージョンはそれぞれgij(GNU libgcj) の1.4.2でした。
従って、CentOS5.2を使用する際は、1.5以上のjavaをインストールすることを忘れないようにしなければなりません。

javaのバージョンを確かめる方法は以下になります。

[root@hiroyapc /]# java -version
java version "1.4.2"
gij (GNU libgcj) version 4.1.2 20080704 (Red Hat 4.1.2-44)

Copyright (C) 2006 ...</description>
		<link>http://blog.eni.co.jp/tech/2009/06/centos_webapplication_using.html</link>
			</item>
	<item>
		<title>JSFでAjaxを使いたい &#8211; OpenFacesの紹介 -</title>
		<description>はじめまして。
プロダクト&#38;サービス事業部の武輪です。

Ajaxと言えば、JavaScriptをごりごり書かないと！ってイメージがあるのですが、JavaScriptを少し書くだけ、もしくはまったく書かずに、コンポーネント側で勝手にやってくれれば簡単ですよね。
Ajaxを用いたJSFコンポーネントやフレームワークって他にも、RichFacesやらajax4jsfやらICEfacesやらがあるのですけども、今回私は、OpenFacesというJSFコンポーネントを紹介したいと思います。

OpenFacesは2009年5月末に出てきたばかりのAjaxを用いたJSFコンポーネントです。
サイトからはfaceletsで実装されたサンプルとJSPで実装されたサンプルをダウンロードすることができます。

早速、faceletsで実装されたサンプルを動かしてみました。


どんな機能があるの？
サンプルにはたくさんの魅力的なデモが含まれていたのですが、そのうちのいくつかを紹介したいと思います。

カレンダー


よくこんなカレンダーありますよね。



xhtmlファイルにはたったこれだけで画面にカレンダーがぽんと表示されちゃいます。
また、下のようにスタイルを細かく指定することもできます。



これが画面に表示されるとこんな感じ。


ちなみにデモではすべて～～Styleでcssを直接指定していましたが、～～Classというアトリビュートでcssのクラスを指定することもできます。
JAVA側の実装もシンプルな感じ。
CalendarBean.javaとLocaleItem.javaの2クラスだけでした。

グラフ

OpenFacesでは、JFreeChartというライブラリーを利用してグラフを生成できます。
円グラフ、横棒グラフ、縦棒グラフ、折れ線グラフの4種類が用意されています。


円グラフの記述例は↓こんな感じ。






BackingBeanは、それぞれのグラフ用にChartModelというインターフェースを実装したmodelをもっています。
そのmodelを元にグラフが描画されるみたい。

データテーブル

データリストの一覧表示には以下の機能が備わっています。

検索
ソート
ページング
選択・・・1行選択したり複数行選択したり。
カラムのリサイズ
キーボード操作・・・方向キーで選択行を変更したり、Shiftキー＋方向キーで複数行選択したり。


他にもいろいろ面白そうな機能があります
ウィンドウの表示とか。
ポップアップメニュー(右クリックでメニュー表示)とか。
ツリー状メニューの表示とか。
カレンダーからの日付選択とか。

たくさんの面白そうな機能がついているので、ぜひ実際に動く様子を見てみてください。(→OpenFaces Live Demo)

ところでライセンスは？
OpenFacesが採用しているライセンスは、dual license modelです。

dual licenseって何よ？って話なんですけども、簡単に言うと、開発したアプリケーションのライセンスをLGPLにするなら無償、そうでないならOpenFacesの商用ライセンスを購入してねってことみたいです。 </description>
		<link>http://blog.eni.co.jp/tech/2009/06/jsf_ajax_openfaces.html</link>
			</item>
	<item>
		<title>リッチなAdobe AIR/Flexのツールチップをよりリッチに</title>
		<description>はじめまして､こんにちは｡
プロダクト&#38;サービス事業部の白石です｡

近々新バージョンのニュースリリースをおこなう予定の弊社製品easyFiLEXですが､
僕自身も開発者として本プロジェクトに参加していました｡

今回バージョンアップとなるeasyFiLEXの注目の機能として､
Adobe AIR上で動作するデスクトップアプリからファイルの送信が可能になったことが第一に挙げられます｡

そんな目玉機能の一部を任され､
初めてのデスクトップアプリ､
初めてのAdobe AIR/Flex､
さらに初めてのActionScriptと何から何まで初めてづくしの開発となりました｡

そんな初めてだらけの中で試行錯誤しつつ､
｢これは知ってると便利!!｣と思ったことを紹介しようと思います｡



カスタムツールチップの作成



今回紹介するのはAdobe AIR/Flexのツールチップについてです｡
Adobe Flex リファレンスガイドではツールヒントと呼んでいますが本記事ではツールチップと呼ぶことにします｡

ツールチップそのものをただ使うだけであれば､





のようにtoolTipプロパティを設定するだけの極々簡単なものです｡

このツールチップは設定した文字列を､
カーソルが重なった時にポップアップして表示するだけのものですが､
以下のように少し複雑なツールチップを表示することも出来ます｡



なんだか少し良い感じに見えますよね。

では､このツールチップをどうやって実装するのか説明したいと思います｡

まずはmx.core.IToolTipインターフェイスをインプリメントしたコンポーネントを作成します｡

PersonToolTip.mxml



	
		
		
	
		
			
		
		
			
		
		
			
		
	



mx.core.IToolTipをインプリメントしたコンポーネントを作成したら､
そのコンポーネントを使うアプリケーションを作成します｡

Person.mxml



	
		
	
	
	
		
			taro
			20
			Osaka
		
	
	
		
	



この二つのファイルを作成したら後は実行するだけです｡

どうでしたか?
凄く簡単でしたよね?

簡単に動作を説明すると､


	taroにカーソルを合わせる
	toolTipプロパティで設定した&#34; &#34;という文字列でツールチップを作成
	ツールチップが作成される際に投げられるtoolTipCreateイベント処理開始
	イベントにPersonToolTipコンポーネントを渡す
	カスタムツールチップ表示


といった具合に処理されています｡

toolTipプロパティに&#34;&#34;ではなくて､&#34; &#34;(空白文字)を渡している点に注意してください｡

toolTipプロパティが&#34;&#34;では､空文字となるためツールチップが作成されません｡
つまり､toolTipCreateイベントが投げられないのでカスタムツールチップに差し替えることが出来ないのです｡
逆に言ってしまえばtoolTipCreateイベントが投げられれば良いので､&#34;hoge&#34;でも&#34;foo&#34;でも&#34;bar&#34;でも構いません｡

ところで､toolTipCreateイベントの処理の中で
イベント自身であるmx.events.ToolTipEventクラスのtoolTipプロパティにPersonToolTipコンポーネントを渡すだけでツールチップが差し替えられるのは何故なのでしょうか?

mx.core.UIComponentクラス のtoolTipCreateイベントのリファレンスガイドには以下のように書いてあります｡

独自の IToolTip オブジェクトを作成し、それに対する参照をイベントオブジェクトの toolTip プロパティに格納し、これを toolTipCreate ハンドラに渡すと、ToolTipManager によってそのカスタムツールヒントが表示されます。 

上記の機能を利用してツールチップをカスタムツールチップに差し替えているわけです｡


ComboBoxとカスタムツールチップを組み合わせてみる

このカスタムツールチップは何かと使えそうなので､
mx.controls.ComboBoxコントロールにこのカスタムツールチップを使用する方法を考えてみました｡




	
		
	
	
	
		
	



ただ､これだとComboBox自身のツールチップは表示されるのですが､
ドロップダウンリストでのツールチップが有効にならないのでイマイチ使い勝手はよくありません｡



どうにか実現出来ないかと､

	dropdown.showDataTipsプロパティにtrueを設定
	Listを継承しイベントリスナーにToolTipEvent.TOOL_TIP_CREATEイベントを追加したクラスを作成してdropdownFactoryプロパティに設定
	ItemRollOver､ItemRollOutイベントを駆使

と色々と試行錯誤してみたのですが､どれも上手くいってません｡
上手く実現出来た方がいれば是非教えてください｡

ToolTipManagerクラスにIToolTipインターフェイスの実装クラスを渡したら､
そのままツールチップとして表示してくれるメソッドが用意されていれば簡単だったのですが･･･


まとめ

結局､ComboBoxとの夢の共演は果たせなかったのですが､
このカスタムツールチップは色々な所で使える便利な機能だと思います。

最初から便利なコンポーネントが用意されているAIR/Flex環境ですが､
少しだけ工夫をすることで更に便利なものにすることが出来てしまいます。

今回は紹介出来ませんでしたが､
まだ他にもちょっとしたTipsのような形で紹介出来そうなことも発見しました｡

また次の機会にでも､
ちょっとした工夫を紹介出来たらと思います｡

使用したソフトウェア


    
        
        バージョン
    
    
      ...</description>
		<link>http://blog.eni.co.jp/tech/2009/06/air_flex_tooltip.html</link>
			</item>
	<item>
		<title>Seleniumの自動テストを止めることなく、Flexを手動操作する方法</title>
		<description>はじめまして。

プロダクト&#38;サービス事業部の笹山です。

今回は、SeleniumRCを用いてWebアプリケーションのテスト中に、Flex部分のみを手動操作し、
その後再び自動テストを継続させる方法について書きたいと思います。

有名なツールなのでみなさんご存知と思いますが、まずSeleniumRCとは、
「Webブラウザの操作を自動化させ、Webアプリケーションの画面表示や画面遷移のテストを行うツール」で
Webアプリケーションのテストには欠かせないツールです。

今回弊社では、easyFiLEXのテストをSeleniumRCを用いて行うことになりました。

easyFiLEXテストでSeleniumRCを使用する際の問題
弊社Tech Blog(05/18)記事にもあるように、easyFiLEXではFlexを採用しています。
easyFiLEXには、Wizard形式の画面があり、その一部画面にFlexが採用されています。

しかし、SeleniumRCは一般的なWebアプリケーションのテストを行うツールで、Flexには対応していません。
そのため、Flexが採用されているWizard形式の１画面がクリアできず、次の画面のテストができないのです。

ここをどう解決するか非常に悩みました。
FlashSelenium発見と挫折
まずは、Google先生に聞いてみました。

すると以下のサイトが検索に引っ掛かりました。

	「Selenium RCによるFlash用の機能テストの作成と実行」

FlashSeleniumというSeleniumRCとFlexを連携させるツールです。

「これで解決！（Flex部分のテストも自動化できる！）」と思いました。
意気揚揚と公開されているサンプルを動かしはじめましたが、サンプルすら動きませんでした。（動いた方は教えてください。）

	FlashSeleniumのサンプルFlash
	FlashSeleniumのサンプルテストコード

解決方法の発見
途方に暮れselenium-client-driverのJavaDocを眺めていた時、ふと目に入った文字が・・・。
com.thoughtworks.selenium.Wait
便利なクラスがselenium-client-driverに用意されていました。

「条件がtrueになるまで、指定時間待つ」というものです。
easyFiLEXのテストでは以下の手順で使用しました。

手順内の画面は、
Flexが採用されているWizard形式の１画面で、「ファイルのアップロード後、送信先を指定する画面」です。
送信先を指定しない限り、次の画面へ進むことができないようになっています。

	Flexが採用されている画面までは、SeleniumRCを用いてWizard形式画面の自動テストを行います。
	Flexが採用されている画面に遷移後、SeleniumRCで送信先を指定せずに「次へ」ボタンを押下させ、バリデーションエラーを発生させます。
バリデーションエラー：「送信先が選択されていません。1つ以上選択してください。」

[caption id="attachment_505" align="aligncenter" width="281" caption="easyFiLEX送信先設定画面におけるバリデーションエラー発生時の画面"][/caption]
	バリデーションエラーが画面上に表示されている間は、指定時間待機させます。（以下コード参照）
	待機中にFlex操作を手動で行い、バリデーションエラーが画面上から消えると、再び自動テストが始まります。

Selenium実行途中でWaitをかけるコード
new Wait() {
    public boolean until() {
        if(!selenium.isTextPresent("送信先が選択されていません。1つ以上選択してください。")) {
            return true;
        } else {
   ...</description>
		<link>http://blog.eni.co.jp/tech/2009/05/selenium_wait.html</link>
			</item>
	<item>
		<title>C++0xでの日付の書式付入出力の仕組み</title>
		<description>はじめまして。

プロダクト&#38;サービス事業部リーダーの青野です。

今日は少し古くマイナーな情報になりますが、
C++0xで追加される拡張マニピュレーターを使用した日付の書式付入出力[N2071](Apache C++ Standard Libraryから追加)の仕組み
について書こうと思います。

C++での開発経験がある人はjavaのDateFormatのように


(任意の書式の)日付文字列からDateオブジェクトの生成
Dateオブジェクトから(任意の書式の)日付文字列の生成


を、簡単に行いたいと、1度は悩んだことがあるのではないでしょうか。

Linux環境であれば、strptime(日付文字列 &#62; tm構造体)、strftime(tm構造体 &#62; 日付文字列)という便利なCの関数があり、
この関数をラップするだけでも簡単に汎用的な処理を実装することができますが、C++0xでは標準で行うことが可能になります。

    Working Draft, Standard for Programming Language C++ (pp.1097-1099)



現状のC++での日付の書式付出力
現状のC++では、time_putファセットクラスを使用した日付の書式付出力のみが可能ですが、以下に示すようにやや煩雑になります。

#include 
#include 
#include 

int main() {
    typedef std::ostreambuf_iterator iter_type;

    // tm構造体の作成
    std::tm tmb;
    tmb.tm_year = 109;
    tmb.tm_mon ...</description>
		<link>http://blog.eni.co.jp/tech/2009/05/cpp0x_date_extended_manipulators.html</link>
			</item>
	<item>
		<title>全文検索サーバ: これからSolrを始める人のためのApache Solr概要と便利な情報リスト集</title>
		<description>
このエントリーは、なるべく定期的に最新情報に更新するようにしています。

更新履歴

	2009/05/20　公開
	2009/05/23頃　色々調整
	2009/07/20　データ量/性能とハードウェアとSolrを始めるための情報リストに、本記事へのご指摘をいただいたブログ(ぼうずの日常的雑感様)の情報を追加。またSolrを始めるための情報リストにIT Proで始まった連載第4回　全文検索エンジン「Lucene/Solr」の用途と良さの情報を追加。
	2009/07/26　Solr勉強会で色々事例が出ていたようですので、実績/事例に情報を追記。
	2009/10/09　データ量/性能とハードウェアとスケールアウトの記述をより具体的にしました。




はじめまして。
株式会社イージーネット プロダクト&サービス事業部の久保です。

当社では、

	ネットワークフォレンジック アプライアンス製品で、メールアーカイブとしても使えるNetRAPTOR
	Adobe AIRによるデスクトップアプリケーションによってドラッグ&ドロップや右クリックから「送る」での一発送信機能に対応した、大容量ファイル送信システムのeasyFiLEX

などを開発しております。


今日は、当社で利用しているOSSの全文検索サーバアプリケーションであるApache Solrについてご紹介したいと思います。

GoogleでSolrを検索しても、日本語圏のコンテンツはまだまだ少ないようです。
当社がSolrを使い始めた昨年は現在よりもさらに少なく、結構苦労しました。
今回はやや雑多な内容となりますが、新しくSolrを使う際に必要と考えられる情報をまとめてみました。


本エントリーでは、Solr1.3を対象としています。
Solr1.3が現在の安定版で、Solr1.4-devが開発版となります。





目次


	Solrとは
		
			機能一覧
			実績/事例
			Solrを使ったシステムの開発方法
			おすすめする方
		
	
	データ量/性能とハードウェア
	マルチコア構成
	様々な検索
	スケールアウト
	検索と更新
	Solrを始めるための情報リスト
		
			全体像をつかむ
			Solr1.3について知る
			使ってみる
			開発中、常に参照する
			その他有用なサイト
		
	
	終わりに



Solrとは
Apache Solrは、OSSの全文検索のエンジンとして有名なApache Luceneをベースに、

	HTTPでの入出力(サーバアプリケーション化)
	管理Webアプリケーション
	キャッシュ機構

などの機能拡張を行ったJavaのWebサーバアプリケーションです。
単純に言うと、LuceneのHTTPラッパー＋拡張機能ということになります。
Javaのサーブレットアプリケーションなので、Tomcatなどのアプリケーションサーバに配置することになります。

サーバ側だけではなく、SolrJなどのSolrクライアントが揃っているのもポイントです。
IntegratingSolr - Solr Wikiにあるように、SolrクライアントはJava以外の実装(PHP,Ruby,Pythonなど)もあります。


Solrを使ったシステムの開発方法
Solrを用いたシステムの開発者は、以下のようなことを行うことになります。

	Solrサーバ側
	Tomcatなどのアプリケーションサーバ上へのSolrの配置、設定、スキーマ設計、チューニングなどを行います。
		基本的には、コーディングは不要です。
	
	Solrクライアント側
	Solrクライアントを使ったXML/HTTPでの操作を行います。
		Java,PHP,RubyなどにバインディングされたSolrクライアント実装を用い、Solrサーバを操作します。
		XMLではなくCSVを用いたり、HTTPではなくJDBC経由でRDBからデータを追加したり、といったこともできるようです。
	



おすすめする方
以下のような方には、様々な言語からHTTP/XMLで手軽に全文検索ができるSolrをおすすめします。


	Luceneを使いたいが、Luceneを直接触るのは大変そうだと考えている方
	Luceneを使いたいが、クライアントとしてJava以外の言語を使いたい方
	簡単に全文検索アプリケーションを使いたい方
	スケーラブルな全文検索アプリケーションを使いたい方



機能一覧
公式サイトの機能一覧で、機能の一覧が確認できます。
まず最初にここに目を通すことをおすすめします。

日本語のWebリソースとしては、InfoQの以下の記事で概要がつかめます。

	Apache Solr ～ Luceneベースの高スケーラブルなエンタープライズ検索サーバー(Ver1.2時点の記事)
	Apache Solr：Luceneをベースに構築された拡張性のあるクラスタ化検索サーバ(Ver1.3時点の記事)



実績/事例
PublicServers - Solr Wikiで、海外での実績一覧が確認できます。
国内では、以下のような事例が見つかります。

	リクルートにおける検索エンジンSolrの活用(PDF形式)
	Solrスゲェ!(ECナビ・ECナビラボ)(odp形式)


(2009/07/26追記)
また新しい実績や事例として、Solr勉強会で出ている各種事例が参考になりそうです。

	Solr勉強会の資料公開しました：マピオンラボ(セミナー／勉強会)
    ECナビ デベロッパー ネットワーク: Solr勉強会の資料を置きました.
	Solr勉強会に行ってきました[solr][ecnavi][mapion][recruit] - d.hatena.zeg.la
    Solr勉強会に行ってきました。 - 不可視点
    Solr勉強会行ってきた。 - public static void main
    0を1にする瞬間が難しい: Solr勉強会メモ



データ量/性能とハードウェア
ハードウェアやデータ内容やその他様々な要素が関わってきますので一概には言えませんが、当社で検証した際の感触では
特に念入りなチューニングをしなくても(※2)、Quad Core CPUと4GB以上のメモリとそれなりに高速なディスクがあれば、1台で少なくとも数百万件オーダーのデータ(※1)には対応できる※3
という感じになります。

※1　ここでは、30フィールドほどあるそれなりに大きめのデータのケースを想定しています。ぼうずの日常的雑感 - ...</description>
		<link>http://blog.eni.co.jp/tech/2009/05/apache_solr_13_overview_and_link.html</link>
			</item>
	<item>
		<title>AIR/Flex でドラッグ アンド ドロップ</title>
		<description>こんにちは。
プロダクト&#38;サービス事業部 リーダーの末田です。

初めての本格的な投稿なのですが、
今回はAdobe AIR/Flexでのドラッグ アンド ドロップについて書こうと思います。

弊社製品にeasyFiLEXというものがあるのですが、
そこで、ドラッグ アンド ドロップがしたいんだ！ という強い要望があり、
Adobe AIR/Flexの技術を利用して実現しました。
いまどきだと、Ajaxでも実現できるのですが、今回はFlexを採用しました。

AIRとFlexそしてブラウザの関係ですが、AIRはローカルマシン上の環境、
FlexはAIR上、もしくはWebブラウザ上のFlash Player(Plugin)で動作します。

Webブラウザ上  →　Flex
AIR          　→　Flex

AIRの上ではFlexではない、通常のHTMLとJavaScriptでも動作します。
Flexを利用すると、Webブラウザ上でもローカルマシン上のAIRでも、
同じ技術でリッチなインタフェースを実現でき、
さらに、最初からドラッグ アンド ドロップがサポートされています。

Flexでは、Flexコンポーネント間のドラッグ アンド ドロップが簡単に実現できます。
しかしeasyFiLEXは、ローカルマシン上にあるファイルをWebアプリであるeasyFiLEXにアップロードして、
他の人とファイルをやり取りする仕組みのアプリケーションです。
ですので、実現したかったのは、ローカルマシンにある(例えばデスクトップにある)ファイルを
ドラッグしてブラウザ上に持って行き、ドロップすると、そのファイルがアップロードされる、
という操作を実現したかったのです。



しかし、ブラウザ上のFlexでは、コンポーネント間のドラッグアンドドロップは簡単にできますが、
ローカルマシン上のオブジェクトからFlexコンポーネント、または逆、といった環境の場合実現できないことがわかりました。
（もしできるのであればぜひ教えてください！ ActiveXであれば実現できるようです）
ブラウザ上のFlexでのドラッグアンドドロップ動作関係



Flexコンポーネント
ローカルマシン上のオブジェクト


Flexコンポーネント
○
×


ローカルマシン上のオブジェクト
×
-


そこで、AIRの出番です。
ブラウザ上のFlexでは(おそらく)セキュリティ上の関係で、
ローカルマシン上にあるファイルにはアクセスできない仕様になっていると思われますが、
AIRはローカルマシンにインストールして利用するため、この制限がゆるくなっています。
なので、AIR上のFlexでは、Flexコンポーネントとローカルマシン上のオブジェクトの間でドラッグアンドドロップが可能です。
AIR上のFlexでのドラッグアンドドロップ動作関係



Flexコンポーネント
ローカルマシン上のオブジェクト


Flexコンポーネント
○
○


ローカルマシン上のオブジェクト
○
-


せっかくなので、ドラッグ アンド ドロップを実現するコードを紹介したいと思います。

※対象バージョン/環境
Adobe AIR 1.5.1 SDK
Adobe Flex 3.3.0 SDK

コード全体



  
    
  
  
  



イベントリスナーの設定
this.addEventListener(flash.events.NativeDragEvent.NATIVE_DRAG_ENTER, onDragEnter);
this.addEventListener(flash.events.NativeDragEvent.NATIVE_DRAG_DROP, onDragDrop);
まず、2つのイベントリスナーを設定します。
flash.events.NativeDragEvent.NATIVE_DRAG_ENTER が、ドラッグしてきてオブジェクトの境界内に入った時
flash.events.NativeDragEvent.NATIVE_DRAG_DROP ...</description>
		<link>http://blog.eni.co.jp/tech/2009/05/air_flex_draganddrop.html</link>
			</item>
</channel>
</rss>
