前回のブログでは「ドメイン駆動設計」と呼ばれるソフトウェア開発の設計手法がいったい何を目指しているのかということを中心に書きました。
一言で言うと、システム化の対象となるドメインの特徴をよく表した(=良くモデリングされた)をソフトウェアを作ることを目指しているということになります。
今回は「ソフトウェアがドメインの特徴をよく表したもの」になるために欠かせない、「ソフトウエア部品のネーミング」について考えたいと思います。
ネーミングにおいてはエンジニアのセンスが問われます。最近の開発では、日本においても基本的に「英語で命名すること」は暗黙の了解となっています。個人的には、大変よい傾向だと思いますし、非常に歓迎しています。
以前は、「touroku(登録)」という名前の関数や、「jikkou(実行)」という名前のHTMLボタン等をよく見かけました。
その場合の理由としては、本来は英語を使いたかったが、適切な英単語を探す時間がもったいないので、日本語をローマ字で表現した、というような余り前向きとは言えないものがほとんどだったのではないかと推察します。
しかし、ローマ字のネーミングには弊害があります。まず非常に読みづらいです。日本語は漢字やひらがな・カタカナを使うことで、初めてその良さが発揮できるのだと思います。
アルファベットで表現できる言語ならまだしも、日本人であれば、プログラミングで使う言語は英語一択で良いと思います。
なので、現代のソフトウェアエンジニアにとって英語力は重要なスキルの一つである、と言っても言い過ぎではないでしょう。
また、ドメイン駆動設計おいては非常に重要なこだわりがあって、それは何かというと、(ソフトウェアの開発を依頼した)ビジネス側の人間と開発者が同じ言葉を使って会話し、その言葉をソフトウェアの部品や設計書などの成果物にも使うべきである、というものです。
ドメイン駆動設計おいては、そのような言葉のことを「ユビキタス言語」と呼んでいます。
その「こだわり」はソフトウエアに関わる人たち(ステークホルダーと言います)の間の認識のずれを、できるだけ最小限にしようという狙いから来ています。
なので、一つ一つの言葉(ソフトウェアにおいては英単語)を吟味しながら選んでいく必要があります。
その際に、英単語の豊富な語彙力と、似たような意味の単語の中から最も適切なものを選ぶための知識や経験があると、大きな助けとなります。
そのような力というものは、当然、一朝一夕に身につくものではありません。
私の場合は、TOEICテストを使って客観的に自分の英語力を測り、スコアを伸ばすことを目標としながら、英語学習のモチベーションができるだけ維持できるように努めました。
TOEICだけでなく、英検などいくつかテストがありますので、自分に合ったものを探して有効に活用していくことをお勧めします。
身につけた英語力は、ソフトウェア部品のネーミングの際に活かせるだけではなく、英語で書かれた記事を読みこなす時にも威力を発揮しますので、情報収集能力も高まります。
私自身、まだまだ「充実した英語力」と言えるまでにはギャップがありますが、できるだけ長く現役として活躍するためにも、更なる英語力の向上にチャレンジしていきたいと思います。