オープンソースカンファレンス2015に行ってきた

2/28(土)
オープンソースカンファレンス2015 Tokyo/Springに行ってきました。
http://www.ospn.jp/osc2015-spring/

# Concrete5の最新情報

http://www.slideshare.net/take566/concrete5-45245820
Concret5の特徴や最新情報コミュニティー情報など初心者向けのセッションでした。

## Concrete5の特徴

Webページを見たまま管理できるのが特徴。
様々なブロックを積み上げて記事を作っていくイメージ

## バージョン

5.6系 2008/6～2014/3
5.7系 2014/3～
5.6系は本が出版されている。
http://book.concrete5-japan.org/
5.7系は本はないが5.6よりは触りやすくなっている。

### 5.6系の特徴
アドオン(他CMSで言うところのプラグイン)が豊富。
マーケットプレイスにあり、無料だったり有償で販売されている。
ただ、サイドバーの位置などを細かく設定する必要がある。

### 5.7系の特徴
ソースが一新され動作が改善
ブロックを積み過ぎて画面が真っ白という問題が5.6系ではあり
→キャッシュクリア等の機能を追加で改善
デフォルトのテーマがTwitter boot strapで作られており、
レスポンシブデザインのテーマになっている。

## 最新情報
### 5.6系

最新バージョンは5.6.3.2
多言語絡みのbug fixが行われた。
日本語ファイルが入ったパッケージに正常に日本語が適用されない
「午後」を選択しても午後が正常に保存されない
Concret5のテーマ作成の勉強会が多摩地区で開かれている。

### 5.7系

最新バージョンは5.7.3.1
5.7.3から多言語アドオンが本体に追加された。
各ページにマッピングする形で言語ごとに作って公開できる
http://notnil-creative.com/blog/archives/1596
5.7.3.1は翻訳中

## その他の情報

+ Concret5のvargrant環境があるのでそれを使えば楽に遊べる
+ Ustreamでラジオ感覚で毎週放送を行っている。
   フォーラムの質問に答えたり翻訳したり何か作ったりなど。
  http://www.ustream.tv/channel/concrete5japan

## 機能説明

+ メニュー等に最適なオートナビがある
+ ロール(権限)系の設定がデフォルトで用意されていて、行いやすい
+ 簡単なアンケートやフォームの設置・集計ができる
+ スタックという全ページに表示させたいものを登録できるものもある。(広告を全ページに張るとか)
+ ページごとにアクセス権(会員専用ページみたいなの)も可能
+ MySQLのみ対応しているが、他DBにも対応していく予定

# Urchin にかわる Piwik と fluentd でアクセス解析、日本語化情報あり

http://www.piwikjapan.org/
（スライド見つからず)

## はじめに
Urchinというローカルで（自分たちでサーバ立てて)動くWeb解析ツールがあったが、
Googleに買収され、なくなった。(UrchinのWeb版がGA。Googleは情報を取れないことを嫌うためローカルで動くUrchinは使えなくなった)。
ただ、Googleに情報が行くので、自分達で管理したいという要望は今もある。
特に官公庁や銀行など。そのため、作成されたオープンソースアクセスログ解析ツールがpiwik(ピウィックと読む)

発表者は2人で1人目はpiwikの全体的な概要。2人目は実際にPiwikの日本語対応やfluentd対応の開発面の話でした。
http://sourceforge.jp/projects/piwik-fluentd/

## なぜpiwikなのか
プライバシーを尊重したアクセス解析が可能。GAなどに対抗している。
データを自分自身の管理下に置けるのがメリット。
オープンソース/データの保存期間がノーリミット/コミュニティが活発/外出先から参照が出来る/ワールドワイドで開発されている/簡単インストール

## 機能

+ ダッシュボード
必要に応じてウィジェットの追加が可能。デフォルトでリアルタイムの訪問者確認もできる

+ リアルタイムデータ更新
ビジターログで詳細をみることができ、ユーザごとにユーザIDが振られページ内でどんな遷移をしているかを一覧でみることが可能

