Jenkinsユーザ・カンファレンスで発表 「SIerのJenkins事情」

7月29日(日)に開催された「Jenkinsユーザ・カンファレンス 2012 東京」のS406-2セッションで発表してきました。

SIerのJenkins事情」というタイトルで「社内でのJenkinsの普及活動について」と「社内でJenkinsを使っている事例を3つ」を紹介しました。


資料作成から発表までたくさんの方にご協力いただきありがとうございます。

特に、事例発表のために忙しい時間を割いてくださり協力して頂けたことには大変感謝しています。

また、今回Jenkinsユーザカンファレンスの運営に携わったスタッフの方には、あまり偉そうにはいえませんが、ありがとうとお疲れさまでしたといいたいです。
次回開催の際には、発表者となるかどうかはわかりませんが、何かの形でお手伝いできればと思います。

発表した内容などについては、下に各種リンクを張っていますので、興味のある方は、見て頂ければと思います。

自分の発表が終わった後、所用で会場を後にしてしまった関係で、他の方々の発表を聞けなかったので、早くニコニコで見れるようにならないかな。

Jenkinsユーザ・カンファレンスで発表します!

いよいよ来週の日曜日まで迫ってきました。
Jenkinsユーザ・カンファレンス 2012 東京」のS406-2セッションで発表します。
参加申し込みは、こちらからできます。
申し込みサイトを見るとわかりますが、参加人数が1000人を超えています!


タイトル

SIerのJenkins事情 〜CI実践プロジェクト事例から超大規模プロジェクトの活用事例まで〜

概要

日本のSIerがJenkinsを普及に努めて3年!社内普及活動の内容を紹介します。
また、小さいけど執事Jenkinsの活躍に支えられながら歩んできたプロジェクトから超大規模プロジェクトで1000人を超える多くの開発者を助けてきたJenkinsの雄姿を紹介します。


主な発表内容は、既に公開されている概要の通り社内普及活動内容と事例を予定しています。
事例では、タイプの違う3つのプロジェクトでのJenkinsの使われ方を紹介していきます。
システム規模が数百KStepから数MStepとなるの中からピックアップしていて、規模の大きなプロジェクトでは開発者も1000人越えのもの含んでいます。
また、Jenkinsは、Agile開発のプラクティスのCI(継続的インテグレーション)やCD(継続的デリバリー)とも相性がよく、よく使われていますが、今回はSI案件ということもあり、全事例ウォーターフォールで開発しています。
ウォーターフォールでのJenkinsの活用の仕方などにも注目してもらえればと思います。



今までいくつかの場で発表させて頂きましたが、200人以上入る大きな会場では初めてでかなり緊張しそうです。
緊張すると早口になってしまい、練習よりもかなり早く終わってしまう傾向があるので、当日の時間配分はかなり不安。。。
まだ、時間はあるし練習あるのみということで、頑張ります。

Jenkins実践入門 ?ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)

Jenkins実践入門 ?ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)

Git ポケットリファレンス


「Gitポケットリファレンス」を頂きました!
ありがとうございます!
今のところ、会社よりもプライベートで使うことが多くなること間違いないので、自宅で活用させてもらおうと思います。


この「Gitポケットリファレンス」は、Gitの環境準備やGitを使う際の最低限の基本情報など、これからGitを始める時に片手に持っておくと便利な1冊だと思います。


特に一番最初に付いているチートシートが便利だと思います。

ちょっとド忘れしたときには、重宝します。
このシートがあるだけでも一通りの基本操作はできますし。


慣れた人でも「Chapter 2」のリファレンスは、あると便利なのは間違いのではないでしょうか?
GUIのクライアントもありますが、かゆいところに手が届く操作は、やはりコマンドを要します。
恥ずかしながら、私自身のよくGitコマンドの使い方がわからなくなったりすることもあるので、そういうときには役立つと思ってます。


「ALMinium」で共有リポジトリを構築するところから、リポジトリの運用のための設定なども「Chapter 3」に紹介されています。
また、すぐに手軽に使うならGitHub!ということでその活用方法も掲載されていて、とにかくすぐに使い始めるときにはオススメです。


Gitポケットリファレンス

Gitポケットリファレンス

Pythonプロフェッショナルプログラミング


ずっと前に書いた記事の公開を忘れて放置してしまっていて今更ですが、公開します。
Pythonプロフェッショナルプログラミング」のレビューに参加させて頂いた関係で献本を頂きました。
とても読み応えのある本に仕上がっていて、そんな本の政策に参加させて頂き、ありがとうございます。

何度も読んでいましたが、本でもまた通して読んでいました。

