7月30日にオンラインで開催されたリードエンジニアから学ぶMedPeerのプロダクト開発に参加した。主にリードエンジニアやそれより少し若いぐらいのエンジニアを対象としたイベントだと思われるが、以前ヘルスケア関係の仕事をしたこともあり興味があったので、空気も読まずに参加してみた。オンラインだとこういうことができてありがたい(オフラインだったら多分行けない…)。
メドピアは、国内医師の3人に1人が登録する日本最大級の医師専用コミュニティサイトをはじめ医療・ヘルスケアサービスを開発している企業。
本日の会社紹介資料ですm(_ _)mhttps://t.co/KuNIC1pTrt #medpeer
— fukumura@メドピアCTO (@fukumura) 2020年7月30日
新規事業におけるAPI開発をよしなに進める方法
9月にリリース予定のかかりつけ医と患者をつなぐサービスのリードエンジニアの方のお話。
API 設計にあたり、まずはスタンダードを知るために Web API: The Good Parts を読んだ。そして、巨人の方に乗る(GitHubやTwitter、Trelloなど偉大な先人の設計を参考にする)。
API 開発は協働が前提。スキーマ駆動開発を行った。スキーマを開発の中心に据え、常にスキーマを書くことから開発が始まる。OpenAPI のようなスキーマ記述言語でスキーマ(API 定義)を書く。
スキーマ駆動開発簡単3ステップ
本日の登壇資料です!
— Sakurai.T (@shibadog39) 2020年7月30日
【新規事業におけるWebAPI開発をよしなにリードする方法】https://t.co/ibKfToPEyz#medpeer
JSON APIとサービス高速化
クリニック開業支援開発プラットフォームの開発で、サービスの根幹部分である物件検索が遅いという問題があった。件数に比例してパフォーマンスが悪化する。index を貼ったり N+1 をなくしたりしても、とても遅い→遅い ぐらいの改善しかできなかった。
ボトルネック探しの結果、JSONのシリアライズが遅いことがわかった。ActiveModelSerializer という老舗 Gem を使っていたが、何を使えばいいか。いくつかの Gem を試しベンチマークをとって jb に落ち着いた。
どんなアプリにも合う JSON シリアライザの決定版は今のところ決められない。JSON シリアライザ戦国時代…
「JSONシリアライザ戦国時代」の資料を公開しましたhttps://t.co/eC7vTdtaaN #medpeer
— ルニ@元イカのプログラマ (@lni_T) 2020年7月30日
アラサーエンジニアの生存戦略
アラサーになり、「若手」と言えない歳に。アラサーを取り巻く問題…老害化やマネージャー VS プレイヤー、35歳定年説。
エンジニア35歳定年説→そんなものはない。実際にアラフォーやアラフィフの凄腕エンジニアはいる。35歳ぐらいになって学べなくなった誰かが言い出した言い訳だろう。
エンジニアとして成長し続けるためには学習し続けることが大事。インプット・アウトプット。学ぶことは無限大にある中で、何を学習するか?
大事なのは技術選定の審美眼を持つこと。変わる技術・変わらない技術を見極めること。パラダイムシフトを見逃さず投資すること。トレンド技術に最低限キャッチアップしておくこと。
継続的学習(Continuous Learning)。常に知識をアップデートすることが重要。学習を習慣化させる。続けることが重要。
インプット:技術トレンドのキャッチアップ、パラダイムシフトを見逃さない
アウトプット:ブログ、登壇、OSSなど
アラサーエンジニアのキャリア構築の考え方。"Connecting the Dots." Steve Jobs
中長期視点を持つ。自分の仕事のモチベーションを知る。
チャレンジする。上を目指したり、守備範囲を広げたりしてみる。
ぶれない軸を持とう。自分の道は自分で決める。
本日の発表資料上げました #medpeer https://t.co/wF3MRu9Xva
— toshimaru (@toshimaru_e) 2020年7月30日
Railsアプリ開発の事例紹介
ほとんどついていけなかったので割愛。ごめんなさい。1年後ぐらいには、自分も「なるほどその手があったか!」とうなずきながら聞けるようになってるはずというイメージトレーニングをさせていただいた。
「Railsアプリ開発の事例紹介」の資料を公開しました。
— 神速 (@sinsoku_listy) 2020年7月30日
https://t.co/NTlxwciZ3i #medpeer
所感など
スキーマ駆動開発について
先日フィヨルドブートキャンプ内でスキーマ駆動開発という言葉を聞いたので興味を持っていたところ、その話題だったので面白かった。スキーマというとデータベースのイメージだったが、どうも文脈から自分が想像しているものとは違う感じだったので、そのうち買おうと思っていた WEB+DB PRESS Vol.108「スキーマ駆動 Web API 開発」を購入(今回の LT でも紹介されていた)。そこにはこう書いてあった。
スキーマとは、その対象の「ありさま」を定められた形式で記述したものです。Web API のスキーマとなると、ざっくりと言えば、どこにどんなリクエストを送ったらどんなレスポンスが返ってくるかを記述したものになります。
- 発売日: 2018/12/22
- メディア: Kindle版
レスポンスを決めてから開発するというとテスト駆動開発と似ている気もする。上の本によると、自動化されたテストがスキーマ駆動開発のドキュメント代わりになることもあるらしい。
スキーマ駆動開発以前の開発スタイルでは、モバイルアプリエンジニアなどは、API の実装がある程度進んでからでないと作業を始めにくい。一方、スキーマ駆動開発では、最初に API 開発者と API 利用者(モバイルアプリエンジニアなど)が一緒にスキーマの設計を行うので、設計が終わり次第それぞれ開発を始めることができる。スキーマ中心 Web API 設計ともいえる。
今回の LT を聞いてから本を読んだのでかなりイメージができた。スキーマ記述言語にも興味が湧いたので調べてみたい。
スキーマ駆動 WebAPI開発「スキーマ駆動開発とは何か」「OpenAPIの基本」|ITとガゼルとイラストと
ちなみに、英単語の schema は「概要、図表」という意味。IT 関係用語のスキーマは日本語で言えば「構造」というような意味だが、文脈によって意味が異なるらしい。
スキーマ (schema) - 「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
アラサーエンジニアについて
自分はリードエンジニアどころか駆け出してもいないアラサーなので少し焦りはある。35歳定年説なんてないとはっきり言われていたのはよかった。
やっぱり学び続けること、インプット・アウトプットが大切。これをおろそかにしていいと言っている人は見たことがない。技術の審美眼は大事なスキルだ。自分はまだまだそれを養うレベルに到達していないが、これからプログラマとして生きていくつもりなので、心に留めておきたい。
まとめ
今回は、ほとんど理解できないかもと思いながらの参加だったが、思っていたよりは理解できることもあり、興味深い話ばかりで、キャリアについての考え方なども大変勉強になった。
勉強のモチベーションにもなるので、たまにはこういうイベントにも参加していきたい。