初めてお目にかかります、ITSS事業部所属の西塚と申します。

事業部の投稿記事として、業務内容に関わりのある内容である必要があるようで書くべきことに難儀しましたが、今回はソフト開発をする上で(特に学校などできちんと勉強する機会のなかった人には)理解しにくい用語・概念について、私が頭に入れるまでに用いた例えについて触れてみようと思います。

私事となりますが私が学校に通学していた時期はまだ今ほどパソコンが一般に普及しておらず(当然スマホなど全く存在せず)、その上文系だったことや周囲に詳しい人も全くいなかったこともあり、電源の投入・切断やマウスの使い方から始まって全てを本だけで独学してきたため、今にして思うとその理解には相当に独特なものとなってしまっていたと感じることもあります。

紙幅の都合により今回挙げている例はわずかですが、用語や概念の理解に難渋している(特に、私のように独学してきた文系の)方の僅かな参考にでもなれば幸いです。

【注】この記事の内容はあくまでも私個人の経験を記したものであり、出来る限り説明内容に明らかな誤りがないように努めはしましたが、経験豊富な上級技術者の方々のウェブサイトのように無謬が担保されたものではありません。
高いスキルを持つ方には突っ込みどころも多々あるかと思いますが、あらかじめご理解とご了承をお願い申し上げます。

■関数(メソッド)と引数・戻り値
現在広く用いられる、ほぼどの言語にもある関数(メソッド)に直面したとき、思い浮かんだのが高校時代に最も得意だった生物(生化学)。
関数とは、その内部で様々な処理が行われて最後に戻り値が返るという点で「細胞内でエネルギーの合成・分解が行われる」ミトコンドリアや葉緑体とよく似た構造をしている、というのが本で初めて説明を読んだ印象でした。

そこで、関数の仕組みをより具体的にこれらの生化学反応が行われる「酵素」に置き換えると、
・関数=酵素
・引数=合成・分解対象の物質
・メソッド内の変数(メンバ変数)=補酵素
・戻り値=生成されて酵素から出て行く物質
と理解することが出来ます。

■ポインタ
非常に重要な概念ながら、分かりにくい人には分かりにくいポインタ。
これは、ポインタとなる変数のスコープ(使用可能な範囲)と絡めて「(ファンタジー小説によくあるような)牢に閉じ込められた人」と、「その牢で唯一外の様子が見える小窓」に例えて想像してみます(もう一つ、「海賊の隠し財宝の在処が記された暗号地図」という例もありますが、ここでは割愛させていただきます)。

すると、
・ポインタ=牢の外に通じる小窓
・ポインタが指す先の変数=小窓の外に見える景色(またはその景色の中に置かれている物)
と捉えることは出来ないでしょうか?

「ある関数内で宣言されたローカル変数は、その外にある別の関数へ持ち込めない」=「牢の外に出て他人の家(別の関数)のパーティ(関数内の処理)に参加することは出来ない」。
しかし、「不思議な力で外の世界につながっている小窓に手を入れて探ることで、牢の中にいながら他人の家のパーティで出されているお菓子(別の関数のメンバ変数)をこっそりつまみ食いすることができる」。
こんな考え方をすることも出来ます。

本来は、この「牢と小窓」の例はMS-DOSで1MBを超えるメモリをユーザが利用できるようにするために生み出されたEMSという技術を理解するために考え出したものでしたが、これはポインタの例えとしても応用できるのではないかと思うのです。

この他にも、Excel/Access VBAに慣れていると「クラスから生成されたインスタンスというのはVBAのオブジェクト変数と(決して全く同じではありませんが)似ている」、「構造体とはVBAのユーザ定義型ととてもよく似ている」など「一つの言語がある程度分かってくると、それを足がかりにして理解に弾みがつく」ことが多くあります。
時には有名な戦国大名の「伊達政宗」と(そのあやかる名前の元となった、9代前=南北朝時代の)「伊達政宗」が全くの別人だったり、「孝謙天皇」と「称徳天皇」が異なる名前でありながら同一人物であるように、名前や仕様・考え方の類似性でこのような類推をすることは危険な面もあるのも確かです。
しかしながら、古代ギリシャ人が真っ暗な夜空の点でしかない星々をつなぎ合わせてギリシャ神話を生み出したように、円周率の暗誦桁数で世界記録を打ち立てたある日本人が「『無秩序な数字の大群』を語呂合わせと想像力によって『一人の英雄の壮大な叙事詩』に置き換え、記録を達成した」というように、「想像する力」によって分かりにくい用語や概念を理解することには大きな意味があると思います。

この文が「人工知能や自動運転車などコンピュータソフトの将来性に希望を見て言語を勉強してみたいけど、分からないことだらけで苦しんでいる」という方への小さな、しかし確かな励ましとなってくれることを願っています。