Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ドメイン層×日本語プログラミング/seb_sapporo_04

 ドメイン層×日本語プログラミング/seb_sapporo_04

Hiroto YAMAKAWA

December 20, 2024
Tweet

More Decks by Hiroto YAMAKAWA

Other Decks in Programming

Transcript

  1. #seb_sapporo 2 Hiroto YAMAKAWA 公立千歳科学技術大学 情報システム工学科 准教授 R&D: Software Engineering, Programmer

    & Engineer Education, Learning Technology (Collaboration and Learning Environment) 千歳市バスロケーションシステムの開発(-2022) 適応型学習支援システムの開発、活用 レポート内の話しことば検出エンジンの開発 ソフトウェアの設計・開発手法の追求: ソフトウェア開発への導入効果の検討、プログラミング・エンジニアリング教育への導入とその発展
  2. #seb_sapporo 2015年からスタート(来年で10周年!🎉) 春🌸・夏🍉・秋🎃・冬☃の4回+αのイベント実施のペースで活動中 地域のJava User Group*(JUG)として、日本Javaユーザーグループ(JJUG)との連携や、 首都圏・海外のJavaエンジニアを招いたイベント等も実施 主なトピック:  Javaおよびフレームワーク等のエコシステムについて  ITシステムやソフトウェアの設計・開発手法について

     その他、IT系全般 実施方法:  登壇・セミナー  モブプログラミング・モブワーク  アンカンファレンス Web: https://javado.connpass.com/ Javaユーザグループ北海道(Java Do) 4 * Java User Groups (JUGs) are volunteer organizations that strive to distribute Java-related knowledge around the world -- https://dev.java/community/jugs/
  3. #seb_sapporo プログラムのコードに(どこまで) 日 本語を取り 入 れていますか? 7 変数名・メソッド(関数名)・クラス名などを対象と考えた時に... • まったく取り入れない

    • 半角ローマ字での表現は可としている 例:Sankahi, Tanka, Zeiritsu • テストコード(テストケース)のコード名等にはマルチバイト文字を可としている (テストケースに DisplayName つければいいよね、の人も念の為ここ) 例: 参考:日本語テストメソッドについてどう思いますか?    https://www.slideshare.net/slideshow/ss-25876730/25876730 • プロダクションコードでもマルチバイト文字の利用を可としている 例: BigDecimal 税込金額を計算する() { ... } class 参加費 { ... } UnitPrice 商品単価 = new UnitPrice(150); @Test 18歳を入力するとAgeStatusは成人と判定する 20年前の私🤬 7,8年前の私 😲→😄 今の私 🤔←→😄
  4. #seb_sapporo ・日本語プログラミング言語を使いましょう! ・全てのコードを日本語にしましょう (実現したい業務...ドメインの)複雑さが高く、かつ英語では表しづらい「ドメイン層」のコード に部分的に日本語でのプログラミングを認めて、理解容易性(Understandability)向上をはかる どこまで 日 本語でプログラミングするか(1) 8 特に英語では理解可能性が低くなる

    計算・判断・加工のロジック、値名やユビキタス言語について のみ、日本語で表現できる(してもよい)ようにする 従来通り英語(もしくはローマ字): 日本語じゃなくても理解可能性が高いもの、フレームワーク やライブラリによる表現は無理に日本語にしない ※無理はしない という主張では ない
  5. #seb_sapporo どこまで 日 本語でプログラミングするか(2) 10 プロダクトコードのドメイン層で日本語に許可するとして、 どこまで日本語(マルチバイト文字)での表現箇所を許すか?という議論やノウハウは当然必要 (排他的要素とも関わる) ・定数名(enum) ・ローカル変数

    ・フィールド・グローバル変数 ・メソッド名 ・クラス名 ・パッケージ名 • 生成AIやCopilot、IDEはどこまで支援を してくれるか? ⇒ 既存コードを十分に読み込んでベクトル化  するようなものなら可能? ⇒ OS/動作環境/IDEのマルチバイト対応方針 の変化が開発に影響することも (特に濁点・半濁点が鬼門...絶賛いま困ってる) • OSSで使えるか? グローバルな作業環境で使えるか? ⇒ 日本人だけが利用・Joinが想定できるなら   いいかもしれない...が? ⇒ 海外エンジニアが参入するような場面では? ⇒ Follow the Sun のような永続的な開発・運用  が必要な場面では? 🤔 保守性=理解容易性 x 変更容易性 だとすると、手元での       細やかな変更可能性が犠牲になる場合もある...