GitHubにとってAPIとは? GraphQLが提供する価値とは?
ソースコードリポジトリーサービスGitHubの年次イベント、GitHub Universe 2017において、数多くの新しい技術やサービスが紹介された。今回は、その中からAPIとGraphQLを取り上げ、Director of Ecosystem EngineeringのKyle Daigle氏に話を伺った。
まずKyleさんのGitHubでのキャリアを教えてください。
Daigle:私はGitHubで働き始めて、もう4年半になります。それまでエンジニアとして、インフラストラクチャーや今回発表したGraphQLなどを担当してきました。全てのAPIやマーケットプレイス、それにパートナーのエコシステムに関するエンジニアリングを担当しています。
キーノートでGraphQLの発表とAPIの公開が繰り返し語られましたが、特に印象に残ったのが「APIやデータは社内のエンジニアも社外のエンジニアも全く同じものを使う」という部分でした。それについて教えてください。
Daigle:これはGitHubのストラテジーなんですが、社内のアプリケーションエンジニアが使うAPIもシステムインテグレーターが使うAPIも全く同じものにしています。これは、GitHubを使うエンジニアにとって最高のエクスペリエンスを提供するという意味で重要です。つまりGitHubのエンジニアではないという理由で、セカンドクラスのエクスペリエンスを提供してしまえば、究極的に競合力が低下することになると思っているからです。
通常であれば社内向けの隠されたAPIを用意することもあると思いますが、そういうことはしないと。
Daigle:そうです。それはGitHubからのコミュニティに対する重要なコミットメントだと思います。
「Infrastructure as a code」に代表されるように、様々なシステムがコードの形で定義されていますが、GitHubとしてそれらをサポートする予定はありますか?
Daigle:これはすでに我々だけではなくGitHubのユーザーが多く実施していることですので、すでに実現していると考えて良いと思います。GitHub自身も、社内のシステム開発はDockerコンテナとKubernatesによるコンテナ環境に移行していますし、テストもインフラストラクチャーの定義も同じようにGitHubで管理されています。ただ「全てのユーザーがそうなるべき」というつもりはありません。従来型の開発をしている企業もありますし、それを無理やり変えさせる必要もないのです。様々なスタイル、多様性が実現できるというのも、GitHubの良さのひとつだと考えています。
GraphQLについて教えてください。これはAPIを通じてデータにアクセスする際の標準になるということですが。
Daigle:そうです。我々はAPIを通じて様々なソリューションが提供されることを望んでいますが、そのために全く新しい言語や独自のシステムを使うことはしないでおこうと考えていました。Facebookが開発しオープンソースソフトウェアとして公開しているGraphQLは、GitHubが提供するAPIの目的にはピッタリのものでした。GitHubとしてもGraphQLの開発に協力していますし、これによってより開発が効率良く行えるはずです。日本の開発者にもぜひ、GraphQLを使ってGitHubを活用してもらえたらと思っています。
松下:GitHubに関する日本語の情報も増えてきていると思いますが、このオープンなAPIを使うためにはGraphQLの技術が必要であると。ただオープンソースソフトウェアであれば、他にも応用ができるということになりますね。
最後にちょっと変わった質問をさせてください。GitHubの普通のエンジニアは普段、どういう生活をしているのですか?
Daigle:私はサンフランシスコではなくコネティカットに住んでいますので、GitHubの仕事は全てリモートで行っています。妻と2人の子供、それにネコがいますので、朝、子供をデイケアに送ってから自宅で仕事をします。その意味ではとても自由な環境ですね。GitHubは様々なスタイルの働き方を許容しているので、世界中にエンジニアがいて非同期に仕事をしている感じです。ただ月曜日はチームのミーティング、水曜日の夕方はJamと称してもっとカジュアルに話をする時間を用意しています。他にもマンスリーで「オープンソースFriday」のような、オープンソースソフトウェアについて情報を交換し合うイベントなども行われています。
全員が顔を合わせる機会がないと、今後6ヶ月に何をするのか? といった長期のことは決められないのでは?
Daigle:そのために各チームではミニサミットと称して、何かのイベントの時に一緒に顔を合わせて話をする機会を作っています。今回のGitHub Universeでも、色々なチームがミニサミットを実施していると思います。そこでちょっと先の計画を立てたりするのです。他にもペアプログラミングをやるなど、どのチームもいろいろと工夫をしています。GitHubのオフィスも拡張して図書館のようなスペースができましたが、だからと言って全員が集まるわけではなく、チームの自主的なやり方に任されています。
GitHubのオフィスはとてもクリエイティブなインテリアで素晴らしく、特に犬にもとても優しいオフィスですが、ネコ好きには不満があるのではないですか?
Daigle:ああ、そうですね(笑)。ネコは歓迎されていないようです(笑)。
APIとマーケットプレイスのエンジニアリングを担当しているというKyle Daigle氏のチームは、これから外部に向けて地味ではあるが大きな貢献をすることになるだろう。特にGraphQLに関しては10月25日、26日の2日間、サンフランシスコにて開かれるGraphQL SummitにGitHubのエンジニアも参加することがすでに発表されている。GitHubとしても、GraphQLの成長を積極的に支援していくという表れだろう。
なおGitHubは、GraphQL Explorerを公開している。ここでGitHubのIDを持っていれば、GitHubからのデータを試すことができる。
GraphQL API Explorer | GitHub Developer Guide
1年後のGitHub Universeで、GitHub社員以外のプログラマーがGraphQLを使ってどんなソリューションを実装しているのか、今から楽しみである。