Slide 1

Slide 1 text

認知負荷を打開する Flutter的アプローチ

Slide 2

Slide 2 text

自己紹介 新垣 清奈 株式会社サイバーエージェント 23年度入社 株式会社WinTicket anies1212 #人生初登壇 #新卒1年目 #緊張しい #汗っかき #登壇楽しむ #沖縄出身

Slide 3

Slide 3 text

温かい目で見守っていただけると 嬉しいです!🙏 自己紹介

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

WINTICKETの紹介 競輪とオートレースのネット投票サービス

Slide 6

Slide 6 text

今回お話しする内容 ● WINTICKETの過去と今 ● 認知負荷について ● WINTICKETの今後と課題 ● コードにおける認知負荷へのアプローチ ● まとめ

Slide 7

Slide 7 text

WINTICKETの過去と今

Slide 8

Slide 8 text

WINTICKETの過去と今 2022年度 1. メンバーの増加 2023年度

Slide 9

Slide 9 text

WINTICKETの過去と今 2. 数多くの機能開発

Slide 10

Slide 10 text

WINTICKETの過去と今 2. 数多くの機能開発

Slide 11

Slide 11 text

WINTICKETの過去と今 2. 数多くの機能開発 1年で437PRをマージ

Slide 12

Slide 12 text

WINTICKETの過去と今 3. コード規約の増加

Slide 13

Slide 13 text

WINTICKETの過去と今 認知負荷の増加

Slide 14

Slide 14 text

認知負荷について

Slide 15

Slide 15 text

認知負荷について そもそも 認知負荷とは??

Slide 16

Slide 16 text

認知負荷について 次の図はどっちの方が 理解しやすい?

Slide 17

Slide 17 text

認知負荷について

Slide 18

Slide 18 text

認知負荷について

Slide 19

Slide 19 text

認知負荷について 文字と図が離れた場所に 配置されていない画像の 方が認知負荷が低い 注意分断効果

Slide 20

Slide 20 text

認知負荷について 情報を処理し、理解する際にかかる 精神的なエネルギー量のこと 認知負荷とは https://www.shokasonjuku.com/ux-psychology/cognitive-load#:~:text=%E8%AA%8D%E7%9F%A5%E8%B2%A0%E8%8D%B7%E3%81%A8%E3%81%AF%E3%80%81%E3%83%A6%E3%83%BC%E3%8 2%B6%E3%83%BC,%E3%81%99%E3%81%8E%E3%82%8B%E3%81%A8%E8%A8%80%E3%82%8F%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82

Slide 21

Slide 21 text

認知負荷について 情報を処理し、理解する際にかかる 精神的なエネルギー量のこと 認知負荷とは https://www.shokasonjuku.com/ux-psychology/cognitive-load#:~:text=%E8%AA%8D%E7%9F%A5%E8%B2%A0%E8%8D%B7%E3%81%A8%E3%81%AF%E3%80%81%E3%83%A6%E3%83%BC%E3%8 2%B6%E3%83%BC,%E3%81%99%E3%81%8E%E3%82%8B%E3%81%A8%E8%A8%80%E3%82%8F%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82

Slide 22

Slide 22 text

認知負荷について 技術 認知負荷における情報とは 過去のインシデント コーディングルール ドメイン知識 仕様

Slide 23

Slide 23 text

WINTICKETの今後と課題

Slide 24

Slide 24 text

WINTICKETの今後と課題 事業も組織も もっとスケールしていきたい!

Slide 25

Slide 25 text

WINTICKETの今後と課題 意思決定の遅延 管理の困難 チームの一体感の欠如 責任の所在 認知負荷 育成 課題

Slide 26

Slide 26 text

WINTICKETの今後と課題 意思決定の遅延 管理の困難 チームの一体感の欠如 責任の所在 認知負荷 育成 課題

Slide 27

Slide 27 text

WINTICKETの今後と課題 認知負荷 ツール コード 機能開発ライン増加 新規ドメイン ノイズや中断

Slide 28

Slide 28 text

WINTICKETの今後と課題 認知負荷 ツール コード 機能開発ライン増加 新規ドメイン ノイズや中断

Slide 29

Slide 29 text

WINTICKETの今後と課題 コードにおける認知負荷が高い状態 考慮コスト ○ 自分の知らない仕様や背景がたくさんあるため 判断コスト ○ 多様な表現により、適切な判断に悩むため ※この他にもコストが存在すると思うが、代表してこの2つを取り上げている

Slide 30

Slide 30 text

WINTICKETの今後と課題 コードにおける認知負荷が高い状態 考慮コスト ○ 自分の知らない仕様や背景がたくさんあるため 判断コスト ○ 多様な表現により、適切な判断に悩むため ※この他にもコストが存在すると思うが、代表してこの2つを取り上げている これらのコストは人数・機能の増加に比例する

Slide 31

Slide 31 text

コードにおける認知負荷への アプローチ

Slide 32

Slide 32 text

コードにおける認知負荷へのアプローチ - Danger - build_runner - CustomLint - CodeMod - DartCodeMetrics - ドキュメント(Design Doc, コーディング規約) - コードコメント - etc.. さまざまなアプローチ

Slide 33

Slide 33 text

コードにおける認知負荷へのアプローチ それぞれの特性を理解して、 どのアプローチが望ましいかを考える!!

Slide 34

Slide 34 text

コードにおける認知負荷へのアプローチ - Danger - build_runner - CustomLint - CodeMod - DartCodeMetrics - ドキュメント(Design Doc, コーディング規約) - コードコメント - etc.. さまざまなアプローチ

Slide 35

