フューチャー技術ブログ

Software Design 2023年7月号 gRPCで始めるWeb API開発 3章を寄稿しました

はじめに

2023年6月16日に発売された、Software Design 2023年7月号の特集である、「gRPCで始めるWeb API開発」の3章をフューチャーメンバーである、渋川、武田、真野の3名で寄稿させていただきました。このような寄稿の機会をくださった技術評論社の方々には、心からお礼申し上げます。

Software Design とは

技術評論社が出版している月刊の技術情報誌です。Webサービスを開発するソフトウェア業界のエンジニアにとっては説明不要と言っていいくらい鉄板です。

毎月様々なテーマについて特集を組んで取り扱っており、プログラミングだけでなく、OSやネットワークまで、その内容は多岐に渡ります。入門者・初心者向けの内容から実践的な内容も多く含まれているので、新人からベテランまであらゆるエンジニアにおすすめできる雑誌です。

執筆のきっかけ

寄稿の記念(と販売促進)を願って公開していた過去記事によると2018年頃から、フューチャー社員も記事を寄稿することが増えたようです。

今回の直接のキッカケは2022年のサービス間通信とIDL(インタフェース記述言語)連載を始めますのブログリレーにあったgRPC関連の記事です。ここから寄稿どうでしょうか? と技術評論社さんからご提案をいただきました。会社名義で発信しておくと良いことがありますね。私はフューチャーブログの運営もしているので嬉しいです。引き受けて良いですかね? と広報の石井さんと部署のボスの宮原さんに聞いたら、OK~と即レスだったので急ぎメンバーを集めてネタのディスカッションを始めました。

執筆の流れ

武田さんの記事に詳しく書かれています。今回のgRPC記事もトピックごとに役割分担して臨みました。

執筆してよかったこと

私達の担当部分のテーマは「gRPC利用時のAPI設計ポイント」です。

元々フューチャーにおけるWeb API開発は、私の観測範囲では、OpenAPI、gRPC、GraphQLが使われており、諸々の事情でスキーマ駆動で行われることが大半です。この理由をいくつか挙げると、Web APIの開発本数をマネジメント上、開発に本格的に入る前にそれなりの精度で洗い出し、チームの体制を整えたり、予実管理に生かしたいなどがあるかなと思っています。また、なるべくシステムの仕様をブラックボックス化させずにオープンに引き継げるように、ドキュメントをリッチに作る傾向にあることも理由にあると思います(※これはどのエンタープライズ開発でも同様でしょうが)。引き継ぎ大事ですよね。

さて、そんな設計を大事にするフューチャーなので、Web APIスキーマも皆それなりのこだわりがあります。今回の執筆テーマも、「API設計ポイント」なので、gRPCのprotoファイルを記載する上で気をつけた方が良いことをgRPCをあまり使ったことがない方にも分かるように意識して取り組みました。

gRPCの設計標準ですがいくつかよく知られたプラクティスがあります。例えば相互運用性や互換性についてなどです。加えてドキュメント生成や、バリデーション、メタデータの扱いについて、社内メンバーにレビューもらいつつ、私たちが担当した3章はきゅっと9pにまとめました。

APIの後方互換を守るための考え方などは、gRPCに閉じた話で無いとメンバー内でも話題になっており、それこそOpenAPIでWeb APIを管理している方にもオススメできる内容です。

執筆側のメリットとしては紙面で出版後の訂正は効かないため、誤った内容を出すわけにはいかない精神で、普段の技術ブログ以上に公式/コミュニティ問わず多くの文献をあたり、執筆する前より体系的な理解が深まったと感じます。今回は3名で臨んだのでお互い気になったトピックは議論しながら進められ、お互いの知識も補完しあえたのもの得るところがありました。

Software Design 2023年7月号 は良いぞ

特集のgRPC以外にも面白いネタがたっぷりです。偶発的(?)な出会いがあるのが、雑誌のいいところですね。Svelte、GoFデザインパターン、SBOM、Deno、話題の生成AIなどなど、幅広いテーマを扱っています。もちろんGoの記事もあります。その中で以下が雑誌でないと絶対に読むことがなかったので出会えてよかったと思っています。

  • 分散型SNS
    • Twitterの代わりとなるサービスを探す動きが強まっていて、分散型SNSのプロトコルについて解説です
    • ActivityPubは名前だけしか知りませんでした。まったく知らない人である私にもどのようなものかわかりやすく知ることができました
      • MastodonとかMisskeyなどの異なるサービス間で連携できるとは..
    • 他にもAT ProtocolやNostr(むしろNostrが本題)についても優しく解説しています
    • サーバの責務の重い/比較的軽いや、匿名性、検閲体制、データの永続性など技術的に考慮すべき点がたくさんあるということが知れて面白かったです
  • 民主主義を発展させるためのテクノロジー「Plurality」
    • 技術で民主主義の発展させ社会貢献、なかなか痺れるタイトルです
    • 最初は「何かしらの便利な行政アプリをOSSで作る」といった感じ? と少し冷めた目線で見てしまいましたが、投票といった意思決定メカニズムに直接関与するような仕組みを設計したりと野心的な話題が紹介されており、琴線に触れました
    • 最後に紹介された政治哲学者トクヴィルの言葉も良いですね。オーナーシップが大事だと
  • 瞑想
    • リモートワークだと気が張りっぱなしになる瞬間がありますよね。そんなときにストレス解消や、集中職・意思決定力の向上に有効だと言われる、エクササイズとして紹介されています。ちょっと試したところ頭が気持ちスッキリした気がします

さいごに

  • 企業ブログ(フューチャー技術ブログ)に寄稿すると執筆のチャンスに繋がることもある。これからもガンバリます
  • 雑誌寄稿レベルまで色々な方とやり取りしながら執筆すると学びが深い
  • Software Design 2023年7月号、ひと段階、視野が広がり良かったです