ikeike443のブログ

ソフトウェアビジネスに関心がある系のブログ

マイクロソフトに行ってきた

写真はレドモンドにあるマイクロソフト本社の31番ビルディング

去年の話になりますが、11月にMicrosoftにてDevOps関連のSE*1を集めたミートアップ兼トレーニングイベントがあるから、GitHubからも何人か選抜して参加してみてよ、というオファーがMSからあったようで、私もAPACの代表として選抜されて行ってきました。ちなみにGitHubからは全部で10名のSEが参加しましたが、MSからは総勢50名ほどでした。MS内でもかなり絞って人を選抜していたようです。ちなみにMS Japanからも一名いらしていました。

内容については細かいことはここでは書けないんだけど、逆にそんなに秘密にするようなこともなくて、世界各国に散らばるAzureDevOpsのSE代表に対して最新機能の紹介と、AzureDevOpsを売る際のノウハウを共有するみたいな場でした。我々GitHubは特別ゲストとして招かれた格好で、特段AzureDevOpsを売るように言われているわけではないです。

MicrosoftはDevOpsに関しては現在一生懸命キャッチアップしているところという印象がありました。ただ流石にエンタープライズに強いだけあって、AzureDevOpsという製品は、権限周りやADとの連携などエンタープライズでは求められる機能への目配せはされている印象ですね。製品としては悪くないので、Azureを中心に据えるような構成を考えているのであれば良い選択肢ではないでしょうか。Repoの出来は正直良くないので、そこはGitHubにしたほうがいいとは思うけど。これはポジショントークと取られてもしょうがないけど、そうではなくて、イチ開発者としてマジにそう思います。

セッションの中では、世界各国のSEが実際に現場で苦労していることを直接そのセッションを担当しているプロダクトマネージャー(が多かった)に対してフィードバックするケースが多く、非常に勉強になったのも事実です。この分野ではMicrosoftさんはまだまだ新参なので、非常に苦労しているようですが、参加している人たちはみな前向きで、いい印象を受けました。

参加者の中にはXamarinでNat*2と一緒にMSに参加した人もいて、MSはすごくいい会社だよ、と強調していたのも印象に残りました。確かに、10年前まであった非常にEvilな印象というのはだいぶ薄れてきたのかなーとは感じます。実際そのイベントに集まっていた人たちは、選抜された人たちということもあるでしょうが、非常に頭がよく前向きでまたいい意味で従来のMSとは印象が違う人が多かったように思います。

思えば、Herokuもあのセールスフォースに買収されてずいぶん経つけれどもサービスとしてのHerokuがなにか劇的に変わったということはなく、でもゆるくセールスフォースファミリーの一員であるという事実があるなあと。Herokuはアイディアをすぐ形にしてデプロイできるプラットフォームとして、当初は何かを作り出したい個人や、スタートアップをメイン顧客に発展していたわけですが、大企業であるセールスフォースに買収されたあとも変にエンタープライズっぽくなることなく、うまく運営しているなと思います。GitHubMicrosoftもそんな関係になるんじゃないかなと思っています。

GitHubもHerokuも、Google Apps (G Suite) やSlack, そしてもちろんAWSなどのその他様々なSaaS, PaaS, IaaSは皆2005〜2009年位の間に一斉に世に出てきて、スタートアップやアーリーアダプター(日本だとWeb系企業とか)が取り入れて成長していったわけだけど、そんなアーリーアダプターたちも10年経ってみんなそれなりの規模のエンタープライズになっているわけで。段々と、これらイケてるツールを作っていた僕らも、使っていたみなさんも年を取り、社会に対して負う責任も大きくなり、小さなスタートアップだった会社も何千人、何万人と抱える大企業になってきたこの10年。だんだん製品に求められる機能だったり、会社/業界に必要な人材だったりというのも様変わりしてきたのかなということを感じます。

かつて、IBMやオラクル、SAP、MS(!?)といったプロプライエタリな企業が業界を引っ張っていた時代があって、それを支えていたエンジニアたちがいた時代が80年から90年代だったとすると、GitHubやHeroku, Slackみたいなツールは2000年代から登場した比較的新しいツールで、新しいコンセプトで社会や企業のあり方を大きく変えてきたわけですが、かつての世代がその後下の世代から見て、あらゆる角度で硬直していったかのように見えたのと同じように、僕ら2000年代の世代も気づかずにそういう扱いになるのでは、みたいなことを最近感じることがあります。

