私が歌川です

@utgwkk が書いている

おまじない

まじ‐ない〔‐なひ〕【▽呪い】
神仏その他不可思議なものの威力を借りて、災いや病気などを起こしたり、また除いたりする術。「―をかける」「人前でもあがらないお―」
(出典:デジタル大辞林)

プログラミングを初心者に教えるときに、たとえば標準入出力のためのライブラリを読みこんだり、クラスを定義してそこに main メソッドを定義したりするところを説明するとき、突然ライブラリとかクラスとかメソッドとかいう概念が出てくると、初心者は一気に遠ざかってしまう。そこで、これこれこの部分はおまじないなので最初はとりあえず書いておいてください、みたいな風にしてやり過ごすみたいな流れがあったりなかったりする。初心者にとってはおまじないの原理は不明だが、それを記述しておくととりあえず都合がよいのでしばらくはおまじないを何かありがたいものとして受け取る。

そのままプログラミング言語の文法とかを習って、しばらくすると、おまじないが、もはやおまじないではいられなくなる、自分がおまじないを自発的に使う側になるときが必ず来る。今までおまじないとして、何かよくわからないけど書いていたものは、標準入出力のために必要とか、いわゆるメソッドを定義して処理を分けるのに便利とか、そういうことを知らなければならなくなる。

おまじない、自分の体験としては、初めて習ったプログラミング言語Perl だったけど、一定の処理をサブルーチンにしておくと使い回しができて便利とか、そういったサブルーチンの集合をライブラリにしておくといつでもどこでも使い回しができて便利みたいな、そういう概念に知らず知らずのうちに馴染んでしまっていて、自分にとってはそれらはおまじないだったのかもしれないけれど、自分で使えるおまじないとして認識していた節がある。ちなみにそのときオブジェクト指向のことはまったく知らなくて、すごく強いおまじないだから自分には到底使いこなせないみたいな感じだった。

おまじない、というと、原義では不思議な力による云々らしいけれど、プログラミング言語におけるおまじないは、別に不思議な力でも神仏でもなくて、そういう機能がちゃんとあって、みたいな、ずっとおまじないのままにしておくのは何だかつらい感じがある。でもまぁ、正直なところ、おまじないがおまじないのままであっても、ある程度、ライブラリを読み込むおまじないとか、クラスっていう便利なかたまりが定義できるおまじないとか、そういう感じでも、ある程度は何とかなるかもしれないんだよなぁー、みたいな気分になっていて、うーん。

初心者の中でも、すごくすごい(?)初心者は、自分でおまじないの意味を調べてみたり、よく知ってる人に聞いたりして、気がついたらおまじないを自由に操れるようになっていたりして、恐ろしいみたいな、めちゃくちゃすごいみたいな感じになったりするし、なんかいいシメが思いつかなかった。

追記

あらゆるメソッドとか、 {} みたいな記号とかも全ておまじないになる、みたいな指摘があって、確かにそうだなとなった。あらゆるおまじないがあって、その組み合わせからなる強力なおまじないがあって、その一部分だけは何とか術士としてのランクが低くても読み解けるから、そこから紐解いていって、だんだん術士としてのランクを上げるみたいなイメージが浮かんできた。高度に発展した技術は魔術と区別がつかないみたいなの思い出したけどそれと同じかどうかというと微妙な気はする。

魔術を自由自在に操れるように仕立てあげるのはめちゃくちゃ難しいし、いつまでも難問として残るのではないか、という気持ちになった。