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

  • PHP

古事記

まえがき

池澤夏樹さんの「日本文学全集」初回配本の「古事記」はとてもわかりやすくて、
私でも最後まで読み通すことができました。

池澤さんから太安万侶宛の手紙に「はじめてお便りします」
と書かれていてクスッとしてしまいます。


実はサイン本を持っています!
刊行記念イベントの池澤さんと大江健三郎さんの対談を拝見したのですが、
とても面白いお話でした。

「古事記」読んだ後、九州旅行に行きました。
高千穂やその他「古事記」に登場する舞台を訪れて古代の神々に思いを馳せました。

本題

さて「古事記」には、こんなシーンが多く登場します。

その霧のような吐息から生まれたのは、
多紀理毘売命(タキリビメノミコト)、またの名を
 奥津嶋比売命(オキツシマヒメノミコト)。次に、
市寸島比売命(イツキシマヒメノミコト)、別名は
 狭依毘売命(サヨリビメノミコト)。次に
多岐都比売命(タキツヒメノミコト)。以上三名。

生まれた神様の名前を列見していくシーンです。
今回はこれをプログラム的に書いてみたいと思います!

配列とは

配列とは何に使うものなのでしょう?
簡単に言うとバラバラになっている情報を項目ごとに整列させて、
小さくマエナラエさせた状態です。

配列の基本的な構文は以下のようになります。

$arr = array('foo', 'bar', 'baz');

神様を配列にするとこうなります。

$kami = array('多紀理毘売命',  '市寸島比売命',  '多岐都比売命');

これで神様が配列に入りました。
続いてこれを元の文章のように取り出してみたいと思います!

ソースコード

<?php

  $kami = array('多紀理毘売命',  '市寸島比売命',  '多岐都比売命');

  foreach ( $kami as $value ) {
    echo  $value . "。次に、<br>";
  }

実行結果

多紀理毘売命。次に、
市寸島比売命。次に、
多岐都比売命。次に、

最後の「次に、」が余計ですがそこは一先ず置いておいて、
神様の名前を取り出せました。しかしカタカナも欲しいですね。

連想配列

そこで連想配列にします。
連想配列とは配列ごとに振られる添字を任意に指定出来るというものです。
(添字は通常「0」から始まる数字が振られます)

ソースコード

<?php

  $kami = array(
    '多紀理毘売命' => 'タキリビメノミコト',
    '市寸島比売命' => 'イツキシマヒメノミコト',
    '多岐都比売命' => 'タキツヒメノミコト'
  );

  foreach ( $kami as $key => $value  ) {
    echo   $key . "(" . $value  .   ")。次に、<br>";
  }

実行結果

多紀理毘売命(タキリビメノミコト)。次に、
市寸島比売命(イツキシマヒメノミコト)。次に、
多岐都比売命(タキツヒメノミコト)。次に、

さらに別名も取り出したいので、多次元の連想配列にします。

ソースコード

<?php

  $kami = array(
    '多紀理毘売命' =>  array(
    	'kana'       => 'タキリビメノミコト',
    	'alias'      => '奥津嶋比売命',
    	'alias_kana' => 'オキツシマヒメノミコト',
    ),
    '市寸島比売命' =>  array(
    	'kana'       => 'イツキシマヒメノミコト',
    	'alias'      => '狭依毘売命',
    	'alias_kana' => 'サヨリビメノミコト',
    ),
    '多岐都比売命' => array(
      'kana' => 'タキツヒメノミコト'
    )
  );

  foreach ($kami as $key => $value) {
    echo $key . "(" . $value['kana'] . ")";
    if ( $value['alias'] ) {
      echo "、またの名を<br> " . $value['alias'] . "(" . $value['alias_kana'] . ")。次に、<br>";
    } else {
      echo "。以上三名。";
    }
  }

実行結果

多紀理毘売命(タキリビメノミコト)、またの名を
 奥津嶋比売命(オキツシマヒメノミコト)。次に、
市寸島比売命(イツキシマヒメノミコト)、またの名を
 狭依毘売命(サヨリビメノミコト)。次に、
多岐都比売命(タキツヒメノミコト)。以上三名。

最後にIF文を使って「次に、」と「以上三名。」を出し分けています。

まとめ

いかがでしたか? 日本の神様は八百万(やおよろず)と言われますが、
いくら神様がいても配列に入れれば一気に取り出せます!

こんなことしてバチが当たるんじゃないだろうか…。

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

Writer

ko

KO

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

Page Topへ