<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3944707682265914780</id><updated>2012-02-17T03:56:53.746+09:00</updated><category term='JDK5'/><category term='PlugIn'/><category term='書籍'/><category term='マネジメント'/><category term='REST'/><category term='Eclipse'/><category term='コロプラ'/><category term='Mac'/><category term='動画'/><category term='GAE'/><category term='JSTL'/><category term='遊び'/><category term='UML'/><category term='Java'/><category term='http'/><category term='エンコード'/><category term='買い物'/><category term='アーキテクチャ'/><category term='FireFox'/><title type='text'>日々是エロゲ～働きたくない～</title><subtitle type='html'>若かりし頃、仕事に夢や希望をもって努力していた頃がありました。
今は、そう。　全力をもって働きたくない。</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>36</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-5510520437650813643</id><published>2010-05-03T23:43:00.006+09:00</published><updated>2010-05-04T01:26:10.219+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GAE'/><title type='text'>GAE/J入門 第三回 ～Googleアカウントの使用～</title><content type='html'>GAEではGoogleアカウントにログインしているユーザは&lt;br /&gt;Googleアカウント情報を使ったサービスを提供する事ができます。&lt;br /&gt;今回はそのGoogleアカウントの使用方法を。&lt;br /&gt;例によって参照してるのは&lt;a href="https://docs.google.com/Doc?docid=0ASMc2pOcG0DXZGNnYnBzeGtfMTQ0Z3I3dmpjMm4&amp;hl=ja"&gt;こちら&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1.GoogleAccount情報の取得&lt;/span&gt;&lt;br /&gt;GoogleAccountの使用方法は非常に簡単で、UserServiceクラスを使えば&lt;br /&gt;ほとんどこのクラスからGoogleAccount情報を取得できます。&lt;br /&gt;作成方法も簡単。&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;UserService userService = UserServiceFactory.getUserService();&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;これだけ！&lt;br /&gt;このUserServiceクラスについては以前&lt;a href="http://gp400fb.blogspot.com/2010/03/userservice.html"&gt;こちら&lt;/a&gt;や&lt;a href="http://gp400fb.blogspot.com/2010/03/gae_26.html"&gt;こちら&lt;/a&gt;である程度書いたので&lt;br /&gt;割愛しますが、こんな簡単な方法でGoogleAccount情報を使う事ができます。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2.アクセス制限をかける&lt;/span&gt;&lt;br /&gt;次に、アクセス制限をかける方法です。&lt;br /&gt;JavaではFilterという物を使うとServletが呼び出される前にFilterの&lt;br /&gt;プログラムが実行されるらしいです。&lt;br /&gt;具体的には&lt;a href="http://mergedoc.sourceforge.jp/tomcat-servletapi-5-ja/javax/servlet/Filter.html"&gt;javax.servelt.Filter&lt;/a&gt;インタフェースを実装します。&lt;br /&gt;このインタフェースのdoFilterメソッドを実装する事で、権限を持たない&lt;br /&gt;ユーザの場合はTOPへリダイレクトさせたりすることができます。&lt;br /&gt;ただし勿論このFilterインタフェースを実装したクラスを作るだけでは&lt;br /&gt;ダメで、web.xmlにFilterの設定を行う必要があります。&lt;br /&gt;&lt;br /&gt;記述方法は今までのservlet等とほとんど同じです。まずFilter自体の記述を&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;＜filter＞&lt;br /&gt;　＜filter-name＞[Filterの名称]＜/filter-name＞&lt;br /&gt;　＜filter-class＞[実装したFilterクラスのクラスパス]＜/filter-class＞&lt;br /&gt;＜/filter＞&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;上記のように記述します。後は↑で定義したFilterのマッピングの定義を&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;＜filter-mapping＞&lt;br /&gt;　＜filter-name＞[適用したいFilterの名前]＜/filter-name＞&lt;br /&gt;　＜url-pattern＞[Filterが適用されるUrlパターン]＜/url-pattern＞&lt;br /&gt;　＜dispatcher＞[Filterが適用されるタイミング]＜/dispatcher＞&lt;br /&gt;＜/filter-mapping＞&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;上記のように定義します。filter-nameはそのまんま、url-patternもそのままですね。&lt;br /&gt;例えばhttp://localhost:8080/admin/配下へのアクセスをフィルタリングしたい場合&lt;br /&gt;このurl-patternは/admin/*となる訳です。&lt;br /&gt;最後にdispatcherという項目がありますが、ここは指定できる値が決まってます。&lt;br /&gt;具体的には以下の通りです。&lt;br /&gt;&lt;br /&gt;REQUEST URLがリクエストされた時&lt;br /&gt;FORWARD フォワードが行われた時&lt;br /&gt;INCLUDE インクルードが行われた時&lt;br /&gt;ERROR エラーページへ処理が移る時&lt;br /&gt;&lt;br /&gt;普通はREQUESTを使う事になると思われます。&lt;br /&gt;&lt;br /&gt;以上で簡単にアクセス制限を行う事が可能となります。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3.データをソートして取得する方法&lt;/span&gt;&lt;br /&gt;お次はDataStoreからデータをソートして取得する方法です。&lt;br /&gt;現時点でデータの取得は&lt;br /&gt;1.とあるクラスに対して永続化されているデータを全件取得する&lt;br /&gt;2.とあるクラスのidを指定して1件だけデータを取得する&lt;br /&gt;上記二通りの方法だけでした。これに加えて今度はデータをソートして&lt;br /&gt;取得する方法です。やり方は簡単。&lt;br /&gt;まずそもそもデータを全件取得する方法のおさらいから。&lt;br /&gt;&lt;br /&gt;1.取得したいクラスを指定して、Queryクラスを作る。&lt;br /&gt;　Query query = pm.newQuery(Post.class);　←pmはPersistenceManagerクラス&lt;br /&gt;2.Queryクラスのインスタンスのexecuteメソッドを実行する&lt;br /&gt;　List&lt;Post&gt; list = (List&lt;Post&gt;) query.execute();&lt;br /&gt;&lt;br /&gt;こんな感じでした。ソートを行う場合はこの1.と2.の間でsetOrderingメソッドを&lt;br /&gt;実行します。例えば降順にしたかったら&lt;br /&gt;&lt;br /&gt;　query.setOrdering("date desc");&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;こんな一行を挟めばＯＫです。&lt;br /&gt;…しかし思いっきりSQLを直書きしている感じなんですが…(´・ω・`)&lt;br /&gt;項目名といいて降順・昇順といい・・・もっと綺麗に書く方法があるのだろか？&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;という訳で今回は以上で終了です。まとめると&lt;br /&gt;・GoogleAccount情報を取得するにはUserServiceクラスを使用する&lt;br /&gt;・アクセス制限を行う方法の一つにFilterクラスという物がある&lt;br /&gt;・データ取得におけるソートの方法&lt;br /&gt;ですね。&lt;br /&gt;さー次はなんだろか。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-5510520437650813643?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/5510520437650813643/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=5510520437650813643' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/5510520437650813643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/5510520437650813643'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2010/04/gaej-google.html' title='GAE/J入門 第三回 ～Googleアカウントの使用～'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-7264537761318157656</id><published>2010-04-23T23:03:00.000+09:00</published><updated>2010-04-23T23:03:00.340+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GAE'/><title type='text'>GAE/J入門 第二回 ～データの読み込み・更新～</title><content type='html'>前回に引き続きGAE/Jです。&lt;br /&gt;今日は&lt;a href="https://docs.google.com/Doc?docid=0ASMc2pOcG0DXZGNnYnBzeGtfMTQzY3B3ZGZrZnc&amp;hl=ja"&gt;こちら(Chapter3)&lt;/a&gt;を参考にして読み込みと更新にチャレンジします。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1.特定のクラス情報を全て取得&lt;/span&gt;&lt;br /&gt;といっても取得したいクラスを全件取ってくるだけなら非常に簡単。&lt;br /&gt;&lt;br /&gt;まずはQueryクラスを、取得したいクラスを指定してインスタンス化します。&lt;br /&gt;例えば前回の例を引き続き使って、Postクラスを全件取得する場合はまず、&lt;br /&gt;&lt;br /&gt;Query query = pm.newQuery(Post.class);&lt;br /&gt;&lt;br /&gt;こうなる。勿論pmはPersistenceManagerね。&lt;br /&gt;で、後はこのqueryを実行するのみ。実行はそのまんま&lt;br /&gt;&lt;br /&gt;query.execute();&lt;br /&gt;&lt;br /&gt;で実行できます。ただexecuteメソッドはObjectを返すので&lt;br /&gt;これはキャストしないといけないですね。&lt;br /&gt;&lt;br /&gt;List&lt;Post&gt; list = (List&lt;Post&gt;) query.execute();&lt;br /&gt;&lt;br /&gt;こうかな？&lt;br /&gt;（未検査のキャストになるためこれは警告が出ます。気持ち悪い…&lt;br /&gt;　これは今後解決されるのでしょうか？）&lt;br /&gt;&lt;br /&gt;あ、後わすれがちですがPersistenceManagerクラスからQueryのインスタンスを&lt;br /&gt;取得するタイミング、またその後Queryのexecuteメソッドを実行するタイミングで&lt;br /&gt;各々try-catch節で囲む必要があります。またqueryはcloseAllメソッドで、&lt;br /&gt;pmはcloseメソッドで各々finally節の中でちゃんと閉じてあげましょう。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2.特定のクラスを、IDの値を指定して取得&lt;/span&gt;&lt;br /&gt;今度は特定のクラスに対して、idの値（永続化が行われるクラスは必ずidを持つ）を&lt;br /&gt;指定して取得する方法です。こちらは&lt;br /&gt;PersistenceManagerのgetObjectById()メソッドを使います。&lt;br /&gt;第一引数がクラス、第二引数がIDの値という事で・・・&lt;br /&gt;&lt;br /&gt;getObjectById(Class&lt;T&gt; arg0, Long arg1);&lt;br /&gt;&lt;br /&gt;こんな感じですね。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3.データの更新&lt;/span&gt;&lt;br /&gt;今度は永続したデータの更新なんですが、これが割と簡単。&lt;br /&gt;2.で取得したクラスに対して値を再度セットしたのちに&lt;br /&gt;新規登録の時と同じように永続化を行うだけ。具体的には&lt;br /&gt;PersistenceManagerオブジェクトのmakePersistentメソッドを&lt;br /&gt;実行するだけ。これで更新できます。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3章の内容として後JSPの使い方ってのもあったんですがこれは&lt;br /&gt;GAEの本質からちょっとずれるので今回はパスします。&lt;br /&gt;&lt;br /&gt;これで現在GAEを使って&lt;br /&gt;&lt;br /&gt;1.データの登録（RDBのInsert）&lt;br /&gt;2.データの取得（RDBのSelect・・といっても主キー指定と全件どちらか）&lt;br /&gt;3.データの更新（RDBのupdate）&lt;br /&gt;&lt;br /&gt;までできるようになった！(｀･ω･´)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-7264537761318157656?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/7264537761318157656/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=7264537761318157656' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/7264537761318157656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/7264537761318157656'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2010/04/gaej_13.html' title='GAE/J入門 第二回 ～データの読み込み・更新～'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-4280391305343120114</id><published>2010-04-20T17:36:00.006+09:00</published><updated>2010-04-23T21:29:11.837+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='書籍'/><title type='text'>さぁ、才能に目覚めよう</title><content type='html'>***読書期間　2010/04/20 ～ 2010/04/22***&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=bloglived09cc-22&amp;o=9&amp;p=8&amp;l=as1&amp;m=amazon&amp;f=ifr&amp;md=1X69VDGQCMF7Z30FM082&amp;asins=4532149479" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;いいかげんこのエンジニアという職種が自分に向いているのか&lt;br /&gt;わからなくなった時、そしてエンジニアを続ける・続けないに&lt;br /&gt;関わらず自分にどんな仕事が向いているのか悩んでいる時に&lt;br /&gt;見つけたのがこの本でした。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;勝間さんがやたらと勧めている事で有名な本ですね。&lt;br /&gt;正直この本を買った理由としては、本の中身が読みたい訳ではなく&lt;br /&gt;この本を購入する事で一度受ける事ができるStrengthFinderという&lt;br /&gt;物に興味があったからです。&lt;br /&gt;いざ読んでみると（StrengthFinder自体も勿論興味深かったですが）才能に&lt;br /&gt;目覚める、という内容よりもマネジメントよりの内容だった気がします。&lt;br /&gt;&lt;br /&gt;この本では、今日ほとんどの企業は以下の二点の誤った認識を&lt;br /&gt;持っていると書いています。&lt;br /&gt;&lt;br /&gt;1.人は誰でも全ての事において能力を発揮できる&lt;br /&gt;2.一番伸ばせる部分はその人の一番弱い部分である&lt;br /&gt;&lt;br /&gt;しかし、実際にはこの認識が真逆であり、&lt;br /&gt;&lt;br /&gt;1.人の才能はその人独自の物で、未来永劫変わる事はない&lt;br /&gt;2.一番成長が期待できるのは本人が持っている才能&lt;br /&gt;&lt;br /&gt;といった事を主張しています。結局この本のほぼ全ては&lt;br /&gt;上記の事を細かく説明しているだけだった気がします。&lt;br /&gt;ただ、"だけ"と言っても才能の見つけ方・伸ばし方・適材適所に&lt;br /&gt;配置するための方法等事細かに説明が続きます。&lt;br /&gt;人事や人材育成に金をかけていない会社は勿論、金をかけているのに&lt;br /&gt;なかなか成果が上がらない、そもそも数値として対費用効果が&lt;br /&gt;分からないといった会社に是非読んでもらいたい所です。&lt;br /&gt;&lt;br /&gt;また、個人的に共感した点として、今の社会では弱みを表す言葉は&lt;br /&gt;非常に多彩なのに比べ、強みを表す言葉は非常に語彙が乏しいといった&lt;br /&gt;記述がありました。&lt;br /&gt;これには自分の就職活動を重ねあわせて非常に納得がいきました。&lt;br /&gt;就職活動中、面接用に自己分析を行った時に自分の長所って奴を並べてみると&lt;br /&gt;&lt;br /&gt;・明るい&lt;br /&gt;・時間を守る&lt;br /&gt;・責任感がある&lt;br /&gt;&lt;br /&gt;のような物ばかり。どれも&lt;br /&gt;『暗い人なんてだれが雇いたいんですか？』&lt;br /&gt;『時間を守らない社会人なんてその時点で雇用対象外ですよね？』&lt;br /&gt;『責任感が無い人と仕事したくありません。』&lt;br /&gt;なんてバッサリ切られても文句言えない感じがします。&lt;br /&gt;&lt;br /&gt;その点自分の短所はそれはそれはﾎﾞﾛﾎﾞﾛ出てくる事出てくる事。&lt;br /&gt;当時結局自分は、自分・友人に考えて貰った長所は一旦捨てておき、&lt;br /&gt;"短所としてあがった事を別の視点から考え、長所に変える。"といった&lt;br /&gt;作業をひたすらやっていました。&lt;br /&gt;この本を読んだ時、&lt;br /&gt;『あぁ、自分の長所も短所もあくまで"自分"という個性の一部であり、&lt;br /&gt;　それを長所にするか短所にするかは自分次第、環境次第なんだな』&lt;br /&gt;と感じました。&lt;br /&gt;&lt;br /&gt;総評として、1600円でStrengthFinderを1回受けられる、自分の短所に&lt;br /&gt;嫌気がさしている人は思考を切り替える事ができるかも、自分・部下の&lt;br /&gt;マネジメントを行うという点で一読してみると面白いと思います。&lt;br /&gt;&lt;br /&gt;最後に自分の才能は以下の五つでした。&lt;br /&gt;&lt;br /&gt;・調和性&lt;br /&gt;・回復志向&lt;br /&gt;・アレンジ&lt;br /&gt;・共感&lt;br /&gt;・コミュニケーション&lt;br /&gt;&lt;br /&gt;やっぱり、と思う物からそうかぁ？　と思う物まで・・・&lt;br /&gt;さて、俺はこの情報を元に今後自分のキャリアをどう&lt;br /&gt;マネジメントしていくべきなのでしょうか・・・？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-4280391305343120114?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/4280391305343120114/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=4280391305343120114' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/4280391305343120114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/4280391305343120114'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2010/04/blog-post_20.html' title='さぁ、才能に目覚めよう'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-3631463616140982023</id><published>2010-04-15T20:40:00.004+09:00</published><updated>2010-04-15T22:19:39.558+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='コロプラ'/><category scheme='http://www.blogger.com/atom/ns#' term='遊び'/><title type='text'>コロニーな生活</title><content type='html'>流行に乗り遅れてはいますが、&lt;br /&gt;&lt;br /&gt;&lt;a href="http://pc.colopl.jp/pages/wl/welcome.html"&gt;コロプラ&lt;/a&gt;始めました。&lt;br /&gt;&lt;br /&gt;さて、はまるかめんどくて放置するか・・・。&lt;br /&gt;&lt;br /&gt;しかしこういう商売よく考えつくよなぁ。&lt;br /&gt;マジ頭いいと思う。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-3631463616140982023?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/3631463616140982023/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=3631463616140982023' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/3631463616140982023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/3631463616140982023'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2010/04/blog-post.html' title='コロニーな生活'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-5334427111742744877</id><published>2010-04-14T00:20:00.003+09:00</published><updated>2010-04-14T09:49:24.497+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='動画'/><category scheme='http://www.blogger.com/atom/ns#' term='エンコード'/><title type='text'>ビデオカメラのエンコード（Canon iVIS HG10）</title><content type='html'>突然ですが一年ぐらい前に友人からビデオカメラを買いました。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://cweb.canon.jp/e-support/qa/1055/app/servlet/qadoc?qa=048327"&gt;こんなの。&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;で、まぁビデオカメラとしての機能はいいんですが……&lt;br /&gt;最近のビデオカメラって、PCに取り込むというよりもDVDやBDへ焼いて&lt;br /&gt;再生する事を念頭に置いてるのかなんなのか、AVCHDなんですよね…&lt;br /&gt;mpeg等に変換するのにとても四苦八苦したので備忘録として&lt;br /&gt;ここに現在使っている変換方法を書いておきます。&lt;br /&gt;&lt;br /&gt;1.M2TSからmpeg2へ&lt;br /&gt;まず、付属のCorelのアプリで動画を取り込むとM2TS形式で保存されます。&lt;br /&gt;これをmpeg2に保存するために使っているツールがFree HD Converterです。&lt;br /&gt;このツールを使ってまずM2TSファイルをMPEGに変換します。&lt;br /&gt;他にもaviやFLVも対応してるようだ。&lt;br /&gt;&lt;br /&gt;2.欲しい部分のみをカット&lt;br /&gt;で、ビデオカメラって大体どうでもいい無駄な時間が入っている物。&lt;br /&gt;そこで編集が必要な訳ですが、カットにはFree Video Dubというツールを&lt;br /&gt;使ってます。本当にカットしかできないみたいなんですが再エンコを&lt;br /&gt;行わないために非常に軽いです。便利。&lt;br /&gt;&lt;br /&gt;以上の方法で画質を落としてHDDに保存しています。&lt;br /&gt;面倒…。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-5334427111742744877?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/5334427111742744877/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=5334427111742744877' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/5334427111742744877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/5334427111742744877'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2010/04/canon-ivis-hg10.html' title='ビデオカメラのエンコード（Canon iVIS HG10）'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-4644185607016751633</id><published>2010-04-09T21:30:00.011+09:00</published><updated>2010-04-14T00:20:36.902+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GAE'/><title type='text'>GAE/J入門 第一回 ～データストアへの書き込み～</title><content type='html'>さてさて、やると言ってからだいぶ時間が&lt;br /&gt;経ってしまいましたが&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/appengine-cl/"&gt;こちら&lt;/a&gt;のGAE/J入門に手を&lt;br /&gt;出してみるとします。&lt;br /&gt;こちらの入門の第一回は環境の構築なんですが書いてある通りに進めれば&lt;br /&gt;特に問題なくできると思いますのでスルー。&lt;br /&gt;第二回のデータストアからという事で。&lt;br /&gt;&lt;br /&gt;1.データの永続化を行うクラスの作成&lt;br /&gt;データストアでは今までのRDBのように、SQLを発行して（全略）&lt;br /&gt;といったようにデータの保存（永続化）を行う訳ではないようです。&lt;br /&gt;JavaではJDOを利用する事で、とあるクラスのインスタンスが保持&lt;br /&gt;しているデータをそのままデータストアに格納するらしい。&lt;br /&gt;&lt;br /&gt;既にこの時点で割と意味不明だったんですが、途中で「そもそも&lt;br /&gt;RDBという物を前提に考えてしまうのが恐らく間違い」と思い&lt;br /&gt;とにかく言われた通りコードを書いてみる事にしました。&lt;br /&gt;&lt;br /&gt;という訳でクラスをデータストアに保存するための条件は&lt;br /&gt;以下の3点です。&lt;br /&gt;&lt;br /&gt;・クラスに@PersistenceCapable(identifyType = IdentifyType.APPLICATION)アノテーションをつける&lt;br /&gt;・メンバ変数にLong型のidを定義し、[@PrimaryKey] アノテーションと[@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)] アノテーションをつける&lt;br /&gt;・永続化したいメンバ変数に@Persistenceアノテーションをつける&lt;br /&gt;&lt;br /&gt;…この時点で、なんとなくLong型のIDって奴がKey-ValueのKeyの役割を果たしそうな&lt;br /&gt;気がしますね。&lt;br /&gt;&lt;br /&gt;2.クラスの永続化…の準備&lt;br /&gt;次は上記のようにして作ったクラスを永続化する方法です。&lt;br /&gt;永続化を行う際はPersistenceManagerクラスのmakePersistentメソッドを&lt;br /&gt;使います。ただし、このPersistenceManagerクラスを生成するためには&lt;br /&gt;PersistenceMangerFactoryクラスが必要なようです。&lt;br /&gt;このPersistenceMangerFactoryクラスは永続化に必要な設定ファイル&lt;br /&gt;（jdconfig.xmlファイルが作成したプロジェクトのsrc配下に作成される）&lt;br /&gt;の情報を読み込むのですが、このxmlのパラーメータの名前が&lt;br /&gt;"transactions-optional"なので、この文字列を指定します。&lt;br /&gt;具体的には&lt;br /&gt;&lt;br /&gt;　PersistenceManagerFactory pmfInstance = JDOHelper&lt;br /&gt;       .getPersistenceManagerFactory("transactions-optional");&lt;br /&gt;&lt;br /&gt;こんな感じになります。ただ、データの永続化を行う度にこの&lt;br /&gt;文字列を入力するのはバグの元になる上、この処理で生成される&lt;br /&gt;ファクトリクラスは毎回同じ物になるのでstaticな変数として&lt;br /&gt;定義します。以上によりPersistenceMangerFactoryを&lt;br /&gt;生成するクラスは以下の通り。&lt;br /&gt;&lt;br /&gt;public class PMF {&lt;br /&gt;　　private static final PersistenceManagerFactory pmfInstance = JDOHelper&lt;br /&gt;　　　 .getPersistenceManagerFactory("transactions-optional");&lt;br /&gt;&lt;br /&gt;　　private PMF() {&lt;br /&gt;　　}&lt;br /&gt;&lt;br /&gt;　　public static PersistenceManagerFactory get() {&lt;br /&gt;　　　　return pmfInstance;&lt;br /&gt;　　}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;とりあえず現状は、データの永続化を行う際は必ず上記のような&lt;br /&gt;ファクトリクラスを作る必要があるんだな、と覚えておくことにします。&lt;br /&gt;&lt;br /&gt;3.クラスの永続化&lt;br /&gt;1.と2.のステップをこなしていれば後は簡単。&lt;br /&gt;PersistenceManagerクラスのインスタンスを生成し、makePersistent&lt;br /&gt;メソッドに永続化対象のクラスを放り込むだけ。具体的には。&lt;br /&gt;&lt;br /&gt;//PersistenceManagerクラスの生成&lt;br /&gt;PersistenceManager pm = PMF.get().getPersistenceManager();&lt;br /&gt;//永続化&lt;br /&gt;pm.makePersistent([対象のインスタンス]);&lt;br /&gt;&lt;br /&gt;これだけ。ただmakePersistentを実行する際には、永続化&lt;br /&gt;終了後に必ずPersistenceManagerを閉じる処理が必要なので&lt;br /&gt;実際には以下のようにして永続化を行う必要があります。&lt;br /&gt;&lt;br /&gt;try {&lt;br /&gt;　　pm.makePersistent(e);&lt;br /&gt;} finally {&lt;br /&gt;　　pm.close();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;↑こういうコードはRDBの頃から腐るほど書いてる人が&lt;br /&gt;多いと思うのでまぁ問題ないなと思います。&lt;br /&gt;ってだからRDBと比較して考えちゃダメだーー(´・ω・`)&lt;br /&gt;&lt;br /&gt;後はテキストの通り、作ったServletに対してPOSTするhtmlを&lt;br /&gt;書いてTitleとContentに何か入力してPOSTしてみる。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_lNocX9p7OjE/S8RjA6uu2nI/AAAAAAAAAK4/PHPYgNX002s/s1600/POST.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 229px;" src="http://4.bp.blogspot.com/_lNocX9p7OjE/S8RjA6uu2nI/AAAAAAAAAK4/PHPYgNX002s/s320/POST.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5459597515696298610" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;こんな感じ。&lt;br /&gt;試しにタイトルには"Testタイトル1"、Contentに"内容abc123ｂｃｄ４５６"と&lt;br /&gt;入力してPOSTしてみました。その後GAE管理画面からDataを見てみると・・&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_lNocX9p7OjE/S8RjujAzCUI/AAAAAAAAALA/UF51Lh9J8pM/s1600/result.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 18px;" src="http://4.bp.blogspot.com/_lNocX9p7OjE/S8RjujAzCUI/AAAAAAAAALA/UF51Lh9J8pM/s320/result.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5459598299603601730" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ちゃんと登録されている！&lt;br /&gt;という訳でデータの永続化に成功しました。&lt;br /&gt;今後これをどう使っていくかはまた今後という事で。&lt;br /&gt;&lt;br /&gt;とりあえず今日の復習。&lt;br /&gt;&lt;br /&gt;1.データの永続化を行いたいクラスは、決められた約束を守らなければならない。&lt;br /&gt;・クラスに@PersistenceCapable(identifyType = IdentifyType.APPLICATION)アノテーションをつける&lt;br /&gt;・メンバ変数にLong型のidを定義し、[@PrimaryKey] アノテーションと[@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)] アノテーションをつける&lt;br /&gt;・永続化したいメンバ変数に@Persistenceアノテーションをつける&lt;br /&gt;2.PersistenceManagerクラスを作る必要がある。（staticなファクトリクラスが便利）&lt;br /&gt;3.後はPersistenceManagerクラスを用いて永続化対象クラスのインスタンスを永続化。&lt;br /&gt;&lt;br /&gt;こんな所ですかね？&lt;br /&gt;まともなアプリが作れるようになるのは遠い・・・&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-4644185607016751633?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/4644185607016751633/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=4644185607016751633' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/4644185607016751633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/4644185607016751633'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2010/04/gaej.html' title='GAE/J入門 第一回 ～データストアへの書き込み～'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_lNocX9p7OjE/S8RjA6uu2nI/AAAAAAAAAK4/PHPYgNX002s/s72-c/POST.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-1678738207328954585</id><published>2010-03-31T18:50:00.003+09:00</published><updated>2010-03-31T18:52:53.221+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GAE'/><title type='text'>GAE/J入門！</title><content type='html'>&lt;a href="http://temping-amagramer.blogspot.com/2010/03/google-app-enginegoogle.html"&gt;maito&lt;/a&gt;さんの記事で面白そうな物が&lt;br /&gt;紹介されていたので備忘録にペタリ。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://googlejapan.blogspot.com/2010/03/google-app-engine.html"&gt;Google App Engine をはじめてみよう&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;これにそって第一回から（正確には一回は準備編みたいなので二回からかな？）&lt;br /&gt;勉強しなおしてみようかと思います。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-1678738207328954585?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/1678738207328954585/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=1678738207328954585' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/1678738207328954585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/1678738207328954585'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2010/03/gaej.html' title='GAE/J入門！'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-4002204860214923927</id><published>2010-03-26T10:17:00.008+09:00</published><updated>2010-03-27T18:20:12.091+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GAE'/><title type='text'>GAE上でのログイン・ログアウト周り</title><content type='html'>&lt;a href="http://gp400fb.blogspot.com/2010/03/userservice.html"&gt;前回&lt;/a&gt;の続き？&lt;br /&gt;&lt;br /&gt;GAEでGoogleのユーザサービスを使うには前回の記事のようにUserServiceオブジェクトを&lt;br /&gt;使ってゴリゴリします。このUserServiceオブジェクトから、ログイン・ログアウトを&lt;br /&gt;実行する画面のURLを取得する事ができます。以下にJavaDocの引用を。&lt;br /&gt;&lt;br /&gt;・&lt;a href="http://code.google.com/intl/ja/appengine/docs/java/javadoc/"&gt;ログイン&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;createLoginURL&lt;br /&gt;&lt;br /&gt;java.lang.String createLoginURL(java.lang.String destinationURL)&lt;br /&gt;ログイン ページをユーザーに表示する場合に使用できる URL を返します。&lt;br /&gt;パラメータ:&lt;br /&gt;destinationURL - ログインしたユーザーをリダイレクトする場合。&lt;br /&gt;戻り値:&lt;br /&gt;ログイン プロンプトを表示する URL。&lt;br /&gt;スローする値:&lt;br /&gt;java.lang.IllegalArgumentException - destinationURL が大きすぎる場合。&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;・&lt;a href="http://code.google.com/intl/ja/appengine/docs/java/javadoc/"&gt;ログアウト&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;createLogoutURL&lt;br /&gt;&lt;br /&gt;java.lang.String createLogoutURL(java.lang.String destinationURL)&lt;br /&gt;現在のユーザーがこのアプリケーションからログアウトする場合に使用できる URL を返します。&lt;br /&gt;パラメータ:&lt;br /&gt;destinationURL - ログアウトしたユーザーをリダイレクトする場合。&lt;br /&gt;戻り値:&lt;br /&gt;ユーザーがログアウトする URL。&lt;br /&gt;スローする値:&lt;br /&gt;java.lang.IllegalArgumentException - destinationURL が大きすぎる場合。&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;上記のメソッドを使用する事で簡単にログイン・ログアウト画面に遷移する事が&lt;br /&gt;可能です。便利！という訳で実際に使ってみました。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;■ログイン&lt;br /&gt;前回のポストと全く同じですが、ServletのdoGetメソッドに以下のようなコードを用意します。&lt;br /&gt;&lt;br /&gt;UserService userService = UserServiceFactory.getUserService();&lt;br /&gt;User user = userService.getCurrentUser();&lt;br /&gt;&lt;br /&gt;if (user != null) {&lt;br /&gt;　resp.setContentType("text/plain");&lt;br /&gt;　resp.getWriter().println("Hello, " + user.getNickname());&lt;br /&gt;&lt;br /&gt;} else {&lt;br /&gt;　resp.sendRedirect(userService.createLoginURL(req.getRequestURI()));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;これでログイン時はGoogleアカウントのニックネームが表示され、未ログイン時は&lt;br /&gt;ログイン画面が表示されるはずです。早速アクセスしてみると…&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_lNocX9p7OjE/S6wP9dEAZHI/AAAAAAAAAIg/O90nbUWEghQ/s1600/gae_login.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 169px;" src="http://4.bp.blogspot.com/_lNocX9p7OjE/S6wP9dEAZHI/AAAAAAAAAIg/O90nbUWEghQ/s320/gae_login.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5452750797286696050" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;表示されました。特に何も用意せず、かえってきた値に遷移すればログインできるっていうのは&lt;br /&gt;便利ですね。ただ便利な反面、GAEでGoogleアカウントにログインする画面はこの画面固定って&lt;br /&gt;事なんでしょうかね。デザインいじれないのが逆に痛いかも。&lt;br /&gt;&lt;br /&gt;■ログアウト&lt;br /&gt;今度は先程のコードをこんなふうに変更してみました。&lt;br /&gt;&lt;br /&gt;UserService userService = UserServiceFactory.getUserService();&lt;br /&gt;User user = userService.getCurrentUser();&lt;br /&gt;&lt;br /&gt;if (user != null) {&lt;br /&gt;　//resp.setContentType("text/plain");&lt;br /&gt;　//resp.getWriter().println("Hello, " + user.getNickname());&lt;br /&gt;　resp.setContentType("text/html");&lt;br /&gt;　resp.getWriter().println("You can ＜a href=" + userService.createLogoutURL(req.getRequestURI()) +"＞Sign out＜/a＞");&lt;br /&gt;} else {&lt;br /&gt;　resp.sendRedirect(userService.createLoginURL(req.getRequestURI()));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;これにより、まず最初は先程と同じようにログイン画面が表示されます。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_lNocX9p7OjE/S6wP9dEAZHI/AAAAAAAAAIg/O90nbUWEghQ/s1600/gae_login.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 169px;" src="http://4.bp.blogspot.com/_lNocX9p7OjE/S6wP9dEAZHI/AAAAAAAAAIg/O90nbUWEghQ/s320/gae_login.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5452750797286696050" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ここでログインボタンを押すと・・・&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_lNocX9p7OjE/S6wXZeNEwjI/AAAAAAAAAIo/lj4e0oAxfnc/s1600/gae_logout.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 184px; height: 55px;" src="http://4.bp.blogspot.com/_lNocX9p7OjE/S6wXZeNEwjI/AAAAAAAAAIo/lj4e0oAxfnc/s320/gae_logout.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5452758975210897970" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ログアウトのリンクが表示され、それをクリックすると・・・&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_lNocX9p7OjE/S6wP9dEAZHI/AAAAAAAAAIg/O90nbUWEghQ/s1600/gae_login.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 169px;" src="http://4.bp.blogspot.com/_lNocX9p7OjE/S6wP9dEAZHI/AAAAAAAAAIg/O90nbUWEghQ/s320/gae_login.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5452750797286696050" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;戻ってきました。無事ログアウト完了。ここで一つ、ログインログアウトともに&lt;br /&gt;メソッドの引数にStringがありましたよね？&lt;br /&gt;&lt;br /&gt;&gt;&gt;java.lang.String createLoginURL(java.lang.String destinationURL)&lt;br /&gt;&gt;&gt;java.lang.String createLogoutURL(java.lang.String destinationURL)&lt;br /&gt;このパラメータの文字列に渡す値ですが、JavaDocによるとログイン・ログアウト&lt;br /&gt;完了後にリダイレクトするアドレスのようです。&lt;br /&gt;例えば、ショピングモール系であればログイン完了後に当初見ていた商品のページに&lt;br /&gt;遷移させる、または個人の管理ページに遷移させる・・・&lt;br /&gt;ログアウト完了後にログアウト確認画面に遷移、またはトップページに遷移させる・・・&lt;br /&gt;といった使い方ができるみたいですね。&lt;br /&gt;今回はテストのためにリクエストのURLをそのまま返すようにコーディングしてあります。&lt;br /&gt;&lt;br /&gt;Googleのユーザ情報の使い方はだいたいわかったのでそろそろデータストアの&lt;br /&gt;勉強に入りたい所です。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-4002204860214923927?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/4002204860214923927/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=4002204860214923927' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/4002204860214923927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/4002204860214923927'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2010/03/gae_26.html' title='GAE上でのログイン・ログアウト周り'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_lNocX9p7OjE/S6wP9dEAZHI/AAAAAAAAAIg/O90nbUWEghQ/s72-c/gae_login.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-3773895379241992361</id><published>2010-03-25T20:35:00.002+09:00</published><updated>2010-03-25T21:19:41.845+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GAE'/><title type='text'>UserServiceクラスの作り方</title><content type='html'>GAEにてGoogleのログイン関係の操作を行う際に、&lt;br /&gt;UserServiceインタフェースを使用します。&lt;br /&gt;例えばGoogleアカウントのニックネームを使用する場合は、&lt;br /&gt;&lt;br /&gt;UserService userService = UserServiceFactory.getUserService();&lt;br /&gt;User user = userService.getCurrentUser();&lt;br /&gt;&lt;br /&gt;if (user != null) {&lt;br /&gt;　resp.setContentType("text/plain");&lt;br /&gt;　resp.getWriter().println("Hello, " + user.getNickname());&lt;br /&gt;&lt;br /&gt;} else {&lt;br /&gt;　resp.sendRedirect(userService.createLoginURL(req.getRequestURI()));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;こんな感じで記述します。まぁGoogleのGAEスタートアップの&lt;br /&gt;コードそのまんまなんですが。&lt;br /&gt;で、ちょっと気になったのがここ。&lt;br /&gt;&lt;br /&gt;&gt;&gt;UserServiceFactory.getUserService();&lt;br /&gt;&lt;br /&gt;ファクトリクラス使ってオブジェクトを生成してるよう。&lt;br /&gt;という事は何らかの条件によって生成されるUserServiceの&lt;br /&gt;実装クラスが変わるのか・・・？&lt;br /&gt;&lt;br /&gt;なんとなく気になったので調べてみました。&lt;br /&gt;早速appengine-api-1.0-sdk-1.3.1.jarを解凍して&lt;br /&gt;UserServiceFactory.classをJADで逆コンパイルした結果……！&lt;br /&gt;&lt;br /&gt;return new UserServiceImpl();&lt;br /&gt;&lt;br /&gt;実装クラスをnewしてるだけだったーー！&lt;br /&gt;…という訳で特に条件分岐とかはしていませんでした。&lt;br /&gt;まぁいつでも切り替えられるようにという意味では&lt;br /&gt;確かにこういう作りにしておくのが安牌なのでしょうね。&lt;br /&gt;勉強になります。&lt;br /&gt;&lt;br /&gt;無駄に気になった疑問は解消されたので、&lt;br /&gt;今度はログインURL周りについてかこうと思います。&lt;br /&gt;&lt;br /&gt;が、そのまえに仕事に戻ります。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-3773895379241992361?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/3773895379241992361/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=3773895379241992361' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/3773895379241992361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/3773895379241992361'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2010/03/userservice.html' title='UserServiceクラスの作り方'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-1641657732156367121</id><published>2010-03-23T19:40:00.004+09:00</published><updated>2010-03-24T13:05:46.299+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GAE'/><title type='text'>GAEでアプリを削除するには？</title><content type='html'>GAEのサンプルプログラムを作成しながら勉強してて&lt;br /&gt;いざデプロイ！アカウントも作成済！&lt;br /&gt;&lt;br /&gt;…と思った時にふと疑問。GAEってアプリが10個しか&lt;br /&gt;登録できませんよね？&lt;br /&gt;登録したアプリ削除したくなったらどうするん？&lt;br /&gt;&lt;br /&gt;という訳でまずは管理画面を開いてみると・・・&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_lNocX9p7OjE/S6iczpvliHI/AAAAAAAAAIQ/a_5C5xNZLZo/s1600-h/GAE%E7%AE%A1%E7%90%86.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 252px;" src="http://2.bp.blogspot.com/_lNocX9p7OjE/S6iczpvliHI/AAAAAAAAAIQ/a_5C5xNZLZo/s320/GAE%E7%AE%A1%E7%90%86.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5451779760124692594" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;こんな感じ。英語。無理。はい戻るボタンぽちっ。&lt;br /&gt;&lt;br /&gt;とはいえ削除できないのも困り物ですので早速Google先生に聞いてみた所&lt;br /&gt;一番上に即回答が。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://d.hatena.ne.jp/snaka72/20091015/1255579654"&gt;GAEアプリの削除方法&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;タイトルもそのものズバリでした。&lt;br /&gt;詳細はリンク先の記事をみて頂くとして、ザッとかいつまんで説明すると&lt;br /&gt;&lt;br /&gt;1.管理画面から削除するアプリのページを開く&lt;br /&gt;2.AdministrationのApplication Settingsをクリック&lt;br /&gt;3.Disable or Delete Applicationのボタンをクリック&lt;br /&gt;&lt;br /&gt;後はしつこく削除するか確認されるのでﾎﾟﾁﾎﾟﾁ削除を押していくみたいですね。&lt;br /&gt;10個しか無いのでこれは割と重要な情報だと思いました。&lt;br /&gt;そして今仕事中という。ダメ社員でごめんなさい。&lt;br /&gt;&lt;br /&gt;[update] &lt;a href="http://temping-amagramer.blogspot.com/2010/03/google-app-engine_24.html"&gt;maito&lt;/a&gt;さんがフォローしてくれましたが、どうやら&lt;br /&gt;一度削除した名前のアプリケーションはもう作成できないようです。&lt;br /&gt;&lt;br /&gt;ちなみに削除の仕方に関する公式のソースは&lt;a href="http://code.google.com/intl/ja/appengine/kb/adminconsole.html#delete_app"&gt;こちら&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;また、一度削除した名前が予約されて使えないっていうのは多分この部分。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_lNocX9p7OjE/S6mPhzkLofI/AAAAAAAAAIY/mPtIcZgq_CY/s1600-h/AppDelete.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 152px;" src="http://2.bp.blogspot.com/_lNocX9p7OjE/S6mPhzkLofI/AAAAAAAAAIY/mPtIcZgq_CY/s320/AppDelete.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5452046634849116658" /&gt;&lt;/a&gt;&lt;br /&gt;英語苦手だけど多分あってるよな！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-1641657732156367121?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/1641657732156367121/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=1641657732156367121' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/1641657732156367121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/1641657732156367121'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2010/03/gae.html' title='GAEでアプリを削除するには？'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_lNocX9p7OjE/S6iczpvliHI/AAAAAAAAAIQ/a_5C5xNZLZo/s72-c/GAE%E7%AE%A1%E7%90%86.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-2002965137470040447</id><published>2010-03-21T21:24:00.003+09:00</published><updated>2010-03-21T21:33:55.120+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><title type='text'>Macでのスクリーンショットの取り方（そして保存先変更）</title><content type='html'>Mac楽しい。大人のおもちゃって感じですね。&lt;br /&gt;&lt;br /&gt;・・・大人のおもちゃってそういう意味じゃないぞ！&lt;br /&gt;&lt;br /&gt;という訳で現在BlogもMacから書いてるんですが、開発してると&lt;br /&gt;スクリーンショットを取りたくなるものです。&lt;br /&gt;という訳でMacでのスクリーンショットの取り方を以下に。&lt;br /&gt;&lt;br /&gt;1.画面すべてをとる&lt;br /&gt;command + shift + 3&lt;br /&gt;&lt;br /&gt;上記コマンドにて画面全体のスクリーンショットがとれます。&lt;br /&gt;&lt;br /&gt;2.対象を選択してからとる&lt;br /&gt;command + shift + 4&lt;br /&gt;&lt;br /&gt;上記コマンド入力後、範囲を選択するカーソルが表示されるので&lt;br /&gt;それにて画面を選択する。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;さて、上記コマンドにて保存される画像ファイルは何故か&lt;br /&gt;デスクトップ固定です。BlogにUpするための画像はすべて&lt;br /&gt;同じフォルダで一元管理できた方が便利だよね？と思ったので&lt;br /&gt;今度はその変更方法を。ただこちらはターミナルからしか&lt;br /&gt;分かりませんでした。&lt;br /&gt;&lt;br /&gt;1.アプリケーション→ユーティリティ→ターミナルを選択する&lt;br /&gt;2.画像を保存したいアドレスをメモっておく&lt;br /&gt;3.ターミナルにて以下のように入力&lt;br /&gt;&lt;br /&gt;defaults write com.apple.screencapture location [保存したいアドレス]&lt;br /&gt;&lt;br /&gt;上記のように入力したのちに、&lt;br /&gt;&lt;br /&gt;killall SystemUIServer&lt;br /&gt;&lt;br /&gt;上記のように入力すれば完了です。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-2002965137470040447?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/2002965137470040447/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=2002965137470040447' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/2002965137470040447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/2002965137470040447'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2010/03/mac.html' title='Macでのスクリーンショットの取り方（そして保存先変更）'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-2149652081180687909</id><published>2010-03-20T22:16:00.010+09:00</published><updated>2010-03-21T21:35:09.220+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='買い物'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><title type='text'>MacBook購入！</title><content type='html'>何故かMacBookを購入してしまいました。&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;使わないのに。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;いや、一応これからこのMacBookを開発機として使って&lt;br /&gt;バリバリ稼ぐ予定です。あくまで予定。多分1円も稼げない。&lt;br /&gt;&lt;br /&gt;そんな訳で人生初Macです！&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_lNocX9p7OjE/S6TL1TkyuqI/AAAAAAAAAGg/EM9klvo8KVs/s1600-h/P3190052.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_lNocX9p7OjE/S6TL1TkyuqI/AAAAAAAAAGg/EM9klvo8KVs/s320/P3190052.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5450705565673241250" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;じゃーん！すげーMacパッケージからかっこいいよMac&lt;br /&gt;おれAppleあんま好きじゃないっていうか嫌いだよMac！&lt;br /&gt;&lt;br /&gt;中をあけるとこんな感じ。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_lNocX9p7OjE/S6TQthC84MI/AAAAAAAAAHc/oiITYZCNH-s/s1600-h/P3190053.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_lNocX9p7OjE/S6TQthC84MI/AAAAAAAAAHc/oiITYZCNH-s/s320/P3190053.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5450710929408581826" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ぴんぼけじゃん！じゃなくてこんな所もスタイリッシュ！&lt;br /&gt;Windowsマシンのノートとかもっと開けたら無骨だよね。&lt;br /&gt;俺はAppleは嫌いだからこの会社のソフト・ハードともどもユーザインタフェースに&lt;br /&gt;関するこだわりは素直に凄いと思う。優秀。&lt;br /&gt;&lt;br /&gt;さらに開梱していくと・・・&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_lNocX9p7OjE/S6TMKXAwMKI/AAAAAAAAAGw/7tj7BoNseiU/s1600-h/P3190054.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_lNocX9p7OjE/S6TMKXAwMKI/AAAAAAAAAGw/7tj7BoNseiU/s320/P3190054.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5450705927373074594" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;うん。綺麗。ほんとそれに尽きる。&lt;br /&gt;こういう所に気が届いてるといちいちわくわくするわ。&lt;br /&gt;…と、&lt;span style="font-weight:bold;"&gt;こういう風にユーザは感じるんだなって事を開発する時にも&lt;br /&gt;忘れないように&lt;/span&gt;しないといけないですよね。肝に命じておこう。&lt;br /&gt;&lt;br /&gt;さ、そして遂に本体とのご対面でございます・・わくわく・・・！&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_lNocX9p7OjE/S6TMK-EbAkI/AAAAAAAAAG4/ihDaN5FN56Q/s1600-h/P3190055.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_lNocX9p7OjE/S6TMK-EbAkI/AAAAAAAAAG4/ihDaN5FN56Q/s320/P3190055.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5450705937857446466" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;どーん！綺麗！かっこいい！Apple!りんご！&lt;br /&gt;ちなみにiPhoneを買う気もありません。頑張れGoogle!&lt;br /&gt;頑張れAndroid！&lt;br /&gt;&lt;br /&gt;そしてドキドキを抑えて電源ボタンを押すと一瞬で立ち上がるOS。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_lNocX9p7OjE/S6TMLUMTY3I/AAAAAAAAAHA/cTW2-2AbXO4/s1600-h/P3190056.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_lNocX9p7OjE/S6TMLUMTY3I/AAAAAAAAAHA/cTW2-2AbXO4/s320/P3190056.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5450705943796081522" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;かっこいー！でも壁紙は早く可愛い女の子とか萌え萌えな画像に変更せねば！&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;という訳でiPhoneアプリの開発もしないのに買ったMacBookの開梱日記でした。&lt;br /&gt;ここで感じたのは↑でも書いたけどユーザの満足度ってのは結局こういう所で&lt;br /&gt;満たされるんだなって所ですね。&lt;br /&gt;実際開発してるとどんなにユーザ目線に立とうしても、開発者の目線で見てしまうもの。&lt;br /&gt;&lt;br /&gt;『いや、ここはこういう画面にした方が保守性が～』とか、&lt;br /&gt;『ここのレスポンスが3秒もかかっちゃうのはこのモジュールが～』みたいな&lt;br /&gt;言い訳（正当化？）はエンジニアなら一度はやった事があるはず。&lt;br /&gt;&lt;br /&gt;でも使うユーザはそんな事どうでもいいってか知らん。&lt;br /&gt;そんな細かい所どうでもよくね・・・といった所で満足度を感じるのが&lt;br /&gt;エンドユーザなんだろな、という事を今回のMacBook購入で感じました。&lt;br /&gt;&lt;br /&gt;難しいのぉ。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-2149652081180687909?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/2149652081180687909/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=2149652081180687909' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/2149652081180687909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/2149652081180687909'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2010/03/macbook.html' title='MacBook購入！'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_lNocX9p7OjE/S6TL1TkyuqI/AAAAAAAAAGg/EM9klvo8KVs/s72-c/P3190052.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-2646245961498078634</id><published>2010-03-16T11:22:00.013+09:00</published><updated>2010-03-21T21:46:46.236+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GAE'/><title type='text'>google app engine 奮闘記 第1回　～まずは登録から～</title><content type='html'>突然だけど最近元同期が始めたgoogle app engineに手を出してみようと思いました。&lt;br /&gt;理由は最近バンド仲間とPHP勉強会を開こうって流れになったからです。&lt;br /&gt;&lt;br /&gt;…理由になってないけど、実際それが理由でなんとなく初めて&lt;br /&gt;みようと思った次第です。あ、PythonだけじゃなくてJavaが使える&lt;br /&gt;ように気づいたらなってたってのもありますけど。&lt;br /&gt;&lt;br /&gt;で、折角なのでgoogle app engine(以下めんどいのでGAE)を勉強していく&lt;br /&gt;様を書いていこうかと思います。&lt;br /&gt;ただ筆不精なもんで途中で終わったらすいません。&lt;br /&gt;&lt;br /&gt;さて、第1回はお約束のHello,World!!!・・・かと思ったんですが&lt;br /&gt;今職場なのでそもそもSDKのインストールも出来ない！　という事で&lt;br /&gt;第1回は導入編でいこうと思います。&lt;br /&gt;ただこの記事書く前にすでにアカウント登録を済ませてしまったので&lt;br /&gt;うろ覚えですが。手順は以下の通り。&lt;br /&gt;&lt;br /&gt;～アカウント作成～&lt;br /&gt;1.http://code.google.com/intl/ja/appengine/にアクセス&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_lNocX9p7OjE/S5-rtGjCHZI/AAAAAAAAAEw/Qwa0HCw4YNo/s1600-h/Google+App+Engine+-+Google+Code_1268755233379.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 315px; height: 226px;" src="http://4.bp.blogspot.com/_lNocX9p7OjE/S5-rtGjCHZI/AAAAAAAAAEw/Qwa0HCw4YNo/s320/Google+App+Engine+-+Google+Code_1268755233379.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5449262865481604498" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2.右側のスタートガイドにそって、"登録"をクリック&lt;br /&gt;3."Create an Application"をクリック（確かここから英語…）&lt;br /&gt;4.Countryで"Japan"を選択&lt;br /&gt;5.4でJapanを選択するとキャリアを選択できるようになるので、自分の携帯を選択&lt;br /&gt;6.自分の携帯のメアドの@以前を入力し、"Send"を押す&lt;br /&gt;7.携帯にアカウントコードのメールがくるので、それを入力する&lt;br /&gt;&lt;br /&gt;～アプリ領域の作成～&lt;br /&gt;8.Create an Applicationの画面にて、Application Identifierを入力する（任意）&lt;br /&gt;9.Application Titleを入力する（任意）&lt;br /&gt;10.Saveをクリック&lt;br /&gt;&lt;br /&gt;～SDKの導入～&lt;br /&gt;といっても、今回はEclipseを使用するのを前提で話を進めていくので&lt;br /&gt;EclipseにてSDKのインストールを行います。&lt;br /&gt;これならSDKとEclipse用のプラグインが同時にインストール出来ますし。&lt;br /&gt;11.Eclipseを起動し、メニューのヘルプから新規ソフトウェアのインストール...を選択する。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_lNocX9p7OjE/S6YSzBZJUTI/AAAAAAAAAIA/UQh9dD3lJXI/s1600-h/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882010-03-21+21.19.30%EF%BC%89.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 231px;" src="http://2.bp.blogspot.com/_lNocX9p7OjE/S6YSzBZJUTI/AAAAAAAAAIA/UQh9dD3lJXI/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882010-03-21+21.19.30%EF%BC%89.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5451065066735096114" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;12.使用可能なソフトウェアの所で自分のEclipseのバージョンにあった物を入力する&lt;br /&gt;（今回自分は3.5なのでhttp://dl.google.com/eclipse/plugin/3.5を入力）&lt;br /&gt;13.出てきたインストール項目にてSDKをチェック&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_lNocX9p7OjE/S6YTvvAjvxI/AAAAAAAAAII/eOJF8aBTKI8/s1600-h/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882010-03-21+21.39.57%EF%BC%89.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 265px;" src="http://2.bp.blogspot.com/_lNocX9p7OjE/S6YTvvAjvxI/AAAAAAAAAII/eOJF8aBTKI8/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%EF%BC%882010-03-21+21.39.57%EF%BC%89.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5451066109772152594" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;後はもう次へ次へと進めていけば自動的にインストールされていきます。&lt;br /&gt;とても便利・・・！&lt;br /&gt;あ、ただ会社のPCでシコシコ開発しようとかしてるとプロキシ鯖で弾かれたりと忙しい事になります。&lt;br /&gt;&lt;br /&gt;さぁ、次回からGAEのスタートアップに沿って一通り画面表示、リクエストの飛ばし方、&lt;br /&gt;受け取り方と学習してこうかと思います。&lt;br /&gt;しかしPythonじゃなくてJavaにしちゃったけど大丈夫なのだろうか・・・&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-2646245961498078634?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/2646245961498078634/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=2646245961498078634' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/2646245961498078634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/2646245961498078634'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2010/03/google-app-engine-1.html' title='google app engine 奮闘記 第1回　～まずは登録から～'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_lNocX9p7OjE/S5-rtGjCHZI/AAAAAAAAAEw/Qwa0HCw4YNo/s72-c/Google+App+Engine+-+Google+Code_1268755233379.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-3234451057979958594</id><published>2010-01-29T13:58:00.003+09:00</published><updated>2010-02-08T10:25:43.310+09:00</updated><title type='text'>そして一年以上が過ぎた。</title><content type='html'>一年以上書いていませんでした。&lt;br /&gt;お久しぶりです。&lt;br /&gt;&lt;br /&gt;仕事が激務になりしばらくBlogから離れている内に、&lt;br /&gt;昔あった仕事・技術に対する向上心がどんどんと薄れて&lt;br /&gt;いってしまったために完全に放置状態になってしまいました。&lt;br /&gt;&lt;br /&gt;このまま完全にブログ離れしてしまうかなと思ったんですが&lt;br /&gt;やっぱり日々感じた事や、検索して初めて知った事とか、&lt;br /&gt;アウトプットとして自分の中を通して外に出すっていう行為は&lt;br /&gt;割と大事な気もするのでボチボチ続けようかと考えなおしました。&lt;br /&gt;&lt;br /&gt;ただやっぱり技術的な観点ではとても書き続けられないので&lt;br /&gt;今後は適当に日常やゲームやエロゲーやらに関してつらつらと&lt;br /&gt;書いていこうと思います。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;とりあえず、働きたくない。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-3234451057979958594?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/3234451057979958594/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=3234451057979958594' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/3234451057979958594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/3234451057979958594'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2010/01/blog-post.html' title='そして一年以上が過ぎた。'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-7403639214099171548</id><published>2008-09-01T18:45:00.004+09:00</published><updated>2008-09-01T19:11:09.735+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='書籍'/><title type='text'>安西先生、お金が欲しいです。</title><content type='html'>はい、久しぶりですが技術とは無関係の話です。&lt;br /&gt;&lt;br /&gt;先週末、&lt;a href="http://temping-amagramer.blogspot.com/" target="_blank"&gt;maito&lt;/a&gt;さんと池袋でラーメンを食らった後に&lt;br /&gt;軽く酒を飲みながら下らない話に花を咲かせていたのですが、&lt;br /&gt;その時話にあげた本をこちらで紹介しておきます。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/%E3%81%8A%E9%87%91%E3%81%AF%E9%8A%80%E8%A1%8C%E3%81%AB%E9%A0%90%E3%81%91%E3%82%8B%E3%81%AA-%E9%87%91%E8%9E%8D%E3%83%AA%E3%83%86%E3%83%A9%E3%82%B7%E3%83%BC%E3%81%AE%E5%9F%BA%E6%9C%AC%E3%81%A8%E5%AE%9F%E8%B7%B5-%E5%85%89%E6%96%87%E7%A4%BE%E6%96%B0%E6%9B%B8-%E5%8B%9D%E9%96%93-%E5%92%8C%E4%BB%A3/dp/433403425X/ref=sr_1_6?ie=UTF8&amp;amp;s=books&amp;amp;qid=1220262291&amp;amp;sr=8-6"&gt;お金は銀行に預けるな&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;なかなかタイトルからしてショッキングな感じですね。&lt;br /&gt;俺めっちゃ預けてますが。&lt;br /&gt;簡単に内容を紹介すると、ただ預けて寝かせっぱなしにしている&lt;br /&gt;お金があるなら、銀行に預けるんじゃなくて効率的に投資・運用&lt;br /&gt;していきましょう・・・みたいな内容です。初心者向けに最初は&lt;br /&gt;こういう感じでやってみては？　ってのも紹介されてます。&lt;br /&gt;&lt;br /&gt;うーん……今まで経済とかぜんぜん興味なかったからなぁ。&lt;br /&gt;そろそろ軽くお金突っ込んで強制的に興味を持たせるべきですかねー？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-7403639214099171548?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/7403639214099171548/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=7403639214099171548' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/7403639214099171548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/7403639214099171548'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2008/09/blog-post.html' title='安西先生、お金が欲しいです。'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-8448674064837045874</id><published>2008-08-08T10:13:00.003+09:00</published><updated>2008-08-08T10:43:54.100+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSTL'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>JSTLのfmtタグの不思議</title><content type='html'>うっへー。滅茶苦茶あいだが空いてしまいました。&lt;br /&gt;プロジェクトいそがしめとはいえわれながらものぐさです。&lt;br /&gt;maitoさんを見習いたいですね。勿論性的な意味で。&lt;br /&gt;&lt;br /&gt;さて、今日は題名のJSTLのfmtタグについて。&lt;br /&gt;fmtタグはフォーマットタグ（そのまんま）でして、数字や&lt;br /&gt;日付等のフォーマットをしてレンダリングしてくれるのですが……&lt;br /&gt;現プロジェクトで問題が発生しました。具体的には&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;＜fmt:formatdate value="${[日付の値]}" pattern="yyyy/MM/dd" /＞&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;このように使うのですが、なぜかこれが&lt;span style="color: rgb(255, 0, 0);"&gt;DoCoMo端末だけ&lt;span style="color: rgb(0, 0, 0);"&gt;動かない。&lt;br /&gt;動かないというか表記が&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt; Tue Jul 15 18:03:41 GMT+09:00 2008&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;こんな感じになりやがります。なぜDoCoMoだけ？！&lt;br /&gt;で、色々調べてみた所どうやらロケール情報が正しく設定されていないと&lt;br /&gt;ダメらしい。通常はロケール情報はリクエストのヘッダにあるのでこれを&lt;br /&gt;見に行っているようなのですが、携帯等の場合でこれがないと……&lt;br /&gt;今回のようになるようです。&lt;br /&gt;&lt;br /&gt;で、対応策。同じくfmtタグのsetLocaleタグを使って明示的に&lt;br /&gt;ロケールをセッティングします。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;＜fmt:setlocale value="ja-JP" /＞&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;こんな感じです。ただベタ書きでja-JPって書くのは怖いんでここは&lt;br /&gt;よきに計らってくださいといった感じ。&lt;br /&gt;&lt;br /&gt;しかし携帯って怖いですわーこりゃ・・・。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-8448674064837045874?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/8448674064837045874/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=8448674064837045874' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/8448674064837045874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/8448674064837045874'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2008/08/jstlfmt.html' title='JSTLのfmtタグの不思議'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-7267104625486845646</id><published>2008-06-20T15:05:00.003+09:00</published><updated>2008-06-21T10:59:57.216+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FireFox'/><title type='text'>ミリオン目指す炎の狐</title><content type='html'>うー、仕事がだいぶ忙しかったのを言い訳に&lt;br /&gt;相当サボってました。という訳で久しぶりのトピック……&lt;br /&gt;&lt;br /&gt;ですが今日は今ホットな話題、FireFox3について。&lt;br /&gt;なにやら24時間でのDL数でギネス申請するとか。&lt;br /&gt;ふぉく助（きつね）もかわいらしいので是非頑張って欲しいです。&lt;br /&gt;&lt;br /&gt;さて、僕は我が家でも職場でもFireFox使ってるんですが&lt;br /&gt;二つの理由でFireFox3の導入を迷ってました。&lt;br /&gt;&lt;br /&gt;1.FireFoxの要、プラグインが非対応の物が多い&lt;br /&gt;これはそのまんま。リリースしたばかりなので便利なプラグイン&lt;br /&gt;があまり対応してない･･････&lt;br /&gt;確かにFireFox3はとても早いのでAjaxバリバリなページ(Gmailとか&lt;br /&gt;RememberTheMilkとか？)では便利なのですがやはり物足りない。&lt;br /&gt;&lt;br /&gt;2.クロスブラウザ的な不安&lt;br /&gt;これは職場限定なのですが、ブラウザのVersionUpにより挙動が&lt;br /&gt;変わられると色々困る。&lt;br /&gt;&lt;br /&gt;上記二点の理由から、&lt;br /&gt;『そうだ、両方いれればいいじゃん』&lt;br /&gt;という風に思いつくのは至極当然……という訳で今日はFireFox2＆3の&lt;br /&gt;共存方法について。&lt;br /&gt;&lt;br /&gt;まず手順だけ書いておくと、&lt;br /&gt;&lt;br /&gt;1.FireFox3(以下3)をダウンロードし、FireFox2(以下2)を終了します。&lt;br /&gt;2.2のショートカットを作成し、プロパティを開きます。&lt;br /&gt;3.プロパティの"リンク元"の末尾に、半角スペース＋'-p default -no-remote'と&lt;br /&gt;　入力し、OKをクリックします。&lt;br /&gt;4.スタートメニューより、ファイル名を指定して実行をクリックします&lt;br /&gt;5.'firefox -createprofile firefox3(ここは任意の名称で可)'と入力しエンターを押します。&lt;br /&gt;　何も処理が行われていないように見えますが、ここはこれでOKです。&lt;br /&gt;6.3をインストールします。インストール方法はカスタムを選び、2のパスとかぶらないように。&lt;br /&gt;　また「FireFoxを既定のブラウザに～（略）」のチェックは外します。&lt;br /&gt;7.ショートカットを作成の画面では全部チェックを外しておきます。&lt;br /&gt;8.インストールを行い、終了後の「今すぐFireFoxを起動」のチェックを外し完了します。&lt;br /&gt;9.3をインストールしたフォルダを開き、3のfirefox.exeのショートカットを適当な所に作ります。&lt;br /&gt;10.9で作成したショートカットのプロパティを開きます。&lt;br /&gt;11.プロパティの"リンク元"の末尾に、半角スペース＋'-p firefox3(5で設定した任意の名称)&lt;br /&gt;　 -no-remote'と入力しエンターを押します。&lt;br /&gt;&lt;br /&gt;以上の操作により、作成したショートカットからFireFox2とFireFox3を共存して起動できます。&lt;br /&gt;&lt;br /&gt;次に、かいつまんでどういう事をやっているかの説明を。&lt;br /&gt;(といっても、上記操作はWEBで調べた結果なので、自分なりの解釈になるんですが)&lt;br /&gt;&lt;br /&gt;おおまかには、FireFox2用とFireFox3用のプロファイルを作成し、ショートカットで&lt;br /&gt;起動オプションを設定してそれぞれのプロファイルを指定、また別個に起動できるように&lt;br /&gt;指定する事で共存できるようにしているようです。&lt;br /&gt;&lt;br /&gt;起動オプションに関しては、&lt;br /&gt;&lt;br /&gt;-p：このオプションでプロファイルマネージャを起動するらしい。（我が家は上手くいかなかった）&lt;br /&gt;　　また、上で書いたように、 -p "プロファイル名"　って書く事でプロファイルを指定して&lt;br /&gt;　　起動する。default指定するとデフォルトで設定されているプロファイルを読みに行く訳ですね。&lt;br /&gt;-createprofile：読んで字の如く、プロファイルを作成します。使い方は上のほうで書いたように&lt;br /&gt;　　　　　　　　　　-createprofile "プロファイル名"　という風に使います。&lt;br /&gt;-no-remote：これは初めて知ったんですが、なにやらアプリを複数起動する為のオプションらしい。&lt;br /&gt;　　　　　　　　これのおかげでFireFox2とFireFox3が同時に起動できる…と。&lt;br /&gt;&lt;br /&gt;これを全部使って、&lt;br /&gt;FireFox2をデフォルトのプロファイルを指定して、同時起動可能とする&lt;br /&gt;↓&lt;br /&gt;FireFox3用に新しくプロファイルを作成しておく&lt;br /&gt;↓&lt;br /&gt;FireFox3をインストールする&lt;br /&gt;↓&lt;br /&gt;FireFox3を、事前に作ったプロファイルを指定して、同時起動可能とする&lt;br /&gt;&lt;br /&gt;こんな流れみたいです。そんな訳で早速使ってみたFireFox3はﾏｼﾞで爆速でした。&lt;br /&gt;でもセキュリティホール見つかったって本当？？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-7267104625486845646?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/7267104625486845646/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=7267104625486845646' title='3 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/7267104625486845646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/7267104625486845646'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2008/06/blog-post.html' title='ミリオン目指す炎の狐'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-6067170978421614282</id><published>2008-05-19T18:32:00.002+09:00</published><updated>2008-05-19T18:41:53.388+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Mapを拡張forループでぶんまわす</title><content type='html'>ものすごい更新が空いてしまった……&lt;br /&gt;基本的にものぐさなんでよくない傾向です。&lt;br /&gt;そして左肩が痛い。もう四十肩ですかね？&lt;br /&gt;一応25歳なんですけど……まぁいいや。&lt;br /&gt;&lt;br /&gt;今日は先日紹介した拡張forループ文を使ってMapをループ&lt;br /&gt;する方法です。&lt;br /&gt;&lt;br /&gt;基本的にMapを作る時ってKey値を指定してValueを取得する事が&lt;br /&gt;多いと思うんですが、場合によってはMapの値を全てを取得したい&lt;br /&gt;って事もあると思います。そんな時は下記のように拡張forループを使います。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Map&lt;string,&gt; classMate = new LinkedHashMap&lt;string,&gt;();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;classMate.add("01", "佐藤");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; classMate.add("02", "田中");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; classMate.add("03", "高橋");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; classMate.add("04", "鈴木");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;for(Map.Entry&lt;string,&gt; person : classMate.entrySet()){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  System.out.println(person.getKey());&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   System.out.println(person.getValue());&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;上記のように書く事で、01佐藤02田中03高橋04鈴木　のように出力されます。&lt;br /&gt;簡単ですね。ポイントは&lt;br /&gt;&lt;br /&gt;(マップ名).entrySet()&lt;br /&gt;&lt;br /&gt;とする事でエントリのSet(Collectionを継承している)を取得する所。&lt;br /&gt;もう一つのポイントは&lt;br /&gt;&lt;br /&gt;Map.Entry&lt;(型名), (型名)&gt; とする事でエントリの型を指定する所かな？&lt;br /&gt;&lt;br /&gt;知らないでも特に不自由しないけど、知ってると何かで役立つような情報でした。&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-6067170978421614282?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/6067170978421614282/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=6067170978421614282' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/6067170978421614282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/6067170978421614282'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2008/05/mapfor.html' title='Mapを拡張forループでぶんまわす'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-2765057206641498919</id><published>2008-05-07T18:53:00.006+09:00</published><updated>2008-05-08T01:38:15.027+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='JDK5'/><title type='text'>拡張forループ～素晴らしきJDK5～</title><content type='html'>GWがあったので更新が長らく止まってました。&lt;br /&gt;さて、今日はJDK5から新しく追加された機能、&lt;br /&gt;拡張forループです。&lt;br /&gt;&lt;br /&gt;今までJavaでfor文を使う場合、以下のように&lt;br /&gt;コードを書いていたと思われます。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1.配列のループ&lt;/span&gt;&lt;br /&gt;&lt;pre style="font-style: italic;"&gt;int[] array=new int[100];&lt;/pre&gt;&lt;span style="font-style: italic;"&gt;for ( int i = 0; i ＜ array.length; i++ ) {&lt;br /&gt;&lt;pre class="program" style="margin-top: 0pt; font-style: italic;"&gt;&lt;span style="color: rgb(255, 0, 0);" class="comment"&gt;  // 何らかの処理&lt;/span&gt;&lt;span style="font-family:Georgia,serif;"&gt;&lt;br /&gt;&lt;/span&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;2 .コレクションのループ(Iteratorの使用)&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;pre class="program" style="margin-top: 0pt; font-style: italic;"&gt;List persons;&lt;br /&gt;&lt;br /&gt;&lt;span class="keyword"&gt;for&lt;/span&gt; (Iterator it = persons.iterator(); it.hasNext(); ) {&lt;br /&gt;　Person person = (Person)it.next();&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);" class="comment"&gt;  // 何らかの処理&lt;/span&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;br /&gt;こんな感じでしょうか？相変わらず実際にコンパイルしてないので通るか不安……&lt;br /&gt;さて、ここでJDK5で新登場した拡張forループの使い方です！！&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3.拡張forループ&lt;br /&gt;&lt;/span&gt;&lt;pre style="font-style: italic;"&gt;int[] array=new int[100];&lt;/pre&gt;&lt;span style="font-style: italic;"&gt;for(int i : array){&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;          &lt;span style="color: rgb(255, 0, 0);"&gt;　//何らかの処理&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-style: italic;"&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;これだけ。なんとまー楽になった事か。具体的に説明するとこうなります。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;for([変数の型] [ループ内で使う変数名] : [配列、又はコレクションの変数名]){&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-style: italic;"&gt;　//処理&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-style: italic;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;例えば、stringListという名前の、String型のListが存在したとします。その場合&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;for(String str : stringList){&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-style: italic;"&gt;　System.out.println(str);&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-style: italic;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;こんな感じになります。&lt;br /&gt;とりあえず覚えておくと(JDK5を使うなら)何かと便利（というか作業効率が上がる）&lt;br /&gt;なので是非是非。&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-2765057206641498919?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/2765057206641498919/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=2765057206641498919' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/2765057206641498919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/2765057206641498919'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2008/05/forjdk5.html' title='拡張forループ～素晴らしきJDK5～'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-2671380903230821140</id><published>2008-04-25T22:24:00.003+09:00</published><updated>2008-04-28T13:36:37.834+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Mapの実装クラスについて</title><content type='html'>&lt;a href="http://gp400fb.blogspot.com/2008/04/map.html"&gt;昨日のエントリ&lt;/a&gt;でMapについて書いた訳ですが、JavaのMapは&lt;br /&gt;インターフェースなので使う時は実装クラスを使わないといけません。&lt;br /&gt;&lt;br /&gt;これが結構色々種類があって、それを全部説明する&lt;span style="font-weight: bold;"&gt;僕が面倒&lt;/span&gt;です&lt;br /&gt;ので幾つかピックアップして解説してみようと思います。&lt;br /&gt;という訳で選手入場です！&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;1.HashMap&lt;br /&gt;&lt;/span&gt;はい、トップバッターは一番使われてるのでは？　と僕が思っている&lt;br /&gt;ハッシュマップから。これはほんとごくごく普通の連想配列です。&lt;br /&gt;あえて突っ込むとしたらば、同期化はされてない事と&lt;span style="font-weight: bold;"&gt;nullが許容&lt;br /&gt;&lt;/span&gt;されているって事ぐらいでしょうか。あ、後このクラスはMapの&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;順序が保証されません。&lt;br /&gt;&lt;/span&gt;順番とかどうでも良い、本当にハッシュテーブルが欲しい時は&lt;br /&gt;これで事足りますね。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;2.LinkedHashMap&lt;br /&gt;&lt;/span&gt;さぁ二番手に行ってみましょう。今度のMapは1番のHashMapと&lt;br /&gt;ほぼ同じです。&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;相違点は挿入した順序を保持する事。&lt;br /&gt;&lt;/span&gt;つい最近仕事で使ったので記憶に新しい……&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;3.TreeMap&lt;br /&gt;&lt;/span&gt;今日はこれで最後、TreeMapです。これはMapがソートされた&lt;br /&gt;状態で保持されます。何でソートされるかというと勿論Key値です。&lt;br /&gt;ハッシュでソートされるという事ですね。で、これってどういう風に&lt;br /&gt;ソートされるの？　昇順？　降順？　という疑問が沸くと思うのですが&lt;br /&gt;デフォルトは昇順です。正確に言うとComparableインターフェースの&lt;br /&gt;compareToメソッドによってソートされます。&lt;br /&gt;その為、TreeMapを使って自分の思うようにMapをソートしたい場合は&lt;br /&gt;Comparatorオブジェクトを生成し、それをTreeMapのコンストラクタへ&lt;br /&gt;セットすれば出来る&lt;span style="font-weight: bold;"&gt;はず&lt;/span&gt;です。&lt;br /&gt;&lt;br /&gt;なんではず、なのかって？　試してないからです。&lt;br /&gt;&lt;br /&gt;今度はここらへんを実際のコードを混ぜて書きたいですねー。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-2671380903230821140?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/2671380903230821140/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=2671380903230821140' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/2671380903230821140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/2671380903230821140'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2008/04/map_25.html' title='Mapの実装クラスについて'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-8150745748963180626</id><published>2008-04-24T23:55:00.003+09:00</published><updated>2008-04-25T09:18:43.607+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Mapって知ってますか？</title><content type='html'>タイトルを見てこう思った人がいるかもしれない。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;はい！　地図の事です！&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;お前は俺か。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;はい、という訳で今日はまずJavaのMapという物の概念から&lt;br /&gt;考えていきましょー。まぁJavaに限らずほとんどの言語に&lt;br /&gt;ある話なんで多分みなさん知ってると思うんですが。&lt;br /&gt;&lt;br /&gt;さて、Mapというのはキーとそれに対応する値がセットになった&lt;br /&gt;エントリの集合体のような物です。&lt;br /&gt;はい、何を言っているか分かりませんね。&lt;br /&gt;例えば、学校のクラスの出席番号を考えてみましょう。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;　No　名前&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; 　1　　山田&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; 　2　　畠中&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; 　3　　川畑&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;　4　　立神&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;こんな出席番号のクラスがあったとしましょう。&lt;br /&gt;さてここで質問です。出席番号2番の生徒の名前は？&lt;br /&gt;&lt;br /&gt;答えは当然"畠中"君ですね。（畠中さん、かもしれないですが）&lt;br /&gt;このように、キー値(出席番号)と、それに対応する値(名前)が&lt;br /&gt;セットになったエントリ(No:名前)が複数ある物がMapです。&lt;br /&gt;&lt;br /&gt;さて、ここでさっきのデータにエントリを増やしてみます。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;　No　名前&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; 　1　　山田&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; 　2　　畠中&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; 　3　　川畑&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;　4　　立神&lt;/span&gt;&lt;br /&gt; &lt;span style="font-style: italic;"&gt;　2　　計羅&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;上記データはMapとして……いや、出席番号として正しく機能するでしょうか？&lt;br /&gt;勿論、答えはNo!!!　です。何故ならこのクラス、出席番号2番の人！　と先生が&lt;br /&gt;点呼をすると&lt;br /&gt;&lt;br /&gt;畠中「はい！」&lt;br /&gt;計羅「ういす！！」&lt;br /&gt;&lt;br /&gt;二人返事しちゃいますね。これじゃ出席番号としては機能してません。&lt;br /&gt;これと同じように、Mapにおいては&lt;span style="font-weight: bold;"&gt;キー値は重複しない&lt;/span&gt;という約束が&lt;br /&gt;あります。特に難しい事は無いですね。&lt;br /&gt;&lt;br /&gt;じゃ、これを実際にJavaのコードにしてみたものを以下に。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Map&lt;int,&gt; classMap = new HashMap&lt;int,&gt;();&lt;/int,&gt;&lt;/int,&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;classMap.put(1, "山田");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; classMap.put(2, "畠中");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; classMap.put(3, "川畑");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; classMap.put(4, "立神");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;こんな感じでしょうか？（コンパイル通してないからあってるか不安……）&lt;br /&gt;上記コードのclassMapというマップが上の方で作ったデータと&lt;br /&gt;全く同じ事を示している状態になります。&lt;br /&gt;&lt;br /&gt;ここでは例としてMapの実装クラスはHashMapを使いましたが、他の&lt;br /&gt;物を使った時との違いを今度書きたいと思います。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-8150745748963180626?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/8150745748963180626/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=8150745748963180626' title='4 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/8150745748963180626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/8150745748963180626'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2008/04/map.html' title='Mapって知ってますか？'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-7849017085753286098</id><published>2008-04-23T09:11:00.002+09:00</published><updated>2008-04-23T09:20:54.022+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Javaで配列のソートがしたい時どうする？</title><content type='html'>仕事がちょっと忙しくて昨日、一昨日と二日間サボってました。&lt;br /&gt;&lt;br /&gt;さて、今日はタイトルの通りJavaで配列のソートをする時&lt;br /&gt;どうする？　というお話です。&lt;br /&gt;&lt;br /&gt;昨日は仕事で画面上の表示するデータをとある項目の数値で&lt;br /&gt;ソートしたかったのですが、普段だったらSQLにORDER BY句を&lt;br /&gt;付け足して終了！　とする所がhibernateを使ってDBアクセスを&lt;br /&gt;行っている為にそれが出来なかったのです。&lt;br /&gt;&lt;br /&gt;その為既に取得したデータ郡をJavaでソートしよう！　という&lt;br /&gt;事になった訳ですが……意外に簡単でした。やり方はこう。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;ex)配列のsort&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  String[] orgStringArray = {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    "3", "4", "2", "1", "9", "8"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  Arrays.sort(&lt;/span&gt;&lt;span style="font-style: italic;"&gt;orgStringArray&lt;/span&gt;&lt;span style="font-style: italic;"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;これだけ。これで&lt;span style="font-style: italic;"&gt;orgStringArray&lt;/span&gt;というStringの配列が昇順で&lt;br /&gt;ソートされます。(Arraysクラスはjava.utilパッケージにあります)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ここまで読んだ人は、『じゃ降順はどうするんだ？』とか&lt;br /&gt;『実際にはこんな単純なオブジェクトじゃない事が多いんだけど』とか&lt;br /&gt;『配列じゃなくてコレクションのsortをしたいんだけど！』とか　←僕です&lt;br /&gt;色々思う所があると思いますが、それはまた後日。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-7849017085753286098?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/7849017085753286098/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=7849017085753286098' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/7849017085753286098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/7849017085753286098'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2008/04/java.html' title='Javaで配列のソートがしたい時どうする？'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-8255968676234803633</id><published>2008-04-18T17:34:00.002+09:00</published><updated>2008-04-18T17:57:48.371+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>オブジェクトのクラス、そして全てのメンバへ……</title><content type='html'>今日は原点に帰ってJavaについて。&lt;br /&gt;&lt;br /&gt;とあるオブジェクトがあったとして、そのクラスを&lt;br /&gt;取得したい場合。例えば&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;String foo = "foo";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ここでfooからクラス情報を取得したい場合は&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;foo.getClass();&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;これでclass情報を取得できます。&lt;br /&gt;さて、ここまでは誰でも知ってるような事だと思いますが、&lt;br /&gt;今日はクラス情報からそのクラスが持つメンバ一覧を&lt;br /&gt;どのように取得するかを紹介したいと思います。&lt;br /&gt;……といっても&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;foo.getClass().getDeclaredFields()&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;これだけ。ちなみに返される値はFieldオブジェクトの配列です。&lt;br /&gt;なので実際には上記コードは&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Field[] fields =  foo.getClass().getDeclaredFields();&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;こんな感じになりますね。&lt;br /&gt;ここからリフレクション等を使うと色々便利な事ができそうな予感……!!&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-8255968676234803633?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/8255968676234803633/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=8255968676234803633' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/8255968676234803633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/8255968676234803633'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2008/04/blog-post_18.html' title='オブジェクトのクラス、そして全てのメンバへ……'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-5853566943057952636</id><published>2008-04-17T23:46:00.002+09:00</published><updated>2008-04-18T00:17:11.785+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='マネジメント'/><title type='text'>たまには振り返ろうか</title><content type='html'>今日は普段とは違った趣向のエントリを書こうと思います。&lt;br /&gt;決してネタ切れな訳ではありません。&lt;br /&gt;や、書きたい事はあるけど時間かかりそうでめんどくさ（略&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;さて、このBlogは一応技術Blogなんで今までコンピュータと&lt;br /&gt;関係がある技術的な事を書きつづけてきました。&lt;br /&gt;&lt;br /&gt;しかし、一歩そこから離れて物を見てみると技術ばかりが&lt;br /&gt;大切なのかというと勿論そんな事は無い訳で。&lt;br /&gt;(一応、突っ込んでおくと技術者たる者、優秀な技術&lt;br /&gt;　を持っていないとダメなのは勿論ですよ？？)&lt;br /&gt;&lt;br /&gt;という訳で今日はプロジェクトにおけるふりかえり手法の一つ、&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;KPT&lt;/span&gt;という物について触れようと思います。&lt;br /&gt;&lt;br /&gt;これはアジャイル開発の振り返りで多用されているよう（なの？）&lt;br /&gt;ですが、別に一人でも使えますし何もプロジェクトに限らずに&lt;br /&gt;様々な場面で使える手法の一つだと思います。&lt;br /&gt;&lt;br /&gt;やり方は単純。まず大きな紙、またはホワイトボードを用意しそれを&lt;br /&gt;三つの領域に分けます。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table style="border: 1px solid gray; width: 315px; height: 127px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;br /&gt;&lt;td style="border: 1px solid gray;"&gt;Keep&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;td rowspan="2" style="border: 1px solid gray;"&gt;Try&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;tr&gt;&lt;br /&gt;&lt;td style="border: 1px solid gray;"&gt;Problem&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;こんな感じ。そして各項目に、振り返るべき事柄(プロジェクト等)に&lt;br /&gt;関する事を以下のように分類して記入していきます。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Keep:やって良かった事。今後も続ける事。&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Problem：現在抱えている問題点。まずかったアプローチ等。&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Try：今後やって行こうと思う事。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;これだけです。多分、初めにこれをやると&lt;span style="font-weight: bold;"&gt;Kは殆ど出ず&lt;/span&gt;に逆に&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Pが大量に出てくる&lt;/span&gt;事になると思います。でもこのKPTは&lt;br /&gt;本来振り返りを行う為にやっているのでPがいっぱい出てくるのは&lt;br /&gt;最初は問題ありません。&lt;br /&gt;逆に最初っから&lt;span style="font-weight: bold;"&gt;Pが殆ど出ない&lt;/span&gt;場合、実際には問題が少ない訳では&lt;br /&gt;なく&lt;span style="font-weight: bold;"&gt;危機感が足りない&lt;/span&gt;場合やしっかりと考えられていない場合が&lt;br /&gt;多いです。&lt;br /&gt;&lt;br /&gt;さて、Pを出し終えたら後はTry……対策、やってみたい事等を出して&lt;br /&gt;いきましょう。スペース的にもここはKやPの倍あるのでここは一杯&lt;br /&gt;出していきたい所です。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-5853566943057952636?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/5853566943057952636/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=5853566943057952636' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/5853566943057952636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/5853566943057952636'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2008/04/blog-post_17.html' title='たまには振り返ろうか'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-6570433545318932301</id><published>2008-04-16T18:30:00.002+09:00</published><updated>2008-04-16T18:49:50.782+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='http'/><category scheme='http://www.blogger.com/atom/ns#' term='REST'/><title type='text'>安全(safe)と冪等(idempotent)なメソッド</title><content type='html'>さて、今日は安全と冪等という概念について書こうと思います。&lt;br /&gt;&lt;br /&gt;安全、safe、セーフ。&lt;br /&gt;冪等、idempotent、&lt;span style="font-weight: bold;"&gt;なんて読むんだよコレ。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;……まぁ、いいや。&lt;br /&gt;&lt;br /&gt;さて、早速各メソッドの意味について。&lt;br /&gt;&lt;br /&gt;安全：サーバに影響を与えない。&lt;br /&gt;冪等：何度実行しても同じ値が帰ってくる。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;これに関して&lt;a href="http://d.hatena.ne.jp/winplus/20080401/1207051050"&gt;こちら&lt;/a&gt;で分かりやすい例がありました。&lt;br /&gt;&lt;br /&gt;&lt;table style="border: 1px solid gray;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;p&gt;算数でかくと、以下のとおり。&lt;/p&gt;     &lt;table&gt;     &lt;tbody&gt;&lt;tr&gt;&lt;th&gt;操作&lt;/th&gt;&lt;th&gt;初期値&lt;/th&gt;&lt;th&gt;１回目&lt;/th&gt;&lt;th&gt;２回目&lt;/th&gt;&lt;th&gt;３回目&lt;/th&gt;&lt;th&gt;&lt;br /&gt;&lt;/th&gt;&lt;/tr&gt;     &lt;tr&gt;&lt;td&gt; x1 &lt;/td&gt;&lt;td&gt;　4　&lt;/td&gt;&lt;td&gt;　4　&lt;/td&gt;&lt;td&gt;　4　&lt;/td&gt;&lt;td&gt;　4　&lt;/td&gt;&lt;td&gt;安全&lt;/td&gt;&lt;/tr&gt;     &lt;tr&gt;&lt;td&gt; x0 &lt;/td&gt;&lt;td&gt;　4　&lt;/td&gt;&lt;td&gt;　0　&lt;/td&gt;&lt;td&gt;　0　&lt;/td&gt;&lt;td&gt;　0　&lt;/td&gt;&lt;td&gt;冪等&lt;/td&gt;&lt;/tr&gt;     &lt;tr&gt;&lt;td&gt; +1 &lt;/td&gt;&lt;td&gt;　4　&lt;/td&gt;&lt;td&gt;　5　&lt;/td&gt;&lt;td&gt;　6　&lt;/td&gt;&lt;td&gt;　7　&lt;/td&gt;&lt;td&gt;安全でも冪等でもない&lt;/td&gt;&lt;/tr&gt;    &lt;/tbody&gt;&lt;/table&gt;    &lt;p&gt;安全であれば必ず冪等であるが、冪等であるからといって安全だということではない。&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;ちなみに、httpにおける各メソッドは安全であるべき、冪等であるべきなどちゃんと&lt;br /&gt;定義されています。&lt;br /&gt;例えば、GETは安全かつ冪等です。（安全な時点で冪等である訳ですけどね。）&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-6570433545318932301?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/6570433545318932301/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=6570433545318932301' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/6570433545318932301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/6570433545318932301'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2008/04/safeidempotent.html' title='安全(safe)と冪等(idempotent)なメソッド'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-4760530740639437234</id><published>2008-04-15T17:16:00.004+09:00</published><updated>2008-04-15T21:07:06.145+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='http'/><category scheme='http://www.blogger.com/atom/ns#' term='REST'/><title type='text'>GETメソッドの素晴らしさ</title><content type='html'>昨日は研修に借り出されていて書けなかった……&lt;br /&gt;&lt;br /&gt;さて、前のトピックでリソースに対してメソッド(GETやPOSTとか)を&lt;br /&gt;適用する事を体感してみた所でRESTの話に戻ろうかと思います。&lt;br /&gt;&lt;br /&gt;皆さんがもしネット上で何か面白い記事を見つけたとします。&lt;br /&gt;これをいち早く友達に教えたい！　こんな時あなたはどうするでしょうか。&lt;br /&gt;&lt;br /&gt;多分、&lt;span style="font-weight: bold;"&gt;アドレスをコピーして友達に送りつけます&lt;/span&gt;よね。&lt;br /&gt;中には奇特な人がいて、その記事を表示している画面のスクリーンショットを&lt;br /&gt;ファイルで送りつけたり記事の内容をメモ帳に落として送ったりとかそういう&lt;br /&gt;人がいるかもしれません。……きっとそういう人たちは&lt;s&gt;脳が弱い&lt;/s&gt;httpに&lt;br /&gt;おけるGETメソッドの素晴らしさを知らないのでしょう。そういう事にします。&lt;br /&gt;&lt;br /&gt;さて、GETメソッドの素晴らしさとは何か……実は既に上述してしまっているのですが&lt;br /&gt;同じアドレス(URI)に対してGETを適用する事によって、&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;必ず同じリソースを取得できる&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;事です。これが約束されていない場合、&lt;span style="font-weight: bold;"&gt;ブックマークなんて使い物になりません。&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;正確には&lt;span style="font-style: italic;"&gt;必ず同じリソース、&lt;/span&gt;という表現には語弊があります。実際にはGETメソッドを&lt;br /&gt;適用した時点でのリソースの状態が返されます。これは前に&lt;a href="http://gp400fb.blogspot.com/2008/04/blog-post_08.html"&gt;書いたトピック&lt;/a&gt;を見れば&lt;br /&gt;理解しやすいと思いますが、リソースの実体は変化しても意味は不変という事です。&lt;br /&gt;&lt;br /&gt;既にインターネットに慣れ親しんだ人からすると、はぁ？何当たり前の事言ってんだｺｲﾂ？&lt;br /&gt;と思うかもしれませんが、これって結構冷静に考えると凄い事じゃありません？&lt;br /&gt;ウェブ上に星の数程ある様々なリソースに対して、特定のURIに対してGETを適用すると&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;必ず同じ物&lt;/span&gt;が返ってくる訳です。(逆にこれがないとWEBサーフィンできないなぁ)&lt;br /&gt;&lt;br /&gt;……ちょっとPCに詳しい人なら&lt;br /&gt;&lt;br /&gt;『ちょっと待った！GET使っても毎回表示結果が変わるようなページもありえる！』&lt;br /&gt;&lt;br /&gt;って思う人がいるかもしれません。&lt;br /&gt;……が、ちょっとそれは置いといてとりあえず今日はこの辺で終了。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;今日のまとめ：&lt;br /&gt;・GETは偉大&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-4760530740639437234?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/4760530740639437234/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=4760530740639437234' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/4760530740639437234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/4760530740639437234'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2008/04/get.html' title='GETメソッドの素晴らしさ'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-8865988187291402160</id><published>2008-04-10T11:36:00.008+09:00</published><updated>2008-04-10T22:20:03.783+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='http'/><title type='text'>httpを体感してみる</title><content type='html'>最近はhttp周りの話が多いんですが、意外にWEB上に存在している&lt;br /&gt;リソースを閲覧する時、一体どうやってリソースにアクセスしてどのように&lt;br /&gt;データを取得しているかを知らない人って多いと思います。&lt;br /&gt;&lt;br /&gt;例えば、Yahooを見たいと思った！その時どうする！&lt;br /&gt;恐らくみなさん、こうするでしょう。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_lNocX9p7OjE/R_1-T8GT8oI/AAAAAAAAAAY/YFttK3_CN44/s1600-h/yahoo_access.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_lNocX9p7OjE/R_1-T8GT8oI/AAAAAAAAAAY/YFttK3_CN44/s320/yahoo_access.JPG" alt="" id="BLOGGER_PHOTO_ID_5187441226815894146" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ぽちっとな。&lt;br /&gt;&lt;br /&gt;アドレス欄にYahooのアドレスを入力して、華麗にエンターキーを叩く！&lt;br /&gt;(実際にはブックマークを使う事が多いとは思いますが、同じ事ですね)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;そうすると見事ブラウザにはYahooのトップページが表示される訳ですが……&lt;br /&gt;果たして、この時裏で何が行われているのでしょう？？&lt;br /&gt;&lt;br /&gt;……というあたりを、今日はWindows付属のコマンドプロンプトを使って&lt;br /&gt;試してみようと思います。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;※：以下のような検証は自分が管理するサーバ以外には行わないで下さい。&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;後で何か起きても当Blogは責任を取れません。&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;さて、まずはコマンドプロンプトを起動します。&lt;br /&gt;スタート→ファイル名を指定して実行　から"cmd"と入力すればいけますね。&lt;br /&gt;&lt;br /&gt;ここでコマンドプロンプトに"telnet"と入力してEnterを押します。&lt;br /&gt;(※：本来確かリモートの為に使われてたプロトコルだったはず。&lt;br /&gt;　　　暗号化とかしてないから今は使ってない気がするんだけど……)&lt;br /&gt;&lt;/span&gt;するとコマンドラインが　&lt;span style="font-style: italic;"&gt;Microsoft Telnet&gt;  &lt;/span&gt;のように変化します。&lt;br /&gt;これでTelnetを使う準備は完了です。&lt;br /&gt;&lt;br /&gt;さて、ここでTelnetのコンソールは一度置いておいて、ブラウザに戻ります。&lt;br /&gt;そして&lt;br /&gt;&lt;span style="font-style: italic;"&gt;http://gp400.no-ip.info/&lt;/span&gt;&lt;span style="font-style: italic;"&gt;~D400/test/http_test.html&lt;br /&gt;&lt;/span&gt;上記アドレスにアクセスしてみましょう。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_lNocX9p7OjE/R_3TSsGT8pI/AAAAAAAAAAg/A4ZGcm323m8/s1600-h/test_access.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_lNocX9p7OjE/R_3TSsGT8pI/AAAAAAAAAAg/A4ZGcm323m8/s320/test_access.JPG" alt="" id="BLOGGER_PHOTO_ID_5187534663829418642" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;こんな感じでごくごく簡単なhtmlが表示されたと思います。&lt;br /&gt;さ、ここでさきほどのTelnetのコンソールに戻って、今htmlを&lt;br /&gt;表示した事を再現してみたいと思います。まずは&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;set localecho&lt;/span&gt;&lt;br /&gt;と入力してエンター。(Windows2000だとlocal_echoかも)&lt;br /&gt;これで入力している文字が見えるようになります。&lt;br /&gt;さて、ここからが本番、まずはアクセス先のサイトへの接続を確保します。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;open gp400.no-ip.info 80&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;上記のように入力してエンター。これで&lt;span style="font-style: italic;"&gt; gp400.no-ip.info &lt;/span&gt;というドメインを&lt;br /&gt;オープンしてくれ！　という命令を出している事になります。&lt;br /&gt;エラーも出なかったら、続けて以下のように入力します。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; GET /~D400/test/http_test.html HTTP/1.1&lt;br /&gt;Host: gp400.no-ip.info&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;↑ここのミソは、Hostを入力し終わった後にもう一度Enterを押す所です。&lt;br /&gt;すると、このような画面が返ってきます。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_lNocX9p7OjE/R_4SecGT8qI/AAAAAAAAAAo/ERBOCLsXegI/s1600-h/%E7%84%A1%E9%A1%8C.bmp"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_lNocX9p7OjE/R_4SecGT8qI/AAAAAAAAAAo/ERBOCLsXegI/s320/%E7%84%A1%E9%A1%8C.bmp" alt="" id="BLOGGER_PHOTO_ID_5187604134925431458" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ここで返ってきた文字列は、まさにさっきブラウザで開いたhtmlのソースと&lt;br /&gt;同じ物です。これが&lt;span style="font-weight: bold;"&gt;リソースに対してGETメソッドを実行&lt;/span&gt;した事になる訳です。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;はい、という訳で今日はサーバに対してhttpヘッダをブラウザの代わりに&lt;br /&gt;自分で作成して(正確にはブラウザは今回書いた以上の情報を自動で&lt;br /&gt;補完してhttpヘッダに付加しますが)リソースに対してGETメソッドを&lt;br /&gt;実行してみました。&lt;br /&gt;&lt;br /&gt;今までなんとなくリクエストリクエスト言ってたような人は少しブラウザが&lt;br /&gt;何をやっているか体感できたんじゃないでしょか？同じようにパラメータを&lt;br /&gt;POSTするのもこういった感じで逐一検証する事が可能です。&lt;br /&gt;&lt;a href="http://gp400fb.blogspot.com/2008/04/http.html"&gt;昨日のエントリ&lt;/a&gt;と合わせて色々試してみたいところですね～～。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-8865988187291402160?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/8865988187291402160/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=8865988187291402160' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/8865988187291402160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/8865988187291402160'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2008/04/http_10.html' title='httpを体感してみる'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_lNocX9p7OjE/R_1-T8GT8oI/AAAAAAAAAAY/YFttK3_CN44/s72-c/yahoo_access.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-4794453854011563348</id><published>2008-04-09T23:40:00.001+09:00</published><updated>2008-04-09T23:46:04.634+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='http'/><category scheme='http://www.blogger.com/atom/ns#' term='PlugIn'/><category scheme='http://www.blogger.com/atom/ns#' term='FireFox'/><title type='text'>httpのヘッダ情報が見たいです</title><content type='html'>今日はFireFoxのプラグインの紹介だよ！&lt;br /&gt;といってもまだ自分のFireFoxにインストールすらしてないけどね！&lt;br /&gt;&lt;br /&gt;……さて、みなさんWEBアプリを作ってるとリクエストやレスポンスの&lt;br /&gt;httpヘッダとか、POSTされている値とかを確認したくなる時って&lt;br /&gt;ありません？？&lt;br /&gt;プログラムが上手く動かない！パラメータがどう飛んでるか分からんよ！&lt;br /&gt;ってなって髪をかきむしる事幾数度……（あぁ禿が近づく）&lt;br /&gt;&lt;br /&gt;http://livehttpheaders.mozdev.org/&lt;br /&gt;&lt;br /&gt;↑こんなFireFox用のPlulgIn見つけました。その名も&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;"LiveHttpHeaders"&lt;br /&gt;&lt;/span&gt;……なんてそのままな名前なんだ……&lt;br /&gt;&lt;br /&gt;このプラグインを使うとどうやらhttpのヘッダ情報とかが見れるらしい。&lt;br /&gt;見るだけじゃなく、保存したヘッダ情報を加工してリクエスト送信とか&lt;br /&gt;そういう事もできるらしい。&lt;br /&gt;&lt;br /&gt;な、なんだかオラワクワクしてきたぞ……！&lt;br /&gt;&lt;br /&gt;という訳で早速明日は会社のPCを人柱にこれをインストールして&lt;br /&gt;使ってみようかね！(というか会社の方がこれ使いたいしな)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-4794453854011563348?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/4794453854011563348/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=4794453854011563348' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/4794453854011563348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/4794453854011563348'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2008/04/http.html' title='httpのヘッダ情報が見たいです'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-4742595531037636115</id><published>2008-04-08T22:24:00.002+09:00</published><updated>2008-04-08T22:48:46.686+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='REST'/><title type='text'>リソースとは何ぞや</title><content type='html'>ここの所REST周り続きの毎日。&lt;br /&gt;他にネタが無いんだからしょうがない。&lt;br /&gt;&lt;br /&gt;さて、題名通り今日はRESTにおいて大事な概念のリソースについて。&lt;br /&gt;&lt;br /&gt;ここでリソースというのは情報の事を指します。&lt;br /&gt;例えば……&lt;br /&gt;&lt;br /&gt;・今まさに公開しているこのBlog&lt;br /&gt;・オライリージャパンのRESTfulWebサービス本の紹介&lt;br /&gt;&lt;s&gt;・いつも巡回しているエロサイト&lt;/s&gt;&lt;br /&gt;・WikipediaのREST解説&lt;br /&gt;・今月のオリコンランキングTOP10&lt;br /&gt;&lt;br /&gt;etc,etc……　例をあげはじめたらキリが無いですね。&lt;br /&gt;さて、ここで問題になるのは、例えば上にあげた例のうちの&lt;br /&gt;「公開しているこのBlog」は、昨日表示した時と来週した時では&lt;br /&gt;画面に表示されるトピックは違う物になっているでしょう。（更新してれば）&lt;br /&gt;「今月のオリコンランキングTOP10」は、4月に表示するか5月に表示するかで&lt;br /&gt;全く内容が変わっている事でしょう。&lt;br /&gt;&lt;br /&gt;しかし、どちらも「公開しているこのBlog」、「今月のオリコンランキングTOP10」で&lt;br /&gt;ある事に変わりはありません。リソースを考える上で大事なのは、&lt;br /&gt;「そのリソースの意味」が大事になります。&lt;br /&gt;&lt;br /&gt;例えば今公開しているこのBlogであれば&lt;br /&gt;&lt;br /&gt;http://gp400fb.blogspot.com/&lt;br /&gt;&lt;br /&gt;このアドレスにアクセスする事で、直近N件の佐藤さんが書いたトピックが&lt;br /&gt;表示されるリソースになる訳です。同じくオリコンランキングであれば、&lt;br /&gt;&lt;br /&gt;『その月の月別ランキングTOP10』&lt;br /&gt;&lt;br /&gt;という意味になりますね。リソースの実体はその時々変化するかもしれませんが、&lt;br /&gt;リソースの意味は不変の物である、という事らしいです。&lt;br /&gt;&lt;br /&gt;例えば、GoogleのTOPを開いたら、今までは簡単な検索用テキストボックス&lt;br /&gt;だったのに最近は下に"お勧め"等が表示されるようになりました。&lt;br /&gt;表示される実体は変わりましたがこれは"Googleのトップページ"という情報に変わりはありません。&lt;br /&gt;しかし、これがある日GoogleのトップページにアクセスしたらYahooのページになっていた。&lt;br /&gt;そんな事はありえない……そういう事ですね、きっと。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;さて、上記のように"リソース"という概念を踏まえた上で、先ほどの例を見てみます。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;・今まさに公開しているこのBlog&lt;br /&gt;・オライリージャパンのRESTfulWebサービス本の紹介&lt;br /&gt;&lt;s&gt;・いつも巡回しているエロサイト&lt;/s&gt;&lt;br /&gt;・WikipediaのREST解説&lt;br /&gt;・今月のオリコンランキングTOP10&lt;br /&gt;&lt;br /&gt;これらは全てWEB上に存在するものです。上から順に&lt;br /&gt;&lt;br /&gt;http://gp400fb.blogspot.com/&lt;br /&gt;http://www.oreilly.co.jp/books/9784873113531/&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;プライバシー保護の為お見せできません&lt;br /&gt;&lt;/span&gt;http://ja.wikipedia.org/wiki/REST&lt;br /&gt;http://www.oricon.co.jp/rank/js/m/&lt;br /&gt;&lt;br /&gt;上記のURIで各リソースを参照する事が出来ます。一文字でも違えば当然&lt;br /&gt;これらのリソースにアクセスする事はかないません。&lt;br /&gt;&lt;br /&gt;このように、WEB上のリソースはURIという識別子を持つ事は皆さん&lt;br /&gt;ご存知だと思います。&lt;br /&gt;さて、ここで重ねてリソースという概念の復習になりますが同じURIにアクセスしても&lt;br /&gt;必ず同じデータが返ってくる保証はありません。&lt;br /&gt;さっきも言ったように、http://gp400fb.blogspot.com/というURIにアクセスするのが&lt;br /&gt;今日か、それとも一年後かで表示されるデータは全く別のものになっているでしょう。&lt;br /&gt;しかし両者とも&lt;span style="font-weight: bold;"&gt;僕の書いているBlogという定義は変わりません&lt;/span&gt;。&lt;br /&gt;このように、一つの識別子では別の内容が返ってくる事があります。&lt;br /&gt;（勿論、毎度毎度同じ内容が返ってくる事もあります）&lt;br /&gt;しかしその識別子の持つ意味は不変なのです。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;という事で今日のリソースという概念のまとめ。&lt;br /&gt;&lt;br /&gt;・RESTにおける情報は全てリソース&lt;br /&gt;・リソースの内容は変わる事があるが、その意味(定義)は不変&lt;br /&gt;・リソースはURIという識別子を持つ&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;このリソースという概念がRESTでは非常に重要らしいです。&lt;br /&gt;何故らしい、なのかというとまだ先を調べてないからです！&lt;br /&gt;という訳でまた纏まりの無いまま終わる。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-4742595531037636115?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/4742595531037636115/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=4742595531037636115' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/4742595531037636115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/4742595531037636115'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2008/04/blog-post_08.html' title='リソースとは何ぞや'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-4129065130471097885</id><published>2008-04-07T22:01:00.002+09:00</published><updated>2008-04-07T22:27:26.638+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='アーキテクチャ'/><title type='text'>まず、アーキテクチャって何だろう？</title><content type='html'>さて、今日のお題はアーキテクチャ。&lt;br /&gt;良くアーキテクチャって言いますけどアーキテクチャって何でしょう？&lt;br /&gt;結構何となくこの単語使ってる人が多いんじゃないかと思います。&lt;br /&gt;&lt;br /&gt;というか&lt;span style="font-weight: bold;"&gt;僕が何となく使ってる人です&lt;/span&gt;ので。&lt;br /&gt;&lt;br /&gt;まず、ここで言うアーキテクチャっていうのは勿論&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ソフトウェアアーキテクチャ&lt;/span&gt;の事です。&lt;br /&gt;そこで早速今度も&lt;a href="http://ja.wikipedia.org/wiki/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3"&gt;Wikipedia大先生&lt;/a&gt;に聞いてみた所&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;ソフトウェアアーキテクチャとは、抽象化と問題の分割によって&lt;br /&gt;複雑性を減らすことを主に念頭に置いたものである。&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;との事。まぁこの後に続けて書いてあるんですが、万人が納得いくような&lt;br /&gt;ちゃんとした定義がある訳でもないようです。単語として意味が広すぎるのかな。&lt;br /&gt;&lt;br /&gt;さて、ここで更に突っ込んで&lt;span style="font-weight: bold;"&gt;アーキテクチャ&lt;/span&gt;と&lt;span style="font-weight: bold;"&gt;アーキテクチャスタイル&lt;/span&gt;の違いについて。&lt;br /&gt;（単語の解釈の話ばっかりでﾂﾏﾗﾝのだが）こういう単語の意味でちゃんと解釈&lt;br /&gt;しておかないと後でどんどん大きな勘違いとかに繋がっていきそうなのが怖いんで&lt;br /&gt;色々調べてみたいと思います。&lt;br /&gt;&lt;br /&gt;さて、アーキテクチャとアーキテクチャスタイルは当たり前ですが別の意味ですよね？&lt;br /&gt;&lt;br /&gt;アーキテクチャというのは実際に自分達が作るシステムが持っている物。&lt;br /&gt;アーキテクチャスタイルというのはシステムにおけるアーキテクチャを設計する時に&lt;br /&gt;参考にするもの。&lt;br /&gt;&lt;br /&gt;こんな違いのようです。簡単な例だとMVCモデルとかが挙げられると思います。&lt;br /&gt;&lt;br /&gt;例えばあなたがStruts等のMVCモデルのフレームワークを使ってシステムを&lt;br /&gt;構築したとしましょう。&lt;br /&gt;&lt;br /&gt;この場合、これはMVCモデルというアーキテクチャスタイルの&lt;br /&gt;Strutsというアーキテクチャでシステムを構築した……　という感じです。&lt;br /&gt;&lt;br /&gt;……以上が自分なりのアーキテクチャ等の解釈になります……&lt;br /&gt;という訳でようやくRESTというアーキテクチャスタイルについて次から&lt;br /&gt;調べていこうかな……うーん纏まらずに終わる。&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-4129065130471097885?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/4129065130471097885/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=4129065130471097885' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/4129065130471097885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/4129065130471097885'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2008/04/blog-post_07.html' title='まず、アーキテクチャって何だろう？'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-3433265006560690860</id><published>2008-04-04T21:23:00.003+09:00</published><updated>2008-04-04T21:54:44.414+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='http'/><category scheme='http://www.blogger.com/atom/ns#' term='REST'/><title type='text'>RESTって何？　休むの？　つーか会社休みてーよ。</title><content type='html'>今日、職場での一コマ。&lt;br /&gt;&lt;br /&gt;～～～～～～～～～～～～～～～～～～～～～～～～～～～～～～&lt;br /&gt;俺『～～～♪』　←　今日も元気に仕事をサボってウェブサーフィン中。&lt;br /&gt;&lt;br /&gt;チームリーダー(以下R)『あ～、佐藤君。ちょっといい？』&lt;br /&gt;&lt;br /&gt;俺『(びくっ！)あ、は、はい！　なんでしょうか！』←あわててブラウザ閉じる。&lt;br /&gt;&lt;br /&gt;R『突然ですが……ウェブをサービスしてみませんか？』&lt;br /&gt;&lt;br /&gt;俺『What？？？』&lt;br /&gt;～～～～～～～～～～～～～～～～～～～～～～～～～～～～～～&lt;br /&gt;&lt;br /&gt;要約するとよく分からないですが職場でのWebサービス担当大臣を&lt;br /&gt;(今後精進して)やらない？　って話です。つーてもこの現場って確か7月末&lt;br /&gt;までしかいないから4月中ぐらいにはマスターしないと使い道がないよな。&lt;br /&gt;まぁそん時はJSONやらAjaxやら色々と出てきたのですが、リーダーがその時&lt;br /&gt;持ってた本が&lt;a href="http://www.oreilly.co.jp/books/9784873113531/"&gt;コレ&lt;/a&gt;でした。&lt;br /&gt;&lt;br /&gt;という訳で今日は（というか今後もになると思うが）RESTful……つーかRESTって何？&lt;br /&gt;というトピックを書いていこうと思います。&lt;br /&gt;また、色々WEBで調べてみた所RESTといっても厳密な定義がある訳でもなく、色々な&lt;br /&gt;意味を持っていたりもするようです。という訳でじっくりと自分なりのRESTの解釈を&lt;br /&gt;ここでウダウダと語っていくと思うのでお付き合い下さい。&lt;br /&gt;また、間違ってる所や意見などがありましたら御教授、ご鞭撻頂ければ幸いです。&lt;br /&gt;&lt;br /&gt;&lt;s&gt;つーか絶対間違ってる事書きそうで怖いんだよな。&lt;/s&gt;&lt;br /&gt;&lt;br /&gt;さて……とりあえずググってみた所RESTって&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Representational State Transfer&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;の略なようです。これをスペースアルク様で和訳してみましょう。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Representational：再現、具象、描写&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;State：状態&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;Transfer：転送&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;……えー、具象状態の転送？&lt;br /&gt;&lt;br /&gt;和訳作戦……失敗！！&lt;br /&gt;なんだよこれ意味わかんねーよ。ばーかばーかつーか英語苦手なんだよ！&lt;br /&gt;&lt;br /&gt;という訳で諦めてWikipediaでも見よう。そうしよう。文明って素晴らしい。&lt;br /&gt;&lt;a href="http://ja.wikipedia.org/wiki/REST"&gt;Wikipedia大先生&lt;/a&gt;によりますと、RESTっていうのは……&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;ウェブのような分散ハイパーメディアシステムのための&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;ソフトウェアアーキテクチャ&lt;/span&gt;&lt;span style="font-style: italic;"&gt;のスタイルのひとつである。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;はい！先生！困った事にこの　&lt;span style="font-weight: bold;"&gt;ソフトウェアアーキテクチャ　&lt;/span&gt;ってのが既に&lt;br /&gt;何を言っているか分かりません。&lt;br /&gt;アホな上に知識の乏しい僕のような下民はこういう時は人に頼るか、わからない事を&lt;br /&gt;ひたすら追って調べていくしかない訳ですが……&lt;br /&gt;折角の技術Blogなんでここは自力で追っていってみたいと思います。&lt;br /&gt;&lt;br /&gt;でも今日は疲れたんでこのトピックは終了。&lt;br /&gt;&lt;br /&gt;……結局、RESTについては何の略か以外は分からず終わってしまった……&lt;br /&gt;先は長いようです。（仕事は待ってくれないようです･ﾟ･(ﾉД`)･ﾟ･）&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-3433265006560690860?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/3433265006560690860/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=3433265006560690860' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/3433265006560690860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/3433265006560690860'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2008/04/rest.html' title='RESTって何？　休むの？　つーか会社休みてーよ。'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-3090207962361104436</id><published>2008-04-03T16:59:00.002+09:00</published><updated>2008-04-03T17:19:23.079+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>変数について～初期値って……～</title><content type='html'>三日連続変数について。こりゃ書く方も読む方も&lt;br /&gt;飽きるの必至だわー……といっても特に書く事も無いので&lt;a href="http://gp400fb.blogspot.com/2008/04/blog-post_02.html"&gt;昨日&lt;/a&gt;の続き。&lt;br /&gt;&lt;br /&gt;さて、Javaにおいて変数が宣言された時ってその変数はどうなるんでしょうか？&lt;br /&gt;まず、クラス型変数の場合&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Integer height =  new Integer(168);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;こんな風にコンストラクタを使って初期値を設定したりします。&lt;br /&gt;この場合は当たり前ですが、heightというInteger型のインスタンスが&lt;br /&gt;中にint型の168という値を持ったメンバ変数を持つ……となりますね。（あってるよね？）&lt;br /&gt;さて、こっからが問題なのですが&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Integer height;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;このように宣言のみを行った場合、この"height"という変数はどうなるのでしょうか？&lt;br /&gt;昨日の日記へのコメントでmaitoさんから　エラーになる！　というコメントを頂きましたが&lt;br /&gt;実際にはコンパイルエラー等にはなりません。&lt;br /&gt;&lt;br /&gt;正解は&lt;span style="font-weight: bold;"&gt;null値を持つ、&lt;/span&gt;です。&lt;br /&gt;&lt;br /&gt;何度も何度も言っていますが、クラス型変数というのはオブジェクトな為インスタンス化を&lt;br /&gt;行わなければいけません。その為、変数を宣言しただけではそこに値は存在しない……&lt;br /&gt;つまりnullになります。&lt;br /&gt;&lt;br /&gt;じゃあここで逆に、プリミティブ型の変数はどうなるのでしょう？&lt;br /&gt;プリミティブ型の変数はオブジェクトではない為、宣言と同時に既に&lt;span style="font-weight: bold;"&gt;値は存在するはず&lt;/span&gt;です。&lt;br /&gt;実際、下記のようなコードを書いてみれば検証はたやすいでしょう。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;int height;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;System.out.println(height);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;上記コードを実行すると、結果は0になります。&lt;br /&gt;プリミティブ型の変数は&lt;span style="font-weight: bold;"&gt;宣言と同時に初期化が行われる&lt;/span&gt;のです。&lt;br /&gt;参考までに、プリミティブ型変数の初期値を以下に列挙しておきます。&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;byte→0&lt;/li&gt;&lt;li&gt;short→0&lt;/li&gt;&lt;li&gt;int→0&lt;/li&gt;&lt;li&gt;long→0&lt;br /&gt;&lt;/li&gt;&lt;li&gt;float→0&lt;/li&gt;&lt;li&gt;double→0&lt;/li&gt;&lt;li&gt;char→"\u0000"(つまり空文字、"")&lt;/li&gt;&lt;li&gt;boolean→false&lt;/li&gt;&lt;/ul&gt;こんな感じです。ほとんどゼロが入ってますね。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;さて、これにてひとまずJavaにおける変数の話は終了ですかねー。&lt;br /&gt;ただ自分で書いておきながらなんなんだけど、オブジェクト指向における&lt;br /&gt;クラス、オブジェクト、インスタンスという概念とJavaにおける同単語の扱いが&lt;br /&gt;だんだんと分からなくなってきた……&lt;br /&gt;オブジェクト==インスタンス　だと思っていたけどもそうでもないようで。&lt;br /&gt;ここらへんは正直な所まだまだ未踏の世界なのでいずれしっかり理解&lt;br /&gt;できたらここに書いていこうと思います。　何年後。&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-3090207962361104436?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/3090207962361104436/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=3090207962361104436' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/3090207962361104436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/3090207962361104436'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2008/04/blog-post_03.html' title='変数について～初期値って……～'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-8287023983909684305</id><published>2008-04-02T18:10:00.002+09:00</published><updated>2008-04-02T18:47:47.231+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>変数について～クラス型変数とな？～</title><content type='html'>&lt;a href="http://gp400fb.blogspot.com/2008/04/blog-post.html"&gt;昨日&lt;/a&gt;の続き、今度はJavaにおけるクラス型変数って奴について。&lt;br /&gt;まぁ実は書いてる僕が&lt;span style="font-weight: bold;"&gt;そろそろ意味不明になってきてるんですが&lt;/span&gt;&lt;br /&gt;気にせずスタートするとします。&lt;br /&gt;&lt;br /&gt;さてではクラス型変数とは何かというと、クラス型変数はプリミティブ型&lt;br /&gt;とは違い、&lt;span style="font-weight: bold;"&gt;オブジェクトです&lt;/span&gt;。&lt;br /&gt;その為、&lt;a href="http://gp400fb.blogspot.com/2008/04/blog-post.html"&gt;昨日の例&lt;/a&gt;のように使用する前にインスタンス化をしなければいけません。&lt;br /&gt;&lt;br /&gt;プリミティブ型の場合は　&lt;span style="font-style: italic;"&gt;int i = 1; &lt;/span&gt;のように直接値を書き込める所、クラス型の&lt;br /&gt;場合はオブジェクトを生成した後に値をセットしないといけません。&lt;br /&gt;また、クラス型の場合は当然といえば当然ですが&lt;span style="font-weight: bold;"&gt;メソッドを持ちます。&lt;/span&gt;&lt;br /&gt;例えば、&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;long ｌ　= integer.longValue();&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;こんな感じ。上記の例だと変数integer(クラス型変数)が中にint型(プリミティブ型)の&lt;br /&gt;変数をlongValue()というメソッドでlong型にキャストして値を返しています。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;こんな感じです。つまりクラス型変数って、事前にJavaで用意されているクラスを&lt;br /&gt;使ってるだけなのかなぁ？勿論無いと不便なんですけど･･････&lt;br /&gt;とりあえずここで一旦クラス型変数のまとめ。&lt;br /&gt;&lt;br /&gt;・クラス型変数は&lt;span style="font-weight: bold;"&gt;オブジェクトである&lt;/span&gt;&lt;br /&gt;・クラス型変数はオブジェクトなので、インスタンス化の後に値をセットする必要がある&lt;br /&gt;　(↑大体コンストラクタでセットするのかな)&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;さて、ここで話は終了……と思ってたのですが、↑の文章を良く読むとクラス型変数の&lt;br /&gt;場合オブジェクトを宣言はしてもインスタンス化しない、つまり&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Integer height;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;こんな所で終了するとこれってどうなるんでしょう？&lt;br /&gt;これまた飽きてきたのでまた別トピックで書くとします。&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-8287023983909684305?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/8287023983909684305/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=8287023983909684305' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/8287023983909684305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/8287023983909684305'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2008/04/blog-post_02.html' title='変数について～クラス型変数とな？～'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-8543763117027426444</id><published>2008-04-01T18:58:00.002+09:00</published><updated>2008-04-01T19:26:44.085+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>変数について～プリミティブ型って何さ～</title><content type='html'>みなさんこんばんわ。&lt;br /&gt;今日をもって私も遂に社会人三年目と相成りました。&lt;br /&gt;あんま実感無いなー。3年目っつーと……&lt;br /&gt;&lt;br /&gt;自分がN社に入社した時のI田さんと同じっつー事？&lt;br /&gt;確かあの時点でK崎先輩が4年目で……&lt;br /&gt;&lt;br /&gt;とまぁあっという間に先輩たちと同じ年次になっていく今日この頃。&lt;br /&gt;いつまでも昔と同じレベルで居る訳にはいかないですよね！&lt;br /&gt;先輩社員の面子を保つ為にも！（未だ下に後輩社員がついた事ないが）&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;という訳で今日はプログラムを少し触った事がある人ならもう問題無く&lt;br /&gt;使っているであろう"変数"って奴の、Javaでの扱いについて。&lt;br /&gt;&lt;br /&gt;Javaは型付けが厳しい言語なので変数宣言時には型も宣言しないと&lt;br /&gt;いけません。その為良くこんな感じのコードを見る事があると思います。&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;    int height = 165;&lt;br /&gt;&lt;br /&gt;整数型の"height"って変数を宣言して、初期値として165を代入してますね。&lt;br /&gt;この　int　と同じように、Javaでは下記のような8つの型が定義されています。&lt;br /&gt;&lt;ul&gt;&lt;li&gt;byte&lt;/li&gt;&lt;li&gt;short&lt;/li&gt;&lt;li&gt;int&lt;/li&gt;&lt;li&gt;long&lt;/li&gt;&lt;li&gt;float&lt;/li&gt;&lt;li&gt;double&lt;/li&gt;&lt;li&gt;char&lt;/li&gt;&lt;li&gt;boolean&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;この8つの型を&lt;span style="font-weight: bold;"&gt;プリミティブ型&lt;/span&gt;と言います。&lt;br /&gt;このプリミティブ型って奴は&lt;span style="font-weight: bold;"&gt;値としてしか扱うことが出来ません。&lt;/span&gt;&lt;br /&gt;値としてしか扱う事が出来ない、というのはどういう事かというと&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;オブジェクトとして扱う事ができない&lt;/span&gt;という事です。&lt;br /&gt;&lt;br /&gt;オブジェクトではない為、プリミティブ型の変数は直接値を代入する事が出来ます。&lt;br /&gt;先の例のように、&lt;span style="font-style: italic;"&gt;int height = &lt;span style="font-weight: bold;"&gt;165&lt;/span&gt;; &lt;/span&gt;　こんな感じに直接値を代入できます。&lt;br /&gt;&lt;br /&gt;これがプリミティブ型じゃない場合はどうでしょう？&lt;br /&gt;例として、同じように整数型を扱うIntegerクラスを使って同じ事をしてみると……&lt;br /&gt;&lt;br /&gt;Integer height = new Integer(165);&lt;br /&gt;&lt;br /&gt;こうなりますよね。上のIntegerの場合が何をやっているかというと、一旦&lt;br /&gt;Integerクラスのheightという名前のインスタンスを生成し、そこにコンストラクタで&lt;br /&gt;165っていう値を設定してます。このようにプリミティブ型じゃない変数は必ず&lt;br /&gt;クラス型のオブジェクトを生成した後、オブジェクトに対して値をセットしなければいけません。&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;……あれ？今自分で口に出した、"プリミティブ型じゃない変数"って何なんでしょう？&lt;br /&gt;これに関しては長くなるので別トピックで書こうと思います。&lt;br /&gt;とりあえずプリミティブ型変数のまとめ。&lt;br /&gt;&lt;br /&gt;・Javaで定義された8種類の型の事&lt;br /&gt;・プリミティブ型変数は&lt;span style="font-weight: bold;"&gt;オブジェクトではない&lt;/span&gt;&lt;br /&gt;・プリミティブ型変数はオブジェクトではない為、直接値を代入できる。&lt;br /&gt;&lt;br /&gt;さぁ、次はクラス型変数についてだ！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-8543763117027426444?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/8543763117027426444/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=8543763117027426444' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/8543763117027426444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/8543763117027426444'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2008/04/blog-post.html' title='変数について～プリミティブ型って何さ～'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-4533827261152289076</id><published>2008-03-31T22:57:00.002+09:00</published><updated>2008-03-31T23:18:39.847+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UML'/><title type='text'>Javaをやってると……</title><content type='html'>たまにUMLとか登場するんですよね。&lt;br /&gt;オライリー的に言うと確かオラウータンかなんか。（分かり辛いなコレ）&lt;br /&gt;&lt;br /&gt;でも、UMLって何と聞かれると……&lt;br /&gt;&lt;br /&gt;も、モデリング言語・・・？&lt;br /&gt;&lt;br /&gt;とか中身も知らずに（しかも疑問符付きで）答えるしかない俺。&lt;br /&gt;ちゅー事でちょこちょこと使ったりしたUMLを書き留めていこうかね。&lt;br /&gt;では早速、クラス図から。&lt;br /&gt;&lt;br /&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Car&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;speed:int&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;getSpeed():int&lt;br /&gt;setSpeed(int)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;こんな感じかな？（見てくれ悪いのは面倒だから。ﾕﾙｼﾃｰ）&lt;br /&gt;Javaをちょっと触った事がある人なら別にこんなのUML使わなくても、&lt;br /&gt;Carってクラスがﾒﾝﾊﾞ変数speed（int型）を持ってて、それの&lt;br /&gt;getter/setterがありますねーって&lt;b&gt;それだけかよ！&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;って感じなんですが。とりあえずUMLを用いる事によって、&lt;br /&gt;必要とする情報をしっかりと伝える事ができる。&lt;br /&gt;・・・と信じてます。正直こんな単純な例だとなぁ……&lt;br /&gt;&lt;br /&gt;一応このクラス図の表現内容を説明すると。&lt;br /&gt;&lt;br /&gt;Car&lt;br /&gt;　→クラスの名前。一番上に書く。&lt;br /&gt;speed:int&lt;br /&gt;　→クラスのﾒﾝﾊﾞ変数を記述。コロンで区切って型を記入しておく。&lt;br /&gt;getSpeed():int&lt;br /&gt;setSpeed(int)&lt;br /&gt;　→クラスのメソッド。メソッドの名前と引数が記述され、戻り値がある場合は&lt;br /&gt;　　コロンの後に記述する。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;こういう決まりに従って書くことで初見の人でも一目でクラスの全体像が&lt;br /&gt;把握しやすくなる……そういう事のために存在するようです。&lt;br /&gt;&lt;br /&gt;正直、このレベルだと習うより慣れろって感じがするので、今後何かで自分が&lt;br /&gt;クラスを表現する時にはとりあえずUMLを使ってみようかな、と思った。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-4533827261152289076?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/4533827261152289076/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=4533827261152289076' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/4533827261152289076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/4533827261152289076'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2008/03/java.html' title='Javaをやってると……'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3944707682265914780.post-8370997074829634459</id><published>2008-03-28T18:06:00.005+09:00</published><updated>2008-03-28T18:19:18.089+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>あれ？　プラグインが無いよ？</title><content type='html'>今日あった事じゃないんだけど、まだEclipseを使いはじめた&lt;br /&gt;ばかりの頃にｼｮﾎﾞｰﾝと凹んだ経験があるので書き留めておく。&lt;br /&gt;&lt;br /&gt;Eclipseといえば誰もが知ってる便利ツールで、更に世の中には&lt;br /&gt;非常に便利なプラグインがごろごろ転がっている……訳ですが。&lt;br /&gt;&lt;br /&gt;いざプラグインを追加してEclipseを再起動！！&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;・・・ってあれ？　追加したプラグイン無くね？&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;そんな感じで作業が止まった俺涙目。&lt;br /&gt;こんな時はどうすればいいかというと、コマンドラインから&lt;br /&gt;cleanオプションを指定してEclipseを起動すれば良いらしい。&lt;br /&gt;具体的に、例えばEclipseがインストールされているフォルダが&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;C:\Eclipse3.2.2\eclipse.exe&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;こんな感じだったとしたら、まずはコマンドプロンプトを起動。&lt;br /&gt;(ファイル名を指定して実行、でcmdって打てば起動する。)&lt;br /&gt;で、該当のディレクトリに移動する。上記の例の場合は&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;cd &lt;/span&gt;&lt;span style="font-style: italic;"&gt;C:\Eclipse3.2.2\&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;でいけますね。そこでEclipseを起動するんですが、その時に&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;eclipse.exe -clean&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;って入力すればＯＫ。これでちゃんとプラグインを認識しなおします。&lt;br /&gt;初回起動時は自動でcleanオプション付で起動してるとかいう噂も。&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3944707682265914780-8370997074829634459?l=gp400fb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gp400fb.blogspot.com/feeds/8370997074829634459/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3944707682265914780&amp;postID=8370997074829634459' title='3 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/8370997074829634459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3944707682265914780/posts/default/8370997074829634459'/><link rel='alternate' type='text/html' href='http://gp400fb.blogspot.com/2008/03/blog-post.html' title='あれ？　プラグインが無いよ？'/><author><name>gp400fb</name><uri>http://www.blogger.com/profile/02094500769403676508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/_lNocX9p7OjE/R-xf7S62dLI/AAAAAAAAAAM/eFsy6ZbT9WU/S220/59088_2969730088.jpg'/></author><thr:total>3</thr:total></entry></feed>
