はてなブログに移行しました

最近あまりブログまで手が回っていないけど、はてなブログに移行してみました。

細かい使い勝手はまだ分かっていません。が、移行に関しては特に問題起きてなさそうに見えますし、問題が起きたらロールバックできる手順とかもろもろ親切だと思いました。こういうところは、ユーザの安心感に直結するところだから、ちゃんとしていると好感がもてていいですよね。僕も見習っていきたいと思います。

取り急ぎ、移行しましたよ報告まで。

このGW中にやったこと

何かブログ書いてないなー。そして今年のGWも安定のヒキコモリ。まともに外に出たのは、近くのファミレスに行ったぐらいだけ。GW前から体調悪いのが、まだ完調していないし。色々すいません・・・>全方位

とりあえず、このGWにやったことをざっと書いておきます。今回は、新しく何か作ったりする系は押さえて、どちらかというと基礎力を高めることに注力しました。4月に仕事の環境変わったので、それに追随していくための基礎固めです。


AWS

周りがプロばかりなので名前だけは十分過ぎるほど聞いてたのですが、何となく後回しになってたやーつ。さすがに避けれそうになくなってきたので、今回やってみました。

もう1年近く前にWeb+DBに@と@が書いた記事を元に、とりあえずはチュートリアルから。EC2のインスタンス立ち上げて止めて、elastic IPとさらに独自ドメイン割り当てて、S3に保存したりとか。

WEB+DB PRESS Vol.62

WEB+DB PRESS Vol.62

  • 作者: cho45(さとう),染田貴志,浜本階生,おにたま,中島聡,角田直行,はまちや2,山本竜三,尾藤正人,石橋利真,ミック,みやけん,個々一番,広木大地,原悠,WEB+DB PRESS編集部
  • 出版社/メーカー: 技術評論社
  • 発売日: 2011/04/23
  • メディア: 大型本
  • 購入: 14人 クリック: 1,332回
  • この商品を含むブログ (23件) を見る

その後は、Jenkins EC2 Pluginを試してみました。ただ、Amazon LinuxのAMIだといまいちうまくいかない感じ。EC2 Pluginがrootでログインすること前提で作られているっぽく、"remote user=ec2-user"や"Root command prefix=sudo"を設定してもだめぽ。sshd_configのPermitRootLoginをyesにするとうまくいくようになりましたが、なんだかなーってところです。

とりあえず今すぐ使う予定もないので、これ以上は置きで。何かあったらもうちょい深いところまでみようと思います。

zsh+tmux

デフォルトのbash+Terminal.appでやってきたのですが、これまたそろそろ限界がきたので、この機会にCLI環境を整備しようと思いました。周りはscreen派?みたいですが、今からやるならtmuxの方がよいという風の噂を受けて、tmuxで。

とりあえず、インストールしてざっと触れました。後は、@が言ってた「コマンド一発で複数のホストにSSH接続する」というシェルスクリプトがよさそうだったので、tmuxのコマンドと組み合わせて作ってみました。引数で指定したホスト(複数可)ごとにウィンドウを作成してssh接続するスクリプトです。

ちょっとぐぐったけど、意外とありそうでなかったんですよね。なので、もっと簡単に!tmuxで複数のサーバにSSH接続して同じコマンドを一気に送る | 三度の飯とエレクトロンを参考に作ってみました。他にもっといいやり方とか、そもそも別のツールがあるのかな?あったら教えてください。

rsync

実は触ったことなかったんで。↑で作成したEC2上のインスタンスを対象に、初回バックアップ -> 2回目バックアップ -> 復元ぐらいを。あまり細かいとこは触れずに、さらりとです。

Jenkins業

Jenkinsユーザカンファレンスのタイムテーブル作成中です。来週か再来週ぐらいには公開したいと思っているので、もうしばらくお待ちください。

ちなみに、Jenkins ユーザ・カンファレンス 2012 東京 - connpassも初日こそ300人/日という驚異的な記録をたたき出したのですが、最近あまり伸びてませんね。ただいま600人弱。タイムテーブル作成中にキャパを簡単に算出してみたら、計算上1300人弱は入る見込みです。倍くらいまではいけるので、みなさんこぞってご参加を。


あと、もうちょっとやりたいことがあったのですが、間に合いませんでした。あと数時間GWが残っているので、いけるところまで頑張りたいと思います。

俺はようやくのぼりはじめたばかりだからな
この果てしなく長いGWをよ・・・


未完

http://www1.odn.ne.jp/cjt24200/yamada/text/otokozaka/8.gif

社内ブログ書きました

一応会社ブログなので出落ちネタとかも自重したし、実名で書いたので僕が書いたかどうか分からない方もいるかもしれないですね。

http://bohyou.vis.ne.jp/hokuto/img/hokuto4b12.gif

背景なんですが、この前のJenkins勉強会レポートSphinxを使って書いてみました。で、その際毎回HTMLファイルをビルドしてBacklogにあげるのが面倒だったので、Jenkinsの後処理でファイル共有にあげれるようにプラグイン拡張しようと思ったのが、そもそもの経緯です。

