Slide 1

Slide 1 text

#seb_sapporo Javaユーザグループ北海道(JavaDo)の紹介 ドメイン層x 日 本語プログラミング 山川広人 (@gishi_yama) Javaユーザグループ北海道 1

Slide 2

Slide 2 text

#seb_sapporo 2 Hiroto YAMAKAWA 公立千歳科学技術大学 情報システム工学科 准教授 R&D: Software Engineering, Programmer & Engineer Education, Learning Technology (Collaboration and Learning Environment) 千歳市バスロケーションシステムの開発(-2022) 適応型学習支援システムの開発、活用 レポート内の話しことば検出エンジンの開発 ソフトウェアの設計・開発手法の追求: ソフトウェア開発への導入効果の検討、プログラミング・エンジニアリング教育への導入とその発展

Slide 3

Slide 3 text

#seb_sapporo Javaユーザグループ北海道 Java Do 3

Slide 4

Slide 4 text

#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/

Slide 5

Slide 5 text

#seb_sapporo 5 【札幌12/28】開発環境の設定・構築の悩みとノウハウを共有しよう! 日時: 2024年12月28日 13:00-18:00 スポンサー(会場提供): サイボウズ株式会社札幌営業所 さま

Slide 6

Slide 6 text

#seb_sapporo ドメイン層x 日 本語プログラミング 6

Slide 7

Slide 7 text

#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年前の私 😲→😄 今の私 🤔←→😄

Slide 8

Slide 8 text

#seb_sapporo ・日本語プログラミング言語を使いましょう! ・全てのコードを日本語にしましょう (実現したい業務...ドメインの)複雑さが高く、かつ英語では表しづらい「ドメイン層」のコード に部分的に日本語でのプログラミングを認めて、理解容易性(Understandability)向上をはかる どこまで 日 本語でプログラミングするか(1) 8 特に英語では理解可能性が低くなる 計算・判断・加工のロジック、値名やユビキタス言語について のみ、日本語で表現できる(してもよい)ようにする 従来通り英語(もしくはローマ字): 日本語じゃなくても理解可能性が高いもの、フレームワーク やライブラリによる表現は無理に日本語にしない ※無理はしない という主張では ない

Slide 9

Slide 9 text

#seb_sapporo Demo (というか実物) 9 あとは @yusukeさんの businessCalendar4J が分かりやすい https://github.com/yusuke/businessCalendar4J/ tree/main/src/main/java/one/cafebabe/businesscalendar4j

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

#seb_sapporo 11 次世代のソフトウェアエンジニアとの親和的要素(妄想) 初等中等教育では「日本語で」 プログラミングの考え方や アルゴリズムを学び、実践する 国民の多くが日本語で 業務ロジックや業務ルールを組み立て られる時代がくる(...はず?)

Slide 12

Slide 12 text

#seb_sapporo ドメイン層x 日 本語プログラミング どうでしょう? 12