<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>nagaseyasuhito Daily works.</title>
	<atom:link href="http://www.nagaseyasuhito.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.nagaseyasuhito.net</link>
	<description></description>
	<lastBuildDate>Mon, 23 Apr 2012 01:30:39 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Javaで実装されたPHPの実行環境Quercusのポテンシャルが高すぎる件</title>
		<link>http://www.nagaseyasuhito.net/2012/04/23/313/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=java%25e3%2581%25a7%25e5%25ae%259f%25e8%25a3%2585%25e3%2581%2595%25e3%2582%258c%25e3%2581%259fphp%25e3%2581%25ae%25e5%25ae%259f%25e8%25a1%258c%25e7%2592%25b0%25e5%25a2%2583quercus%25e3%2581%25ae%25e3%2583%2591%25e3%2583%2595%25e3%2582%25a9%25e3%2583%25bc%25e3%2583%259e%25e3%2583%25b3%25e3%2582%25b9%25e3%2581%258c</link>
		<comments>http://www.nagaseyasuhito.net/2012/04/23/313/#comments</comments>
		<pubDate>Mon, 23 Apr 2012 01:30:39 +0000</pubDate>
		<dc:creator>nagaseyasuhito</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.nagaseyasuhito.net/?p=313</guid>
		<description><![CDATA[グリーで働き始めてはや2週間、社員の年齢層が比較的若いせいか、陽気な人が多く楽しく過ごしております。 Bootcampと呼ばれる実装研修ではEthnaを始めとしたPHPのフレームワークでキャッキャウフフしています。 PH &#8230; <a href="http://www.nagaseyasuhito.net/2012/04/23/313/">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://quercus.caucho.com"><img class="alignleft" src="http://s.wordpress.com/mshots/v1/http%3A%2F%2Fquercus.caucho.com?w=300&h=168" alt="My image"/></a>グリーで働き始めてはや2週間、社員の年齢層が比較的若いせいか、陽気な人が多く楽しく過ごしております。<br />
Bootcampと呼ばれる実装研修ではEthnaを始めとしたPHPのフレームワークでキャッキャウフフしています。</p>
<p>PHPまみれの毎日ですが、意外なところでRubyやnode.jsが使われていたりHaskell使おうみたいな話もあったりと、環境やアーキテクチャによって様々な言語が使われているようです。<br />
Java大好き人間としてはJavaでなんかやったるしかないだろう、ということで個人的な実験ですがJavaで実装されたPHPの実行環境<a href="http://quercus.caucho.com/" target="_blank">Quercus</a>を使ってみたところ、あまりにハイパフォーマンスでビビったので皆様にご紹介です。</p>
<p><span id="more-313"></span></p>
<h1>Quercusってなんぞ</h1>
<p>Quercus(くえるかす)はRasinというアプリケーションサーバーでお馴染みのCauchoが開発したPHPの実行環境です。ライセンスはGPL。<br />
warとして配布されているのでTomcatを始めとしたRasin以外のアプリケーションサーバーでも動きます。商用のRasin ProfessionalではPHPスクリプトをコンパイルすることができ、更にパフォーマンスをあげることができるそうです。</p>
<p>互換性が心配になりますが、公式にMediaWikiやWordpressといったアプリケーションの動作が確認されているので、そうそう変な書き方しなければ大体のアプリケーションは動くのではないでしょうか。</p>
<h1>AWSのセットアップ</h1>
<p>AWSのマイクロインスタンスにyumでphp/httpd/tomcat7あたりをインストールして比較しました。<br />
セキュリティグループの設定で80と8080のポートを開けておきます。</p>
<pre class="brush: shell; gutter: true">yum update -y
yum install -y php php-pear tomcat7
pear channel-discover pear.ethna.jp
pear install -a ethna/ethna-beta

cd /var/www/html
ethna add-project sandbox
cd /usr/share/tomcat7/webapps
wget http://caucho.com/download/quercus-4.0.25.war
service tomcat7 start
cd quercus-4.0.25
cp -Rp /var/www/html/sandbox ./quercus-4.0.25

service httpd start</pre>
<p>これで、</p>
<p>http://なんとかかんとか.amazonaws.com/sandbox/www/</p>
<p>http://なんとかかんとか.amazonaws.com:8080/quercus-4.0.25/sandbox/www/</p>
<p>のようなURLでそれぞれアクセスできるようになります。</p>
<h1>JMeterで計測</h1>
<p>JMeterでベンチマークとってみました。ベンチマークの取り方に詳しくないので「こうやると正確だよ！」「こういう比較するといいよ！」ってのがあれば教えてください＞＜</p>
<p>とりあえずスレッド数10、Ramp-Up期間1秒、ループ回数100でそれぞれ試してみました。すると、</p>
<ul>
<li>httpd 24.0[requests/src]</li>
<li>Quercus <strong>87.0</strong>[requests/sec]</li>
</ul>
<p>こんな結果に・・・！Quercusさんパネェっす！</p>
<p>とは言えインストールしたままのPHPなんてフツーは使わんですよね、せめてAPCでも入れてみましょう。</p>
<pre class="brush: shell; gutter: true">yum install php-pecl-apc
service httpd restart</pre>
<p>再び計測。</p>
<ul>
<li>httpd(APC) 59.7[requests/sec]</li>
</ul>
<p>うーむ、やはりQuercusのが早い。</p>
<h1>所感</h1>
<p>とまあどちらもチューニングせずの、ブログに書くには雑すぎるベンチマークでしたが、Quercusのポテンシャルの高さを少しは感じられたかと思います。PHP/httpdのチューニング、Java/Tomcatのチューニングをちゃんと施してのベンチマークも取ってみたいですね。nginx/FastCGIの組み合わせはまだまだパフォーマンス出るでしょうし、Tomcat以外のアプリケーションサーバーも実験の価値ありですね。</p>
<p>とは言えQuercusを使うということは単なる高速化だけではなく、JVM上で動いているということを忘れてはいけません。JavaOne Tokyoで感じた方も多いと思いますがOracleのJavaへの本気度はマジでしょう、まだまだJavaはメインストリームを突っ走るはず。</p>
<p>過去のJavaの資産が活用できるのはもちろんのこと、JDBCコネクションプールや、Fork/Joinを始めとしたマルチコア/マルチプロセッサ対応、JavaEE7のマルチテナント、クラウド化や各種アプリケーションサーバーの強力な負荷分散・フェイルオーバーの恩恵を受けられることは運用の面でも大きなアドバンテージになるのではないでしょうか。</p>
<p>意外とサクっと試せるので、興味がある方はぜひ試してみてください。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nagaseyasuhito.net/2012/04/23/313/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>グリー株式会社に入社しました</title>
		<link>http://www.nagaseyasuhito.net/2012/04/02/276/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e3%2582%25b0%25e3%2583%25aa%25e3%2583%25bc%25e6%25a0%25aa%25e5%25bc%258f%25e4%25bc%259a%25e7%25a4%25be%25e3%2581%25ab%25e5%2585%25a5%25e7%25a4%25be%25e3%2581%2597%25e3%2581%25be%25e3%2581%2597%25e3%2581%259f</link>
		<comments>http://www.nagaseyasuhito.net/2012/04/02/276/#comments</comments>
		<pubDate>Mon, 02 Apr 2012 11:30:33 +0000</pubDate>
		<dc:creator>nagaseyasuhito</dc:creator>
				<category><![CDATA[Daily]]></category>

		<guid isPermaLink="false">http://www.nagaseyasuhito.net/?p=276</guid>
		<description><![CDATA[伊藤直也さんが退職されるというエントリを見た直後ではありますが、今日からグリー株式会社のエンジニアとしてお世話になります！ 抱負というかスタンスについて簡単に綴ってみます。 「イカしたソシャゲーをデベロップしてギロッポン &#8230; <a href="http://www.nagaseyasuhito.net/2012/04/02/276/">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://gree.co.jp"><img class="alignleft" src="http://s.wordpress.com/mshots/v1/http%3A%2F%2Fgree.co.jp?w=300&h=168" alt="My image"/></a><a href="http://d.hatena.ne.jp/naoya/20120331/1333150786">伊藤直也さんが退職されるというエントリ</a>を見た直後ではありますが、今日からグリー株式会社のエンジニアとしてお世話になります！</p>
<p>抱負というかスタンスについて簡単に綴ってみます。</p>
<p><span id="more-276"></span></p>
<h1>「イカしたソシャゲーをデベロップしてギロッポンでチャンネーとシースー！」</h1>
<p>・・・とかいったマインドではもちろんなく、どちらかというと</p>
<blockquote><p>大規模なコンシューマーサービスのインフラをどう活かすか</p></blockquote>
<p>といった下回りへの強い関心と</p>
<blockquote><p>優秀なエンジニアの渦に揉まれて自身の価値を磨く</p></blockquote>
<p>といった<a title="ソーシャル転職 vs エージェント転職" href="http://www.nagaseyasuhito.net/2012/03/28/206/" target="_blank">以前のエントリ</a>で述べた点で決めました。</p>
<p>選考過程では大規模インフラを扱う会社や、優秀なエンジニアが数多くいる会社は他にもいくつかありましたが、そのなかでグリーを選んだ理由は、<strong>会社の雰囲気・空気感が合いそうだ</strong>というところが大きいです。</p>
<p>面接に行った他の会社の中には、フロア全体や面接していただいたエンジニアの方から、なんか、こう、悲壮感漂っていたり、疲れを伴うだらしない空気感があったりと、直感的に「ここは合わないぞ」感が伝わるところもありました。</p>
<p>雰囲気・空気感の感じ方は人それぞれだとは思うのですが、そういった点でグリーは単純に「あ、いいかも」感がしたのが大きいです。人に説明する説得力はゼロだけれど、自分の直感は大事。</p>
<h1>Javaエンジニアとグリー</h1>
<p>グリーはPHPがメインストリームの会社なので、Javaエンジニアとして10年近く培ってきたスキルを捨てるように思えるかもしれませんが、分散処理、機械学習、検索エンジンなどの所謂ビッグデータ系のフレームワークはJavaで実装されていることが多く、Javaがメインストリームでない企業においても今までのスキルも少しは役に立つシーンもあるんじゃないかなあ。</p>
<p>とは言え、よく言われることですが言語なんてたかが道具なので、ぶっちゃけなんでもいいんです。そしてデキるエンジニアはなんの言語を使おうが成果は出せるもんだと思うので、私もそういったエンジニアになれるようこれまでの経験を生かして頑張らねば！弘法筆を選ばず、ってやつですね。</p>
<h1>脅しと決意</h1>
<p>中の人や知り合いには「グリーのインフラは優秀だよ」「インフラの人たちはキレ者多いから楽しいですよー」といった<strong>脅し文句</strong>をかけられてビクビクしておりますが、<strong>ドM魂を燃やしつつ</strong>荒波に揉まれエンジニアとしてのプレゼンスを高め、いち早く価値を提供できるよう精進します。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nagaseyasuhito.net/2012/04/02/276/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>モダンなSIをやりたいなら今すぐGxPに行くべき</title>
		<link>http://www.nagaseyasuhito.net/2012/03/29/179/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e4%25bb%258a%25e9%25a2%25a8%25e3%2581%25absi%25e3%2582%2584%25e3%2582%258a%25e3%2581%259f%25e3%2581%2584%25e3%2581%25aa%25e3%2582%2589gxp%25e3%2581%25ab%25e8%25a1%258c%25e3%2581%258f%25e3%2581%25b9%25e3%2581%258d</link>
		<comments>http://www.nagaseyasuhito.net/2012/03/29/179/#comments</comments>
		<pubDate>Thu, 29 Mar 2012 01:00:46 +0000</pubDate>
		<dc:creator>nagaseyasuhito</dc:creator>
				<category><![CDATA[Daily]]></category>

		<guid isPermaLink="false">http://www.nagaseyasuhito.net/?p=179</guid>
		<description><![CDATA[さて、突然ですが2012年3月末をもちまして丸々4年間お世話になったグロースエクスパートナーズ株式会社(GxP)を退職します。 転職するにあたり色々な会社を見ていくうちにいままで見えていなかったGxPという会社が見えてき &#8230; <a href="http://www.nagaseyasuhito.net/2012/03/29/179/">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>さて、突然ですが2012年3月末をもちまして丸々4年間お世話になった<a href="http://www.gxp.co.jp/" target="_blank">グロースエクスパートナーズ株式会社</a>(GxP)を退職します。</p>
<p>転職するにあたり色々な会社を見ていくうちにいままで見えていなかったGxPという会社が見えてきて結構いい会社だよなあ、と改めて感じたので思い出がてら簡単にご紹介します。結論から言うと</p>
<blockquote><p>今風にSIやりたいならGxP一択しかないよ！</p></blockquote>
<p>ということです。</p>
<p><span id="more-179"></span></p>
<h1>JavaでエンタープライズなSI会社です</h1>
<p><a href="http://www.gxp.co.jp/"><img class="alignleft" src="http://s.wordpress.com/mshots/v1/http%3A%2F%2Fwww.gxp.co.jp%2F?w=300&h=168" alt="My image"/></a>「時代はGUNDAM、Java(笑)はオワコン」とか言う人もいてJavaでSIやってる会社というと不安を感じる人もいるようですが、実際なかで働いたり勉強会参加したりOracleのJavaへの関わり方を見ると、なんだかんだ言ってまだまだメインストリームで在り続けるだろうなと思います。</p>
<p>どちらかというと日本でのJavaオワコン感って、言語仕様云々ではなく一山いくらで売られているエンジニアのスキル不足や時代遅れなフレームワーク・開発手法に起因しているような気がする。そりゃ未だにJava1.4やStruts2使ってる上にイケてない社内ORMを強要されてるようじゃそう感じるよなあ。</p>
<h1>OSSプロダクトは積極採用</h1>
<p>そしてGxPはエンタープライズ向けSIの割にOSSのプロダクトを<strong>エンジニアの提案で積極的に採用できる</strong>のが楽しい。Wicket + Hibernate EntityManager + Guiceなんてプロダクトもあるし、Luceneでごっつり全文検索やったり、RESTのAPI作る、ってんならJAX-RSの実装いろいろ弄ってから決められる。Hadoop使おうとしている人もいたりGroovy使ってるプロジェクトもあったなー、Scala使いたい！とかもやり方間違えなければ全然通ると思う。新しい開発手法やフレームワークが好きな人はマジオススメ。日々勉強です。</p>
<h1>社長こだわりの椅子</h1>
<p>そしてGxPは椅子がいい！これもっと対外的にアピールすればいいのに(笑)</p>
<a href="http://www.amazon.co.jp/%E3%82%B3%E3%83%B3%E3%83%86%E3%83%83%E3%82%B5-Contessa-%E3%83%9D%E3%83%AA%E3%83%83%E3%82%B7%E3%83%A5%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0-%E3%80%90%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%80%E3%83%BC%E3%83%89%E3%80%91-CM31AB-FBH1/dp/B0008JIECE%3FSubscriptionId%3DAKIAJJUNC52HU67NBZCQ%26tag%3Dnagaseyasuhito-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB0008JIECE" title="コンテッサ(Contessa) チェアー ポリッシュフレーム 座メッシュ 【スタンダード】 ブラック CM31AB-FBH1" target="_blank"><img src="http://ecx.images-amazon.com/images/I/318YM0TWY3L._SL75_.jpg" width="75" height="75" alt="コンテッサ(Contessa) チェアー ポリッシュフレーム 座メッシュ 【スタンダード】 ブラック CM31AB-FBH1"/>コンテッサ(Contessa) チェアー ポリッシュフレーム 座メッシュ 【スタンダード】 ブラック CM31AB-FBH1</a>
<p>渡邉社長のこだわりで社員の椅子は全員オカムラのコンテッサです。腰が全然痛くならないし、リクライニングすると昼寝にもってこいだし、メッシュなので夏でも蒸れないし、椅子の上であぐらかいてストレッチできるし、いいことだらけです。</p>
<p>以前働いていた会社は中古で3000円くらいかってくらい粗悪な椅子で、腰の痛みと戦う日々だったのだけれど、その頃と比べると天と地の差。心地良くコーディングができます。</p>
<h1>ブラック企業という都市伝説</h1>
<p>SI＝残業だらけで有給使えず＝ブラック企業、といったイメージが付きまといますが、私は残業なにそれ？状態で<strong>毎日10:00〜19:00で定時退社</strong>していました。もちろん仕事の進め方など人それぞれだとは思いますが。</p>
<p>確かにリリース直前に不具合発見したりサーバーがダウンした時はそれなりに残業(そして徹夜)しましたが、4年務めていてもそんな事あったのは片手で数えられる程度。</p>
<p>もちろん有給もちゃんと使えます。私は趣味のパフォーマンス活動の関係上、平日のイベント仕事がある日はもちろんのこと、2週間に及ぶ公演期間中まるっと休めたりとかなり融通ききます。なんだかんだで<strong>有給消化率100％</strong>でした。</p>
<h1>とは言えまだまだ発展途上</h1>
<p>テストや開発手法など模索している最中でもあり、プロジェクトごとに品質がまちまちになってしまうことは確かにあります。ただ、この「発展途上」という状態をプラスに捉えるか、マイナスに捉えるかによってGxPの楽しみ方は大きく変わってきます。整備されたフレームワーク・開発手法などを徹底的に効率良く使うことに長けている人よりも、自分で試行錯誤して創り上げることにエクスタシーを感じられる人がGxPという会社を楽しめると思います。</p>
<h1>そして転職へ</h1>
<p>さて、仕事の内容には不満もなくワークライフバランスもとれているのに、なんで転職するの？と気になるところだと思いますが、なんというか<strong>過酷な環境に自分を放り込んでみたいな</strong>と思ったことが大きいです。</p>
<p>刺激がない会社という訳ではないし、デブサミではお馴染みの@yusuke_arclampやDDD、継続的デリバリーなどの翻訳を手掛ける@digitalsoul0124といったSIや開発手法を真剣に考え続けている優秀な人たちと一緒に仕事することは学べることも多く、大きな成長につながります。ただ私自身、年齢的にもまだまだギラギラした荒波に揉まれて必死こかなきゃついてけないという危機感をもって仕事をすることが、自分自身の成長につながるとの思いから今回転職を決意しました。<strong>とんだドMですね</strong>。</p>
<p>渡邉社長には「エンジニアとパフォーマー、どっちが本職かわからん」と心配されながらも「SIやりたくなったら戻っておいで」と言っていただくなど暖かく存分に甘やかされながらの4年間でした。</p>
<p>そんな良い人に恵まれているGxPという会社ですが、このタイミングでメンバー増員計画中なので、ちょっとでも興味ある方がいらしたらご紹介できます。<a href="http://twitter.com/nagaseyasuhito" target="_blank">Twitter</a>や<a href="http://www.facebook.com/nagaseyasuhito" target="_blank">facebook</a>や<a href="mailto:nagase@nagaseyasuhito.net" target="_blank">メール</a>で連絡いただければと。</p>
<p>転職についてのエントリはまた後日改めて。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nagaseyasuhito.net/2012/03/29/179/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>warにsiteを同梱しても色々捗らない件</title>
		<link>http://www.nagaseyasuhito.net/2012/03/28/226/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=war%25e3%2581%25absite%25e3%2582%2592%25e5%2590%258c%25e6%25a2%25b1%25e3%2581%2597%25e3%2581%25a6%25e3%2582%2582%25e8%2589%25b2%25e3%2580%2585%25e6%258d%2597%25e3%2582%2589%25e3%2581%25aa%25e3%2581%2584%25e4%25bb%25b6</link>
		<comments>http://www.nagaseyasuhito.net/2012/03/28/226/#comments</comments>
		<pubDate>Wed, 28 Mar 2012 03:13:09 +0000</pubDate>
		<dc:creator>nagaseyasuhito</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.nagaseyasuhito.net/?p=226</guid>
		<description><![CDATA[何の役に立つのか分からないですが、warにsiteを同梱することでWebアプリケーションのデプロイと同時に自動生成されたドキュメントを閲覧できるようにしてみました。  やはりMaven すいません、やっぱり今日もMave &#8230; <a href="http://www.nagaseyasuhito.net/2012/03/28/226/">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>何の役に立つのか分からないですが、warにsiteを同梱することでWebアプリケーションのデプロイと同時に自動生成されたドキュメントを閲覧できるようにしてみました。</p>
<p><span id="more-226"></span></p>
<h1> やはりMaven</h1>
<p>すいません、やっぱり今日もMavenネタです。仕組みとしてはwar生成時にリソースとしてsiteをまるっと突っ込むだけです。</p>
<pre class="brush: xml; gutter: true">&lt;plugin&gt;
        &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
        &lt;artifactId&gt;maven-war-plugin&lt;/artifactId&gt;
        &lt;version&gt;2.1.1&lt;/version&gt;
        &lt;configuration&gt;
                &lt;webResources&gt;
                        &lt;resource&gt;
                                &lt;targetPath&gt;site&lt;/targetPath&gt;
                                &lt;directory&gt;${project.build.directory}/site&lt;/directory&gt;
                        &lt;/resource&gt;
                &lt;/webResources&gt;
        &lt;/configuration&gt;
&lt;/plugin&gt;</pre>
<p>targetPathは生成先のディレクトリ名です。上記の場合http://localhost:8080/hogehoge/site といったURLでアクセスできるようになります。targetPathを書かなければhttp://localhost:8080/hogehoge/ でアクセスできます。</p>
<pre class="brush: xml; gutter: true">&lt;plugin&gt;
        &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
        &lt;artifactId&gt;maven-site-plugin&lt;/artifactId&gt;
        &lt;version&gt;3.0&lt;/version&gt;
        &lt;executions&gt;
                &lt;execution&gt;
                        &lt;id&gt;attach-site&lt;/id&gt;
                        &lt;phase&gt;prepare-package&lt;/phase&gt;
                        &lt;goals&gt;
                                &lt;goal&gt;site&lt;/goal&gt;
                        &lt;/goals&gt;
                &lt;/execution&gt;
        &lt;/executions&gt;
&lt;/plugin&gt;</pre>
<p>あとはprepare-packageでサイト生成するだけです。簡単ですねー。</p>
<p>何の役にも立たないかもしれませんがどうぞ！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nagaseyasuhito.net/2012/03/28/226/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ソーシャル転職 vs エージェント転職</title>
		<link>http://www.nagaseyasuhito.net/2012/03/28/206/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e3%2582%25bd%25e3%2583%25bc%25e3%2582%25b7%25e3%2583%25a3%25e3%2583%25ab%25e8%25bb%25a2%25e8%2581%25b7-vs-%25e3%2582%25a8%25e3%2583%25bc%25e3%2582%25b8%25e3%2582%25a7%25e3%2583%25b3%25e3%2583%2588%25e8%25bb%25a2%25e8%2581%25b7</link>
		<comments>http://www.nagaseyasuhito.net/2012/03/28/206/#comments</comments>
		<pubDate>Wed, 28 Mar 2012 02:00:16 +0000</pubDate>
		<dc:creator>nagaseyasuhito</dc:creator>
				<category><![CDATA[Daily]]></category>

		<guid isPermaLink="false">http://www.nagaseyasuhito.net/?p=206</guid>
		<description><![CDATA[昨年末あたりから自身のキャリアについて考えなおし転職を意識するようになり、ソーシャル転職よろしく、知り合いのいる会社に遊びに行ったり、勉強会で情報交換したり、近しい方々に相談してたりしたのですが、エージェントによる客観的 &#8230; <a href="http://www.nagaseyasuhito.net/2012/03/28/206/">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>昨年末あたりから自身のキャリアについて考えなおし転職を意識するようになり、ソーシャル転職よろしく、知り合いのいる会社に遊びに行ったり、勉強会で情報交換したり、近しい方々に相談してたりしたのですが、エージェントによる客観的な評価や、ソーシャル転職だと見えてこない業界もあるだろうとの考えから転職エージェントに相談に行ってみました。</p>
<p><span id="more-206"></span></p>
<h1>転職エージェントもなかなかいい</h1>
<p>エージェントは特にこだわりもなく、なんとなくリクルートエージェント。担当はWeb関連企業専門の<a href="http://www.facebook.com/people/Saeko-Morimoto/100003106659848" target="_blank">森本冴子</a>さん。とても頼りになる気さくな美人さんでした。</p>
<p>予めキャリアシートを埋めておき、エージェントと面談では自分が興味のあった企業や、キャリアビジョンなどを話していくと「でしたら、この企業とか結構興味あったりしませんか？」とナイスなサジェストをしてくれます。「うおお、なにこの会社！面白そう！」みたいのが結構あります。自分で探すよりポンポン出てきてやっぱさすが本職だなあ、と感じました。</p>
<p>紹介も単に企業の資料を見せてくれるだけではなく、実際にエージェントが企業の人事の方と話した感触や、訪問した際の会社の雰囲気(良い面も、<strong>悪い面も</strong>)も交えて紹介してくれるので、思っていた以上に情報収集が進みます。</p>
<h2>日程調整丸投げ</h2>
<p>選考が複数件進んでいると各会社のブッキングが面倒なのは想像に難くないと思うのですが、例えば</p>
<blockquote><p>10日から13日の20:00以降、もしくは14日と15日どちらかの19：30以降なら空いてるのでその中で調整してください。</p></blockquote>
<p>とお願いするとあっという間に各会社と調整してブッキングしてくれるのは本当に楽チンでした。すごい、秘書みたい。</p>
<h2>年収交渉とか</h2>
<p>企業の採用ページや求人情報サイトに「想定年収400〜1200万」とか「モデル年収 27歳、入社2年目 年収700万」とか書かれてても、ぶっちゃけほとんど参考にならんと思うのですよ。</p>
<p>またエントリー時や面接の際に、低すぎる希望年収を提示して足元見られたり、高すぎる希望年収で人事の心象悪くしたり(無いとは思うけどｗ)するのではないかとモヤモヤするポイントではないでしょうか。</p>
<p>そういった点をエージェントに相談できるのは心強かったです。キャリアや実績を考慮して「この企業でこの年収は難しいと思いますよ」とか「以前この企業にはこういったキャリアの方がこれくらいの年収で転職されました」みたいな生々しい情報を惜しげもなく教えてくれるので、企業ごとの年収感は比較的高い精度で検討できると思います。</p>
<h1> ソーシャル転職はプッシュ型、エージェント転職はプル型</h1>
<p>ソーシャル転職は「この人と一緒に働けたらいいな」とか「現場で働いている生の声を聞きたい」といったプッシュ型、逆にエージェント転職は「こういった面白いことやれる会社はないか」とか「この条件にあった会社ってない？」といったプル型の転職の形だと思います。</p>
<p>どちらも一長一短あるとは思いますが、エージェントが提案した企業に勉強会で知り合った人が勤めていないかチェックして、TwitterやFacebookで現場の声を聞いたりすると、より正確に企業のことが見えてくるのでオススメです。組み合わせ大事。</p>
<p>エージェントを使って大局観を持ちつつ、ソーシャルメディアを使って現場の声を聞き、エージェント経由で各種手続きをしてもらう、なんてのが今風かもしれません。</p>
<p>なんかめっちゃ転職エージェントの回し者みたいな記事になっちゃいましたが、ステマとかじゃないですよ(笑) なにかの参考になれば！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nagaseyasuhito.net/2012/03/28/206/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>AWS Elastic Beanstalkでめちゃくちゃ簡単に継続的デリバリーを実践する方法</title>
		<link>http://www.nagaseyasuhito.net/2012/03/26/211/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=aws-elastic-beanstalk%25e3%2581%25a7%25e3%2582%2581%25e3%2581%25a1%25e3%2582%2583%25e3%2581%258f%25e3%2581%25a1%25e3%2582%2583%25e7%25b0%25a1%25e5%258d%2598%25e3%2581%25ab%25e7%25b6%2599%25e7%25b6%259a%25e7%259a%2584%25e3%2583%2587%25e3%2583%25aa%25e3%2583%2590%25e3%2583%25aa%25e3%2583%25bc%25e3%2582%2592</link>
		<comments>http://www.nagaseyasuhito.net/2012/03/26/211/#comments</comments>
		<pubDate>Mon, 26 Mar 2012 02:00:00 +0000</pubDate>
		<dc:creator>nagaseyasuhito</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.nagaseyasuhito.net/?p=211</guid>
		<description><![CDATA[みなさんAWS Elastic Beanstalk使ってますか。サーバーのセットアップをすることなくサクっとWebアプリケーションをデプロイして試せるのはとてつもなく便利ですよね。とは言えAWS Management C &#8230; <a href="http://www.nagaseyasuhito.net/2012/03/26/211/">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>みなさんAWS Elastic Beanstalk使ってますか。サーバーのセットアップをすることなくサクっとWebアプリケーションをデプロイして試せるのはとてつもなく便利ですよね。とは言えAWS Management Consoleからデプロイしようものなら@digitalsoul0124に</p>
<blockquote><p>「えーっ、手動デプロイが許されるのは小学生までだよねー(笑)」</p></blockquote>
<p>とディスられること間違いなしです。</p>
<p>継続的デリバリーを行うのであればCIサーバーからボタン1つでデプロイしたいですよね。今回はその方法をご紹介します。</p>
<p><span id="more-211"></span></p>
<h1>Mavenで使う</h1>
<p>方法はやっぱり我等がMavenです。幸いなことに<a href="http://beanstalker.ingenieux.com.br/beanstalk-maven-plugin/" target="_blank">Beanstalk Maven Plugin</a>という どストライクなプラグインがあります。</p>
<pre class="brush: xml; gutter: true"><;plugin>;
	<;groupId>;br.com.ingenieux<;/groupId>;
	<;artifactId>;beanstalk-maven-plugin<;/artifactId>;
	<;version>;0.2.5<;/version>;
<;/plugin>;</pre>
<p>セントラルリポジトリにあるので、プラグインリポジトリの設定は必要なく上記の記述だけでOKです。</p>
<p>これをMavenのリリース時にBeanstalkにデプロイするには、</p>
<pre class="brush: xml; gutter: true"><;plugin>;
	<;groupId>;org.apache.maven.plugins<;/groupId>;
	<;artifactId>;maven-release-plugin<;/artifactId>;
	<;version>;2.2.2<;/version>;
	<;configuration>;
		<;goals>;package beanstalk:upload-source-bundle beanstalk:create-application-version beanstalk:update-environment<;/goals>;
	<;/configuration>;
<;/plugin>;</pre>
<p>のようにmaven-release-pluginのgoalsにbeanstalk-maven-pluginのゴールを記述してやります。</p>
<p>Beanstalkのバージョンラベルは${beanstalk.versionLabel}が使われます。デフォルトは${maven.build.timestamp}となっていますが、maven-release-pluginと組み合わせる場合、pomのバージョンと合わせるのが良いと思います。propertiesで</p>
<pre class="brush: xml; gutter: true"><;beanstalk.versionLabel>;${project.version}<;/beanstalk.versionLabel>;</pre>
<p>としてやりましょう。</p>
<h1>Beanstalkの初期設定</h1>
<p><a href="http://www.nagaseyasuhito.net/wp-content/uploads/2012/03/beanstalk01.png"><img class="alignleft size-medium wp-image-222" title="beanstalk01" src="http://www.nagaseyasuhito.net/wp-content/uploads/2012/03/beanstalk01-300x168.png" alt="" width="300" height="168" /></a></p>
<p>初期設定といっても簡単で、AWS Management Consoleからポチポチとサンプルアプリケーションをデプロイしましょう。Application Nameは${project.artifactId}に合わせておきます。</p>
<h2>S3の設定</h2>
<p><a href="http://www.nagaseyasuhito.net/wp-content/uploads/2012/03/s301.png"><img class="alignleft size-medium wp-image-218" title="s301" src="http://www.nagaseyasuhito.net/wp-content/uploads/2012/03/s301-300x168.png" alt="" width="300" height="168" /></a></p>
<p>warはAWS S3にアップロードされるので、ターゲットとなるバケットを作成しておきます。デフォルトでは${project.artifactId}のバケットにアップロードされます。</p>
<h1>AWSアカウントの設定</h1>
<p>BeanstalkにデプロイするためのAWSアカウントをsettings.xmlに記述します。<a href="https://aws-portal.amazon.com/gp/aws/securityCredentials" target="_blank">https://aws-portal.amazon.com/gp/aws/securityCredentials</a>もしくは<a href="https://console.aws.amazon.com/iam/home" target="_blank">AWS IAM</a>よりアクセスキーIDとシークレットアクセスキーを取得してください。</p>
<h2>AWS IAMでのパーミッション</h2>
<p><a href="http://www.nagaseyasuhito.net/wp-content/uploads/2012/03/iam03.png"><img class="alignleft size-medium wp-image-213" title="iam03" src="http://www.nagaseyasuhito.net/wp-content/uploads/2012/03/iam03-300x168.png" alt="" width="300" height="168" /></a>AWS IAMで作成したユーザーのアクセスキーIDとシークレットアクセスキーを使う場合、パーミッションは<strong>AWS Elastic Beanstalk Full Access</strong>を選択してください。シークレットアクセスキーは作成直後しか見ることができない？ようなので忘れずにメモしておきましょう。忘れてしまった場合は、ユーザーのSecurity Credentialsタブより作成し直すことができます。</p>
<h2>settings.xmlに記述</h2>
<p>usernameにアクセスキーID、パスワードにシークレットアクセスキーを記述します。<a title="意外と知らない？Mavenで安全にパスワードを保存する方法" href="http://www.nagaseyasuhito.net/2012/03/08/156/" target="_blank">以前のエントリ</a>で紹介した方法でパスワードは暗号化しておくとよいでしょう。</p>
<pre class="brush: xml; gutter: true"><;servers>;
	<;server>;
		<;id>;aws.amazon.com<;/id>;
		<;username>;AKIAID2HPK4GWMGQ4JWA<;/username>;
		<;password>;{x3vArRlg3GxSApoHlXNOOG1llbg4aB2Uj8JuEM34An1bN71SOsSdSw5PJq9M/aszy9bvdK+fyxKZ3DHq+TFWLg==}<;/password>;
	<;/server>;
<;/servers>;</pre>
<p>こんな感じ。</p>
<h1>デプロイしてみる</h1>
<p>あとは普通に</p>
<pre class="brush: shell; gutter: true">mvn clean release:prepare release:perform -B</pre>
<p>とすればリリースと同時にBeanstalkへのデプロイも行われます。便利！</p>
<p><a href="https://github.com/nagaseyasuhito/bouvardia">https://github.com/nagaseyasuhito/bouvardia</a>が上記設定をしたプロジェクトなので参考にどうぞ！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nagaseyasuhito.net/2012/03/26/211/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Javaでロケタッチの住所正規化APIを扱う</title>
		<link>http://www.nagaseyasuhito.net/2012/03/09/177/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=java%25e3%2581%25a7%25e3%2583%25ad%25e3%2582%25b1%25e3%2582%25bf%25e3%2583%2583%25e3%2583%2581%25e3%2581%25ae%25e4%25bd%258f%25e6%2589%2580%25e6%25ad%25a3%25e8%25a6%258f%25e5%258c%2596api%25e3%2582%2592%25e6%2589%25b1%25e3%2581%2586</link>
		<comments>http://www.nagaseyasuhito.net/2012/03/09/177/#comments</comments>
		<pubDate>Fri, 09 Mar 2012 14:14:03 +0000</pubDate>
		<dc:creator>nagaseyasuhito</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.nagaseyasuhito.net/?p=177</guid>
		<description><![CDATA[JavaでAPIっつったらJerseyですよ。 ということで先ほどリリースされたロケタッチの住所正規化APIをJerseyで遊んでみました。 Jersey ClientとJAXBでJSONを読む Jerseyはリクエスト &#8230; <a href="http://www.nagaseyasuhito.net/2012/03/09/177/">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>JavaでAPIっつったらJerseyですよ。</p>
<p>ということで先ほどリリースされたロケタッチの<a href="http://tou.ch/developer/api_all?uri=geo%2Faddress_normalize" target="_blank">住所正規化API</a>をJerseyで遊んでみました。<br />
<span id="more-177"></span></p>
<h1>Jersey ClientとJAXBでJSONを読む</h1>
<p>Jerseyはリクエストの結果やPOSTデータがXMLやJSONの場合、JAXBの仕組みを使って良きようにPOJOにバインドしてくれます。住所正規化APIのJSONは素直なフォーマットで提供されているので、以下のような簡単なPOJOでOKです。</p>
<pre class="brush: java; gutter: true">@XmlRootElement(name = &quot;address_normalize&quot;)
public class AddressNormalize {
	public static class Result {
		public static class Normalize {
			@XmlElement
			private String region;

			@XmlElement
			private String number;

			@XmlElement
			private String build;
		}

		@XmlElement
		private String zip;

		@XmlElement(name = &quot;region_id&quot;)
		private String regionId;

		@XmlElement
		private String address;

		@XmlElement
		private Normalize normalize;
	}

	@XmlElement
	private Integer code;

	@XmlElement(name = &quot;is_error&quot;)
	private Boolean error;

	@XmlElement
	private String query;

	@XmlElement
	private Result result;
}</pre>
<p>getter/setterは省略してあります。privateではなくpublicにして直接フィールドを操作するでもいいと思います、お好みでどうぞ。</p>
<p>実際のコードはこんな感じです。</p>
<pre class="brush: java; gutter: true">Client client = Client.create();
WebResource webResource = client.resource(&quot;https://api.loctouch.com/v1/geo/address_normalize&quot;);

AddressNormalize result = webResource.queryParam(&quot;address&quot;, &quot;東京都新宿区新宿5丁目17番17号 渡菱ビル3階&quot;).get(AddressNormalize.class);
assertThat(result.getResult().getAddress(), is(&quot;東京都新宿区新宿5-17-17 渡菱ビル3階&quot;));</pre>
<p>簡単ですねー。GitHubにコードをpushしておいたので遊んでみてください。</p>
<p><a href="https://github.com/nagaseyasuhito/sandbox-loctouch" target="_blank">https://github.com/nagaseyasuhito/sandbox-loctouch</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nagaseyasuhito.net/2012/03/09/177/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>継続的デリバリーのためのJNDI</title>
		<link>http://www.nagaseyasuhito.net/2012/03/09/171/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e7%25b6%2599%25e7%25b6%259a%25e7%259a%2584%25e3%2583%2587%25e3%2583%25aa%25e3%2583%2590%25e3%2583%25aa%25e3%2583%25bc%25e3%2581%25ae%25e3%2581%259f%25e3%2582%2581%25e3%2581%25aejndi</link>
		<comments>http://www.nagaseyasuhito.net/2012/03/09/171/#comments</comments>
		<pubDate>Fri, 09 Mar 2012 13:05:34 +0000</pubDate>
		<dc:creator>nagaseyasuhito</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.nagaseyasuhito.net/?p=171</guid>
		<description><![CDATA[最近流行りの継続的デリバリー(Continuous Delivery)のプラクティスの1つに バイナリは一度だけビルドする というものがあります。 テストがちゃんと通ったバイナリをそのまま本番環境にリリースしましょうね、 &#8230; <a href="http://www.nagaseyasuhito.net/2012/03/09/171/">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>最近流行りの継続的デリバリー(Continuous Delivery)のプラクティスの1つに</p>
<blockquote>
<h4>バイナリは一度だけビルドする</h4>
</blockquote>
<p>というものがあります。</p>
<a href="http://www.amazon.co.jp/%E7%B6%99%E7%B6%9A%E7%9A%84%E3%83%87%E3%83%AA%E3%83%90%E3%83%AA%E3%83%BC-%E4%BF%A1%E9%A0%BC%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E3%83%93%E3%83%AB%E3%83%89%E3%83%BB%E3%83%86%E3%82%B9%E3%83%88%E3%83%BB%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E3%83%A1%E3%83%B3%E3%83%88%E3%81%AE%E8%87%AA%E5%8B%95%E5%8C%96-David-Farley/dp/4048707876%3FSubscriptionId%3DAKIAJJUNC52HU67NBZCQ%26tag%3Dnagaseyasuhito-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4048707876" title="継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化" target="_blank"><img src="http://ecx.images-amazon.com/images/I/5119zam7gKL._SL75_.jpg" width="59" height="75" alt="継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化"/>継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化</a>
<p>テストがちゃんと通ったバイナリをそのまま本番環境にリリースしましょうね、というプラクティスです。たぶん。 このプラクティスを実践しようとすると、Mavenで環境ごとのプロファイル切り替えてビルドするのはNGということになります。よくあるのがデータベースへの接続情報ですね。今まではこのように書いていました。</p>
<pre class="brush: xml; gutter: true">&lt;profile&gt;
	&lt;id&gt;development&lt;/id&gt;
	&lt;activation&gt;
		&lt;activeByDefault&gt;true&lt;/activeByDefault&gt;
	&lt;/activation&gt;

	&lt;properties&gt;
		&lt;javax.persistence.jdbc.driver&gt;org.h2.Driver&lt;/javax.persistence.jdbc.driver&gt;
		&lt;javax.persistence.jdbc.url&gt;jdbc:h2:mem:development&lt;/javax.persistence.jdbc.url&gt;
		&lt;javax.persistence.jdbc.user /&gt;
		&lt;javax.persistence.jdbc.password /&gt;
	&lt;/properties&gt;
&lt;/profile&gt;
&lt;profile&gt;
	&lt;id&gt;production&lt;/id&gt;
	&lt;properties&gt;
		&lt;!-- productionではテストをスキップする --&gt;
		&lt;maven.test.skip&gt;true&lt;/maven.test.skip&gt;

		&lt;javax.persistence.jdbc.driver&gt;com.mysql.jdbc.Driver&lt;/javax.persistence.jdbc.driver&gt;
		&lt;javax.persistence.jdbc.url&gt;jdbc:mysql://localhost/production&lt;/javax.persistence.jdbc.url&gt;
		&lt;javax.persistence.jdbc.user /&gt;
		&lt;javax.persistence.jdbc.password /&gt;
	&lt;/properties&gt;
&lt;/profile&gt;</pre>
<p>リリース用プロファイル(production)はmaven.test.skipをtrueにして本番のデータベースでテストを動かさないようにしています。 これらの情報をバイナリの外に出すにはどうしたらよいでしょうか？前置きが長くなりましたが、今回はJavaでお馴染みのJNDIを使って解決する方法をご紹介します。<br />
<span id="more-171"></span></p>
<h1>テスト環境でどうやってJNDI使うの？</h1>
<p>さて、GlassfishやTomcatなどのアプリケーションサーバー上であればJNDIを使うのも簡単なのですが、JenkinsなどでテストでJNDIを使うにはどうしたらよいでしょうか。</p>
<p>Spring FrameworkにはApache Geronimoの成果物であるApache XBeanを使うことでJNDIを提供できるのですが、Spring Frameworkを使わないプロジェクトの場合はなかなか難しいかと思います。</p>
<p>そこで、オンメモリで動くシンプルなJNDIコンテナ実装、その名も<a href="http://code.google.com/p/osjava/wiki/SimpleJNDI">simple-jndi</a>を使った方法をご紹介します。</p>
<h1>simple-jndi</h1>
<p>Mavenのセントラルリポジトリにデプロイされているので、以下のdependencyを追加してください。</p>
<pre class="brush: xml; gutter: true">&lt;dependency&gt;
	&lt;groupId&gt;simple-jndi&lt;/groupId&gt;
	&lt;artifactId&gt;simple-jndi&lt;/artifactId&gt;
	&lt;version&gt;0.11.4.1&lt;/version&gt;
	&lt;scope&gt;test&lt;/scope&gt;
&lt;/dependency&gt;</pre>
<p>scopeをtestにしておくことで、リリースビルドには含まれないようにします。</p>
<p>次にsrc/test/resourcesにjndi.propertiesを追加し、simple-jndiを使うように設定します。</p>
<pre class="brush: text; gutter: true">java.naming.factory.initial=org.osjava.sj.SimpleContextFactory
org.osjava.sj.root=file://src/test/resources</pre>
<p>java.naming.factory.initialにはsimple-jndiのjavax.naming.spi.InitialContextFactory実装、org.osjava.sj.rootはsimple-jndiが参照する設定ファイルのルートディレクトリです。サンプルを見たらclasspathスキームを使えるような事が書いてあったのに、実装をみたらfileスキームしか使えなかった・・・！commons-vfsあたりで様々なスキーム使えるようにしてコントリビュートしたいかも。</p>
<p>さて、試しにjavax.sql.DataSourceの設定を記述してみます。</p>
<pre class="brush: text; gutter: true">type=javax.sql.DataSource
url=jdbc:h2:mem:development;DB_CLOSE_DELAY=-1
driver=org.h2.Driver
user=
password=</pre>
<p>データベースにはh2databaseを使っています。上記のテキストをsrc/test/resources/datasource.propertiesとして保存しましょう。</p>
<p>設定はこれだけです。上記の場合datasourceという名前でjavax.sql.DataSourceがlookupできます。簡単ですね！</p>
<p><a href="https://github.com/nagaseyasuhito/fatsia" target="_blank">https://github.com/nagaseyasuhito/fatsia</a></p>
<p>にsimple-jndiを使ったテストを書いてあるので、参考にしてみてください。</p>
<div id="-chrome-auto-translate-plugin-dialog" style="opacity: 1 !important; background-image: initial !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; background-color: transparent !important; position: absolute !important; top: 0px; left: 0px; overflow-x: visible !important; overflow-y: visible !important; z-index: 999999 !important; text-align: left !important; display: none; background-position: initial initial !important; background-repeat: initial initial !important; padding: 0px !important; margin: 0px !important;">
<div style="max-width: 300px !important; color: #fafafa !important; opacity: 0.8 !important; border-color: #000000 !important; border-width: 0px !important; -webkit-border-radius: 10px !important; background-color: #363636 !important; font-size: 16px !important; padding: 8px !important; overflow: visible !important; background-image: -webkit-gradient(linear, left top, right bottom, color-stop(0%, #000), color-stop(50%, #363636), color-stop(100%, #000)); z-index: 999999 !important; text-align: left  !important;"></div>
<p><img style="position: absolute !important; z-index: -1 !important; right: 1px !important; top: -20px !important; cursor: pointer !important; -webkit-border-radius: 20px; background-color: rgba(200, 200, 200, 0.3) !important; padding: 3px 5px 0 !important; margin: 0 !important;" onclick="document.location.href='http://translate.google.com/';" src="http://www.google.com/uds/css/small-logo.png" alt="" /></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.nagaseyasuhito.net/2012/03/09/171/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>意外と知らない？Mavenで安全にパスワードを保存する方法</title>
		<link>http://www.nagaseyasuhito.net/2012/03/08/156/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e6%2584%258f%25e5%25a4%2596%25e3%2581%25a8%25e7%259f%25a5%25e3%2582%2589%25e3%2581%25aa%25e3%2581%2584%25ef%25bc%259fmaven%25e3%2581%25a7%25e5%25ae%2589%25e5%2585%25a8%25e3%2581%25ab%25e3%2583%2591%25e3%2582%25b9%25e3%2583%25af%25e3%2583%25bc%25e3%2583%2589%25e3%2582%2592%25e4%25bf%259d%25e5%25ad%2598%25e3%2581%2599</link>
		<comments>http://www.nagaseyasuhito.net/2012/03/08/156/#comments</comments>
		<pubDate>Thu, 08 Mar 2012 06:36:04 +0000</pubDate>
		<dc:creator>nagaseyasuhito</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.nagaseyasuhito.net/?p=156</guid>
		<description><![CDATA[さて、前回エントリでは様々なリポジトリにアクセスするのですが、その度にユーザー名とパスワードを入力するのは面倒ですよね。入力間違えてビルド失敗とか目も当てられない・・・！ settings.xmlに直接ユーザー名とパスワ &#8230; <a href="http://www.nagaseyasuhito.net/2012/03/08/156/">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>さて、<a title="俺々Mavenリポジトリにデプロイする方法" href="http://www.nagaseyasuhito.net/2012/03/08/146/">前回エントリ</a>では様々なリポジトリにアクセスするのですが、その度にユーザー名とパスワードを入力するのは面倒ですよね。入力間違えてビルド失敗とか目も当てられない・・・！</p>
<p>settings.xmlに直接ユーザー名とパスワードを保存する方法もあるのですが、リポジトリの設定などをsettings.xmlで共有する可能性も考えると直接記述するのはセキュリティ的に心配です。</p>
<p>そこで今回はあまり知られていない？Mavenで安全にパスワードを保存しておく方法を紹介します。</p>
<p><span id="more-156"></span></p>
<h1>マスターパスワードを設定する</h1>
<p>Mavenではマスターパスワードを設定し、それをキーにして各サーバーのパスワードを暗号化して保存します。マスターパスワードの生成は</p>
<pre class="brush: shell; gutter: true">mvn --encrypt-master-password &lt;password&gt;
[/shell]このコマンドを実行してください。標準出力に</pre>
<pre class="brush: shell; gutter: true">{jJLZkyJ3m5cHQjCxDJwPA91P4n/AMS3mNy8Ltz6UdLs=}</pre>
<p>のように暗号化されたパスワードが出力されます。コマンドライン上にパスワードを直接入力するためシェルのヒストリーに残るので注意しましょう。</p>
<p>出力されたパスワードを~/.m2/settings-security.xmlに記述します。</p>
<pre class="brush: xml; gutter: true">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;settingsSecurity&gt;
	&lt;master&gt;マスターパスワードはいつものあれですよ {jJLZkyJ3m5cHQjCxDJwPA91P4n/AMS3mNy8Ltz6UdLs=}&lt;/master&gt;
&lt;/settingsSecurity&gt;</pre>
<p>ちなみにブーレスの外の文字列は無視されるので、上記のようにコメントを記述することができます。</p>
<h1>サーバーパスワードを設定する</h1>
<pre class="brush: shell; gutter: true">mvn --encrypt-password &lt;password&gt;</pre>
<p>サーバーパスワードもマスターパスワードと同じようにコマンドライン上から生成します。settings-security.xmlがないとエラーを出力するので注意しましょう。</p>
<p>ここで出力されたパスワードをsettings.xmlに記述します。</p>
<pre class="brush: xml; gutter: true">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;settings&gt;
	&lt;servers&gt;
		&lt;server&gt;
			&lt;id&gt;github.com&lt;/id&gt;
			&lt;username&gt;nagaseyasuhito&lt;/username&gt;
			&lt;password&gt;{XkXasoj3bu8HgKQeh0lOMHNMo+dRJXKlHvCiVsRJBpE=}&lt;/password&gt;
		&lt;/server&gt;
		&lt;server&gt;
			&lt;id&gt;mavenrepository.googlecode.com&lt;/id&gt;
			&lt;username&gt;nagase@nagaseyasuhito.net&lt;/username&gt;
			&lt;password&gt;{0EMvF/Q0QCAHQhOLhAwqrCRC7YjviO1yIrPTPA/JIUI=}&lt;/password&gt;
		&lt;/server&gt;
	&lt;/servers&gt;
&lt;/settings&gt;</pre>
<p class="brush: xml; gutter: true">こんな感じ。serverのidはscmやrepositoryのidを合わせます。</p>
<p>これでMaven実行中にいちいちユーザー名とパスワードを聞かれなくなりました！JenkinsなどのCIサーバーからでもパスワードの入力を気にせずデプロイできるようなりますね。</p>
<p>何かの参考になれば！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nagaseyasuhito.net/2012/03/08/156/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>俺々Mavenリポジトリにデプロイする方法</title>
		<link>http://www.nagaseyasuhito.net/2012/03/08/146/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=146</link>
		<comments>http://www.nagaseyasuhito.net/2012/03/08/146/#comments</comments>
		<pubDate>Thu, 08 Mar 2012 00:00:47 +0000</pubDate>
		<dc:creator>nagaseyasuhito</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.nagaseyasuhito.net/?p=146</guid>
		<description><![CDATA[自分で作ったMavenプロジェクトをパブリックなリポジトリとして公開したくなったことはありませんか？簡単にセントラルリポジトリにデプロイできればいいのですが手間なので今回は野良リポジトリを作り、そこに公開する方法をご紹介 &#8230; <a href="http://www.nagaseyasuhito.net/2012/03/08/146/">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>自分で作ったMavenプロジェクトをパブリックなリポジトリとして公開したくなったことはありませんか？簡単にセントラルリポジトリにデプロイできればいいのですが手間なので今回は野良リポジトリを作り、そこに公開する方法をご紹介します。</p>
<p><span id="more-146"></span></p>
<h1>POMを書く</h1>
<h2>scmを書く</h2>
<p>まずはscmを記述して、チェックアウト、チェックインをするリポジトリのURLを記述しましょう。GitHubなら以下のような感じです。</p>
<pre class="brush: xml; gutter: true">&lt;scm&gt;
	&lt;url&gt;http://github.com/nagaseyasuhito/fatsia&lt;/url&gt;
	&lt;connection&gt;scm:git:https://github.com/nagaseyasuhito/fatsia.git&lt;/connection&gt;
	&lt;developerConnection&gt;scm:git:https://github.com/nagaseyasuhito/fatsia.git&lt;/developerConnection&gt;
&lt;/scm&gt;</pre>
<p>デフォルトではconnectionが使われるので、developerConnectionは記述しなくても大丈夫です。</p>
<h2>distributionManagementを書く</h2>
<p>distributionManagementはデプロイする先のURLを記述します。ftpやwebdav、scmなどプロバイダーがあればどこにでもデプロイすることができます。</p>
<pre class="brush: xml; gutter: true">&lt;distributionManagement&gt;
	&lt;repository&gt;
		&lt;id&gt;mavenrepository.googlecode.com&lt;/id&gt;
		&lt;url&gt;scm:svn:https://mavenrepository.googlecode.com/svn/trunk&lt;/url&gt;
	&lt;/repository&gt;
&lt;/distributionManagement&gt;</pre>
<p>上記はgooglecode上のsvnリポジトリにデプロイする設定です。GitHubにデプロイさせようかと思ったのですが、gitのプロバイダープラグインがイケてないらしく、デプロイできませんでした。バージョンあがれば直るかも？</p>
<h2>maven-release-plugin</h2>
<p>tagNameFormatはその名の通りタグの名前です。デフォルトは@{project.artifactId}-@{project.version}なのですが、個人的な好みで@{project.version}にしています。</p>
<pre class="brush: xml; gutter: true">&lt;plugin&gt;
	&lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
	&lt;artifactId&gt;maven-release-plugin&lt;/artifactId&gt;
	&lt;version&gt;2.2.2&lt;/version&gt;
	&lt;configuration&gt;
		&lt;tagNameFormat&gt;@{project.version}&lt;/tagNameFormat&gt;
	&lt;/configuration&gt;
&lt;/plugin&gt;</pre>
<h2>maven-deploy-plugin</h2>
<p>maven-deploy-pluginではデプロイに必要なプラグインの設定を記述します。distributionManagementのurlから自動的に解決してくれたらいいのにね。</p>
<pre class="brush: xml; gutter: true">&lt;plugin&gt;
	&lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
	&lt;artifactId&gt;maven-deploy-plugin&lt;/artifactId&gt;
	&lt;version&gt;2.7&lt;/version&gt;
	&lt;dependencies&gt;
		&lt;dependency&gt;
			&lt;groupId&gt;org.apache.maven.wagon&lt;/groupId&gt;
			&lt;artifactId&gt;wagon-scm&lt;/artifactId&gt;
			&lt;version&gt;2.2&lt;/version&gt;
		&lt;/dependency&gt;
		&lt;dependency&gt;
			&lt;groupId&gt;org.apache.maven.scm&lt;/groupId&gt;
			&lt;artifactId&gt;maven-scm-provider-svnexe&lt;/artifactId&gt;
			&lt;version&gt;1.5&lt;/version&gt;
		&lt;/dependency&gt;
	&lt;/dependencies&gt;
&lt;/plugin&gt;</pre>
<h1>デプロイしてみる</h1>
<p>あとは普通にmvn release:prepare release:performすればdistributionManagementで指定したリポジトリにデプロイされます。自分は以下のようなシェルスクリプトを書いてデプロイしています。</p>
<pre class="brush: shell; gutter: true">#/bin/sh
rm -Rf $1 &amp;&amp;
git clone https://github.com/nagaseyasuhito/$1.git &amp;&amp;
cd $1 &amp;&amp;
mvn clean release:prepare release:perform -B</pre>
<p>何かのご参考になれば！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nagaseyasuhito.net/2012/03/08/146/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

