Upgrade to Pro — share decks privately, control downloads, hide ads and more …

クラウドサービスを活用した開発環境

mzp
May 23, 2015

 クラウドサービスを活用した開発環境

オープンソースカンファレンス Nagoya 2015での発表資料です。

http://mzp.hatenablog.com/entry/2015/05/23/184645

mzp

May 23, 2015
Tweet

More Decks by mzp

Other Decks in Technology

Transcript

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  4. OSS活動
    4

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  13. ソースコード管理
    13

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  28. コミュニケーション
    28

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  32. IRC gateway
    33

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  36. Google Hangout
    37

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  39. 別解: Sqwiggle
    40

    View full-size slide

  40. 文書管理
    41

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  43. 文書管理
    TODO
    44

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  50. Qiita:teamの例
    日報
    51

    View full-size slide

  51. Qiita:teamの例
    ノウハウ
    52

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  62. さらに先に
    64

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  65. VRターミナル
    67

    View full-size slide