とやま Civic Tech Party 2015のメモ
あいさつ
講演1
- Code for Japanの高木さま。
- Code for Xを支援する組織。
- ノウハウのシェアなど。
- 行政に人を送り込んだり。
- 日本は大変な状況(税収、少子高齢化、人口減少...)
- 公共サービスへの需要は拡大。
- 国債出してるけど、無限には出せない。
- 従来型のお上がなんとかしてくれる時代じゃない。
- なので、一緒に手を動かす。
- 文句を言うだけだと、国民と行政の溝が深まる。
- なので、Civic Tech。
- テクノロジーを使って、効率的に社会貢献をしよう。
- 5年前にアメリカで始まった。
- 結構な経済規模。
- ともに考え、ともにつくる
- 行政・自治体、市民、クリエイター
- 一緒に最後まで作る(外注とかではない)
- しかも、楽しく。
- Spending.jp:年収から税金がどこで使われているかがわかる。
- 5374.jp:ゴミ出し情報のウェブアプリ。多言語化で外国人とか。
- 会津若松市消火栓マップ:冬になると雪に埋まってしまう消火栓の場所を調べる。
- さっぽろ保育園マップ:保育園の場所・サービスを地図上で探せる。
- 33歳のCode forを支援している。ブリゲード支援。
- 地域の課題は地域でしか解決できない。
- サービス開発の5パターン
- わかりやすい可視化型→行政の透明性・信頼性向上(Spending.jpとか)
- 対話型→行政の透明性向上、国民参加(ちばレポとか)
- リアル・タイム型→国民の利便性向上(電車の運行情報とか)
- しかい型
- コンシェルジュ型→(子供の予防接種の場所・期間をサジェスト)
質疑応答
- ちばレポは初期投資とかいくらぐらいかかってるか
- 金額は把握してないが、データ出すところまではCode for Xでやっている。
- 保育園マップを公開して、悪用されたりしない?
- 受け止めるスタンスでやらないと。行政はリスクを考える。ただ、もともとは行政のホームページに乗っている。リスクは増えてないはず。
- 意見投稿掲示板作ったけど、担当者の積極性次第。
- いまのところ、そんなに大きな問題にはなってない。
講演2
- スマートシティ 2.0
- 都市で何が起こっているかを可視化するとか。
- 都市の状況に応じて信号の長さを変えるとか。
- 自分の演奏をyoutubeで流す
- スマートシティの目的:セキュリティ・セーフティ・効率性
- センサをばらまく
- 最近は:健康・コミュニティ創発・楽しさ
- 自動化・手動化のバランスが重要になってくる。
- Smart City 1.0
- 高度に自動化されたシステムがプロセスを完遂する。
- 2.0は時と場合により強調形態を変える。
- Clout:クラウドとIoT
- 市民の影響力を高める。
- 都市のセンサデータをセキュアに取得。
- 既にセンサが多くあるけど、うまく活用できてない
- タイムスの駐車場情報とか。
- 邪悪なツール:WEB Sensorizor
質疑応答
- センサが安くなってるけど、それらの活用とかを詳しく。
- 異なる種類のセンサを統一的に扱う必要がある。インターオペラビリティ。
- 世界4カ国の別々のセンサデータを透過的に扱えるように。
- 駐車場情報も時間・次のイベントによってかわったり、燃費からどこのガソスタに行くべきかなど。
- 未来を予測できる。混雑を予想し、一方通行にしたりすることで、混雑度を下げる。
- 10km先の安売りに行ってしまう人間の心理。客観性を高めて可視化することで、意思決定を
- 富山に何回来てます?富山で面白そうな情報とか可視化したいものあります?
メンター紹介
なぎせさん
金宏さん
- ライター。
- パンチカードでプログラム書いてた。
- PHP/C/C#とかで連載してた。
- スマホアプリ開発本を書いた。
- クラス名とか出てこないかもしれないが、解決法とかは提示できると思う。
- プログラムを学ぶためには、新しいプロジェクトを始める。
Code for紹介
南砺
- 東京から3.5h
- 合併11年目
- 去年設立
- 2014年の活動
- cafe for NANTO:カレー食べながら会話
- ゴミ出しカレンダー(公式ゴミ袋に載ってる)
- コミュニティバスのバス停マップ
- ハッカソンを開催した
- 2015年の活動
- 南砺市フェローシップ
- 若い人たちが結構多い。
高岡
- 人口流出が多い。
- 大学が少なく、若者がいない。
- Change/Collaboration/Challenge/Community
- 5374.jpの高岡版
- 古城公園マップ
- 石碑とか、自然の見どころを紹介。一部、中国語。
- 高岡クラフト市場街マップ
- 紙とスマホの役割を考えないといけない。
- NATの工作プロジェクトでArduino勉強会。
- 温度を振動回数で教えてくれるものを作った。
- 鉛筆シンセサイザー:鉛筆の線で音が変わる。
- mbedとArduinoの橋渡しlbeDuinoを作った。
- mbedのライブラリをArduinoで利用。
- オリジナルのシールドを作ると、便利です。
富山
- 富山の生活を快適にするための任意団体。
- 7名がコアメンバー
- 2月に発足。
- まち歩きを行い、Local WikiとOpenStreetMapに登録
- 富山新聞に掲載された。
- 5374の富山市版。
- ウィキペディアin富山
- 新聞にも掲載された。
- 今後の活動。
- シビックテックナイト参加者募集中。毎月第一木曜日。
氷見
- 去年の6月に設立。
- 年齢層が幅広い。
- TED x Himiを来年開催。
JAWS-UG re:Moteに行ってきた
JAWS-UG re:Moteは初開催 13会場で同じものを見聞きしてる V-CUBEで配信
青森
http://www.slideshare.net/biatunky/jaws-remote2015t2
やっぱり、リモートでスライドショーを表示させるのは、慣れてないと難しい。
最近の趣味はEdisonとかでIoT
アクセスが数えるほどしか無い地方での話
CDPのロゴかっこいい
ICDP(INAKACLOUDDESIGNPATTERN)
地方には地方なりのクラウドの活用の仕方があるはず。
http://icdp.biz
予算はない、アクセス無い、でも落としちゃダメ
t2インスタンスは安い、速い
ただし、CPUクレジットの残量による
ゼロになると、ほぼ使いものにならない
平常時にクレジットが減るような状況だとスペックアップが必要。
CloudWathで残量が確認できる。
t2の使いどころ
テスト・開発環境・バッチ・小規模なサービス用サーバ
東北だと半分ぐらいの案件で使っている。
t2.microでWPなら1500PV/時間が目安
実際はストレステストが必要。
t2.microは使い切ったら10%しかCPU性能が出ない
CPUクレジットを使いきらないような環境であれば、t2インスタンスは使える。
磐田
http://www.slideshare.net/HidekiItou/jawsug-remote-workspaces
Amazon WorkSpaces
用途はリモート勤務・モバイル端末でのアクセス・開発環境などなど。
Amazon WorkDocs
1ユーザ $7/月〜
Google Driveみたいに使える。
沖縄
http://www.slideshare.net/shumach217/re-mote
Device Farm
calabash
BDDのツールであるcucumberを使用したUIテストフレームワーク
backdoorを使用することで、デバイスの関数を実行可能
引数を渡したり、返り値を受け取ったり出来る。
Device指定でパフォーマンスモニタをグラフ表示
スクリーンショットも見れる
Puree(ぴゅーれ)
内部情報を容易に取得
テスト時間の短縮
backdoorは通信がボトルネックになる(スローテスト)
Pureeだとバッファに蓄えてくれる
https://twitter.com/shumach217/status/640037085911453696
初心者
http://www.slideshare.net/TakeshiWakamatsu1/cli-52443681
http://t-wkm2.hatenablog.com/entry/2015/09/05/141901
紫本をCLIでやってみた
http://www.amazon.co.jp/Amazon-Web-Services-%E5%9F%BA%E7%A4%8E%E3%81%8B%E3%82%89%E3%81%AE%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF-%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E6%A7%8B%E7%AF%89/dp/4822262960/
EC2にログインしない(UserDataでインストール完了させる)
RDS利用
続きはWEBで
感想:最初は正直しんどい
手順書作成に最適(スクショとっても画面が変わる)
デモ成功(てってれー
HPC
HPC専門支部始めました
High Performance Computing
力学シミュレーションとかの工学分野
中小企業・スタートアップ・高専でもHPCを。
ブラジルの水道会社でHPCの利用事例
管理コンソール作って、ボタン一つで自分だけのクラスタを立ち上げ・破棄
高知
http://www.slideshare.net/yukihitokataoka/jawsug-remote-2015-awsiot
地方でAWSとIoT
マイキーワードはIoTと複業
環境センサ、自然災害の監視、お年寄りの見守りなど
- Cognite(認証)
- Kinesis(中継)+Lambda(処理)
- S3 / DynamoDB(保管)
Cogniteは機器レベルでの認証も出来るらしい
IoTの取り組み例(施設園芸)
栽培環境をある程度調整、園芸作物を生産
気候などを調査・制御する
- 温度が低下→ボイラー制御
- CO2濃度低下+晴れ+高湿度→天窓を開く
- etc
CO2センサーはちょっと高い(1万オーバー
デモサイト: http://s.ykata.net/
コードも公開されている
IoTは技術先行で、活用はこれから。
農業とか、車とか、老人の健康状態とか。
ダイブ+継続
北陸
https://speakerdeck.com/aibax/we-love-s3
Amazon S3の再復習
2006年の3月のAWSリリース時からあった。
EC2より前からある。
バージョン管理機能も付けれる。
クロスリージョンレプリケーション追加(2015/03〜)
- スタンダードストレージ
- 低冗長化ストレージ(RRS)
- Glacier(アーカイブ)
- バックアップ用途
細かいファイルを沢山アップロードしていると高くなる
S3への登録は無料、ダウンロードは1GB当たり17円ぐらい
セキュリティ
ユーザ単位の権限
アクセスログの記録(監査)
使いどころ
Webサイトホスティング
Apacheやnginxの代替(POSTメソッドは使えない)
独自ドメインを使える。ただし、バケット名とホスト名を同一にする必要あり。
静的コンテンツの配信(実運用の際はCloudFrontとの併用を検討)
バックアップ・DR対策
アップロード無料
AWS CLIのS3コマンドによるファイル同期
aws s3 sync /path/to/backup s3://バケット名/
コンテンツ配信
- アクセス頻度は低いが、常時公開が必要なデータ(古いマニュアルとか)
- 定期的に更新する統計やマスタデータ
イベント通知
SNSでメールとかwebhook
SQS
Lambda(処理待ちサーバのコストが不要)
アップロードドリブンで処理を実行
進化してる
- バケットに入っているオブジェクトの数
- バケットの中の容量
→CloudWatchにメトリクス追加(ただし、1日毎に更新)
- VPCからS3へのアクセスが出来るようになった
最近、調べていること
同期型ファイル共有
- Amazon WorkDocs
同期が不安定、同期状態がわかりづらい - CloudBerry Box
Windowsのみ
メタデータが入ってたり - GoodSync
手動または定期同期 - SparkleShare
バックエンドはgit
CodeCommitと組み合わせられるかも - ownCloud
サーバが必要だが高機能
大分
AIRPO
- BLEによるポイント配布
- 店舗側でポイントによるインセンティブを決定できる。
- PUSH通知を店舗側から打てる
- 店舗内の移動をヒートマップ(?)化
愛媛
- Cognito
- デバイスへのアクセス許可
- Kinesis
- Lambda
- KinesisへのPUTでコードを実行
DynamoDB
-
- mraa : ハードウェアを操作するためのフレームワーク
- cylonってのもあるらしい
- node.js
- mraa : ハードウェアを操作するためのフレームワーク
いろいろ入ってるセンサーキット https://www.switch-science.com/catalog/1812/
context.succeedでハマった
DynamoDBへの書き込みは非同期。
その完了を待たずにcontext.succeedを呼ぶと、Lambdaが終了する。
書き込みが完了しない。
名古屋
Docomo Developer support なんでこんなことしてんのかわかんないけど、無料でいろいろ公開してる。
画像認識API
画像から商品の情報を取得
ECサイトなどをクロールして、DBに格納、画像と連動させる。
AmazonのFIREFLY的な
- 安全性
- Blue-Green Deployment
- 再現性・生産性
- Immutable Infrastracture
- 設定のバージョン管理
バッチ処理はS3を入力にし、S3に出力することで、障害耐性を高める
突然のラジオ体操!
エバンジェリストの高岡さん
エバンジェリストとしての初の発表。 自分で、ITで仕事を無くしてきた人。 ルータ作る→ゲーム作る→外資系
懇親会
北陸は鳥珍や 金賞取ってる手羽先の食べ放題。 車で行ってたので、アルコールは飲めず。
- 石川の人も、富山に来ることはある。ファミリーパークとか。
- 富山はインテックの一強。
- 石川はなんとかって会社のOBが作った会社が多い。
- 福井は特に無いから、逆にAWSの導入とかがやりやすい?
- 富山は製造業が多く、Salesforceが強い。
- ある程度古くからある中小のIT会社は、しがらみが多い。
- 世の中狭い。知り合いを1人挟んだら繋がることがある。
Skip Gunosyを公開しました。
リリース報告
Skip Gunosy - Google Play の Android アプリ
本日、Skip Gunosyというアプリを公開しました。 使い方は簡単、インストール後にメールなどのGunosyへのリンクを踏むだけ。 ローディングが表示され、ちょっとすると、クッションページをすっ飛ばして元記事を開きます。 ついでに広告も出ます。
作った理由
いつも、Gunosyはメールで見ているのですが、最近(でもないですが)、Gunosyが作ったページに遷移されることが増えてきました。 ただ、一部の記事はレイアウトが崩れていたり、画像がうまく表示されなかったりと、結局元記事へのリンクを探す日々が続きました。 3度同じ事を繰り返す時は自動化する、という言葉があるように、自動化した次第です。
実装はいつもの通りGitHubに置いてあります。 要件を満たすこと以外はほとんど考えてないので、コードが汚いです。
免責事項的な?
Gunosyさんに、もし(見つからないと思うけど)怒られたら消します。 GunosyさんのHTML構造が変わったら動かなくなります。その時は、気力があれば対応します。
「Kanazawa.rb x Hokuriku.NET x JAWS-UG北陸」に参加してきた
Kanazawa.rb x Hokuriku.NET x JAWS-UG北陸 : ATND
メモはこちら。
感想。 ・JAWS Toyamaが出来るらしい。手伝えることがあれば、手伝いたい。 ・北陸はやっぱり、クラウドとかの勢いは弱い。 けれど、関東と比べてそれほど比率が低いわけでは無さそう。 現に、このイベントは満員。 ただ、人口がそもそも多くないし、意識高い系の人数は少ない。 ・金沢・福井のコミュニティは比較的回っているらしい。 富山はあまり上手くいっていない。 勉強会などを開いても、人を集めるのが大変。 ・ITなおっさんらが集まると、IT大喜利が始まる。
内容。 ・AWS Lambdaは来そう。 Tokyoリージョン来るまでにちょっとぐらいやっておこう。 ・Azureも頑張ってるらしい。 イベントのストリーム処理は必要になってきそう。 ・Dockerとk8sの概要はなんとなく理解できた。 Docker自体は、小規模に使っていくだろうけど、どこまで使うだろうか。 ・ポータビリティとしてのDockerは、あまり考えてなかった。 けど、たしかに。 結構ゴタゴタしてるし、Docker大丈夫かとも思ってたけど、もうちょっとやっておいた方がいいのか。 ・便利なSaaS、いっぱいあるな。 PaperTrailとか、そろそろ使っておいた方が良さそう。
あれ、やることいっぱい。。。
エンジニアだけど、ポートフォリオっぽいもの作りました
twitterなどのURLを、このHatena Blogにしてました。 そうすることで、自分の書いた記事や自分のアプリを紹介できてると思ってました。
ふとしたときにスマホで見てみると、サイドバーのアプリへのリンクが全く表示されてなかったのです。 これはまずい、ってことで、アプリの紹介をメインに、保持スキルも紹介できるようなページを作ってみました。
それがこちら↓
Ishikura Noboru portfolio
BEMもどきだったり、jade / stylusで作ったりと、フロントについてもいろいろ頑張りましたが、それよりも公開までのプロセスを一番頑張ったと思います。
というわけで、具体的な話。
コードリポジトリ
リポジトリは、 noboru-i/noboru-i.github.io · GitHub です。
ただ、masterブランチには成果物しか置いておらず、こちら noboru-i/noboru-i.github.io at src · GitHub にソースを置いています。
開発
gulp serve
によって、インクリメンタルにビルド・ブラウザのリロードを行っています。
ほぼ、会社の同僚が書いていたのの劣化コピーですが。
/gulp/task に個別にタスクを記述したり、config.coffee にパスを一括で定義したりしてます。
詳細は、本人の記事を確認してもらえばと思います。
CircleCI
circle.yml に設定が書いてあります。
- masterは生成結果なので、CircleCIの処理対象外にしています
- nodeのバージョンは最新がいいだろうと思って、とりあえず0.12にしています
- srcブランチに対して、script/deploy.sh を実行しています。
script/deploy.sh にデプロイの手順が書いてあります。
npm run build
により、package.jsonに定義されている通り、gulpのdefaultタスクが実行されます- gitの設定として、メールアドレス等を設定しています
- publicの中身をtarにまとめてArtifactとして保存しておきます
- public内をgitのリポジトリとして初期化し、リモートをnoboru-i/noboru-i.github.ioに設定します
- このブランチにcircle.ymlが存在しないと、デフォルトの動作が実行されてしまうので、circle.ymlをコピーしています
- 強制的に
git add
,git commit
,git push
しています
イメージ図
全体としては、こんな感じ。
感想
GitHub Pagesは便利なんだけど、ソースと生成物を一緒のリポジトリに入れちゃうのは嫌だし、手動のビルドでビルド漏れも嫌ですし。
その点、リポジトリにあるコードをCircleCIでビルド・デプロイするのは、必ず・クリーンな状態で公開できるため、メリットは大きいと思います。
仕組み部分は、それなりにいい感じに出来たと思うので、酷評されてるデザイン面と、BEMもどきって言われたCSSの命名をがんばってみようかとか思ってます。
iOS証明書の期限が切れたので、再取得する
前提
- 昔、証明書を作った
- 今、期限が切れている
- とりあえず、申請用の証明書を再取得したい
手順
キーチェーンアクセスを起動します。 期限、切れてますね。。。
メニューから、証明書アシスタント -> 認証局に証明書を要求... を実行します。
証明書アシスタントが開くので、メールアドレス・通称が設定されていることを確認、ディスクに保存を選択して、続けるを押します。
証明要求が作成されました。 CertificateSigningRequest.certSigningRequest が保存されたと思います。
iOS Dev Centerを開き、Certificates のAllを選択します。 「+」を押します。
ProductionのApp Store and Ad Hocを選択、Continueを押します。
Continueを押します。
先ほど作成した証明要求( CertificateSigningRequest.certSigningRequest )を選択し、Generate を押します。
生成されるので、Downloadを押します。ios_distribution.cer が落ちてきた気がします。
iOS Distributionの行が増えてますね。
行が増えてますね。
続いて、Provisioning Profileを作ります。 Expiredだらけです。
今回はDistributionのものを取得したいので、それを選択し、Editを押します。
選択されてるCertificatesが無いので、選択し、Generateを押します。
再生成されました。Downloadを押すと、 XXXX.mobileprovision がダウンロードされたと思います。
これで、申請用のipaは作れるようになりました。 同じように、AdHoc/Developmentのprovisioningも出力できそうです。
PUSH通知の証明書も切れてるので、再生成が必要です。 Apple、面倒ですね。。。
AndroidのGradleでbuildTypes毎にtaskを作成する方法
前提
build.gradleにて、下記のように書くことで、buildTypesを増やせます。
buildTypes { hoge.initWith(buildTypes.debug) hoge { applicationIdSuffix ".hoge" } }
これだけで、 assembleHoge
とかは作成されます。
src/main
と同じように、 src/hoge
ディレクトリを作り、そこにファイルを配置することで、それらで上書きすることが出来ます。
本題
作成した hoge
環境と、元々ある debug
, release
それぞれにタスクを定義したいとする。
(各環境事のapkファイルを、ゴニョゴニョやる必要がある、とか。)
GradleでAndroidアプリを起動するタスクを追加する - インターネッコはじめました
の丸パクリですが。
とりあえず、下記のように定義できる。
android.buildTypes.all { theBuildType -> def buildType = theBuildType.name task ("exe${buildType.capitalize()}", dependsOn: "prepare${buildType.capitalize()}") << { // 何かを実行したり } task ("prepare${buildType.capitalize()}") { } }
この場合、
./gradlew exeHoge
とか、
./gradlew exeRelease
とかが出来る。
「2015 新春 JJUG 特別企画 Jenkins まつり」に参加しました
http://jjug.doorkeeper.jp/events/19259
先に感想
- Oracle来たこと無い(あったかも。忘れた)と、どこ行っていいかわからんかった。
- スーツ率高め。7割ぐらい?
- Slack使ってる人がほとんど手が上がらなかったのが、ちょっと衝撃的。
- プラグインいっぱい。実運用する前に、プラグインテスト用の環境が欲しい。作ろう。
- UrbanCodeは、自分がエンタープライズじゃないからあんまり関係無い気がした。
- 川口さんの話は、最初何を話しているのかわかんなかった。ついていけてからは面白かった。
- 広い範囲を上手く自動化していきたい。
- 荷物だけあって、結局誰も来なかった席は何だったんだろう。
Javaユーザに贈るJenkins 25のTips
Jenkins実践入門書いた人
必須
- Gitプラグイン
Validated Mergeプラグイン(エンタープライズ限定) - Githubプラグイン
webhookでプッシュ。ポーリングじゃない。 - Gradleプラグイン
gradleラッパーでもできるけど、スレーブとか使うとき便利
コーディング中のやつ
- checkstyleプラグイン
- FindBugsプラグイン
- TaskScannerプラグイン
TODO / FIXMEを警告にしてくれる
ジョブの設定系
- JobConfigHistoryプラグイン
設定の変更履歴を見れる。
ビルド履歴にハンマーマークが出てくる。前回との設定の差分も見れる。
コンソールを見やすくする系
- Timestamper
コンソール出力にタイムスタンプを表示できる。経過時間も見れる。
自分色に染める
- Emotional Jenkinsプラグイン
Jenkinsおじさんが3变化する - chuck norrisプラグイン
チャックノリスさんに - GreenBallsプラグイン
青をグリーンに変えられる - Nested Viewプラグイン
パイプラインプラグイン使った時に、階層構造で表示出来る。
プラグインじゃないTips
- JUnitのテストレポート表示
JUnit互換で出力させると、Rspecの結果も表示できる。 - マルチ構成プロジェクト
Safariはmacだけ、とかをフィルターで出来る - パンくずメニューでショートカット
いろんなメニューが出てくる。 画面遷移を減らせる。 - コンソールにジャンプ
ビルド中の青いメーターをクリックすると、コンソール出力を見れる - safeRestart
/hostname/safeRestartにアクセスすると、再起動出来る
CIを制す
- Deployプラグイン
Glassfish / jboss / tomcat に対応 - Xvfbプラグイン
仮想ディスプレイで、Seleniumなどのブラウザテストが出来る - Build Pipeline Viewプラグイン
Jobの流れをGUIで見やすい - Promoted Buildsプラグイン
だれかが承認した場合のみ実行
3つの並列テストが全て通ったら、とか。 - Workflowプラグイン
一杯プラグインが入る。
Groovy DSLでジョブを書けるようになる。
スニペットもある。
CIを制したら
- Slackプラグイン
- Email-extプラグイン
メールの細かい宛先設定など。 - Disk Usage プラグイン
ディスクをいっぱい使ってると、使ってる感が見える。 - Monitoring
CPUとかメモリとかをモニタリング出来る。グラフで。
Jenkins実践入門は改訂予定のため、まだ電子化されない
継続的インテグレーションから継続的デリバリーへ
- エンタープライズを意識した話。
- 開発部門がさわれなかったり、上長の承認が必要だったり。。。
- 本:継続的インテグレーション入門、オライリーのJenkins
- 本:継続的デリバリー
- ツールの共有が難しい。Dev vs Ops。思いの違い。
- 組織が大きくなっていくと、分担・チェックが多くなる
- CI:ビルドジョブの組み合わせ→CD:環境毎
- CDの領域はDevとOpsが重なる
UrbanCodeの説明・デモ
- プッシュボタン・デプロイメント
- D&Dでフローを作れる
- 細分化したViewもある
- プラグインの活用
Jenkinsとの連携とか、メインフレームに対するデプロイとか
Groovyで書ける - 環境ごとのリリース状況を視覚的に見れる。どのバージョンが入っているかをみれる。
- 品質ゲートの設定
- リリース承認プロセスの定義
- リリース状況のリアルタイム確認
- ログインユーザに依る権限管理
Jenkinsとの違い
ビルドに焦点を当てているか、リリースに焦点を当てるか。
Chef/Puppet + Jenkinsによる継続的デリバリ
会社紹介
- CloudBees
- Jenkins Enterpriseなど、Jenkins周りの開発・サポートなど
背景
- より広域なend-to-endの自動化
- jenkins-ci.org 運用上のニーズ
個々のサービスをコンテナ化
サンプル。 https://github.com/jenkins-infra Puppetの中の人のベストプラクティスが詰まっている。
- git -> Jenkins -> docker
- jenkins-infra/ircbotとか
- rspec-puppetによるプルリクエストの検証
- serverspecによる一時サーバでの検証
- vagrantに適用してみる。EC2でやっている。EC2でやることで、並列に高速に実行できる。
- Vagrantfileに書いてある。
- 今はmasterに対してだけやっている。金があれば、Pull Request単位でもいいんじゃないか。
- r10k + puppet enterprise
- ブランチ名=環境名になる。
- 環境別の際を吸収するHiera
- 階層構造も自由に出来る -> yamlファイルに外出し
- 鍵・秘密の情報の取り扱い
- dockerのpackageに入れなくていい
- hiera-eyaml でパラメータの個別暗号化。eyamlというエディタで変更 -> 保存すると暗号化。鍵は別に保存しておく必要がある。
- ブランチと環境の関係
- Pull Requestをマージすると、自動的に本番に反映される、とか。
ビルド履歴がGitHub上に残る。
- Pull Requestをマージすると、自動的に本番に反映される、とか。
継続的デリバリの課題
- 実際にいつ起こったのか
- 現在のサーバで走っているのはどのビルドか
ファイル指紋
- md5 check sum。
- 自動的に指紋を取る
- テストとビルドが関連づいていなくても、追える
- デモ
- Jenkinsでビルド -> 手動でデプロイ(デプロイ結果をJenkinsに通知) -> Jenkinsでテスト
- Promotionプラグインを入れておくと、デプロイされたことが星印で出てくる
- いつ・なにが・どこにデプロイされたのかを確認できる
- Chefとpuppertにしか対応してないけど、拡張可能な形式で作ってある
- Chefはカスタムレポートハンドラーとして実装
今後の予定
- データの可視化
- ファイルじゃないのもの指紋
- jenkins-ci.orgの運用でも使っていく
from 2014 to 2015
あけましておめでとうございます。
2015年が始まり、数日経ってしまいましたが、2014年のまとめと、2015年の目標を書いておこうと思います。
2014年にやったこと
仕事
- 初のオフショア開発リーダー(?)
短納期で、途中からの引き継ぎだったで、ちゃんとチームでやる気もなく、やってる暇も無かった。
そんな状態かつ、初のオフショアだったもんで、出来たコードが自分の思ったのと大幅に違い、最低限は自分で作りなおすという暴挙にでる。
オフショア恐怖症が、完全に発症。自分がオフショア使うぐらいなら、会社辞めるって公言するレベルに。
お陰様で、その後はオフショアと直接やりとりすることは無くなって良かったです。
- PM業務
iOSアプリの開発で、PM業務をやることになりました。
1回ぐらい経験しておこうかなーというのもあったので、タイミング的には良かったのですが、やっぱり面倒ですね。
見積もりから、外部設計を作り、内部設計を依頼し、実装を確認する。
しまいには実装もし始めたので、てんやわんやに。
やっぱり、マネージャーはマネージメントに徹しないとダメですね。
そして、私はマネージメントに向いてない。
- 初、業務でAndroidアプリ開発
iOSアプリは出来てる状態で、1ヶ月程度で作れという。
突貫工事で作ったため、いろいろとまずい部分があったまま完成はしたけど、上の都合でお蔵入り。
その後、別の方向性で同じ名前のアプリを作りなおして、そっちはちゃんと設計しました。
Butter Knife / lombok とかを使って、コード量の削減にも努めました。
いろいろとチャレンジ出来たので、楽しかったです。
要件がころころ変わるのは辛かったですが。
個人
2013年9月にデベロッパー登録し、1月にようやくリリースしました。
- Raspberry Pi / IRKit買った(5月)
IoTのきっかけとして、買ってみました。 自宅の電気・エアコンなどを操作したかったのですが、めんどくさくなって放置してます。
- Androidアプリ SlideViewerリリース(9月)
Speaker DeckのAndroidクライアントが無かった and Web画面が見づらかったので、作りました。 スクレイピングの勉強になったし、自分ではいい感じに使っているんですが、DL数は伸びないですね。。
- Androidアプリ TetherSettingの収益アップ(9月)
全画面広告を導入したことにより、1日当たり100円前後だったのが、1日当たり800円前後ぐらいになった。
2015年にやること・目標
仕事
- 改善業務
1月は半分ぐらい引き継ぎに割かれるけど、それ以降は基本的に案件には入らず、引いた立場となります。
具体的に何をやるかは、まだ検討段階ですが、情報共有を推進したり、CI / CDを導入したりしていく予定です。
この活動によって、品質が上がったり、稼働時間を減らしていければと思います。
- リモートワーク
1月下旬か、2月の頭ぐらいに富山に戻ります。
(飲み会の席で社長もちらっと言ってたし、いいよね?酔ってて、正確には覚えてないけど。)
在宅での作業になります。
ちゃんとバリューを出せるかなど、不安満載ですが、頑張っていこうと思います。
ちなみに、「結婚すんの?」と言われますが、そうでもないっす。
個人
- 各アプリの改善
Android版の詰め共円は目下改修中ですが、それ以外のアプリも、CIを導入したり、Material Designに変更したりしていこうと思います。
- 本を読む
元々長いこと関東に住む予定も無かったので、物理的な本はあんまり買わないようにしていました。
電子書籍はそれなりに買って読んでたんですが、物理本は敬遠してました。
がっつり本棚買って、本も買って読もうと思います。
本来の言葉の定義とはちょっと違う気もしますが、新しい部屋にいろんなデバイスを導入したいと思います。
IRKitとかはあるので、あとは hue とか買ってみようかなーと思ってます。
- 健康に気をつける
在宅での作業になると、何も考えないと、日に100歩も歩かない気がします。
27才になるので、多少は気を使った方がいいかなーと。
具体的に何するかは決めてないですが。。。
- アニメ見る本数を減らす
毎クール20〜30本ぐらい見てたっぽいです。
毎日1時間ぐらいをアニメに費やしていたようです。
無駄とまでは言いたくないですが、もっとやるべきこと・やりたいことがあるはずです。
減らしていこうと思います。
- 文章を書く技術をつける
前から気づいてたけど、文章作成能力が弱い。
読みやすい技術ブログが、なぜ読みやすいかを分析して、自分の力に変えていこうと思います。
ブログとか、社内の情報共有で、その成果を発揮したいです。
雑感
2014年は、結果、そんなに大きなイベントは無かったような感じです。
ただ、後半からは2015年に向けていろいろと動けた気がします。
このまま、いろいろと進めていければと思います。
個人目標はいっぱい書きましたが、それなりに達成したいです。