デブサミ関西2015 参加レポート

2015.09.04に神戸で開催されたDevelopers Summit 2015 KANSAIに参加してきました。

* http://event.shoeisha.jp/devsumi/20150904/

# 所感など
## 【基調講演】クラウドファーストから、クラウドネイティブへの挑戦 by 東急ハンズ
* 考え方が明確で非常に面白かったです
    * 全てをインターネットテクノロジーで実現という話は非常に共感できて、私の周りもそうならないかなと思ったとか思わなかったとか
* AWSの進化に合わせてサービスの構成を進化させるなどは参考にしたいところでした

## 【A-1】チームのチームによるチームのためのアジャイル開発 - 誰がやる！？じゃあ俺やるよ！
* チームを自律的に変えていくためのヒントを得たように思います
    * 周囲を巻き込むってのはほんと重要
    * 何かを変える際に何かを持ち込むってのもやりがちなんですが、そうじゃないやり方があるというのを再確認させてもらえました
* 先日スクラムマスターの研修受けてたのでまた新鮮でした

## 【B-2】mobile backend 活用事例から見る、クラウドファースト・モバイルファースト時代のアプリ開発
* PUSH配信が手軽に実現できるというのに特に興味を持ちました
* アプリをさくっと作れそうでいいですねmBaaS

## 【C-3】Railsのこれまでとこれから
* Railsを長らく使っているので懐かしい話が聞けました
* そしてRails5、期待です

## 【A-4】セキュリティ対策は万全ですか？脆弱性を開発段階で排除できます
* http://www.coverity.com/html_ja/index.html
* 静的解析ツールですが、対応言語にRubyがないのが残念ｗ
* プラグインなど提供されており敷居は低そうなので、こういったツール使ってなくて言語が対応してるなら選択肢に加えていいのではないでしょうか

## 【B-5】デブサミ名物コミュニティLT
* 関西のコミュニティの元気さが伝わってきました!
* コミュニティが活発に活動してるのいいですね

# 内容
## 【基調講演】クラウドファーストから、クラウドネイティブへの挑戦 by 東急ハンズ
* 東急ハンズでは自社システムをAWSに移行した
* 最初はオンプレ
* 一気に変えた
    * ちょっとずつやるとどこかで諦める、人間だもの
* 難しいところから移行した(セオリーの逆)
    * やりやすいところ(あまり使われないところ)を移しても意味が薄い
* 第二世代
    * ebsのバックアップ的にs3を使うのが一般的だと思うが
    * s3直のほうがシンプルでバックアップ単体でやってるしいいと思った
* 第三世代
    * lambdaの登場によりec2がいらなくなった
    * javascript(node.js)だけの世界がやってきた
* オムニチャネル、流行ってます
    * チャネルの統合
    * お客様との接点を広げる
* 私(発表者)が考えるエンタープライズシステム
    * インターネットテクノロジー
         * これはつまり、OSや環境など様々なしがらみからの解放を目指しているのだと思う
         * Win/OSXだから、32/64bitだから、専用線(VPN)が必要だから、とかとか

* 今までの常識を捨てよう
    * システム投資ROIを算出せよとかウソ
        * システム導入で売り上げ上がるわけない
        * 理由づけにしかならない、
        * 常に変わる状況の中で、まともな定義ができるわけがない
    * ドキュメントをしっかり書こう、もウソ
        * 動くシステムが正義
        * 無駄な(誰も読まない)ドキュメントはやめよう、無駄じゃないものは書こう
    * サーバは24時間365日だから重い処理は夜間バッチ、もウソ
        * 閉店後30分以内に処理を終わらせよ
        * 少しずつ夜間処理を短くしましょうとか無理、エンジニア(人間)の性質的に
            * やるなら一気にやるしかない
    * システム間I/Fは必要なデータのみ、ってのもウソ(というか非効率)
        * システムリソースより仕様変更のコストが高くつく
        * 通信コストとかいまどき気にするな
        * 設計も楽になっていいことづくめ
    * IT部門が提案せよ、もうそ
        * ユーザ(業務部門)が要望をちゃんと出してくれればそれに応えるだけでいいし、そのほうがニーズに合う
        * ユーザと良い関係を築くことが重要
        * ニーズとマッチしないと全然使われない、ほんと悲しくなるほど使われない
    * ベンダーロックインされないようにしよう、もウソ(クラウドに限っては)
        * クラウドロックインはOK
        * ベンダーと違って相手がさぼりだすことがないから
        * もし将来的にもっといいクラウドベンダーが出てきたら？コスト掛けて移行すればいいじゃない

