なぜRustのエラーメッセージはわかりやすいのか?

1.4K Views

January 09, 26

スライド概要

Burikaigi 2026
https://fortee.jp/burikaigi-2026/proposal/28681e2d-63e9-4c90-aadb-5063491a586e

profile-image

Japanese codewriting ninja

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

なぜRustのエラーメッセージは わかりやすいのか? 2026-01-09 Burikaigi 2026 Yuki Okushi (@JohnTitor)

2.

About me • Yuki Okushi • Softw re Engineer @MOSH • Focus on pl tform engineering • Rust contributor since 2019 • M int iner of m ny cr tes • e.g. ctix-web, libc, phf, etc. • Tot l DLs re over 2 billion! • 2 Billion Devices Run My Cr tes ☕ a a a a a a a a a a • https://github.com/JohnTitor

3.

今日話すこと 1.Rustについておさらい 2.Rustのエラーメッセージの変遷 3.実装と改善の流れ 4.普段の開発でどう活かせるか?

4.

1. What is Rust?

5.

Rustのおさらい • 以下を主な強みとする言語 • パフォーマンス • 型・メモリ安全性 • 並行性 • ただし学習コストは高い a a a a f a • “Most loved nd dmired l ngu ge” (St ck Over low surveys)

6.

Most loved…? f a 出典: https://survey.st ckover low.co/2022/

7.

Most admired…? f a 出典: https://survey.st ckover low.co/2025/technology

8.

難しいのになぜ……?

9.

(One of the re sons is) a Error messages.

10.

エラーメッセージはRustの売りの一つ “Rust h s gre t document tion, friendly compiler with useful error mess ges, nd top-notch tooling[…]” a a a a a a a 出典: https://rust-l ng.org/

11.

Rust Survey 2021 Results “[…]However, compiler error mess ges received the most pr ise, with 90% pprov l of their current st te. 🎉” 2021年の調査では、回答者の 90%がエラーメッセージの品質に 好意的だと回答 a a a a a a 出典: https://blog.rust-l ng.org/2022/02/15/Rust-Survey-2021/

12.

Rust fact vs. ction: 5 Insights from Google's Rust journey in 2022 • エラーメッセージについて満 足していない開発者はわずか 9% • Android team作のRust 学習コース受講者によるエラ ーメッセージの評判も良い a a a a a a a a a fi a a a f a a 出典: https://opensource.googleblog.com/2023/06/ “[…]Only 9% of respondents re not s tis ied with the qu lity of di gnostic nd debugging inform tion in Rust. Feedb ck from Comprehensive Rust 🦀 p rticip nts shows the s me: people re m zed by the compiler mess ges.”

13.

Error messages matter.

14.

2024 State of Rust Survey Results 多くのRust学習者が エラーメッセージとClippy (lint)を 用いて動かしながら覚えている “[…]Interestingly, non-trivi l number of people "le rned by doing" nd used rustc error mess ges nd clippy s guide, which is good indic tor of the qu lity of Rust di gnostics.” →質の高いエラーメッセージは 学習に寄与する (逆に、わかりづらいエラーメッセージ はユーザーを遠ざけてしまう) 出典: a a a a a a a a a a a a a a https://blog.rust-l ng.org/2025/02/13/2024-St te-Of-Rust-Survey-results/

15.

Rustの開発において エラーメッセージは どのくらい重要視されているか?

16.

エラーメッセージの問題はバグと 同列に扱われている a a 出典: https://x.com/wyc ts/st tus/600133320186335233

17.

issue tracker エラーメッセージ関連 だけでも多くのlabelが 存在している(15個) e.g.: • terse • confusing • newcomer roadblock • etc.

18.

1. What is Rust? •エラーメッセージの親切さが好まれている 言語 •これにより新しい概念などの難しさに対処 している •プログラミング言語において エラーメッセージは重要な要素

19.

そんなRustのエラーメッセージ はどのようにして生まれたのか?

20.

2. Rustのエラーメッセージの変遷

21.

テストコード

22.

おことわり 一部機能は表記されているversionが 初出というわけではなく、 あくまで今回のエラーメッセージについての 変遷を見ていく

23.

Rust 1.0 (2015年3月) 比較的簡素

24.

Rust 1.12 (2016年9月) 視覚的な情報量が増える

