Slide 1

Slide 1 text

クラウドサービスを活用した 開発環境 mzp / ocaml-nagoya 1 2015-05-23 ΦʔϓϯιʔεΧϯϑΝϨϯεNagoya 2015

Slide 2

Slide 2 text

アジェンダ • 転職したら開発環境が社内サーバ中心からクラウド サービス中心へと大きく変化した • どう変化したかについて話します • 紹介するサービスは主にGithub, Slack, Qiita:teamな どです 2

Slide 3

Slide 3 text

自己紹介 • Twitter: @mzp • 所属: ocaml-nagoya • 関数型言語OCamlの勉強会(最近、活動してない…) • 今日は開発環境の話をします 3

Slide 4

Slide 4 text

OSS活動 4 • メンテナンス コントリビュート 公開 • AquaSKK • rubocop • autodoc • MsgPack • FlicksKK • AsakusaSatellite • rubotyプラグイン などなど

Slide 5

Slide 5 text

経歴 • 社内SE → スタートアップ 5

Slide 6

Slide 6 text

今日の話 • どのような環境で開発をしているか • その前に、いくつか質問させてください 6

Slide 7

Slide 7 text

Q. 業務として開発にか かわっていますか? 7

Slide 8

Slide 8 text

Q. どのような分野ですか? (組込/Web/ゲーム/その他) 8

Slide 9

Slide 9 text

Q. クラウドサービス使っ ていますか? 9

Slide 10

Slide 10 text

前職の開発環境 • コミュニケーションは口頭、もしくはメール • Excelで作られたスケジュール表や課題管理表 • 開発に必要な各種サーバは社内にある • (余談)スーツ着用 10

Slide 11

Slide 11 text

どう変化したか • 「ソフトウェアを作る」という作業自体は変わっていない • ただし、その開発に使うツールなどは大きく変化した 11 社内サーバ クラウドサービス OSS 前職 現職

Slide 12

Slide 12 text

注意事項 • 個人の意見であり、所属する企業・団体の意見を代表す るものではありません。 • 特定の企業、製品を推奨する、もしくは批難する意図も ありません。 • 今回の発表は開発者視点で解説したものとなります。 実 際に導入するにあたっては、それ以外にも様々な視点か ら検討する必要がありますが、今回は省略しています。 12

Slide 13

Slide 13 text

ソースコード管理 13

Slide 14

Slide 14 text

社内サーバを利用した場合 • バージョン管理: Subversion • 課題管理: Redmine / Trac / Excel • (余談: Microsoft VSSを使ってるプロジェクトもあった) 14

Slide 15

Slide 15 text

社内サーバを利用した場合 主な運用方法 • 全員がtrunkにコミットする • 一人づつ別のブランチにコミットする ⇒ コードレビューがやりにくい 15

Slide 16

Slide 16 text

Github ソースコード管理サービス • Gitレポジトリのホスティング • Wiki • 課題管理 16

Slide 17

Slide 17 text

Gitの特徴 • 分散バージョン管理 • ブランチの作成、マージが高速 • コマンドが豊富 17

Slide 18

Slide 18 text

プルリクエスト • Githubの特徴の1つ • 「とあるブランチから、別のブランチへのマージを依頼 するための仕組み」 • ちょっとわかりにくいので例で見ていきましょう 18

Slide 19

Slide 19 text

1. 不具合がでた ある日、対応しないといけない不具合が発生しました 19

Slide 20

Slide 20 text

2. がんばって直す がんばりましょう 20

Slide 21

Slide 21 text

3. プルリクエストを作る 1.今回作業用のブランチを作る 2.修正内容をコミットする 3.Githubにpushする 4.Github上でプルリクエストを作成する 21

Slide 22

Slide 22 text

プルリクエストの例 22 タイトル 内容説明 変更内容(diff) コメントできる

Slide 23

Slide 23 text

4. レビューを受ける • 他の人にレビューしてもらう • 問題なければmasterブランチにマージされる 23

Slide 24

Slide 24 text

プルリクエストの利点 • 作業の単位が明確になる • 必ずレビューがはさまる • レビュー支援機能が充実している • (他のサービスと連携しやすい) 24

Slide 25

Slide 25 text

OSSでのGithubの利用 1.バグを踏む 2.がんばって直す 3.レポジトリをコピーする(forkする) 4.プルリクエストを作成する 5.レビューを受ける ⇒ マージされる / 拒否される 25

Slide 26

Slide 26 text

プルリクエストの利点(2) • コミット権がなくてもバージョン管理できる • 普段と同じ作業でOSSに参加できる • publicレポジトリなら無料で利用可能 26

Slide 27

Slide 27 text

類似サービス クラウド • Bitbucket • Gitlab.com 社内サーバ • Github Enterprise • Githubクローンたち(Gitlab, Gitbucket, ...) 27

Slide 28

Slide 28 text

コミュニケーション 28

Slide 29

Slide 29 text

社内サーバを利用した場合 • メール: 簡単なコミュニケーションには使いづらい • 電話: 複数人では会話できない ⇒ 「標準化されている」のは大きな利点 ⇒ 置き換えるのは無理なので補完するサービスの紹介 29

Slide 30

Slide 30 text

コミュニケーション チャットツール 30

Slide 31

Slide 31 text