* 日本と北米のマーケットの話面白かった
    * 日本だとイノベーションが起きづらい、
        * 日本人は完璧を求めるからそれが制約になる
        * いちいちプライバシーとか気にしちゃう
        * 北米はベータでもバンバン出しちゃう、うまく動かなくてもハハハッで(笑って)終わる

* ビジネスでもコンシューマ向け端末(iPod)が十分使えます
    * コスパ高い
    * 無料アプリが十分ビジネスでも使える
        * 東急ハンズの場合、海外の客向けに翻訳アプリとか、観光客に乗り換え,地図アプリとか


## 【A-1】チームのチームによるチームのためのアジャイル開発 - 誰がやる！？じゃあ俺やるよ！
* 開発プロセスを改善しようとするけど大抵うまくいかない
   * スクラムとかXPとかとか
* 共通認識はある(同じなはず)のにうまくいかない、何か原因があるはず
* 楽天、大きな会社で部署も多くてそれぞれ独自に進化してるのでカオス

* 上司の妨害により看板とかすべて元に戻ってしまった
    * 静かな部署で突然スタンドアップミーティングとか、カンバン作って壁汚したとかで怒られた
    * 周囲を巻き込むのを怠っていたのが敗因

* こっそり復活、そして展開
   * 自分の席に自分用カンバンつくった（ちんまりしたやつ
   * 進化
       * 見える化->見せる化->魅せる化
       * 楽しくして上司を巻き込む
       * 上司→他チームに展開、そして壁不足問題