Pythonを使っている人もこれから使って開発を始める人もとても勉強になる本です。


■第1部:Pythonで開発しよう
何はともあれ環境準備の部です。
この部とAppendixで環境周りの準備は事足ります。
そして、簡易のWebアプリもサンプルとして載せていて、まずは作って動かしてみることができます。
簡易なものですが、要件定義-設計-実装の流れでものを作らせてくれます。
まずは、新人に触らせるにはちょうどいい内容でもあるかも知れません。


■第2部:チーム開発のサイクル
第2部ではチームの開発環境の準備や構築、コミュニケーションツールなど、サンプルはPythonになっていますが、どの言語の開発でも参考になるエッセンスが詰まっています。
課題管理、バージョン管理、CIなど開発基盤のセッティングについては、Pythonであればそのまま構築すれば、一通り揃えられます。
それぞれについて運用方法について、十二分に紹介されていて参考になると思います。


また、Sphinxを使ったドキュメンテーションとJenkinsを使った自動生成では、内部資料を効率的に整形されたドキュメントを準備するノウハウが紹介されています。
この本もこの仕組みを使って書かれているそうです。
Sphinxを使うことでバージョン管理しやすくなるし、Jenkinsを使って整形された文書を自動生成することで、エラーもすぐに確認できるようになります。
開発者にとっては、コーディングと同じ感覚で文書も作成でき、ストレスも軽減できるんじゃないですかね〜。


■第3部:サービス公開
テスト環境、商用環境など製造したアプリケーションをデプロイする仕組みを紹介しています。
個人的には、Jenkinsを使ったデプロイなども紹介してほしいななんて思ったり。

加えて性能についての測定、チューニング手段を紹介していて、リリースに向けて必要な最終ステップのノウハウです。


■第4部:開発を加速するテクニック
第4部では、テストのテクニック・Djangoの紹介・PythonのTipsと知っていると得する情報です。
特に「テストを味方にする」章は、テストをする時の心がけやケースに対する対応なども記載されていて読み物として読んでおくといいと思います。
この章で紹介されている【〜の時】の対応は、自分のプロジェクトの方針やルールなどを考慮して、一つの判断材料として心に留めておくといいかもしれません。


最後に、本書では現場で実際に使われていたノウハウが詰まっていて自分のところと比較してみると新しい発見が出てくると思いました。
言語の違いで取り入れにくいところもあったけど、参考になるノウハウは多いと感じました。
ぜひ手に取って自分たちの開発現場と比較してみたり、気になった所があれば積極的に取り入れてみてはいかがでしょうか。

Pythonプロフェッショナルプログラミング

Pythonプロフェッショナルプログラミング

Jenkinsプラグイン開発〜リリースまで〜

以前、Jenkinsのプラグイン作成のための環境準備からひな形作成、デバッグなどを書きました。

Jenkinsのプラグインを作ろう!<作成環境準備編>

今回は、その後、作成したプラグインを公開するまでの道のりを忘れないうちに書いておこうと思います。
とは言っても、だいぶ経ってしまったので、覚えている範囲でのメモといった感じになってしまった。。。

ここで書いている手順は、「List Command Plugin」を例にしています。
■「List Command Plugin」の基本情報
・name
List Command Plugin
・artifactId
list-command
WikiのURL
https://wiki.jenkins-ci.org/display/JENKINS/List+Command+Plugin
#Wikiのページは、タイトルに「List Command Plugin」と入力すると勝手に「List+Command+Plugin」のようなURLになります。
GitHubのURL
https://github.com/jenkinsci/list-command-plugin
#GitHubリポジトリは、「[artifactId]-plugin」で作成しました。

■前提

  • プラグインの実装が終わっていること
  • Gitが利用できる環境であること
  • GitHubのアカウントを持っていること

プラグインの「pom.xml」に設定を追加する

org.jenkins-ci.plugins

plugin
1.409

List Command Plugin
list-command
0.3-SNAPSHOT
hpi
https://wiki.jenkins-ci.org/display/JENKINS/List+Command+Plugin


[ID]
[NAME]


scm:git:ssh://github.com/jenkinsci/list-command-plugin.git
scm:git:ssh://git@github.com/jenkinsci/list-command-plugin.git
https://github.com/jenkinsci/list-command-plugin

Wikiページを作成する
1. Jenkins Wikiにアクセスする
https://wiki.jenkins-ci.org/
2. ログインする
アカウントを持っていない人は、こちらからアカウントを作成してください。
3. 「Add」ー「Page」をクリックする。