Slack 31

Slide 32

Slide 32 text

それ以外の機能 • 1対1でメッセージを送りあうこともできる • 絵文字も使える • iPhoneアプリもあるので様々な環境で使える • IRC Gatewayもある 32

Slide 33

Slide 33 text

IRC gateway 33

Slide 34

Slide 34 text

メールと比較した利点 • 短い文書でも気軽に送信できる • 多数の人に同時にメッセージを送れる • あとから検索できる • 各メッセージにリンクを貼れる 34

Slide 35

Slide 35 text

類似サービス クラウドサービス • HipChat • ChatWorks • idobata 社内サーバ •Let’s Chat •AsakusaSatellite 35

Slide 36

Slide 36 text

コミュニケーション ビデオ会議 36

Slide 37

Slide 37 text

Google Hangout 37

Slide 38

Slide 38 text

特徴 • ブラウザだけで参加できる • URLを共有さえすれば誰でも参加できる • 特定の人しか参加できない設定も可能 • (バッテリーの消費が激しい) 38

Slide 39

Slide 39 text

使い方の例 1.出社したので GoogleHangout を使って朝会をする 2.朝会がおわったので作業をはじめます。質問はSlackで する 3.今日は打ち合せの日です。 再びHangoutで打ち合せを する (社内用Hangoutとは別) 39

Slide 40

Slide 40 text

別解: Sqwiggle 40

Slide 41

Slide 41 text

文書管理 41

Slide 42

Slide 42 text

対象とする文書の種類 • TODO • 日報 • ノウハウ • 議事録 • 外部から受けとった文書(APIドキュメントなど) 42

Slide 43

Slide 43 text

社内サーバを利用した場合 • Excelで作る • 作ったのは共有フォルダに置いたり、LotusNotesに置 いたり。 43

Slide 44

Slide 44 text

文書管理 TODO 44

Slide 45

Slide 45 text

Trello カードを作り、リスト間を動かしてく 45

Slide 46

Slide 46 text

リストの例 • やるかどうか検討する • やることに決めた • やっている • 連絡まち • レビュー待ち • 完了 46

Slide 47

Slide 47 text

ホワイトボード + ポストイットの イメージ 47

Slide 48

Slide 48 text

文書管理 日報、ノウハウ 48

Slide 49

Slide 49 text

Qiita • プレインテキストだけで記 述できる(Markdown) • 記事にタグ付けや全文検 索ができる • デスクトップアプリもある • ITエンジニア向けに特化 49

Slide 50

Slide 50 text

Qiita:team • Qiitaの特徴をほぼそのまま供える • 特定のメンバーしか閲覧、投稿できない • 文書テンプレートを設定できる 50

Slide 51

Slide 51 text

Qiita:teamの例 日報 51

Slide 52

Slide 52 text

Qiita:teamの例 ノウハウ 52

Slide 53

Slide 53 text

その他の特徴 • 今後の展望、ビジョン • 開発環境の構築手順 • 飲み会の出欠 • などなど 53

Slide 54

Slide 54 text

類似サービス Esa.io (\( ⁰⊖⁰)/) 54

Slide 55

Slide 55 text

文書管理 議事録、受け入れ文書 55

Slide 56

Slide 56 text

GoogleDrive • 文書、スプレッドシート、プレゼンテーションが作れる • 設定によって他の人と共有可能 • 複数人で同時編集可能 56

Slide 57

Slide 57 text

GoogleDriveでの管理方法 議事録 • 一部はQiita:teamに書かれる • 他社と共有する場合や、全員で同時に編集する場合 はGoogleDrive 受け入れ文書 • そのままGoogleDriveにアップロードする 57

Slide 58

Slide 58 text

その他 58

Slide 59

Slide 59 text

複数のサービスを利用する問題点 • 更新通知の方法が統一されていない • 操作方法が統一されていない • 連携していない ⇒ 中間をつなぐ仕組みが必要。 59

Slide 60

Slide 60 text

bot • チャット上で動く自動応答プログラム • 定期処理をしたり、特定の語句に反応して処理をしたり • フレームワークがいくつかあり、簡単に作れる 60

Slide 61

Slide 61 text

botの例 • 各サービスの更新通知 • 認証付きURLからの内容引用 • 今日の当番の確認 • CIとGithubを組合せたデプロイ • 各種リマインダ 61

Slide 62

Slide 62 text

その他紹介していないサービス • CircleCI: CIサービス • Bugsnag: エラー管理サービス • Mixpanel: ユーザの動向調査 62

Slide 63

Slide 63 text

まとめ • 各種サービスを活用することで、ソフトウェア開発を効 率化できる • Github/Slack/Qiita:teamあたりが便利 63

Slide 64

Slide 64 text

さらに先に 64

Slide 65

Slide 65 text

AWS スポットインスタンス • ローカルではなくクラウド上で開発環境を構築する • Amazonのインフラをオークション形式で借りる • 0.01ドル/Hくらい • バッテリー消費が少ない!! • ネットワーク速度も速い!!! 65

Slide 66

Slide 66 text

VRターミナル • 顔の向き等をトラッキングす るヘッドマウントディスプレイ • ざっくり言うと仮想世界に入り こめる 66

Slide 67

Slide 67 text

VRターミナル 67