* 別チームに移って、メンバーからリーダーになった
    * 同じことをするのは嫌だった、(天邪鬼的な意味で

    * 問題があるから何かを導入するのは間違い
    * すでに忙しくて余裕がない状況で新しいものを導入する(加える)と溢れる
    * 導入するのではなく、そこにある問題を改善する
        * きっかけを与えて自分たちで改善に向かう、自律的なチーム作りを推進した(スクラムの考え方と一致
    * 自分たちで自分たちをマネジメント(=自律的なチーム作り、これもスクラムの考え方と一致

* 良いチーム重要
    * 良いチーム*良いプロジェクト=良いプロダクト
    * 良いチーム*悪いプロジェクト=悪いプロダクト
    * 悪いチーム*悪いプロジェクト=悪いプロダクト

* 良さを引き出すための努力が必要
   * 教科書だったり勉強会だったりセミナーだったり
   * 引き出しの多さ重要


## 【B-2】mobile backend 活用事例から見る、クラウドファースト・モバイルファースト時代のアプリ開発
* mobile backend(=mBaas)

* BaaSとmBaaSの違いは何だろう
   * PUSH通知、位置情報など、mobile(スマホ)特有のbackendへの特化じゃないかと思う
* PUSH通知については採用考えてみてもいいかも
   * アプリ起動しなくても情報を配信できるので、従来ユーザに新製品発売などのニュースを届けられるのではないか

* VR連携
   * 特にVR関係なかった
   * VR使ったゲーム内でBaaS使えるって話(当然といえば当然


## 【C-3】Railsのこれまでとこれから
* Ruby,Railsはもうバリバリの最先端じゃないよね、でもまだまだ死んでないぜ！
* Railsは2015年で10年(rails1発表から)
* Railsの原則(懐かしい)
    * TDD
    * DIY
    * CoC
        * Java屋さんのXML地獄経験者には特にインパクト大きかった

* Railsの歴史について、これまた懐かしい
    * rails3でmerbと統合
    * merb「railsってコード汚いよね」、rails勢とmerb勢が会談->統合
* Railsのよさ
   * PRベースの開発にいち早く対応したことにより、より利用者目線で必要な機能が取り込まれていった
で、みんなRails4.2使おう

### Rails5(開発中)
* どこに向かう？
    * Rails4でやりつくした感あるきがする
* RailsAPI
    * WebAPIが作れます
    * Rails4でも作れます
        * でも、今のrailsは様々なモジュールを組み合わせておりかなり冗長
    * Rails5ではAPIに最適化されたベースクラスを提供してくれる、みたいなイメージ
        * 新しいベースモデル ActionController::API
    * まとめ
        * 高速
        *　SPA/アプリ自体に重宝
        * 今までもできること、だけど適切なデフォルトを提供するようになる
* Turbolinks3.0
    * 現行Turbolinks2.5
    * Turbolinks
        * 速い、
        * しかし統合が難しい
            * documentが変わらない
            * $.readyが呼ばれない
            * 初回/クリック時の処理順
    * 3.0?
        * Partial Replacement
            * bodyタグの一部(例えばbody>div#hogehoge)だけを変えるようにできるようになる
            * サーバ/クライアントどちら側からでも指定できる
    * react.jsとか流行りの技術はあるけど流行り廃りが早いので、railsはそれに依存しない方向を示してる？
* Action Cable
    * WebSocket通信
    * pub/subメッセージング
    * 特徴
        * 別プロセス起動
        * Redis
        * 簡単にpub/sub
    * SPAへの本気を感じる=>pub/subが身近な存在に
    * ここで疑問が…
        * node.js=>イベント駆動の鍵、ノンブロッキングだからコールバック
        * Rails5のコードみてると、DBに対するIQでブロッキングされてるように見える、どうなる???fiber?

### まとめ
* これまで
    * 手になじむWF
    * ここまで進化
    * 最新は4.2.x

* Rails5
    * 興味深い進化
    * Rails Way
    * ブラウザには踏み込みすぎない、ってのはうそでturbolinksはばっちり踏み込んでる


## 【A-4】セキュリティ対策は万全ですか？脆弱性を開発段階で排除できます
* ソフトウェア市場は進化してます
    * 何にでも乗ってる
* coverity
    * jenkins pluginあるよ
    * バグ管理システム(JIRA、オプションでreamine)と連携もできるよ
    * eclipse,vistual studioのプラグインもあるよ
        * 変更されたファイルだけテスト
    * 埋め込んだ人を特定、通知できる



## 【B-5】デブサミ名物コミュニティLT
### 日本XPユーザーグループ関西
* XP祭りin 関西、XPに限らずアジャイル系の話をしてるよ

### DevLOVE関西
* DevLOVE=開発を愛する人
* 勉強会やってます
* 開発を前進させることなら何でもする


### わんくま同盟
* わんくま勉強会は、なんでもあり

### TOC/TOCfE関西分科会
TOCfE
* 問題があったとして、それをいきなり解決するのではなく現状をまずは把握する
* ロジックブランチ
* 仮説と検証
* プロジェクトで対立するのではなく、win-winの関係を築きましょう

### project facillitation project(PFP関西)
KPTA KPTにActionついてるやつ、これやってみたい

### 関西Javaエンジニアの会
* 勉強会で得られる三つの 間
    * 時間
    * 空間
    * 仲間

### VSハッカソン倶楽部
* VS(visual studio)
* ハッカソン楽しいよ
* 主催者がお菓子を作ってくる

### OWASP関西
* OWASP TOP 10
* OWASP ZAP
* OWASP関西
    * はせがわさんがたこ焼き焼きながら横で弁護士、警察などが言っちゃいけない話をしてる

### SQLWorld
* sql server中心、ほかもあるよ
* 大阪中心に勉強会

### IoTあるじゃん(ALGYAN)
* Agile Cat
* IoT開発ではAzureが支配的？

### InnovationEGG
* 10/31にクラウド系の勉強会するらしい