「動かして学ぶ!Python FastAPI開発入門」著者の中村 翔様へインタビューしてみた。

2023.08.31
2021年にzenn.devで公開された FastAPI入門動かして学ぶ!Python FastAPI開発入門 として翔泳社より出版されました。
今回の出版を記念して著者の中村 翔様(株式会社sustenキャピタル・マネジメント)へインタビューを行いました。

この度はインタビューにご協力いただきありがとうございます。まずは、中村様の普段の活動についてお聞かせください。

中村:

2019年に株式会社sustenキャピタル・マネジメントという会社を共同創業しました。創業当初はエンジニアとしてゴリゴリコードを書いていたんですが、今は会社の規模が成長していったこともあり、現在はエンジニアが10人程度いるチームのマネジメントと技術統括を主に行っていますね。

当社では、「おまかせ資産運用」という形でお客様の資産運用をサポートするサービスを提供しています。成果報酬制度としてお客様に利益が出たときだけ我々が手数料をいただくしくみで、難しい資産運用をまるっとおまかせ頂くことができるのが特徴のFintech領域のサービスを運営しています。

「家族や友人に勧められる資産運用サービスを作りたい」というのを創業来のミッションとしてかかげて開発を行っています。

— 今回の出版はFastAPIに関連する書籍ですが、普段の業務で利用されているんですか?

中村:

今回出版した本で取り扱っているFastAPIは、会社の創業後しばらくした2020年から現在まで、約3年間使い続けています。

一般的に金融サービスの構築ではJavaやGoなどの静的言語が使われることが多いですが、我々のサービスでは資産運用で活用している機械学習との親和性も考慮して、PythonベースのFastAPIを選びました。FlaskやDjangoなど他のPythonフレームワークと比べFastAPIは新しく、型安全でSwaggerUIが使えるなどスキーマ駆動開発が行いやすい点が魅力でしたね。

— なるほど〜。Fintech領域のサービスとして、運営面で特に意識している点はありますか?

中村:

Fintechってすごくかっこよく聞こえるかもしれないんですけど、我々にとっての本質は「金融(ファイナンシャル)の領域をどう技術で使いやすくするか」だと思っています。 例えば、銀行の手続きをするために平日の決まった時間に窓口に行かないといけないけれど、仕事で窓口が開いている時間に抜けられずに困ったことがある、といった経験がある方も多いかと思います。そうした金融領域におけるユーザーペインを自分たちの技術力や工夫で使いやすくしていく、というところを重要視しています。技術によって課題を解決していていくのが今やってる活動の特徴と考えると、Fintech以外の分野と大きくは違わないのではないか、と思いますね。


FastAPIのコミュニティを広げたいとの思いもあり、Zenn bookの執筆を開始しました。

— 今回のテーマはFastAPIとのことですが、このテーマでZenn bookを執筆するようになったきっかけがあれば教えてください!

中村:

ちょっと綺麗な話ぽく聞こえてしまうかもしれませんが(笑)当初、会社の技術選定でFastAPIを採用する際に、他の多くのフレームワークの中から選択をしました。

ここでFastAPIを選ぶ決断をしたのは良いけれど、例えば1年後にFastAPIが全然流行らなくて使われなくなるようになってしまったら残念ですよね。 技術者としても当然ですが、会社にとってもフレームワークの再選定が必要になってしまうような事態になると、いわゆる「技術的負債」となって追加の開発コストが掛かってきたりして大変です。FastAPI自体が長い間メンテナンスされ続けて、多くの人に広まって愛されていく技術になれば、そうしたリスクを減らすことができるのではないか、という思いがありました。

そこで、自分が情報発信を行ってFastAPIを広めていったら使う人も増えるし、その技術は長く使われるから会社の技術選定としても正しかったって言えるよね。と思いまして。 勝手に技術が広がるのを待つんじゃなくて自分もエバンジェリスト的な動きをして情報発信を行って盛り上げていこうと。そうした背景があって、業務の中で自分の知識も深まってきたのを感じていたタイミングに、ノウハウを公開しようと思い立って執筆をはじめたのが一番最初のきっかけでした。

— コミュニティの参加者として盛り上げていこうってことですね!ちなみに、Zenn bookは時間がかかると思いますがモチベーションの維持とかで工夫したことってありますか?

中村:

