1.4K Views
January 09, 26
スライド概要
Burikaigi 2026
https://fortee.jp/burikaigi-2026/proposal/28681e2d-63e9-4c90-aadb-5063491a586e
Japanese codewriting ninja
なぜRustのエラーメッセージは わかりやすいのか? 2026-01-09 Burikaigi 2026 Yuki Okushi (@JohnTitor)
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
今日話すこと 1.Rustについておさらい 2.Rustのエラーメッセージの変遷 3.実装と改善の流れ 4.普段の開発でどう活かせるか?
1. What is Rust?
Rustのおさらい • 以下を主な強みとする言語 • パフォーマンス • 型・メモリ安全性 • 並行性 • ただし学習コストは高い a a a a f a • “Most loved nd dmired l ngu ge” (St ck Over low surveys)
Most loved…? f a 出典: https://survey.st ckover low.co/2022/
Most admired…? f a 出典: https://survey.st ckover low.co/2025/technology
難しいのになぜ……?
(One of the re sons is) a Error messages.
エラーメッセージは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/
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/
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.”
Error messages matter.
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/
Rustの開発において エラーメッセージは どのくらい重要視されているか?
エラーメッセージの問題はバグと 同列に扱われている a a 出典: https://x.com/wyc ts/st tus/600133320186335233
issue tracker エラーメッセージ関連 だけでも多くのlabelが 存在している(15個) e.g.: • terse • confusing • newcomer roadblock • etc.
1. What is Rust? •エラーメッセージの親切さが好まれている 言語 •これにより新しい概念などの難しさに対処 している •プログラミング言語において エラーメッセージは重要な要素
そんなRustのエラーメッセージ はどのようにして生まれたのか?
2. Rustのエラーメッセージの変遷
テストコード
おことわり 一部機能は表記されているversionが 初出というわけではなく、 あくまで今回のエラーメッセージについての 変遷を見ていく
Rust 1.0 (2015年3月) 比較的簡素
Rust 1.12 (2016年9月) 視覚的な情報量が増える
視覚的な情報提示を強化 caret(^)やハイライトで問題箇所を視覚的にわかりやすく a a 出典: https://blog.rust-l ng.org/2016/08/10/Sh pe-of-errors-to-come/
修正方針回答時間の比較 (学生を対象にした調査より) エラーメッセージから修正方針を検討する 回答時間を比較したところ、視覚的な エラーメッセージが最も有効だった 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 視覚的な情報は理解を早める
現代ではメジャーなエラー提示方法 clang Swift ※ただし、適切なannotationの配置やwordingは難しい
Rust 1.26 (2018年5月) rustc --explain optionがsuggestされる
rustc --explain? エラーコードについての詳細な解説を確認できる
rustc error codes index webでも確認できる →エラー自体や 知らない概念を理解し、 同じ轍を踏まないように できる(人間もAIも) a 出典: https://doc.rust-l ng.org/error_codes/error-index.html
Rust 1.36 (2019年7月) help(補足情報)が追加される
Rust 1.63 (2022年8月) 補足情報が追加され、 よりエラーメッセージ が強化される
(明解なエラーメッセージについて調査した論文より) 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は有用か?
Rust 1.86 (2025年4月) diffが追加される (現状の最新出力) ※他のエラーについて もそれぞれ改善・修正 されており、 毎バージョン何かしら の改善がなされている
常に改善され続けている
エラーメッセージ関連の変更も安定的に推移
なぜRustのエラーメッセージは わかりやすいのか?
なぜRustのエラーメッセージは わかりやすいのか? A. 常に改善が続けられているから
2. Rustのエラーメッセージの変遷 •機能が育つように、エラーメッセージも 育ち続けている •視覚的な情報提示、help/note annotations で開発者を補助 •ただのreporterではなく、mentor
では、実際どのように 改善されている?
3. 実装と改善の流れ
大きく2つ 1. 抜本的な変更(RFC) 2. ユーザーフィードバック
大きく2つ 1. 抜本的な変更(RFC) 2. ユーザーフィードバック
1. 抜本的な変更: RFC 1644 Rust 1.12で紹介した改修のRFC
1. 抜本的な変更: RFC 1644の後日談 さらに磨き上げるため、人力で一つずつ改修
1. 抜本的な変更: RFC 1644の後日談 さらに磨き上げるため、人力で一つずつ改修
1. 言語設計: RFC 3368 ※attribute: decorator/annotationのようなもの
1. 言語設計: RFC 3368 ※trait: 雑に言うと interfaceや type class のようなもの trait関連のエラーはそのままだとわかりづらい😢 (ユーザー実装に依る部分が大きく、コンパイラ側での修正が難しい)
1. 抜本的な変更: RFC 3368 attributeでカスタムメッセージを設定できる
1. 抜本的な変更: RFC 3368 修正のためのヒントをユーザーに提供できる🎉
1. 抜本的な変更 コンパイラに大きく手を入れなければ 解決できない部分をRFCやproject goal (Rustでのスプリントゴールのようなもの) を通して一定期間で開発している
大きく2つ 1. 抜本的な変更(RFC) 2. ユーザーフィードバック
2. ユーザーフィードバック: issue その1 情報が足りていない(terse)
2. ユーザーフィードバック: issue その2 エラー解決に直結しないメッセージ(confusing)
2. ユーザーフィードバック: issue その3 初心者に優しくないメッセージ(newcomer roadblock)
2. ユーザーフィードバック reportするときのtips: MCVEを提供する (M)inimal: 最小の (C)omplete: 完全に (V)eri able: 問題を再現できる (E)xample: コード例 fi →これがあればmaintainers/contributorsが 迅速に問題を把握、解決できる
2. ユーザーフィードバック: walkthrough walkthrough: 実際のissueからPR、解消 までの流れを見ていく
2. ユーザーフィードバック: walkthrough 1 重複したエラーが出力されてしまう問題
2. ユーザーフィードバック: walkthrough 3 UIテストでエラーメッセージなどを確認(総数2万弱)
2. ユーザーフィードバック: walkthrough 2 PRでコード修正+テスト追加 (手前味噌)
2. ユーザーフィードバック: walkthrough 4 Before: 同じようなエラーが4つも表 示されていてわかりづらい😢
2. ユーザーフィードバック: walkthrough 5 After: 重複が排除され わかりやすく🎉
2. ユーザーフィードバック このような流れでissueからPR作成、 UIテストで既存への影響を確認しつつ 修正していく🛠 (UIテストは機能部分の変更にも有効)
エラーメッセージは 「完成」するか?
エラーメッセージは 「完成」するか? →しない(と思う)
エラーメッセージは「完成」しない • 機能追加・修正は続いていく • ユーザーもコードを書き続けていく • 最適なエラーメッセージも 時代により変わっていき得る • →それらにエラーメッセージも 追従していく必要がある
村上春樹もそう言っている “完璧な文章などといったものは存在しない。 完璧な絶望というようなものが存在しないようにね。” 出典: 村上春樹. 風の歌を聴け. 講談社, 1979.
なぜRustのエラーメッセージは わかりやすいのか?
なぜRustのエラーメッセージは わかりやすいのか? A. 常に改善が続けられているから
3. 実装と改善の流れ •RFCなどを通した大規模な機能拡充と、 ユーザーフィードバックを元にした改善の 積み上げでRustのエラーメッセージは 成り立っている •UIテストでregressionを防止している •この活動を続けていくことが大事
ここまではRustの話
4. 普段の開発で どう活かせるか?
どう活かせるか? • 意外と普段の開発の中で エラーメッセージを作っている • e.g. UI, API, CLI, CI/CD, alert, etc…
これらにも今回のエッセンスを 活かせるのでは……?(こじつけ)
活かせるポイント(例) • エラー箇所を指し示す • annotationでユーザーの問題を解決 に導く
エラー箇所を指し示す →エラー箇所の近くにメッセージを出す
エラー箇所を指し示す Rustのエラーメッセージだと……
エラー箇所を指し示す 例) Amazonのモバイルアプリ: 修正が必要な箇所のそばに エラーメッセージが表示される 赤く表示することで視覚的な 情報も付与
エラー箇所を指し示す “[…]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
help/note annotationで ユーザーの問題を解決に導く →問題解決に必要な情報を含める
ユーザーの問題を解決に導く Rustのエラーメッセージだと……
ユーザーの問題を解決に導く (SmartHR Design Systemより引用) ユーザーに修正方針を提供する NG例🙅: OK例🙆: 出典: a a a a https://sm rthr-design-system.netlify. pp/products/contents/error-mess ges/b ckground-process/
ユーザーの問題を解決に導く (SmartHR Design System エラーメッセージの基本的な考え方より引用) “エラーメッセージを表示する目的は、ユーザーがメッ セージを見て問題を解決でき、次の操作に進める状態 にすることです。(中略)どのエラーメッセージであって も、含める情報の要素は事象・原因・対処です。” 出典: a a a https://sm rthr-design-system.netlify. pp/products/contents/error-mess ges/overview/
ユーザーの問題を解決に導く ←事象 ←原因 ←対処
ユーザーの問題を解決に導く 例) アラート時のメッセージ NG例🙅: ⚪︎⚪の ︎ 使用率がn%を超えています サービスがスパイクしていないか確認してください →新メンバーやそのリソースをあまり触らないメンバー だと、まずどこを見ていいのか分からないことも多い (勘所がない、Runbookの存在を知らない、etc…)
ユーザーの問題を解決に導く 例) アラート時のメッセージ OK例🙆: ⚪︎⚪の ︎ 使用率がn%を超えています ${RunbookのURL}を見て対処してください →経験値問わず全メンバーが同じ対処をできるリソース を用意する&提示する🧑🚒
4. 普段の開発にどう活かせるか? •意外とコンパイラ/UI etc.の エラーメッセージ間でプラクティスを 共有できる部分は多い(かも) •どちらでも大切なのはユーザーを導くもの としてエラーメッセージが存在していること
まとめ
まとめ •Rustのエラーメッセージがわかりやすいのは 常に改善が続けられているから •エラーメッセージはただエラーを伝えるだけ でなく、ユーザーを解決に導く必要がある •日常のエラーメッセージも例外ではない
参考資料 • 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
参考資料 • 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
ありがとうございました! 2026-01-09 Burikaigi 2026 Yuki Okushi (@JohnTitor)