+ 目標のコンバージョン追跡

+ IPアドレスから所在地を表示。

+ スケジュールメールレポート

+ トランジション（流入流出)の測定

+ ページオーバレイ（コンテンツ上へ分析データを表示、クリック数など表示)

+ 複数Webサイトの解析

+ サイト内検索レポート (GETで呼ぶときのクエリレポートで行っている)

+ エクスポートAPI など (基本的にAPIですべて操作できる)

## Piwik のログ取り込み機能の拡張と日本語問題解決
### piwikとfluentd

GAなどに変わるように自分たちでデータを持ってアクセスログ解析をしたい。
が、piwikにもよくないところがあるため、それをfluentdで解決したい。
どちらかと言うと実際の開発面の話

### piwikのいいとこ
+ Urchinの代替が可能
+ すべて自サーバでかいけつ可能
+ jsでトラッキングによるアクセス解析
+ Apache Nginxログ集計
+ OSSでログ集計できるのはpiwikのみ（現行でプロジェクト動いているのは)

### piwikのわるいとこ
+ MySQL クリック毎にDBに記録される。DBの肥大化。 膨大なPVだとMySQLの運用面で問題
+ 集計プロセスが重い。特に月末になるとかなり重い。
+ 要求スペックが高い 500万PV/月で 8Gのメモリはほしい(集計処理のため)
+ （よくもわるくも）頻繁にアップデートがある。カラム追加されると時間かかる。
+ 男気なログ集計
+ Yahooからの検索キーワードが取れない。サイト内検索もYahooを使っているととれない。これはなんでもUTF-8で突っ込もうとしているのが問題

### わるいところを解決するfluentdで

fluentdは複数サーバーからログ収集、サーバクライアント通信断しても自動で復帰できる。
ただし、JSON形式。
piwikのデフォルトのログ解析はpython
Urchinと仕様あわせてがんばる

### 日本語使用の問題
my.cnfで問題
sql_mode = “TRANDITIONAL”
jis/EUSは適当に丸めてutf-8に

### 検索エンジンの問題
検索エンジン問題は文字コードの指定が可能
自サイトの検索キーワードが指定できない
マルチバイトでも256B以上が切り捨てられる

### piwikをがんばって直す
mysqlのvarcharは文字数じゃない
メモリ馬鹿食いするからPV多いサイトで使うのはきついかも
(100万PV/monthで2G)

これらを直したパッチが提供されている
http://sourceforge.jp/projects/piwik-fluentd/

かなりマシンスペックが要求されるのでうちで使うのは難しそう。

# コンテナ(Docker)時代のインフラ技術・運用管理に迫る！

http://www.slideshare.net/enakai/docker-is-not-container-dockerpaas
http://www.ustream.tv/recorded/59348013
(ustは30日限定)

Dockerの成り立ちや概要の話

## Dockerが生まれた背景
dotcloudという会社がPaaSサービスとして提供していた。
クラウドサービスのデメリットは使いたいフレームワークがなかったり、必要なライブラリーが不足、バージョンが合ってないという問題があった。

そんな中で、クラウド内部の仕組みとして、いろんな開発イメージ環境を自動構築してDockerイメージとして固める技術を開発。オープンソース化。
よくコンテナの話がされるが本質ではなく、技術的に便利だから使っただけで、他に便利なものができればDockerもそっちに対応するんじゃないかとのこと。

## Dockerの基本機能

Dockerイメージを作成
Docker push/pull でdocker hub上からイメージを引っ張ってくる。
動かすのはLinux コンテナ上でコンテナ毎に分割した環境のほうがやりやすかった。
バックエンドの技術はどれでもいい。

## なにが便利か
開発環境を配るのにいい。
Dockerが利用できる環境であればDocker pullしてもらうだけで同一の環境ができる。
また、セキュリティホール対策などした場合でもDocker hubにpushしておけば、開発者はDocker pullするだけで解決ができる。
Docker hubはプライベートでも管理可能で、インフラのバージョン管理のようなもの