Microsoftは社内でYammer*3やTeamsといった自社製ソーシャルメディアチックなツールを使っているわけですが、MSの規模でこれらのツールを全社規模で運用しているというのがすごい。MSはグローバルで何万人と社員がいるわけですが、全員Teamsでルックアップして、メッセージのやり取りができるというのはちょっと衝撃的でもありました。「うちは1万人近くいる大企業だからこういうツールはなじまないんだ」みたいなことを言う方は洋の東西を問わずいらっしゃいますが、MSができるんだから、取り組んだほうがいいのでは、とも思います。

ただ、MSの規模だと、Slackみたいなゆるいツール(そこがいいのですが)では管理しきれないのも納得できて、この規模で効果的に運用して、ソーシャルメディア的なパワー(社員がみな自律的にコラボレーションするパワー的な?)を引き出すには、ちょっと違う次元の機能が必要なんだなということがよくわかりました。

GitHubも私が入社した300人足らずの頃と今とでは規模が違うわけで、段々今までとは違うレベルの悩みがでてくるだろうし、会社の文化も作っていかないと行けないんだろうなということを感じます。同世代の企業たちも、Slackを始めとして今年続々IPOするという噂が流れています。また足元ではそもそもこのシリコンバレーバブルがそろそろ弾けるんじゃないか感が感じられる昨今です。そろそろ次のフェーズなのかもしれません。

今日のブログは特にオチはないですがこのへんで。

シアトルに行ったので、アーロンとエビちゃんに会ってきました。ブラジル料理を食べましたが、美味しかったです。アーロンは翌日に日本語検定試験を受けるとかで、若干ナーバスになってたようでしたが、付き合ってくれてありがとう。

*1:Solutions Engineerの略で、他社だとセールスエンジニアと呼んだり、AWSだとSolutions Architectとか呼んだりする職種です(MSでは呼び名は様々あって一様ではない)

*2:Nat Friedmanは元XamarinのCEOで、今年からGitHubの新しいCEOになりました

*3:YammerもMSに買収されていたことをみんな覚えているだろうか

Cloud-infra audio ポッドキャストに出ました

知り合いの中丸くんの紹介で、ポッドキャストに出てきました。

『Track-27 Github 池田さんはソリューションエンジニア』のメモ – cloudinfra-audio

GitHubのソリューションエンジニアとしてやってることとか、日本市場の状況とか、GitHub AppsやGitHub Actionsの話、などなどしています。 ただ僕に脱線グセがあるせいか、話がそれまくりました。パッケージソフト開発をやってたときのブランチングの話とかもしてます。

当日は風邪をひいていて、かなりの鼻声ですが。。咳き込みまくってたのにポッドキャストでは咳が入ってないことに驚きました。編集の力すごい!

チーム開発実践入門 ~共同作業を円滑に行うツール・メソッド (WEB+DB PRESS plus)

チーム開発実践入門 ~共同作業を円滑に行うツール・メソッド (WEB+DB PRESS plus)

GitHubツールビルディング ―GitHub APIを活用したワークフローの拡張とカスタマイズ

GitHubツールビルディング ―GitHub APIを活用したワークフローの拡張とカスタマイズ

ChatOps関連のメモ

最近SlackのCTOが日本で取材を受けたりして下記のようなコメントをして話題になりましたね。 f:id:ikeike443:20171217163031p:plain www.businessinsider.jp

僕もメールはゴキブリみたいなもんだってのには同意なんだけど、それとは全然関係なく、Slackの存在感が増すにつれ最近のChatOps事情が気になったのでちょっと調べてみた。これはその備忘。

ChatOps

ChatOpsってのは多分、一応GitHubが最初にいい出したもののような気がする、わからないけど。ChatOpsの象徴であるHubotは2011年にOSSになってます。

hubot.github.com

チャットボットを使って便利に楽しく仕事しようぜ、っていうコンセプトですね。日本でも世界中でもHubotの上にいろんなアプリが作られたと思う。 でもチャットボットって今やHubotだけじゃなくいろんなやり方で作れるのね。

Slack Bot

Slackそれ自体に、Botフレームワークがあります。Events APIってのをリッスンして、いろいろおもしろいことをやれるようになってる。 例えば、チャンネル上の誰かの発言をひたすらオウム返しするボットなら、Slackの設定画面でリスナーのURLをまず下記ページを見て設定した上で、 https://api.slack.com/events-api#subscriptions

下記のようにEvents APIをリッスンするサーバを書けばいい。(Sinatra使ってます)

