ScalaMatsuri 2022 のスポンサーセッションで発表しました
クラウドリスク評価ビジョナル・インキュベーション株式会社1Scalaの新規事業でScalaの未経験者をオンボーディング2022.03.19 岩松 竜也 内山 陽介
View Slide
自己紹介2岩松 竜也いわまつ たつや内山 陽介うちやま ようすけScala歴7年 (=社会人歴)Scala Daysにも2回行った(コペンハーゲン /ローザンヌ)最近の趣味はカロリー管理と筋トレScala初心者元々はiOSエンジニア, サーバーサイドのメイン言語は Java息子と電車旅 , お酒チョットノム2015年 株式会社ビズリーチ新卒入社HRMOS採用で開発全般を担当2020年 Assured へ異動開発全般を担当2012年 株式会社サイバーエージェント新卒入社主にモバイル向け SaaSの開発全般、プリセールス、テクニカルサポートを担当アマゾンウェブサービスジャパン合同会社入社ソリューションアーキテクトとして、クラウド導入支援や技術支援を担当2019年Assured にエンジニアとして参画2022年
Scala歴7年 (=社会人歴)Scala Daysにも2回行った(コペンハーゲン /ローザンヌ)最近の趣味はカロリー管理と筋トレScala初心者元々はiOSエンジニア, サーバーサイドのメイン言語は Java息子と電車旅 , お酒チョットノム自己紹介3岩松 竜也いわまつ たつや内山 陽介うちやま ようすけ今日はどんどんツッコミしていきます2015年 株式会社ビズリーチ新卒入社HRMOS採用で開発全般を担当2020年 Assured へ異動開発全般を担当2012年 株式会社サイバーエージェント新卒入社主にモバイル向け SaaSの開発全般、プリセールス、テクニカルサポートを担当アマゾンウェブサービスジャパン合同会社入社ソリューションアーキテクトとして、クラウド導入支援や技術支援を担当2019年Assured にエンジニアとして参画2022年
Visional グループとは2020年2月の経営体制移行に伴い「ビズリーチ」から「 Visional グループ」として新しいスタートをきりました。
クラウドサービス開発に携わる方へセキュリティチェックシートの記入を依頼されたことはありませんか?[PR] Assured とは5
煩雑なセキュリティチェックシートの回答に多くの手間を割いたことはありませんか?[PR] Assured とは6
7
セキュリティリスク評価情報を集約することでセキュリティチェック対応業務を効率化します[PR] Assured とは8
[PR] Assured とは9気になった方は「Assured」で検索!https://assured.jp/アシュアード
Assured の技術スタック10インフラ バックエンド フロントエンド その他ツール
新規事業でScala?11
Scalaはオワコン?12
オワコンかどうかはさておきScala経験者を採用しづらいのは事実…Scalaはオワコン?13
なぜScala?14
スキルセット15なぜScala?15早く作る
スキルセット16なぜScala?16早く作るセキュアな作りがわかるセキュリティドメイン適切な品質が不明
注意した事17
これらは担保したい18ビジネスに集中できるScala未経験者も受け入れられるリライト・リアーキの選択肢を残せるPMF までProduct Market Fit
ありたい姿19捨てやすいコードである
意識したいこと20捨てやすいコードである読みやすい
具体的な指針21捨てやすいコードである読みやすい認知的負荷を下げる
認知的負荷とは”心理学者ジョン・スウェラーが 1988年に「ワーキングメモリで利用される心理的労力の総量 」として提唱したもの”22Matthew Skelton, Manuel Paisほか.「チームトポロジー 価値あるソフトウェアをすばやく届ける適応型組織設計」 .日本能率協会マネジメントセンター .2021年.354ページ強調等は引用者による
“課題内在性負荷:問題領域の本質的なタスクに関連するもの”“課題外在性負荷:タスクが実施される環境に関連するもの”“学習関連負荷:学習を進めたり高性能を実現したりするうえで、特別な注意が必要なタスクに関連するもの”3種類の認知的負荷23Matthew Skelton, Manuel Paisほか.「チームトポロジー 価値あるソフトウェアをすばやく届ける適応型組織設計」 .日本能率協会マネジメントセンター .2021年.354ページ強調等は引用者による
24それぞれの例(自分なりの解釈)24学習関連負荷課題外在性負荷課題内在性負荷
25それぞれの例(自分なりの解釈)25学習関連負荷課題外在性負荷課題内在性負荷Scalaの文法を覚えたりプロジェクトコードの読み方に慣れるための負荷ビルド・テスト方法(sbtの使い方)や外部ツールのコンソールコマンド(マイグレーション手順など)を覚えるための負荷セキュリティ評価のロジックやサービス間の連携など、ビジネスドメインに関連した知識を得るための負荷
26「読みやすい」とは26学習関連負荷課題外在性負荷課題内在性負荷Scalaの文法を覚えたりプロジェクトコードの読み方に慣れるための負荷ビルド・テスト方法(sbtの使い方)や外部ツールのコンソールコマンド(マイグレーション手順など)を覚えるための負荷セキュリティ評価のロジックやサービス間の連携など、ビジネスドメインに関連した知識を得るための負荷こちらに集中しやすい状態
具体的な対策27
一貫性をつくる課題(内|外)在性負荷を下げるためのTips28広く認知されている知識を利用する明瞭な意図を表す選択肢を絞る
一貫性をつくる課題(内|外)在性負荷を下げるためのTips29広く認知されている知識を利用する明瞭な意図を表す選択肢を絞る① アーキテクチャ② ビジネスロジック③ リファクタリング④ ドキュメントそれぞれに適用する
① アーキテクチャよく見る構成にする30Controller (Presentation)Service (Business Logic)Repository (Data Access)広く認知されている知識を利用する選択肢を絞るSpring Boot等のレイヤードアーキテクチャに合わせる→ どこを見れば何が書いてあるのか共通認識を持ちやすい→ 各層の役割や依存関係はちゃんと制御する
② ビジネスロジック31ユーザ招待再送信処理のサンプル
縦に読めばほぼわかるよう徹底② ビジネスロジック32ユーザ招待再送信処理のサンプル① 招待IDでDBから検索② 招待IDが間違っていれば NotFoundエラー③ 招待が有効でない場合 BadRequestエラー④ ログインユーザの組織情報を DBから検索⑤ 論理的に必ず存在する Option値を取り出す⑥ メール再送信処理一貫性をつくる 明瞭な意図を表す
Infrastructure(ORM)と密結合も辞さない→ 疎結合で得られるメリットより「簡単さ」を重視→ cats.effect.IO や ZIO へ切り替える余地は残しておく(補足) for式の徹底を支えるクラス拡張33
③ リファクタリング34Controller (Presentation)Service (Business Logic)Repository (Data Access)Model (Domain Logic)
Controller (Presentation)Service (Business Logic)Repository (Data Access)Model (Domain Logic)③ リファクタリング35命名/パッケージ構成を頻繁に見直す 一貫性をつくる 明瞭な意図を表すドメイン理解は頻繁に変わる→ どこに何が書いてあるか察せるようにする =ルール化→ 早すぎる最適化(ルールの暗黙知化)は避ける
36④ ドキュメント36手が空いたらなるべくまとめる 明瞭な意図を表すバックエンド開発用のドキュメント負債になりにくい箇所はある→ アーキテクチャは仕様ほど頻繁に変わらない→ 変更の少ない箇所ほど思想 (暗黙知)が反映されがち
37④ ドキュメント37オンボーディングコンテンツ「 Daily Scala」 原典
オンボーディングコンテンツ「 Daily Scala」 原典38④ ドキュメント38“オン”ボーディングも欠かさないプロジェクトに入るための最低限を担保する→ 「Scala 勉強しておいてね」では選択肢が広すぎる→ ドキュメントはPULL、初期はPUSHが重要明瞭な意図を表す 選択肢を絞る3年間のオンボーディングで培われた、リモートでも効果的な7+3のプラクティス
Scalaは使い方次第でちゃんとオンボーディングできるどれも特別な取り組みではないが徹底が重要まとめ39
Scala経験者の採用に振り切ってもよかったのでは?40
新規事業における認知的負荷41学習関連負荷課題外在性負荷課題内在性負荷
課題外在性負荷性荷新規事業における認知的負荷42情勢の変化学習関連負荷影響ビジネス変化によって必要な技術も変化するピボット
特定の課題(内|外)在性負荷に強い人を集めたとしても状況がひっくり返ることを想定する必要があるScala採用に振り切るべきか43結局、課題(内|外)在性負荷の小さい環境を作りにいくことになる
課題(内|外)在性負荷に強い人ではなく学習関連負荷の変化に強い人が望ましい特定の課題(内|外)在性負荷に強い人を集めたとしても状況がひっくり返ることを想定する必要があるScala採用に振り切るべきか44もっと言えば
大事なのは事業共感45学習関連負荷の変化に強い人にとってモチベーションの源泉となるのは事業への共感!
セキュリティチェックに課題感を持つ皆様世の中の仕組みを変えてみませんか?大事なのは事業共感46
※アンケートにご協力頂いた方に Daily Scalaの内容をプレゼントさせていただきます。We are hiring!!4747採用ページですThank you for listening!アンケートへご協力お願いします。https://careers.assured.jp