(結局プラグインの拡張が間に合わなかったので、手動でファイル共有にあげていたのですが・・・)

なお、あっちにも書いていますが、何か要望や不具合報告があるならはてだでもTwitterでもFacebookでも何でもいいのでご連絡ください。Twitterは「Jenkins Backlog」で検索かけた結果をRSSリーダーにかけており、@ついてなくても大抵反応できます キリッ

Jenkins勉強会のスタッフ視点からの反省

この前のJenkins勉強会のレポートも無事掲載されたということで、反省すべき点を忘れないうちにつづっておきます。


分割募集の意図を伝えきれていなかった

一番がこれ。「1時間で40人の1次募集枠が埋まってしまう」レベルだったので、告知のタイミングでたまたまチェックできなかった人にもできるだけチャンスを与えようとして、1,2,3次と分割募集したのですが、その意図を明確に伝えきれていませんでした。なので、どこに応募すればいいか戸惑った方もといたかと思います。

この辺、キャンセル待ちとかは使う告知サイトにもよると思うので、ある程度吟味してから選択していきたいです。

色々見積もりが甘かった

  • 時間
  • お金
  • 当日タスク

とか。

当日タスクは先にある程度決めておかないと、土壇場では頼みにくい。みんな発表は聞きたいはずなので。

あと、自分が聞けないのは諦めた方がいいかなと思いました。どうせ、レポート書くときに一からじっくりUst聞き直すから、諦めて裏方に徹しまくったほうが無難かなと。

ビアバッシュはスタッフ側の負担がぼちぼち大きい

ビアバッシュするとなると、当然参加者全員から料金徴収する必要が出てきて、そしたらドタキャンの問題とか受付の負担が増えるとかもあるので。参加料無料だと、ドタキャンについてはそこまで考慮しなくていいんですけどね。

ただ、参加者にとっては、ビアバッシュは結構ありがたい仕組みですよね。安上がりで懇親会的なノリで皆と話せるし、時間もそんなに遅くならない。

なので、毎回は無理ですが年1ぐらいではやれたらなーと思いました。

デジカメ忘れたので、レポートに掲載する写真が少なくなった

タイトルで終わり。


ちょっと今回アップアップになってしまって、心の余裕が無くなってしまったのが申し訳ないです。スタッフ側に余裕がないと、参加者も楽しみにくいだろうし。

今度からは心に余裕を持つことを心がけて、発表者/会場提供者/参加者みなさんに感謝の気持ちを忘れないようにしたいと思います、まる。

http://3.bp.blogspot.com/_LM8HL3MnkQE/Szp6xofYNnI/AAAAAAAAC48/wyOyxnT_XDk/s320/%E6%84%9F%E8%AC%9D%E3%81%A3%EF%BC%81%E5%9C%A7%E5%80%92%E7%9A%84%E6%84%9F%E8%AC%9D.jpg

Jenkins本 & WEB+DB Press Vol.67 を献本いただきました!

レビューをさせてもらった経緯もあって、ついにねんがんのJenkins実践入門を献本してもらったぞ - @ikikko のはてなダイアリーに引き続いて2冊の献本をいただきました。オライリー様・技評様、ありがとうございます!書評遅くなってすいません...orz


Jenkins

一部では蛙本という愛称で知られている、Jenkins本です。

Jenkins

Jenkins

原著がPDFで無償提供されているので読んだことはあるのですが、翻訳版を読み返しても案の定細かいことはまったく覚えていませんでした。英語が全然苦なく読めるという一部の人以外にとっては、やはり日本語で読めるというのはとっかかりとして楽だと思います*1

はじめの一歩でJavaの次にいきなりGitをインストールしてくださいとか、Mavenベースで説明されてるとかで、Jenkinsを最初に使う方が読むのはちょっとハードルが高いでしょう。ただ、「Jenkins実践入門」や「Jenkinsで始めるビルド職人入門」がAntベースだったので、Mavenをメインで使う方は参考になるかと思います。実は僕もあまりMavenベースでJenkinsを運用していないので、勉強になりました。

本書の内容をいきなり全部実践するのは難しいと思うので、一度目を通しておいてこんなときにはこんな手法が使えるんだよ的に使うのがいいのではないでしょうか。

また、日本語版だけの特典として、付録にPlay! Frameworkを題材にプラグイン開発の説明が付いています。ただ、僕のようなPlay弱者にとってはそのまま試すことができないので、ツライこともあるかもしれません。そんなときは、下記資料が参考になるかと思います。この辺は特定のモジュールに依存していないので、Jenkinsプラグイン開発に絞って学ぶことができます。(kiy0takaさんのは一部Twitterに依存してるところがあるけど)

WEB+DB Press Vol.67

今月号のWEB+DBの第1特集に、あの川口さんがJenkins特集を書いています。デブサミの発表でも語られていたそうですが、川口さん自身の口からJenkinsやCIへの思いを知れるというのは、それらを理解する上で重要なことだと思います。

WEB+DB PRESS Vol.67

WEB+DB PRESS Vol.67