4. ページ名を「New Page」欄に入力する。
#Wikiのページは、タイトルに「List Command Plugin」と入力すると勝手に「List+Command+Plugin」のようなURLになります。
5. 「Wiki Markup」を選択して、最低限以下をコンテンツとして入力

{hudson-plugin-info:pluginId=<プラグインのID>}
h1. Description
{excerpt}
h1. Version history
h2. Version 0.1 (11/26/2011)
Initial release

6. 「Location」を下記とする。
Jenkins > Plugins
7. 「Labels」にプラグインの機能に合うものを設定する。
8. 「save」ボタンをクリックする。

GitHubリポジトリを作成する

https://github.com/organizations/jenkinsciにアクセスして「New Repository」ボタンからリポジトリを作成します。

作成する権限がない場合は、権限のある人に変わりに作ってもらいましょう。
IRCで作成を依頼するか、メーリングリストで作成を依頼すると良いでしょう。

ソースコードをcommit、pushする
0. プラグインディレクトリに移動

cd [プラグインディレクトリ]

1. リポジトリの新規作成

git init

2. リモートリポジトリを登録

git remote add origin git@github.com:jenkinsci/build-node-column-plugin.git

3. リモートリポジトリの確認

git remote -v

4. ファイルの追加

git add src pom.xml

5. コミット

git commit -a -m "message"

6. プッシュ

git push origin master

■リリースする
下記のコマンド実行してリリース作業を行う。

mvn release:prepare release:perform -Dusername= -Dpassword=

コマンド実行中に、GitHubのユーザー名とパスワードが3回聞かれる。
※途中の1回でも認証に失敗すると中途半端な状態となりリリースが完了されなかったので注してください。



■さいごに
冒頭にも書いた通り実際に作業したときから少し時間が経っていて、操作が曖昧なだったりします。
今後プラグインのバージョンアップや新規登録したときに修正したりします。

Arduinoを使ってみた〜環境準備とサンプル実行

Arduinoを少し前に購入したのですが、ネタが思いつかなかったこともあり、手つかずでした。

Arduinoをはじめようキット

Arduinoをはじめようキット

何か作りたいと思いながらも手が出せていなかったところで、書店で「Arduinoスーパーナビゲーション しくみと応用テクニック」を見つけたので、これを機に環境準備からサンプルの実行までやってみました。

Arduinoスーパーナビゲーション しくみと応用テクニック

Arduinoスーパーナビゲーション しくみと応用テクニック

ちなみに、下記のサイトからチラ見ができます。

1. Arduino統合開発環境(IDE)を入手する
下記のサイトからダウンロードすることができます。

このページから「Arduino 1.0」をダウンロードします。
自分の環境にあったバイナリを選択しましょう。

今回は、Macなので「Mac OS X」からダウンロードします。

ダウンロードした「arduino-1.0-macosx.zip」を解凍すると「Arduino」というファイルがあるので、アプリケーションディレクトリにコピーします。

これでインストール完了です。

2. Arduino UNOのドライバーをインストールする
Arduinoを利用するため、ドライバーのインストールをします。
ドライバーは、下記のサイトから取得できます。

OS毎に分かれていますが、ここでは「Mac OS X」の「2.2.16」からダウンロードします。


ダウンロードした「FTDIUSBSerialDriver_v2_2_16.dmg」を開きます。

「FTDIUSBSerialDriver_10_4_10_5_10_6」を実行してドライバーをインストールします。


ここまでで、ソフトウェアの準備は完了です。

3. ArduinoをPCにつなげる
特に難しいことはありません。
普通につなげてください。

4. Arduinoでサンプルコードを実行する
アプリケーションの一覧から「Arduino」を実行します。

起動するとエディターが表示されます。

このエディター内にスケッチ(プログラム)を書いていきますが、その前に「Board」と「Serial port」を設定します。
メニューから「Tools」-「Board」-「Arduino Uno」を選択します。

メニューから「Tools」-「Serial port」-「/dev/tty.usbmodemfa131」を選択します。

これで下準備は完了です。
最初なのでここでは、サンプルコードを呼び出します。
メニューから「File」-「Examples」-「1. Basics」-「Blink」を選択します。
するとサンプルのコードが呼び出されます。


次にウィンドウ内のUploadボタンをクリックして、Arduinoにスケッチを流し込みます。
完了するとArduino上にあるLEDがチカチカ光るようになります。

第3回TFSユーザーズ勉強会のLTの資料を公開

第3回TFSユーザーズ勉強会のLTの資料を公開しました。

今回の勉強会参加者の大半が既にTFS Advent Calendarをご存知だったので、なかなか厳しかったです。