25.

視覚的な情報提示を強化 caret(^)やハイライトで問題箇所を視覚的にわかりやすく a a 出典: https://blog.rust-l ng.org/2016/08/10/Sh pe-of-errors-to-come/

26.

修正方針回答時間の比較 (学生を対象にした調査より) エラーメッセージから修正方針を検討する 回答時間を比較したところ、視覚的な エラーメッセージが最も有効だった 250 242.7 212.5 223 216.9 175 “According to me n times(242.7, 216.9, nd 223.0 seconds for short, visu l form, nd long form respectively), the mess ge type th t cont ins visu l represent tion results in signi ic ntly f ster nswers.” 137.5 100 short long visual 出典: Nien ltowski, M.-H., Pedroni, M., & Meyer, B. (2008). Compiler Error Mess ges: Wh t C n Help a a a a a a a a f a a a a a a a Novices? Proc. SIGCSE ’08. ACM. DOI: 10.1145/1352322.1352192 a a 視覚的な情報は理解を早める

27.

現代ではメジャーなエラー提示方法 clang Swift ※ただし、適切なannotationの配置やwordingは難しい

28.

Rust 1.26 (2018年5月) rustc --explain optionがsuggestされる

29.

rustc --explain? エラーコードについての詳細な解説を確認できる

30.

rustc error codes index webでも確認できる →エラー自体や 知らない概念を理解し、 同じ轍を踏まないように できる(人間もAIも) a 出典: https://doc.rust-l ng.org/error_codes/error-index.html

31.

Rust 1.36 (2019年7月) help(補足情報)が追加される

32.

Rust 1.63 (2022年8月) 補足情報が追加され、 よりエラーメッセージ が強化される

33.

(明解なエラーメッセージについて調査した論文より) SOのaccepted answersでは 問題の簡単な修正と説明を併記しているものが多い →それら情報を含めることが有用であると示唆 “[…]Accepted nswers from St ck Over ow identi ed dichotomy in rgument structure: 1) cl im-resolutions, which we c n think of essenti lly s quick xes th t immedi tely resolve the problem for the developer, nd 2) simple to extended rguments, which provide n expl n tion of the problem[…]” 出典: B rik, T., Ford, D., Murphy-Hill, E., & P rnin, C. (2018). How Should Compilers Expl in Problems to a a fi a a a a a fi a fl a a a a a a a a Developers? Proc. ESEC/FSE ’18. ACM. DOI: 10.1145/3236024.3236040 a a help/noteは有用か?

34.

Rust 1.86 (2025年4月) diffが追加される (現状の最新出力) ※他のエラーについて もそれぞれ改善・修正 されており、 毎バージョン何かしら の改善がなされている

35.

常に改善され続けている

36.

エラーメッセージ関連の変更も安定的に推移

37.

なぜRustのエラーメッセージは わかりやすいのか?

38.

なぜRustのエラーメッセージは わかりやすいのか? A. 常に改善が続けられているから

39.

2. Rustのエラーメッセージの変遷 •機能が育つように、エラーメッセージも 育ち続けている •視覚的な情報提示、help/note annotations で開発者を補助 •ただのreporterではなく、mentor

40.

では、実際どのように 改善されている?

41.

3. 実装と改善の流れ

42.

大きく2つ 1. 抜本的な変更(RFC) 2. ユーザーフィードバック

43.

大きく2つ 1. 抜本的な変更(RFC) 2. ユーザーフィードバック

44.

1. 抜本的な変更: RFC 1644 Rust 1.12で紹介した改修のRFC

45.

1. 抜本的な変更: RFC 1644の後日談 さらに磨き上げるため、人力で一つずつ改修

46.

1. 抜本的な変更: RFC 1644の後日談 さらに磨き上げるため、人力で一つずつ改修

47.

1. 言語設計: RFC 3368 ※attribute: decorator/annotationのようなもの

48.

1. 言語設計: RFC 3368 ※trait: 雑に言うと interfaceや type class のようなもの trait関連のエラーはそのままだとわかりづらい😢 (ユーザー実装に依る部分が大きく、コンパイラ側での修正が難しい)

49.

1. 抜本的な変更: RFC 3368 attributeでカスタムメッセージを設定できる

50.

