邪道Jenkins
自己紹介
向山 雄平(HAZI)

仕事 : 社内システムの開発, デザイナー

開発 : Javascript, Perl, Ruby, FileMaker

Twitter : @HAZI

Blog : http://hazi.jp
ニコニコでの活動
OS X 用 Dashboard Widget

 色々高機能

 ニコ生RSS 読み込み部はかなり作るこ
 んであるので、興味のある方はソース
 見てみて!

 2011年末開発終了

                    し いよ !!
   一応動 くら
ニコニコでの活動

動画制作

 sm14157281

 エフェクト系担当

 Motion, Final Cut Pro
ニコニコでの活動

プロ生のお手伝い

 プロ生ちゃんスタンプ

 受付のシステム開発

 東京ではほぼ欠かさず参加
今回の内容
#1 Jenkinsとは
#2 王道なJenkinsの使い方
#3 邪道なJenkinsの使い方
#4 まともな邪道Jenkinsの使い方


※ごめんなさい初心者向けです。
#1
Jenkinsとは?
• 旧名 Hudson
• Javaベース
• CI Tool(継続的インテグレーションツール)
                             じぇんきんすじぃ
CI Tool?
なにそれ
主にプログラマーのアプリケーション作成時の品質改善や
納期の短縮のための習慣のことである。
by http://ja.wikipedia.org/wiki/継続的インテグレーション




  いわゆる最近はやりのアジャイル系
なるほどよくわからん
具体的には?
#2
王道Jenkins
例えば、Gitでバージョン管理しているような場合

1. 開発する。

2. ローカルテストに成功したらサーバにpushする

3. Jenkinsがpushされたことを自動的に確認

4. ビルド・詳細テストを自動的に実行

• 失敗したらメールで連絡

• 成功したら本番環境にデプロイ
処理を自動的に実行
忘れない。
何かあってもすぐに気付ける。
継続的に品質保持が出来る
王道Jenkins = 意識高い
Jenkins =
多分そういうこと
#3
邪道Jenkins
邪道ってなんだ?
Jenkins = CIツール
CIツールとして使わないJenkins



     邪道Jenkins
そもそも Jenkins は何が出来るのか


• タイマーなどでのタスク実行
• それに、WebUI と APIと、プラグイン機能を追加
• プラグインは 600個以上
• マルチプラットフォーム対応(Win, Mac, Linux)
• スレーブが作れる
Jenkins = すごいCrontab



 ※ CrontabはUNIX系のタイマーでタスクを実行するためのツールです
すごい Crontab って言われると
 なんだか使えそうじゃない?
すごい Crontabを使うとどんなこ
     とが出来るの?
Case 1




              🕔
スマホで外出先からも操作出来る
   目覚まし欲しいなぁ
Case 1




              🕔
すごいCrontabにお任せ!
Case 1




                             🕔
•Jenkinsに登録したタイマーでパソコンから大音量の音楽
を再生

•タイマーの時間は、WebUIから変更可能
•突然の外泊でもスマホからタイマーを止められる!
•アラームと同時にメールを飛ばせば、止め忘れ防止にも。
          ※ 電気代のことを気にしたら負け
Case 2




          
上司から不定期にメールで報告を求
 められて、対応が面倒くさい…。
Case 2




         
すごいCrontabにお任せ!
Case 2




                 
•例えば集計結果をメールするだけなら、
•定期的にメールをチェックして、報告依頼メールをパター
ンマッチング

•報告依頼メールが来たら、集計を実行し結果を出力
•そのままJenkinsから自動的に上司にメールを送信!
Case 3




            
Instagram的なサービス作りたい!
でもグラフィック系のコード書けな
          い…。
Case 3




          
すごいCrontabにお任せ!
Case 3




                  
•Photoshopで写真を加工するマクロ作る
•WebサーバアプリからJenkinsのAPIを使って、そのマ
クロを実行して画像を作らせる

•アクセスが増えても、スレーブの台数を増やせばいい
#4
まともな邪道Jenkins
リモートコンパイラ
• iPad などコンパイラの無い環境でコーディング

 • Dropbox で Mac と同期
 • Mac に Jenkins を入れておき

 • WebUI から Jenkins でテスト・コンパイル実行

masuidriveさんが実際にやられてました。
http://blog.masuidrive.jp/index.php/2012/12/02/ipad-mini-codeeditor/
お仕事のお話
• FileMaker Pro で業務システムの開発
• バッチ処理がたくさん
• Macを何台も用意して Crontab(LaunchAgent)
 で定期的に実行


    ※ FileMaker Pro = MS Access 的な UIとDBを一緒にしたアプリケーション。
             作ったものがiPadでも実行出来て最近注目を浴びている。
※ 会社のMac mini 達
監視が結構大変
FileMaker外部連携用の
    APIとか無い。
監視ツールとか難しい。
問題点

• 1個のOSで1つしか同時に実行出来ない

• 必然的に台数が増える

• 1つのタスクの実行を変更すると関連するタスクの修正を、複数
 台にまたがって行う必要がある

• 複数台にまたがる場合は余裕を見てバッチをセットしたり

• エラーで止まっても気づかなかったり
そこですごいCrontab
マスタで一元管理が出来る

• 複数台のマシンをスレーブとして簡単に登録出来
 る。

• タスクの管理もWebUIから。
• 過去どのマシンでどういった実行が行われたかが
 確認できる。

• 実行するマシンはタグなどで指定出来る。
実行するスクリプトもGitで管理


• タスクを実行するたびにJenkinsがワークスペー
 スを作成し、チェックアウトしてくれる。

• スクリプトを更新しても、各マシンに手動でリリ
 ースしないくていい。

• 事前準備が、FileMakerのインストールと、
 Jenkinsへの登録のみ。
複数のタスクを同時に実行可能



• 例えば、マスタデータの更新完了後に5台に分け
 てバッチ処理を同時に実行出来る

• Linuxなどでのタスク終了ごに、FileMakerを実行
 することも可能。
エラーが起きるとプロセスを切ってくれる



• FileMakerはエラーが起きると止まってしまう。
• でも、Jenkinsにエラー信号を返してあげると、
 その間作られたプロセスすべてを殺してくれる。

• 止まったFileMakerも勝手に殺される。
まとめ
Jenkins はインストールが本当に楽
設定もWebUIから出来る
スレーブ作るのも簡単
邪道Jenkins

邪道Jenkins