Slide 35 text

コードにおける認知負荷へのアプローチ Danger Pull Requestを提出する際にチェックすべき項目をルール化し、指摘を自動化するツール

Slide 36

Slide 36 text

コードにおける認知負荷へのアプローチ Danger

Slide 37

Slide 37 text

コードにおける認知負荷へのアプローチ Danger

Slide 38

Slide 38 text

コードにおける認知負荷へのアプローチ Danger 考慮コストの削減 チェックすべき項目をルール化し、指摘を自動化 自分の知らない仕様や背景を削減

Slide 39

Slide 39 text

コードにおける認知負荷へのアプローチ build_runner Dartコードを元に、プログラムの一部または全体を自動的に生成

Slide 40

Slide 40 text

コードにおける認知負荷へのアプローチ build_runner

Slide 41

Slide 41 text

コードにおける認知負荷へのアプローチ build_runner

Slide 42

Slide 42 text

コードにおける認知負荷へのアプローチ build_runner 表現の抑制が可能

Slide 43

Slide 43 text

コードにおける認知負荷へのアプローチ build_runner 自動生成後

Slide 44

Slide 44 text

コードにおける認知負荷へのアプローチ build_runner 判断コストの削減 Dartコードを元に、プログラムの一部または全体を自動的に生成 多様な表現の抑制

Slide 45

Slide 45 text

コードにおける認知負荷へのアプローチ CustomLint Dartプロジェクトの保守性を向上させるために、パッケージ作者や開発者が独自の Lintルールを簡単に作成 できるツール

Slide 46

Slide 46 text

コードにおける認知負荷へのアプローチ CustomLint

Slide 47

Slide 47 text

コードにおける認知負荷へのアプローチ CustomLint

Slide 48

Slide 48 text

コードにおける認知負荷へのアプローチ CustomLint 判断コストの削減 独自のLintルールを作成 多様な表現の抑制

Slide 49

Slide 49 text

コードにおける認知負荷へのアプローチ CustomLint

Slide 50

Slide 50 text

コードにおける認知負荷へのアプローチ CustomLint

Slide 51

Slide 51 text

コードにおける認知負荷へのアプローチ CustomLint

Slide 52

Slide 52 text

コードにおける認知負荷へのアプローチ CustomLint 考慮コストの削減 独自のLintルールを作成 自分の知らない仕様や背景を削減

Slide 53

Slide 53 text

コードにおける認知負荷へのアプローチ さまざまなアプローチ アプローチ 効果が期待できるコスト 補足 Danger 考慮コスト DartDangerもあります build_runner 判断コスト 主にボイラープレートに機能 する CustomLint 考慮コスト 判断コスト IDE上で解析可能 ※ どのアプローチも使い方によっては、判断コスト、考慮コストを下げることが可能ですが、 大きい効果が期待できそうなコストを元に考えています

Slide 54

Slide 54 text

アプローチ 効果が期待できるコスト 補足 Danger 考慮コスト DartDangerもあります build_runner 判断コスト 主にボイラープレートに機能 する CustomLint 考慮コスト 判断コスト IDE上で解析可能 コードにおける認知負荷へのアプローチ さまざまなアプローチ ※ どのアプローチも使い方によっては、判断コスト、考慮コストを下げることが可能ですが、 大きい効果が期待できそうなコストを元に考えています

Slide 55

Slide 55 text

コードにおける認知負荷へのアプローチ CustomLintが良さそう? 🤔

Slide 56

Slide 56 text

コードにおける認知負荷へのアプローチ とはいえ! なんでもかんでもCustomLintを 書けば良いってわけじゃない!!🔥

Slide 57

Slide 57 text

No content

Slide 58

Slide 58 text

No content

Slide 59

Slide 59 text

No content

Slide 60

Slide 60 text

No content

Slide 61

Slide 61 text

No content

Slide 62

Slide 62 text

コードにおける認知負荷へのアプローチ コードにおける認知負荷を減少

Slide 63

Slide 63 text

まとめ

Slide 64

Slide 64 text

認知負荷について 情報を処理し、理解する際にかかる 精神的なエネルギー量のこと 認知負荷とは https://www.shokasonjuku.com/ux-psychology/cognitive-load#:~:text=%E8%AA%8D%E7%9F%A5%E8%B2%A0%E8%8D%B7%E3%81%A8%E3%81%AF%E3%80%81%E3%83%A6%E3%83%BC%E3%8 2%B6%E3%83%BC,%E3%81%99%E3%81%8E%E3%82%8B%E3%81%A8%E8%A8%80%E3%82%8F%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82

Slide 65

Slide 65 text

WINTICKETの今後と課題 コードにおける認知負荷が高い状態 考慮コスト ○ 自分の知らない仕様や背景がたくさんあるため 判断コスト ○ 多様な表現により、適切な判断に悩むため ※この他にもコストが存在すると思うが、代表してこの2つを取り上げている

Slide 66

Slide 66 text

コードにおける認知負荷へのアプローチ さまざまなアプローチ アプローチ 効果が期待できるコスト 補足 Danger 考慮コスト DartDangerもあります build_runner 判断コスト 主にボイラープレートに機能 する CustomLint 考慮コスト 判断コスト IDE上で解析可能 ※ どのアプローチも使い方によっては、判断コスト、考慮コストを下げることが可能ですが、 大きい効果が期待できそうなコストを元に考えています

Slide 67

Slide 67 text

No content

Slide 68

Slide 68 text

認知負荷におけるコード的アプローチ コードにおける認知負荷を減少

Slide 69

Slide 69 text

認知負荷におけるコード的アプローチ Fin.