• ブログ
  • プログラムを世界文学の名作で説明してみた〜文系のプログラミング初心者が初めに覚えたこと〜

プログラムを世界文学の名作で説明してみた〜文系のプログラミング初心者が初めに覚えたこと〜

ドストエフスキーの名作『罪と罰』で学ぶ変数とif文の書き方

変数とif文…なにそれ?

プログラムというと、C、C++、C#、Java、Ruby、Python、PHP、JavaScript…。
沢山の言語がありますが、どの言語でも変わらない基本的なものがあります。

それは変数とif文です。
とても初歩的なことですので、すでにプログラミングが出来る方は、

「なんだ、そんなことか」

と思われるかもしれません。

しかし国語が得意科目で理数系はからっきしだった文系の僕は、
この二つの概念を前に戸惑いました。

「変数=箱」ってどういうこと?
「xがyだった時」ってどういう時?

そんな体たらくだった僕が、なんとなく理解できたことを世界文学の名作、
ドストエフスキーの『罪と罰』を使って説明してみたいと思います。

ラスコーリニコフと変数

ラスコーリニコフにあだ名をつけよう

x = ラスコーリニコフ

さっそく、ここで変数です。
上が、どういう意味かお分かりになりますか?

この場合よく説明されるのが、「x」という箱にラスコーリニコフが入っている、というものです。しかしこの説明も、頭の悪い僕には釈然としません。

なんでラスコーリニコフが箱に入るの? って感じです。
箱入り娘ならぬ、箱入りラスコーリニコフかと。

ですからここでは、ラスコーリニコフに「x」というあだ名を付けたと考えてください。
毎回「ラスコーリニコフ」と書くのは面倒ですが、「x」なら一文字で済みます。

皆さんはこれから「x」という文字が出てくるたびに、
僕が「おい、ラスコーリニコフ!」と彼を呼んでいると思ってください。
さしずめこの時、僕は彼の友人、ラズミーヒンです。

 七月のはじめ、めっぽう暑いさかりのある日ぐれどき、ひとりのxが、S横町のせまくるしい間借り部屋(まがりべや)からおもてに出て、のろくさと、どこかためらいがちに、K橋のほうへ歩きだした。
 xはうまいこと階段で下宿の主婦(おかみ)と出くわさずにすんだ。xの部屋は、五階建ての高い建物をのぼりつめた屋根裏(やねうら)にあり、部屋というより押入れに近かった。

うーん、無機質になりますね。。

さて、これだけではプログラムは成立しません。
『罪と罰』のストーリーが始まるには何が必要でしょか?

お金がないラスコーリニコフ

それはまず、ラスコーリニコフ改め「x」が、貧乏であることです。
ですから、ここでは下記のようになります。

x = ラスコーリニコフ
y = 貧乏

ここで先ほどと同じように、貧乏に「y」というあだ名を付けました。
人じゃないのであだ名というのも変ですが、大目に見てください。

これでこの小説に「貧乏」という欠かすことの出来ない概念が、定義されました。
ここではまだ、「ラスコーリニコフは貧乏」とはなっていません。

2つの言葉を辞書から引き、別々の付箋に書きつけたような状態ですね。

さて、変数についてはここまでです。

物語が始まるために

xは貧乏なのか?

続いて、if文です。
ここまでくれば、簡単ですよ! もうひと頑張りです。

今のままではまだ「ラスコーリニコフ」と「貧乏」、
それぞれにあだ名を付けたに過ぎません。ではどうするか。

物語が始まるには、ラスコーリニコフが貧乏であれば良いのです。
そうでありさえすれば、彼は必然的に高利貸のアリョーナから、
お金を借り、挙句殺人を犯さざるを得なくなります。

別々の付箋にメモした2つの言葉をひとつにします。
つまりこういうことです。

x = ラスコーリニコフ
y = 貧乏

if ( x == y ) {

  事件発生!

}

これが世にいう「xがyだった時」ですね。
4行目の「==」というのは「等しい」ことを表しています。
「ラスコーリニコフは貧乏」ということです。

さて逆に言うと、そうでなければ『罪と罰』は始まりもしないのです。
物語を始めないためにはこうなります。

x = ラスコーリニコフ
y = 貧乏

if ( x != y ) {

  事件発生せず!

}

4行目の「!=」というのは「等しくない」ことを表します。

運命なんて信じるな

裕福なラスコーリニコフ

しかし予め定められた運命なんて、面白くありません。
偶然、道端で一億円拾うことだってありえます。

ラスコーリニコフが貧乏かどうか、人生は本当は分からないのです。
そういう時、どうしたら良いのでしょう?

こうなります。

x = ラスコーリニコフ
y = 貧乏

if ( x == y) { //ラスコーリニコフが貧乏

 事件発生

} else { //ラスコーリニコフが宝くじに当たった

 事件発生せず!

}

elseを使うことで、彼がお金持ちだった時のこともちゃんと考えてあげられるのです。

さあ、どうするドストエフスキー!?

動作デモ

実際に動作を確認

とりあえず、Web上でノンプログラマーでも分かりやすく、
簡単に動かせるjQueryで動作するデモを作ってみました。

下のラジオボタンを選択してみてください。
選択に応じて、テキストフィールドの値が変化します。

HTML

<p>
  ラスコーリニコフが
  <label><input type="radio" name="foo" value="貧乏">貧乏</label>
  <label><input type="radio" name="foo" value="金持ち">金持ち</label>
</p>
<div><input type="text" name="bar"></div>

JS

$(function(){

  $('input[name="foo"]').change(function(){

    var val = $(this).val()

    if ( val == '貧乏') {
      $('input[name="bar"]').val('事件発生!')
    } else {
      $('input[name="bar"]').val('事件発生せず! どうするドストエフスキー!?');
    }

  });

});

まとめ

さて、如何でしたか?
ひょっとしたらプログラミング初心者を、
余計混乱させた結果になっていないかと、不安になってきました。

僕の今の心境は、こんな感じです。

x = プログラミング初心者
y = この記事
z = 意味わからん

if ( x + y == z )  {

 混乱。。。

}

上は「x」と「y」を足した時「z」だったらというif文になっています。
このように3つの変数を利用することも多々あります。

解りやすく説明できたことを祈るばかりです。

しかし変数とif文の概念さえ理解すれば、
ちょっとしたプログラムは、そんなに難しいものではありません。

皆様が楽しくプログラムを学べますように、祈っております。
それでは、今回はここまでです。次回は「マルセル・プルースト『失われた時を求めて』で学ぶ関数の使い方」でお会いしましょう。

ありがとうございました。

プログラムを日本最古の文学作品で説明してみた〜「古事記」で学ぶ配列〜

Writer

ko

KO

誕生日に会社のみんなから『世界文学全集』をプレゼントしてもらった読書好きフロントエンド・エンジニアです。WordPressとMovableTypeが得意ですが、本当の特技は薪割りです。

Page Topへ