リードエンジニアから学ぶMedPeerのプロダクト開発 に参加

7月30日にオンラインで開催されたリードエンジニアから学ぶMedPeerのプロダクト開発に参加した。主にリードエンジニアやそれより少し若いぐらいのエンジニアを対象としたイベントだと思われるが、以前ヘルスケア関係の仕事をしたこともあり興味があったので、空気も読まずに参加してみた。オンラインだとこういうことができてありがたい(オフラインだったら多分行けない…)。

メドピアは、国内医師の3人に1人が登録する日本最大級の医師専用コミュニティサイトをはじめ医療・ヘルスケアサービスを開発している企業。

新規事業におけるAPI開発をよしなに進める方法

9月にリリース予定のかかりつけ医と患者をつなぐサービスのリードエンジニアの方のお話。

API 設計にあたり、まずはスタンダードを知るために Web API: The Good Parts を読んだ。そして、巨人の方に乗る(GitHubTwitter、Trelloなど偉大な先人の設計を参考にする)。

API 開発は協働が前提。スキーマ駆動開発を行った。スキーマを開発の中心に据え、常にスキーマを書くことから開発が始まる。OpenAPI のようなスキーマ記述言語でスキーマAPI 定義)を書く。

スキーマ駆動開発簡単3ステップ

  1. OpenAPI を知る
  2. スキーマを頑張って書く
  3. みんながスキーマにアクセスできるようにする

JSON APIとサービス高速化

クリニック開業支援開発プラットフォームの開発で、サービスの根幹部分である物件検索が遅いという問題があった。件数に比例してパフォーマンスが悪化する。index を貼ったり N+1 をなくしたりしても、とても遅い→遅い ぐらいの改善しかできなかった。

ボトルネック探しの結果、JSONシリアライズが遅いことがわかった。ActiveModelSerializer という老舗 Gem を使っていたが、何を使えばいいか。いくつかの Gem を試しベンチマークをとって jb に落ち着いた。

どんなアプリにも合う JSONリアライザの決定版は今のところ決められない。JSONリアライザ戦国時代…

アラサーエンジニアの生存戦略

アラサーになり、「若手」と言えない歳に。アラサーを取り巻く問題…老害化やマネージャー VS プレイヤー、35歳定年説。

エンジニア35歳定年説→そんなものはない。実際にアラフォーやアラフィフの凄腕エンジニアはいる。35歳ぐらいになって学べなくなった誰かが言い出した言い訳だろう。

エンジニアとして成長し続けるためには学習し続けることが大事。インプット・アウトプット。学ぶことは無限大にある中で、何を学習するか?

大事なのは技術選定の審美眼を持つこと。変わる技術・変わらない技術を見極めること。パラダイムシフトを見逃さず投資すること。トレンド技術に最低限キャッチアップしておくこと。

(参考スライド)Worse Is Better - 過去を知り、未来に備える。技術選定の審美眼 2019 edition / Worse Is Better - Understanding the Spiral of Technologies 2019 edition - Speaker Deck

継続的学習(Continuous Learning)。常に知識をアップデートすることが重要。学習を習慣化させる。続けることが重要。

インプット:技術トレンドのキャッチアップ、パラダイムシフトを見逃さない

アウトプット:ブログ、登壇、OSSなど

アラサーエンジニアのキャリア構築の考え方。"Connecting the Dots." Steve Jobs

中長期視点を持つ。自分の仕事のモチベーションを知る。

チャレンジする。上を目指したり、守備範囲を広げたりしてみる。

ぶれない軸を持とう。自分の道は自分で決める。

Railsアプリ開発の事例紹介

ほとんどついていけなかったので割愛。ごめんなさい。1年後ぐらいには、自分も「なるほどその手があったか!」とうなずきながら聞けるようになってるはずというイメージトレーニングをさせていただいた。

所感など

スキーマ駆動開発について

先日フィヨルドブートキャンプ内でスキーマ駆動開発という言葉を聞いたので興味を持っていたところ、その話題だったので面白かった。スキーマというとデータベースのイメージだったが、どうも文脈から自分が想像しているものとは違う感じだったので、そのうち買おうと思っていた WEB+DB PRESS Vol.108「スキーマ駆動 Web API 開発」を購入(今回の LT でも紹介されていた)。そこにはこう書いてあった。

スキーマとは、その対象の「ありさま」を定められた形式で記述したものです。Web APIスキーマとなると、ざっくりと言えば、どこにどんなリクエストを送ったらどんなレスポンスが返ってくるかを記述したものになります。

WEB+DB PRESS Vol.108

WEB+DB PRESS Vol.108

  • 発売日: 2018/12/22
  • メディア: Kindle

レスポンスを決めてから開発するというとテスト駆動開発と似ている気もする。上の本によると、自動化されたテストがスキーマ駆動開発のドキュメント代わりになることもあるらしい。

スキーマ駆動開発以前の開発スタイルでは、モバイルアプリエンジニアなどは、API の実装がある程度進んでからでないと作業を始めにくい。一方、スキーマ駆動開発では、最初に API 開発者と API 利用者(モバイルアプリエンジニアなど)が一緒にスキーマの設計を行うので、設計が終わり次第それぞれ開発を始めることができる。スキーマ中心 Web API 設計ともいえる。

今回の LT を聞いてから本を読んだのでかなりイメージができた。スキーマ記述言語にも興味が湧いたので調べてみたい。

スキーマ駆動 WebAPI開発「スキーマ駆動開発とは何か」「OpenAPIの基本」|ITとガゼルとイラストと

ちなみに、英単語の schema は「概要、図表」という意味。IT 関係用語のスキーマは日本語で言えば「構造」というような意味だが、文脈によって意味が異なるらしい。

スキーマ (schema) - 「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

アラサーエンジニアについて

自分はリードエンジニアどころか駆け出してもいないアラサーなので少し焦りはある。35歳定年説なんてないとはっきり言われていたのはよかった。

やっぱり学び続けること、インプット・アウトプットが大切。これをおろそかにしていいと言っている人は見たことがない。技術の審美眼は大事なスキルだ。自分はまだまだそれを養うレベルに到達していないが、これからプログラマとして生きていくつもりなので、心に留めておきたい。

まとめ

今回は、ほとんど理解できないかもと思いながらの参加だったが、思っていたよりは理解できることもあり、興味深い話ばかりで、キャリアについての考え方なども大変勉強になった。

勉強のモチベーションにもなるので、たまにはこういうイベントにも参加していきたい。