post '/listen_to' do
  params = JSON.parse request.body.read
  return params['challenge'] if params.has_key?('challenge') #Botの最初のセットアップ時に必要なレスポンス
  return if params['event'].has_key?('bot_id') #自分自身にオウム返しをしないようにチェックしてる
  return if params['event']['text'].start_with?("/") #スラッシュコマンドを除外

  uri = URI.parse("https://slack.com/api/chat.postMessage")
  request = Net::HTTP::Post.new(uri)
  request.content_type = "application/json"
  request.add_field("Authorization", "Bearer <TOKEN>") 
  request.body = JSON.dump({
    "channel" => params['event']['channel'],
    "text" => params['event']['text']
  })

  req_options = {
    use_ssl: uri.scheme == "https",
  }

  response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
    http.request(request)
  end
end

適当なコードなのは勘弁してほしいけど、EventをリッスンしてPOSTメッセージをSlackから受け取ったら、その内容をそのままSlackのchat.postMessageというAPIを使って返すだけ。かんたん。 今までずっとHubotを通してSlackボットを作ってたので、Slack自体にBotフレームワークがあることに気づいたのは最近です。

ちなみに備忘だけど、Hubotを使ってSlackと連携する際には下記のフレームワークを使うと楽です。

slackapi.github.io

DialogFlow

チャットボットを作ろうと思ったら、やっぱり近頃流行りの人工知能的なアレをやりたいよね。昔懐かしの人工無能でもいいんだけど、ともあれ。 Googleapi.aiを買収して、カンバンのつけかえをしたDialogFlowを使うのがやはりストレートでしょうか。これ系で今Googleに勝てるプラットフォームはないと思う‥ちなみに5月にGoogleI/Oに行ったときにもこれをいじって遊んだ。日本語にも一応対応しているのがポイント高い。

GUIでポチポチ会話のパターンみたいなのを入れておくと、いい感じに喋ってくれます。バックエンドで機械学習してくれるみたいで、だんだん賢くなるのではないかと期待させる。機械学習と言われるとなんでもできるように感じさせるマジック!

dialogflow.com

実はDialogFlowにSlack連携があるの知ってました?

DialogFlow -> Slack

DialogFlowで作ったIntentをSlackに連携するボタンがあって、それを押してSlack側で認証してあげると、Slack内でDialogFlowがボットとして会話の相手をしてくれます。 f:id:ikeike443:20171217165436p:plain

先程のオウム返しSlackボット(Slack API Tester)と同じ部屋で会話してやるとこんな感じになる。 f:id:ikeike443:20171217165811p:plain DialogFlowBotさん、Slackボットのことは無視するのね。

HubotにもDialogFlowとのIntegrationがあるといいね。

DialogFlow -> Google Home

DialogFlowで作ったIntentはGoogle HomeのActionとして使える。さっき見せたDialogFlowのIntegration画面にGoogle Assistantというのがあるから、そのボタンを押して支持に従うと、Google Homeを通してDialogFlowと会話ができる。 Google HomeのテストもWebで簡単にできるように作られてていい感じ。 f:id:ikeike443:20171217170428p:plain

Probot

ところでGitHubは最近、Hubotの延長となるOSSプロジェクトを始めていて、GitHub.comにGitHub Appsとしてインストールして、BotにIssueの掃除をさせたり、何かアラートを出させたり、ってことができるようにしている。 Probotっていうんだけど、意外と日本では知られてないので、一応ここで言及しておきます。

probot.github.io

GitHub Enterpriseでもいずれ使えるようにするんじゃないかなーと思う。 ProbotもDialogFlowやGoogleHomeと連携できると楽しいよね。

結論

は特にないんだけど、ただのメモだから。 まあ思ったのは、HubotやProbotとDialogFlowのインテグレーションをイケてる感じに作れると、Google Homeを通してデプロイを指示したり、GitHubにたまってるIssueを整理したり、今週のTODOを確認したり、できそう。Pull Request上でProbotに何か指摘されて、そのコンテキストをSlackに持ち込んでBotと会話して問題解決するとか、その結果をGoogle Homeを通して音声で受け取るとか、色々やれそうだよね。

どのデバイス、プラットフォームから話しかけても、適切なコンテキストを適切に引き回して、仕事をサポートしてくれるといいなあ。Google Homeに話しかけて仕事をスタートして、その同じコンテキストを前提にしてSlackで会話し、GitHub Issue上で会話し、みたいにできると楽だなあ。

最近書いたGitHubの記事

3月と7月にそれぞれ書きました。

thinkit.co.jp