1. 抜本的な変更: RFC 3368 修正のためのヒントをユーザーに提供できる🎉

51.

1. 抜本的な変更 コンパイラに大きく手を入れなければ 解決できない部分をRFCやproject goal (Rustでのスプリントゴールのようなもの) を通して一定期間で開発している

52.

大きく2つ 1. 抜本的な変更(RFC) 2. ユーザーフィードバック

53.

2. ユーザーフィードバック: issue その1 情報が足りていない(terse)

54.

2. ユーザーフィードバック: issue その2 エラー解決に直結しないメッセージ(confusing)

55.

2. ユーザーフィードバック: issue その3 初心者に優しくないメッセージ(newcomer roadblock)

56.

2. ユーザーフィードバック reportするときのtips: MCVEを提供する (M)inimal: 最小の (C)omplete: 完全に (V)eri able: 問題を再現できる (E)xample: コード例 fi →これがあればmaintainers/contributorsが 迅速に問題を把握、解決できる

57.

2. ユーザーフィードバック: walkthrough walkthrough: 実際のissueからPR、解消 までの流れを見ていく

58.

2. ユーザーフィードバック: walkthrough 1 重複したエラーが出力されてしまう問題

59.

2. ユーザーフィードバック: walkthrough 3 UIテストでエラーメッセージなどを確認(総数2万弱)

60.

2. ユーザーフィードバック: walkthrough 2 PRでコード修正+テスト追加 (手前味噌)

61.

2. ユーザーフィードバック: walkthrough 4 Before: 同じようなエラーが4つも表 示されていてわかりづらい😢

62.

2. ユーザーフィードバック: walkthrough 5 After: 重複が排除され わかりやすく🎉

63.

2. ユーザーフィードバック このような流れでissueからPR作成、 UIテストで既存への影響を確認しつつ 修正していく🛠 (UIテストは機能部分の変更にも有効)

64.

エラーメッセージは 「完成」するか?

65.

エラーメッセージは 「完成」するか? →しない(と思う)

66.

エラーメッセージは「完成」しない • 機能追加・修正は続いていく • ユーザーもコードを書き続けていく • 最適なエラーメッセージも 時代により変わっていき得る • →それらにエラーメッセージも 追従していく必要がある

67.

村上春樹もそう言っている “完璧な文章などといったものは存在しない。 完璧な絶望というようなものが存在しないようにね。” 出典: 村上春樹. 風の歌を聴け. 講談社, 1979.

68.

なぜRustのエラーメッセージは わかりやすいのか?

69.

なぜRustのエラーメッセージは わかりやすいのか? A. 常に改善が続けられているから

70.

3. 実装と改善の流れ •RFCなどを通した大規模な機能拡充と、 ユーザーフィードバックを元にした改善の 積み上げでRustのエラーメッセージは 成り立っている •UIテストでregressionを防止している •この活動を続けていくことが大事

71.

ここまではRustの話

72.

4. 普段の開発で どう活かせるか?

73.

どう活かせるか? • 意外と普段の開発の中で エラーメッセージを作っている • e.g. UI, API, CLI, CI/CD, alert, etc…

74.

これらにも今回のエッセンスを 活かせるのでは……?(こじつけ)

75.

活かせるポイント(例) • エラー箇所を指し示す • annotationでユーザーの問題を解決 に導く

76.

エラー箇所を指し示す →エラー箇所の近くにメッセージを出す

77.

エラー箇所を指し示す Rustのエラーメッセージだと……

78.

エラー箇所を指し示す 例) Amazonのモバイルアプリ: 修正が必要な箇所のそばに エラーメッセージが表示される 赤く表示することで視覚的な 情報も付与

79.

エラー箇所を指し示す “[…]Loc tions ne r the erroneous input eld le d to better perform nce th n error mess ges t the top nd the bottom of the form[…]” →最下部より、問題のあるフィールドの近くに エラーメッセージを表示する方が効果的 出典: Seckler, M., Heinz, S., B rg s Avil , J. A., Opwis, K., & Tuch, A. N. (2014). Designing Us ble Web a a a a fi a a a ‑ a a a a a a a a a a Forms – Empiric l Ev lu tion of Web Form Improvement Guidelines. In Proceedings of the SIGCHI Conference on Hum n F ctors in Computing Systems (CHI ’14) (pp. 1275–1284). ACM. DOI: 10.1145/2556288.2557265