特集の中身は、第1、2章でJenkinsについて簡単な紹介があった後に、後半ではJenkinsを使いこなす技が惜しげもなく紹介されています。プラグインの使い方の単純な説明や、単に手動ビルドを自動化への置き換えというだけでなく、Jenkinsを使ったからこそできることが色々と書かれています。

僕はどちらかというと、Jenkinsがなくても開発が進められるようにする方向に倒すことが多いんですよね。「基本的にビルドスクリプトで実装して、Jenkinsではそれを叩くようにする。普段はJenkins上から実行されるけど、いざとなればビルドスクリプトを直接実行することもできる」という方針。ただ、Jenkinsのプラグイン使えば楽にできることも、ビルドスクリプトで実装するのは面倒なことも多いんですよね。デプロイ関係とかレポート周りとか。

そこで、Jenkinsがあることを前提にできる環境ならば、Jenkinsにべったりで組んだ方が楽になる機会も多いかなと思いました。この辺はケースバイケースで考えていきたいです。


なお、これらの書籍はこの前のJenkins勉強会で、余興の一環として参加者にプレゼントさせていただきました。オライリー様・技評様においては、プレゼント用にも提供していただきありがとうございました。

*1:Jenkinsは進化も早いので、なるだけ本家英語版のドキュメントもしくはソースコードを読むにこしたことはないのですが

GradleでEclipseの設定をカスタマイズする

2,3日前にMaven神が荒ぶっておられました。(この辺のやりとり興味あるのですが、どなたかTogetterしてないですかね?)

【追記】mavenからgradleに移行する理由ってあるのかね」という流れだったようです。そこ見逃していました、すいません。


必須条件

  • Gradle 1.0-milestone-8 以上
    • GRADLE-2024 の対応が取り込まれている必要がある

設定方法

build.gradleに、以下(特に後半のwithPropertiesのところ)を追加してみてください。

apply plugin: 'java'
apply plugin: 'eclipse'

...

eclipse.jdt.file {
	withProperties { properties ->
		// 折り返す行数を120まで伸ばす
		properties.put('org.eclipse.jdt.core.formatter.lineSplit', '120')
	}
}

こんな感じで、Eclipse側の設定を追加できます。あとは、折り返しの行数以外の必要な設定も適宜追加してやればいいでしょう。

【追記】普通は一つ一つ設定するより、フォーマッタをファイルに落としておいて、それを読み込むことの方が多いでしょう。ファイルからフォーマッタの設定を読み込むには、以下のような形で実現できます。(例として、フォーマッタファイルはformatter.xmlとして保存されているものとする)

eclipse.jdt.file {
	withProperties { properties ->
		def formatter = new XmlSlurper().parse('formatter.xml')

		formatter.profile.setting.each {
			properties.put(it.@id as String, it.@value as String)
		}
	}
}

.projectや.classpath, .settings/org.eclipse.jdt.core.prefsは同じようなやり方で制御できます。が、それ以外で制御が必要なやつがある場合は、ちょっとやり方を変える必要があるかもしれません。あと、FindBugsとかCheckstyleとかはまた別の設定が必要になるけど、それは何とでも設定できるでしょう、多分。

大阪のJenkins勉強会で発表してきました

東京だと僕は話聞くより裏方に回る方が多いので、これに遠征して話してきました。主催の@さん・@さん、非常に広い会場をお貸しいただいたTIS株式会社様、平日の夜にも関わらず参加してくださったみなさん、ありがとうございます。


発表内容的には、「Jenkinsのプロジェクトがたくさんあるときの管理コストを減らす」という視点からでした。これはこれで面白いとは思うのですが、このテーマとは少しずれるので話さなかった話もいつかまとめて発表なり明文化して整理しておきたいです。

発表内容とはちょっとずれますが、「発表のテンポがよくて聴きやすい」という声があったのが嬉しかったです。致命的に滑舌が悪いのは自覚しているので、少しでもテンポよくするためにちょいちょい工夫してたのが多少なりとも効果あったのかなと。スライド4,5枚に1枚は画像のスライドを挟むようにしている*1のとか、ちょっとヒートアップして早口になってきたなと思ったら水を飲んでリセットするというのを意識して実践したのとか。

他の人の発表は、GerritとかEC2とかXFDとか、いずれ取り入れてみたいものばかりのデモでした。デモでやられると、やっぱいいなーって思いますよね。

懇親会では、久しぶりにほぼアウェイなところで、新鮮に話せました。発表時に伝えきれなかったことなどもあって、ちょい自分の話が多くなった感があるので、もうちょっとみんなの話を聞けるようにすればよかったなとは反省してます。あとは、kiy0taka さんとJenkinsの内部的な話ができたのも面白かったですね。Jenkins Tutorial Pluginをお待ちしています。


まとめると、テニスの王子様面白いですよねってことでいいですかね。早く天衣無縫の極みを開拓したいです。

*1:全部画像のスライドにしてもいいけど、画像探すのが若干面倒なのと、箇条書きというか文字として適度に説明が記載してあった方がスライド見ただけで分かりやすいっていうのがありまして。