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 Slide

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

    View Slide

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

    View Slide

  4. OSS活動
    4

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  13. ソースコード管理
    13

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  31. Slack
    31

    View Slide

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

    View Slide

  33. IRC gateway
    33

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  37. Google Hangout
    37

    View Slide

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

    View Slide

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

    View Slide

  40. 別解: Sqwiggle
    40

    View Slide

  41. 文書管理
    41

    View Slide

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

    View Slide

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

    View Slide

  44. 文書管理
    TODO
    44

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  51. Qiita:teamの例
    日報
    51

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  58. その他
    58

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  64. さらに先に
    64

    View Slide

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

    View Slide

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

    View Slide

  67. VRターミナル
    67

    View Slide