thinkit.co.jp

お役に立てば幸いです。

今後も色々書いていくので、こんな事知りたい、みたいなリクエストが有ればぜひ。

GitHubツールビルディング ―GitHub APIを活用したワークフローの拡張とカスタマイズ

GitHubツールビルディング ―GitHub APIを活用したワークフローの拡張とカスタマイズ

チーム開発実践入門 ~共同作業を円滑に行うツール・メソッド (WEB+DB PRESS plus)

チーム開発実践入門 ~共同作業を円滑に行うツール・メソッド (WEB+DB PRESS plus)

近況

最近ブログを書いていないので近況でも。

2月は所属しているチームのキックオフミーティングがあった。

サンディエゴです。ホテルにOctocatの投影。バットマンみたい。こういうところこだわるの社風だなあと思う。

2016年のTop Solutions Engineerとして表彰されました。なにげに社会に出てから所属している会社に表彰されたのははじめてです。

同僚と。仲のいいチームです。

2月、シンガポールで開催されたDevSecConというイベントにブースを出した。

現地のパートナーと、シドニー在住のうちの営業と4人でポーズ。

定番のところで記念撮影。シンガポールは実質滞在期間40時間くらいの弾丸出張でした。

4月、Le Wagonで講演

f:id:ikeike443:20170530151512j:plain プログラミングブートキャンプを行っているフランスのスタートアップ、Le Wagonが東京でサービスをやるということで、そこで講演するよう依頼をもらった。その時の様子。 なにげにこれがはじめての英語講演…

同じく4月、DevOpsDays Tokyoにブース。

名古屋に住む同僚と。

割と盛り上がってたと思います。吉羽さんが関わっていると聞いたので会社に無理言ってスポンサーしてもらいました。

自宅オフィスにスタンディングデスクを買った

やすかった。

たしかこの後に韓国に滞在24時間の弾丸出張もしたはずなんだけど、写真がない…

5月、AWS Summit Delhiにブース。

インドでの人気はすごいです。

現地のパートナーと、東京在住のうちの営業(変顔してるほう)。

なんていう遺跡だったか忘れたけど、記念撮影した。この日はたしか42度くらいあって無茶苦茶に暑かった。持ってた水がお湯になった。

同じく5月、Google I/Oへ。

会社のConference benefitを使ってGoogle I/Oへ。AIあつい。

現地(Mountain View)で、"Building Tools with GitHub"の原著者のChrisと。実はChrisとは初対面ではなく、今まで2回、いずれもGitHub Universeで会っている間柄。今回予定が合うので会ってみた。

GitHubツールビルディング ―GitHub APIを活用したワークフローの拡張とカスタマイズ

GitHubツールビルディング ―GitHub APIを活用したワークフローの拡張とカスタマイズ

たまたま時間があったので、うちがお客様を集めて行っているGitHub Enterprise Summit San Joseにお邪魔。お客様同士で開発フローの改善などを話し合っていていい雰囲気だった。東京、名古屋、京都、大阪でもやりたいなあ。

Google I/O

写真多めで。Google I/O、楽しかった。

Google Homeもらった。

5月、De:Codeにブース。

日本マイクロソフトさんのDe:Codeに出展。

という近況でした。

こんな風に並べると海外にずっといるみたいに見えるけど、実際は東京でお客さんとお話している割合のほうが長いです。

オライリージャパンさんからGitHubツールビルディングが出ます

つい先程完成した本が届きました。

この本はGitHub APIとWebhooksを使って、様々な言語・プラットフォーム上でGitHubと協調して動くツールを作ってみよう、という意欲的な本です。翻訳は笹井さんが、私は監訳者と言うかたちで関わらせていただきました。中で言及される言語やテクノロジーは実にバラエティに富んでいて、検証が大変だったのを覚えています。

既に2年ほど前の本の翻訳であるため、ものによっては文中のコードはそのまま動かないケースがありますが、APIを総覧して、いろんなツールを作るヒントになる本という意味で有用かと思います。作者のGitHubリポジトリにサンプルコードがありますので、それを見ながら読むのがいいでしょう。ちなみに動かない部分があるとしてもそれはGitHub APIの部分ではなく、依存しているライブラリだったりの問題ですのでご安心を。GitHub API自体は後方互換性を非常に気にして開発しており、2年たった今でもすべて元の期待する挙動どおりの動きをします。

GitHubツールビルディング ―GitHub APIを活用したワークフローの拡張とカスタマイズ

