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

501e65e32870561d73b1158370766664?s=47 mzp
May 23, 2015

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

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

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

501e65e32870561d73b1158370766664?s=128

mzp

May 23, 2015
Tweet

Transcript

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

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

    どです 2
  3. 自己紹介 • Twitter: @mzp • 所属: ocaml-nagoya • 関数型言語OCamlの勉強会(最近、活動してない…) •

    今日は開発環境の話をします 3
  4. OSS活動 4 • メンテナンス コントリビュート 公開 • AquaSKK • rubocop

    • autodoc • MsgPack • FlicksKK • AsakusaSatellite • rubotyプラグイン などなど
  5. 経歴 • 社内SE → スタートアップ 5

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

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

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

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

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

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

    現職
  12. 注意事項 • 個人の意見であり、所属する企業・団体の意見を代表す るものではありません。 • 特定の企業、製品を推奨する、もしくは批難する意図も ありません。 • 今回の発表は開発者視点で解説したものとなります。 実

    際に導入するにあたっては、それ以外にも様々な視点か ら検討する必要がありますが、今回は省略しています。 12
  13. ソースコード管理 13

  14. 社内サーバを利用した場合 • バージョン管理: Subversion • 課題管理: Redmine / Trac /

    Excel • (余談: Microsoft VSSを使ってるプロジェクトもあった) 14
  15. 社内サーバを利用した場合 主な運用方法 • 全員がtrunkにコミットする • 一人づつ別のブランチにコミットする ⇒ コードレビューがやりにくい 15

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

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

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

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

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

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

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

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

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

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

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

  27. 類似サービス クラウド • Bitbucket • Gitlab.com 社内サーバ • Github Enterprise

    • Githubクローンたち(Gitlab, Gitbucket, ...) 27
  28. コミュニケーション 28

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

    置き換えるのは無理なので補完するサービスの紹介 29
  30. コミュニケーション チャットツール 30

  31. Slack 31

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

    32
  33. IRC gateway 33

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

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

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

  37. Google Hangout 37

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

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

    39
  40. 別解: Sqwiggle 40

  41. 文書管理 41

  42. 対象とする文書の種類 • TODO • 日報 • ノウハウ • 議事録 •

    外部から受けとった文書(APIドキュメントなど) 42
  43. 社内サーバを利用した場合 • Excelで作る • 作ったのは共有フォルダに置いたり、LotusNotesに置 いたり。 43

  44. 文書管理 TODO 44

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

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

    レビュー待ち • 完了 46
  47. ホワイトボード + ポストイットの イメージ 47

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

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

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

  51. Qiita:teamの例 日報 51

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

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

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

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

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

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

    57
  58. その他 58

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

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

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

    各種リマインダ 61
  62. その他紹介していないサービス • CircleCI: CIサービス • Bugsnag: エラー管理サービス • Mixpanel: ユーザの動向調査

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

  64. さらに先に 64

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

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

  67. VRターミナル 67