## dockerを本番に載せるメリット
テストサーバー状態で持っていてver.2.0バージョンのコンテナで動かす。1.0のコンテナから切り替えれば終わる。
いわゆる Immutable Infrastructreの実現と構成管理が容易に行える。

# 仕事を遊びに変える自動化とガラクタプロダクト

大きく分けて自動化とガラクタプロジェクト2つの面から行っていました。
一人LTみたいなノリだったので面白かったです。

http://www.ustream.tv/recorded/59350089 (30日限定配信)

## 自動化
作業時間の短縮・品質向上
余裕がなくてはクリエイティビティは生まれないい

発表者の方の会社(株式会社ハートビーツ)では、主にサーバの保守運用業務をやっているようです。
そんな中でお客様の環境を汚さないように自動化を行っていました。

### Fabricで手順を自動化
+ Python製のデプロイツール
+ エージェントレス
+ sshでサーバにログインしてやってる手順→そのままスクリプト化できる。
→何回もやっている手順を自動化する

### surverspecでテストを自動化

+ Rspecのテストとしてサーバのテストがかける
+ Rubylistにうれしい
+ 構築後の確認手順を自動化
+ 確認ミスがなくなる
+ テスト仕様書兼報告書が不要(自動でだせる)
+ 共通テスト項目は使いまわせる。

### Ansibleで構成管理の自動化
+ Chefやpuppetと同じようなフレームワーク
+ エージェントレス
+ Ansibleのネック:客側の学習コスト
+ Ansibleでの構成変更・設定変更は客側が使える必要があり

+ イケてるおきゃくさま　「Ansible でplaybook書いてくれたらウチでもつかえるんですけど」
→ Githubでplaybook納品
メリット:構築内容がすべて客側に見える。
意識のズレができにくい

### 内製ツールで自社特有作業を自動化
OSSだけでは解決できない課題
→結構な工数がかかる
ツールを2つ作ってみた。
I. acns
+NagiosとCactiの設定を自動生成するツール
どうやって開発したか、開発の進め方
ミッション:つらいことはやめよう
いまやっててつらいことを解決
1.課題の決定
社内アンケート　お酒の席
2.解決方法の検討（作るか作らないか）
3.設計開発
1ヶ月でテスト導入できるくらいのスピード感
4.導入
導入しているところを見せる
メリットが見える
仲間を増やす
ハンズオン　ドキュメント　手順整備

II.nouka

開発動機：ドキュメントかきたくない
同ジャンル:ohai(ライブラリ)
更新漏れの防止
仕事で使う前提で開発
最初からOSSで開発

## がらくたプロダクト

+ 仕事とは直接関係ない何か
+ アプリだったりchatbotだったり電子工作だったり

### 前提:HipChatに乗り換えたわけ
Skype使っていた→遅延ひどい→XMPPに乗り換えた
→UI微妙→HipChatに乗り換え

### Hubot
chatbot開発・実行フレームワーク
一つのbotを様々なchatツールで使える
HipChatとHubotでbotが作りやすくなった

### 様々なbot
+ ぐぬぬbot
+ ぞいbot
→複数の特定 画像URLからランダムに返却する。
→hipchatは画像URLを展開してくれるので画像が表示される
+ オムナイトbot
思うに反応して、～と思うであったAAが表示される。
keyを使い回ししてて、業務用のチャットルームに表示されて怒られた

+ 定時確認bot
確認してほしいredmineに登録して、そのチケットをメンション付きで定期的にpost

+ カレンダーbot
googleカレンダーに予定登録しておいて、時間になるとchatで流れる。

## chatbot作る利点
+ サクッとつくってさくっとミスれる。
+ ガラクタが思いの外役立つことがある。
+ 他の技術に触るきっかけ

# 全体の感想
+ 今OSS界隈ではどんなのが、流行っているかがわかって良かった。
+ がらくたプロダクトは意外と大事だなと思った。業務に関連する技術だけではなく、エンジニアとして何か遊びは必要だよなと。