GitHubツールビルディング ―GitHub APIを活用したワークフローの拡張とカスタマイズ

付録でも言及しましたが、GitHubは昨年から開発者向けにEarly Accessプログラムを実施しています。また、最近GitHub Developerプログラムそのものも改訂があったばかりです。残念ながら、日本から参加者はそこまで多くないのが現状ですが、これを機にぜひ積極的にご参加いただければ幸いです。下記のようにフォーラムもありますよ。

platform.github.community

GitHubツールビルディング ―GitHub APIを活用したワークフローの拡張とカスタマイズ

GitHubツールビルディング ―GitHub APIを活用したワークフローの拡張とカスタマイズ

チーム開発実践入門 ~共同作業を円滑に行うツール・メソッド (WEB+DB PRESS plus)

チーム開発実践入門 ~共同作業を円滑に行うツール・メソッド (WEB+DB PRESS plus)

Git-it と Patchwork

先日、下記の記事がバズりました。(Git-itを紹介くださりありがとうございます!) www.softantenna.com

この記事がバズる中で書かれたコメントを見ていると、こんなツール使わなくても仕事で使えば覚えられるのでは、といったニュアンスのコメントが散見されました。もしかしたら Git-it の位置づけと、それを補完するイベントの存在が知られてないのかなと思い、ちょっとブログに書いておこうと思った次第です。

Git-it ってなに?

Git-it は GitHubber の Jessica Lord が作った初心者向けの Git 練習アプリです*1。大元をたどると node.js コミュニティの手による Workshop アプリに端を発するみたいですが。これは Git に触ったことがない方向けの練習ツールで、特に、エンジニアじゃない方に向けてデザインされています。デザイナーであったり、学生さんだったり、です。

そしてこのアプリは特に Patchwork というイベントで利用するためにデザインされています。

Patchwork って??

Patchwork というのは GitHub が主催しているコミュニティイベントで、Git/GitHub を使ってみたいすべての人にむけてオープンになっています。参加資格は Git 初心者であること、だけで、職業は問うていません。イベントではオープンソースとは何か、誰でも開発に参加できること、などを理解していただいた後、Git-it を使って実際に Git と GitHub およびバージョン管理という概念や、他人とのコラボレーションの仕方について学んでいただくようになっています。

イベントの中では、OSS プログラマーの人に来ていただいてご自身がどういうきっかけで OSS に関わるようになったかを喋ってもらったり、学生さんが OSS に関わるようになった経緯をトークしてもらったり、行政の方にオープンデータの取り組みについて語ってもらったりしています。

ソフトウェア開発やオープンデータへの貢献を通じて、誰でも社会をよくしたり、関わっているソフトウェアをよくしたりすることができるんだ、ということを知っていただくいい機会になっています。

patchwork.github.io

Patchwork にはプログラマーの方であってももちろん参加いただいて構わないのですが、過去に多く参加いただいているのはデザイナーさんや営業や企画の方、そして学生の方や主婦の方です。ソフトウェアに関わることが多くなって Git について学びたいと思っている方や、自分の手でアプリを作れるようになりたいと思って参加される方や、オープンデータやオープンソースに参加してみたいと思っている方が多く参加してくださっています。

2015年にも日本だけで複数回このイベントを行っています。

東京

f:id:ikeike443:20160424102732j:plain

f:id:ikeike443:20150903222741j:plain

この2つの写真は昨夏に東京で開催した時の様子です。

github.com

このようにブログで告知したりしています。

umi-uyura.hatenablog.com

この時に参加された方のブログです。

神戸

f:id:ikeike443:20151214214354j:plain

これは12月に神戸で開催した時の写真です。

patchwork-kobe.peatix.com

こんな風にブログではないところで告知することもあります。

japan.cnet.com qiita.com

神戸に参加された方のブログや、ニュース記事です。

京都

f:id:ikeike443:20151216192942j:plain

12月には京都でも開催しました。

patchwork.doorkeeper.jp

京都の時は Doorkeeper で告知しました。

ふたたび東京

f:id:ikeike443:20151219110510j:plain

12月には再度東京でも開催しました。

まとめ

ということで、この Git-it というアプリの位置づけと、関係する Patchwork というイベントについてご紹介しました。GitHub がどうしてこんなイベントをやっているのかについては、次の記事も参考にしてください。

thinkit.co.jp

Git-it は学習には良いツールなので、ぜひ皆さんも使ってみてください。そしてよかったら次回の Patchwork にメンターとして参加いただけると幸いです。

*1:ちなみに日本語化は私がやっています。