80.

help/note annotationで ユーザーの問題を解決に導く →問題解決に必要な情報を含める

81.

ユーザーの問題を解決に導く Rustのエラーメッセージだと……

82.

ユーザーの問題を解決に導く (SmartHR Design Systemより引用) ユーザーに修正方針を提供する NG例🙅: OK例🙆: 出典: a a a a https://sm rthr-design-system.netlify. pp/products/contents/error-mess ges/b ckground-process/

83.

ユーザーの問題を解決に導く (SmartHR Design System エラーメッセージの基本的な考え方より引用) “エラーメッセージを表示する目的は、ユーザーがメッ セージを見て問題を解決でき、次の操作に進める状態 にすることです。(中略)どのエラーメッセージであって も、含める情報の要素は事象・原因・対処です。” 出典: a a a https://sm rthr-design-system.netlify. pp/products/contents/error-mess ges/overview/

84.

ユーザーの問題を解決に導く ←事象 ←原因 ←対処

85.

ユーザーの問題を解決に導く 例) アラート時のメッセージ NG例🙅: ⚪︎⚪の ︎ 使用率がn%を超えています サービスがスパイクしていないか確認してください →新メンバーやそのリソースをあまり触らないメンバー だと、まずどこを見ていいのか分からないことも多い (勘所がない、Runbookの存在を知らない、etc…)

86.

ユーザーの問題を解決に導く 例) アラート時のメッセージ OK例🙆: ⚪︎⚪の ︎ 使用率がn%を超えています ${RunbookのURL}を見て対処してください →経験値問わず全メンバーが同じ対処をできるリソース を用意する&提示する🧑🚒

87.

4. 普段の開発にどう活かせるか? •意外とコンパイラ/UI etc.の エラーメッセージ間でプラクティスを 共有できる部分は多い(かも) •どちらでも大切なのはユーザーを導くもの としてエラーメッセージが存在していること

88.

まとめ

89.

まとめ •Rustのエラーメッセージがわかりやすいのは 常に改善が続けられているから •エラーメッセージはただエラーを伝えるだけ でなく、ユーザーを解決に導く必要がある •日常のエラーメッセージも例外ではない

90.

参考資料 • St ck Over low Developer Survey 2022: https://survey.st ckover low.co/2022/ • Technology | 2025 St ck Over low Developer Survey: https://survey.st ckover low.co/2025/technology • Rust Progr mming L ngu ge: https://rust-l ng.org/ • Rust Survey 2021 Results | Rust Blog: https://blog.rust-l ng.org/2022/02/15/Rust-Survey-2021/ • Google Open Source Blog: June 2023: https://opensource.googleblog.com/2023/06/ • 2024 St te of Rust Survey Results | Rust Blog: https://blog.rust-l ng.org/2025/02/13/2024-St te-Of-Rust-Survey-results/ • Yehud K tz on X: https://x.com/wyc ts/st tus/600133320186335233 • Sh pe of errors to come | Rust Blog: https://blog.rust-l ng.org/2016/08/10/Sh pe-of-errors-to-come/ f a a a a a a f a f a a a a a a a f a a a a a a • Rust error codes index - Error codes index: https://doc.rust-l ng.org/error_codes/error-index.html

91.

参考資料 • Compiler error mess ges: wh t c n help novices?: ACM SIGCSE Bulletin: Vol 40, No 1: https://dl. cm.org/doi/10.1145/1352322.1352192 • How should compilers expl in problems to developers? | Proceedings of the 2018 26th ACM Joint Meeting on Europe n Softw re Engineering Conference nd Symposium on the Found tions of Softw re Engineering: https://dl. cm.org/doi/10.1145/3236024.3236040 • Designing us ble web forms | Proceedings of the SIGCHI Conference on Hum n F ctors in Computing Systems: https://dl. cm.org/doi/10.1145/2556288.2557265 • Sm rtHR Design System: https://sm rthr-design-system.netlify. pp/ a a a a a a a a a a a a a a a a a a a a • 『風の歌を聴け』(村上春樹): https://www.kod nsh .co.jp/book/products/0000127792

92.

ありがとうございました! 2026-01-09 Burikaigi 2026 Yuki Okushi (@JohnTitor)