オープンソースカンファレンス Nagoya 2015での発表資料です。
http://mzp.hatenablog.com/entry/2015/05/23/184645
クラウドサービスを活用した開発環境mzp / ocaml-nagoya12015-05-23 ΦʔϓϯιʔεΧϯϑΝϨϯεNagoya 2015
View Slide
アジェンダ• 転職したら開発環境が社内サーバ中心からクラウドサービス中心へと大きく変化した• どう変化したかについて話します• 紹介するサービスは主にGithub, Slack, Qiita:teamなどです2
自己紹介• Twitter: @mzp• 所属: ocaml-nagoya• 関数型言語OCamlの勉強会(最近、活動してない…)• 今日は開発環境の話をします3
OSS活動4•メンテナンス コントリビュート 公開• AquaSKK • rubocop• autodoc• MsgPack• FlicksKK• AsakusaSatellite• rubotyプラグインなどなど
経歴• 社内SE → スタートアップ5
今日の話• どのような環境で開発をしているか• その前に、いくつか質問させてください6
Q. 業務として開発にかかわっていますか?7
Q. どのような分野ですか?(組込/Web/ゲーム/その他)8
Q. クラウドサービス使っていますか?9
前職の開発環境• コミュニケーションは口頭、もしくはメール• Excelで作られたスケジュール表や課題管理表• 開発に必要な各種サーバは社内にある• (余談)スーツ着用10
どう変化したか• 「ソフトウェアを作る」という作業自体は変わっていない• ただし、その開発に使うツールなどは大きく変化した11社内サーバ クラウドサービスOSS前職現職
注意事項• 個人の意見であり、所属する企業・団体の意見を代表するものではありません。• 特定の企業、製品を推奨する、もしくは批難する意図もありません。• 今回の発表は開発者視点で解説したものとなります。 実際に導入するにあたっては、それ以外にも様々な視点から検討する必要がありますが、今回は省略しています。12
ソースコード管理13
社内サーバを利用した場合• バージョン管理: Subversion• 課題管理: Redmine / Trac / Excel• (余談: Microsoft VSSを使ってるプロジェクトもあった)14
社内サーバを利用した場合主な運用方法• 全員がtrunkにコミットする• 一人づつ別のブランチにコミットする⇒ コードレビューがやりにくい15
Githubソースコード管理サービス• Gitレポジトリのホスティング• Wiki• 課題管理16
Gitの特徴• 分散バージョン管理• ブランチの作成、マージが高速• コマンドが豊富17
プルリクエスト• Githubの特徴の1つ• 「とあるブランチから、別のブランチへのマージを依頼するための仕組み」• ちょっとわかりにくいので例で見ていきましょう18
1. 不具合がでたある日、対応しないといけない不具合が発生しました19
2. がんばって直すがんばりましょう20
3. プルリクエストを作る1.今回作業用のブランチを作る2.修正内容をコミットする3.Githubにpushする4.Github上でプルリクエストを作成する21
プルリクエストの例22タイトル内容説明変更内容(diff)コメントできる
4. レビューを受ける• 他の人にレビューしてもらう• 問題なければmasterブランチにマージされる23
プルリクエストの利点• 作業の単位が明確になる• 必ずレビューがはさまる• レビュー支援機能が充実している• (他のサービスと連携しやすい)24
OSSでのGithubの利用1.バグを踏む2.がんばって直す3.レポジトリをコピーする(forkする)4.プルリクエストを作成する5.レビューを受ける ⇒ マージされる / 拒否される25
プルリクエストの利点(2)• コミット権がなくてもバージョン管理できる• 普段と同じ作業でOSSに参加できる• publicレポジトリなら無料で利用可能26
類似サービスクラウド• Bitbucket• Gitlab.com社内サーバ• Github Enterprise• Githubクローンたち(Gitlab, Gitbucket, ...)27
コミュニケーション28
社内サーバを利用した場合• メール: 簡単なコミュニケーションには使いづらい• 電話: 複数人では会話できない⇒ 「標準化されている」のは大きな利点⇒ 置き換えるのは無理なので補完するサービスの紹介29
コミュニケーションチャットツール30
Slack31
それ以外の機能• 1対1でメッセージを送りあうこともできる• 絵文字も使える • iPhoneアプリもあるので様々な環境で使える• IRC Gatewayもある32
IRC gateway33
メールと比較した利点• 短い文書でも気軽に送信できる• 多数の人に同時にメッセージを送れる• あとから検索できる• 各メッセージにリンクを貼れる34
類似サービスクラウドサービス• HipChat• ChatWorks• idobata社内サーバ•Let’s Chat•AsakusaSatellite35
コミュニケーションビデオ会議36
Google Hangout37
特徴• ブラウザだけで参加できる• URLを共有さえすれば誰でも参加できる• 特定の人しか参加できない設定も可能• (バッテリーの消費が激しい)38
使い方の例1.出社したので GoogleHangout を使って朝会をする2.朝会がおわったので作業をはじめます。質問はSlackでする3.今日は打ち合せの日です。 再びHangoutで打ち合せをする (社内用Hangoutとは別)39
別解: Sqwiggle40
文書管理41
対象とする文書の種類• TODO• 日報• ノウハウ• 議事録• 外部から受けとった文書(APIドキュメントなど)42
社内サーバを利用した場合• Excelで作る• 作ったのは共有フォルダに置いたり、LotusNotesに置いたり。43
文書管理TODO44
Trelloカードを作り、リスト間を動かしてく45
リストの例• やるかどうか検討する• やることに決めた• やっている• 連絡まち• レビュー待ち• 完了46
ホワイトボード + ポストイットのイメージ47
文書管理日報、ノウハウ48
Qiita• プレインテキストだけで記述できる(Markdown)• 記事にタグ付けや全文検索ができる• デスクトップアプリもある• ITエンジニア向けに特化49
Qiita:team• Qiitaの特徴をほぼそのまま供える• 特定のメンバーしか閲覧、投稿できない• 文書テンプレートを設定できる50
Qiita:teamの例日報51
Qiita:teamの例ノウハウ52
その他の特徴• 今後の展望、ビジョン• 開発環境の構築手順• 飲み会の出欠• などなど53
類似サービスEsa.io (\( ⁰⊖⁰)/)54
文書管理議事録、受け入れ文書55
GoogleDrive• 文書、スプレッドシート、プレゼンテーションが作れる• 設定によって他の人と共有可能• 複数人で同時編集可能56
GoogleDriveでの管理方法議事録• 一部はQiita:teamに書かれる• 他社と共有する場合や、全員で同時に編集する場合はGoogleDrive受け入れ文書• そのままGoogleDriveにアップロードする57
その他58
複数のサービスを利用する問題点• 更新通知の方法が統一されていない• 操作方法が統一されていない• 連携していない⇒ 中間をつなぐ仕組みが必要。59
bot• チャット上で動く自動応答プログラム• 定期処理をしたり、特定の語句に反応して処理をしたり• フレームワークがいくつかあり、簡単に作れる60
botの例• 各サービスの更新通知• 認証付きURLからの内容引用• 今日の当番の確認• CIとGithubを組合せたデプロイ• 各種リマインダ61
その他紹介していないサービス• CircleCI: CIサービス• Bugsnag: エラー管理サービス• Mixpanel: ユーザの動向調査62
まとめ• 各種サービスを活用することで、ソフトウェア開発を効率化できる• Github/Slack/Qiita:teamあたりが便利63
さらに先に64
AWS スポットインスタンス• ローカルではなくクラウド上で開発環境を構築する• Amazonのインフラをオークション形式で借りる• 0.01ドル/Hくらい• バッテリー消費が少ない!!• ネットワーク速度も速い!!!65
VRターミナル• 顔の向き等をトラッキングするヘッドマウントディスプレイ• ざっくり言うと仮想世界に入りこめる66
VRターミナル67