Zenn bookはマークダウンで書くことができるので、技術記事やドキュメントを書く感覚で執筆できるのが良かったです。章ごとにプレビューする機能があり、完成形をイメージできるユーザー体験がすごく良くて。 書く時間がある日に1章ずつ進めていく感覚でペースコントロールしつつ、中間生成物を常に確認しながら書けたっていうのはすごく良かったですね。 体験の良さというのが、途中で諦めずに完成させられた一番大きな理由かなと。

あとは、執筆が一段落してからになりますが、「読者コミュニティ」とか「Like」とかによって読者の方からフィードバックを得られたことはとても励みになりました!これを読んでくださった方は今からでも「Like」頂けると嬉しいです!(笑)

— Zenn bookを執筆する中でこだわった点とかがあれば教えてください!

中村:

ちょうど出版本のテーマが、「動かして学ぶ」なのですが、「手を動かして学べる」ということに関してはZenn bookを書く当初から気を使っていたところでした。何事もものは試しですからね。私自身プログラミングは本来楽しいものと思っているので、教科書的に進めるよりも手を動かしていたらいつの間にか「チョットデキル」になっているのが理想かなと。

あとは、実際に会社の業務で使っていてノウハウも溜まっていたので、実務で使える情報を盛り込むというところを意識しましたね。 FastAPIは公式ドキュメントが充実していますが、Dockerを使う点、Poetryを使ったバージョン管理、業務で使う前提でのディレクトリ構成などチュートリアルでは補うことが難しいけど、実務で重要になってくるポイントを盛り込むようにしました。


本を出したいという目標が今回の出版で現実になりました!

— 翔泳社から「動かして学ぶ!Python FastAPI開発入門」が出版されますが、出版に至った経緯を教えてください!

中村:

Zenn bookの読者コミュニティで翔泳社の方から声をかけていただいたことがきっかけです。そのときに色々な方に読んでいただいているんだなって改めて実感しました。

その後、Twitter(現X)のDMでやり取りをして出版に向けての調整を行っていったという流れです。

商業本の出版をやりたいなと思った理由としては、先程お伝えしたようにFastAPIの拡大に貢献したいという点や、会社としてもエンジニアの採用をどんどん行っているので、採用につながればいいなという思いもあり、執筆することを決めました。

あとは、個人的にも本を出してみたいという思いは昔から持っていたのでそれを実現するチャンスを頂いた機会でもありました。

— 出版の目標が現実になったということで、おめでとうございます!今回出版された本の執筆にあたり、こだわった点があれば教えてください。

中村:

ありがとうございます! FastAPIの基本的な内容はもちろんですが、タイトルの通り実際に動かして学ぶというところと、今回新たにクラウドへのデプロイ方法も力を入れて記載しました。Dockerを利用し、それが本番環境でそのまま使える体験や、AWSやGoogle Cloudなどのクラウドサービスへのデプロイ時などで初心者がつまづいてしまうことが多い点についても丁寧に記載しました。

また、読者の方にとっての読みやすさは強く意識しました。例えば細かいところになるんですが、できるだけエディターっぽく見えるように、コードシンタックスへのハイライトを最大限行っていただくよう依頼しました。誌面の色数も限られますので、結構無理を言ってしまったのですが最終的には丁寧に対応頂くことができ、すごくわかりやすい表現ができたと思っています。他にも、イラストを追加して読みやすくするよう工夫しました。私は絵を描くのが下手くそだと思っているので、そうした部分を出版社の方にお任せできるのがとても良かったです。

FastAPIについて「結構分かってるぜ」って方にも楽しんでいただけるように、細かい知識や言語の違いとか、フレームワークの歴史的な背景なども書いているので、その点も楽しんでもらえると嬉しいです。


— ちなみに次に書いてみたい記事とかってあったりしますか?

中村:

最近はマネジメント側の仕事をやることが多いので、採用やマネジメント関連の情報発信も行ってみたいですね。スタートアップ運営の経験から、チーム作りやFintech業界の話題なども発信したいと考えています。

— 最後に読者にむけて一言あればお願いします!

中村:

今回の本の出版のきっかけはZenn bookを書いたことでした。自分の技術を広めたい方や本を書きながら自分の理解や知識を深めていきたい方、動機はなんでもいいと思うので、好奇心にまかせて書いてみるのが良いと思います。

今回本をお読みいただいた方やFastAPIに興味がある方がいらっしゃったら、今の会社で本に書いていることと近い開発を実際に行っているので、採用への応募や、Twitter(現X)とかでもお気軽にお声掛けいただけたら嬉しいなって思います!