- Javaの重要ワード「完全修飾クラス名」を理解する
- なぜ完全修飾クラス名が必要になったのか、その理由を理解する
- 英語の「FQCN」がなぜ海外の現場で必須なのかを知る
どうも上達の研究家のワタタクです。
Javaの勉強を進めていると、参考書に急に出てくる、漢字7文字のいかつい言葉。 「完全修飾クラス名(かんぜんしゅうしょくくらすめい)」
これ、文字を見ただけで「うわ、難しそう…」とブラウザを閉じたく高くなりますが、中身はめちゃくちゃシンプルです! 僕たちの日常にある「あるもの」に例えれば、小学生でも一発で理解できます。
今回も備忘録として、海外でも使える英語フレーズを交えて残しておきます。
「完全修飾クラス名」って、一言でいうとナニ?
一言でいうと、「お部屋の名前(住所)までぜんぶ省略せずにつけた、プログラムの『フルネーム』のこと」です!
英語では Fully Qualified Class Name(略して FQCN) と言います。
前回の記事(【超カンタン】未経験でも分かるプログラミングの「名前空間(なまえくうかん)」ってなに?【学校のクラスで例えてみた】)で書いた「たくやくん」で考えてみよう!
学校に「たくやくん」が何人もいるとき、ただ「たくやくん!」と呼ぶと、パソコン(Java)は「どっち?」と迷ってエラーになりますよね。 だから、絶対に間違えないように、お部屋の名前(住所)からぜんぶ合体させて呼んであげます。
「1年1組の、たくやくん」 「3年2組の、たくやくん」 プログラミングの世界でいう、この「お部屋の名前 + プログラムの名前」をぜんぶ繋げた正式名称(フルネーム)のことを、難しい言葉で「完全修飾クラス名」と呼んでいるだけです!
実際のコードだとどうなる?
実際にはこう書きます。
net.watataku.art.Particle「部屋の名前(net.watataku.art)」と「プログラムの名前(Particle)」をドット(.)で合体させています。
参考書に書かれている表現で書くなら
net.watataku.art(部屋の名前).Paticle(プログラムの名前)と書いたのは私なりに分かりやすい表現だったからです。
参考書にかかれている表現で書くなら、以下ですね。
net.watataku.art(パッケージ名).Paticle(クラス名)
なぜ完全修飾クラス名(フルネーム)が必要になったの?
「名前空間(パッケージ)でお部屋を分けてるなら、わざわざ毎回長いフルネームで呼ばなくても、お部屋の中でただ『Particle』って呼べばいいじゃん!」って思いますよね。
実は、どうしてもフルネーム(完全修飾クラス名)で呼ばなきゃいけない「絶体絶命のピンチ」がパソコンの世界にはあるんです。
想像してみてください。 あなたのクラス(1年1組)に、転校生として「もう一人の たくやくん」がやってきたらどうなるでしょう?
先生が「たくやくん!」と呼んだら、やっぱり2人が同時に返事をして大混乱しちゃいますよね。
これをJavaのプログラムに置き換えると、こういう事態です。 「あなたが作ったParticle(つぶつぶ)」のプログラムの中で、 画面に絵を描くための「Googleが作ったParticle」と、 音を鳴らすための「Microsoftが作ったParticle」の両方を、1つのプログラムの中で同時に使いたくなったとき。
お部屋を分けていても、同じプログラムの中で両方を呼び出すと、パソコンは「どっちのParticleのこと!?」とパニックを起こしてしまいます。
この大ピンチを救うのが、完全修飾クラス名(FQCN)です!
そういうわけで、プログラムの中で、 「ここは、com.google.search.Particle を使います!」 「こっちは、com.microsoft.audio.Particle を使います!」 という風に、ドットで繋いだフルネームで直接指定してあげることで、同じ名前のプログラムが何個同時に現れても、パソコンは絶対に迷わずに正しく動くことができるのです。
完全修飾クラス名の「Fully Qualified Class Name」の英会話の例2つ
1 オブジェクトのフルネームが知りたいとき
“Hey, could you give me the Fully Qualified Class Name of this object?”
なぁ、このオブジェクトのフルネーム(FQCN)を教えてくれない?
2 FQCNで書くべきとき
“We should use the FQCN here to avoid naming conflicts.”
名前の衝突を防ぐために、ここはFQCNで書くべきだね。
海外で話すときにもしこのとき、「えっと、FQCNってなんだっけ……?」となってしまうと、その時点で「あ、この人は大規模開発の基本の言葉が身についていないな」と判定されてしまいます。
まとめ:フルネームはパソコンへの「やさしさ」
最後に、今回の重要ポイントのテスト形式おさらいです!
完全修飾クラス名(FQCN)とは?
お部屋の住所(パッケージ名)と、プログラムの名前(クラス名)をドットでぜんぶ繋げた、省略なしの「フルネーム」のこと!
なぜ必要なの?
同じ名前のプログラムを1つの場所で同時に使いたくなったとき、パソコンが「どっち?」と迷ってエラーになるのを防ぐため!
日本語の漢字は難しく見えますが、その本質は「パソコンが名前の衝突で迷子にならないように、フルネームで丁寧に教えてあげる」という、エンジニアたちの優しい気配りなんですね。
海外を目指すなら、今日から脳内の辞書に「FQCN」と1秒で引き出せるようにインプットしておきましょう!
より理解を深めるための関連用語に、名前空間という知識も読んでみてくださいね。


それでは今日もレッツワクワクコーディング。
関連記事
今回の記事の内容をJavaがベースの言語(Processing)で表現。



