おまじない
理由は分からないけど、それを書いておけば動くよ
もしくは、必要な記述だけど理由は知らなくていいよ
プログラミングの話で出てくるよ
簡単に書くよ
おまじない(読:オマジナイ)とは
プログラミングの話で出てくる用語のひとつ
であり
人間語で書いたプログラムの元ネタ(ソースコード)に書く「理屈はサッパリ分からないんだけど、なぜかコレを書いておくと動くのよね。だから理由なんて考えないで、とにかく書いておけ!」な内容のこと
です。
あるいは
ソースコードに書く「ここにコレを書くのは、それなりに理由があるんだけどさ。多分、今の君に説明しても分からないと思うんだ。だから理由なんて考えないで、とにかく書いておけ!」な内容のこと
です。
詳しく書くよ
順番に見ていきましょう。
まずは予備知識として「ソースコード」と「プログラミング言語」について説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
ソースコードは「人間語で書いたプログラムの元ネタ」です。
プログラムを作って動かすまでの一般的な流れは
1.人間語でプログラムの元ネタを書く
2.元ネタを人間語から機械語に翻訳する
3.翻訳された指示に従って、コンピュータさんが お仕事する
です。
コンピュータさんは人間語が分かりません。
人間様はコンピュータさんの言葉が分かりません。
プログラムは人間様が作るものです。
そこで最初は人間様が分かる言葉でプログラムを作ります。
コンピュータさんに対する「あれをやれ」「これをやれ」な命令を人間語で書くのです。
次に人間語で書いたプログラムの元ネタをコンピュータさんが分かる言葉に翻訳します。
実際に お仕事をするのは、コンピュータさんですからね。
コンピュータさんが分かる言葉に変換する必要があるのです。
コンピュータさんが分かる言葉に翻訳したので、コンピュータさんは命令の内容を理解できます。
指示に従って、お仕事をしてくれるでしょう。
かなり簡略化した説明ですけどね。
これがプログラムを作るときの流れです。
この話で登場した
人間語で書いたプログラムの元ネタ
を「ソースコード」と言います。
プログラミング言語は「ソースコードを書くときに使う言葉」です。
言い方を変えると、コンピュータさんへ命令するときに使う人間語です。
世の中には、たくさんのプログラミング言語があります。
人間様の世界にも英語や日本語、中国語など、たくさんの「言語」がありますよね。
それと同じです。
プログラミング言語によって処理の書き方は違います。
ですが、基本的な部分の書き方は似ていることが多いでしょう。
以上を踏まえて、本題に入ります。
プログラムを実行すると、コンピュータさんはソースコード(を翻訳したもの)に従って、お仕事をしてくれます。
コンピュータさんは律儀で素直なやつです。
ソースコードに書いてあることは絶対にやってくれます。
ただし、融通が利かないやつでもあります。
ソースコードに書いてないことは絶対にやりません。
そのため、ソースコードには無駄な記述がありません。
ソースコードに書いてある内容は、すべての記述が意味を持つ
のです。
そんなソースコードを書く作業をプログラマさんは日夜やっていますが、たまに「理由は分からないけど、コレを書いておかないと動かない」という事態に出くわします。
どうして その記述が必要か分かりません。
ですが、それを書くと、ちゃんと動きます。
試しに、その記述を消してみました。
なぜか、ちゃんと動かなくなります。
仕方がないので再度、書いてみました。
ちゃんと動きます。
この「理由は分からないけど、コレを書いておかないと動かない」な内容、言い方を変えると
「理由は分からないけど、これを書いておくと動く」な内容
が「おまじない」です。
おまじないは、コンピュータさんにとっては「そりゃー、ここで そう書いておかないと動かないさ」な内容です。
おまじないが書いてあると動くのも、書いてないと動かないのも、コンピュータさんからすれば当たり前です。
ですが、人間様からすると「なんで必要なの?」です。
書いてあると動く(書いてないと動かない)理由がサッパリ分かりません。
理由を頑張って突き止めても良いのですけどね。
それどころじゃない場合も多々あります。
そんなときは「よく分からないけど、おまじないとして書いておくか」と自分に言い訳して先に進むのです。
そして、他の人に「この部分の処理は何の意味があるの?」と聞かれたら「おまじないだよ(だから、深くツッコまないで)」と答えます。
それが「理由が分からんけど、書いておけば動く」な「おまじない」です。
あとは、そこから派生して「理由はあるけど(多分、混乱させるだけだから)説明しない方が良いと思うんだよね」なときに「あぁ、それはおまじないだよ」と言ったりします。
例えば、そうですね。
プログラミング言語の「C言語」で画面に「Hello world」と表示するプログラムを見てみましょう。
ソースコードの内容は以下の通りです。
#include <stdio.h>
void main()
{
printf("Hello world\n");
}
この内容を初心者の方に説明するとします。
まずは1行目を見てください。
#include <stdio.h>
の部分です。
この記述は
「stdio.h」という名前のファイル(ヘッダファイル)を読み込んでね!
という命令です。
ちなみに「stdio」は「standard I/O(スタンダード・アイオー)」の省略表記です。
「スタジオ」では ありません。
「stdio.h」を読み込む必要があるのは
printf("Hello world\n");
の行で出てくる「printf」関数の本体(「printf関数が呼ばれたら、こんな処理をしてね!」な内容)が「stdio.h」の中に書いてあるからです。
よって「#include <stdio.h>」という記述には「絶対にコレを書けよ!書かないと動かないからな!」な(人間様でも分かる)理由があります。
とはいえ、です。
それを「どうやれば画面に文章が表示されるのかな?」レベルの初心者に説明しても、おそらく理解できません。
いたずらに混乱させるだけでしょう。
そこで優しい先輩方は「#include <stdio.h>」の部分を説明するときに大体こう言います。
「それはおまじないだから、とりあえず書いておいて」と。
そんな感じで、ソースコードに書く「理由はあるけど(多分、混乱させるだけだから)説明しない方が良いと思うんだよね」な内容も「おまじない」と表現したりします。
意図するところは「その中身を知るのは、お前には まだ早い!」です。
一言でまとめるよ
まぁ「おまじない」って単語が出てきたら「『理屈は考えなくていいから、とにかく書いておけ!』な内容なんだな~」と お考えください。






