Raspberry Pi 3 で mruby を動かす

DSC_0193
DSC_0193

Raspberry Pi 3 が届きました!

発売より半年ほど出遅れましたが、ようやく Raspberry Pi 3 Model B を購入したので、組み込み向け軽量 Ruby である mruby を動かしていきたいと思います。

RPi3 は 1.2GHz クアッドコア 64bit ARM と 1GB の RAM を搭載したコンピュータです。私が4年ほど前まで使っていたネットブック LaVie Light PC-BL300 が Intel Atom N280 (1コア、1.66GHz) の 1GB RAM 構成でしたので、単純比較はできないものの35ドルで購入できるのはスゴいですね。

(おっと、mruby が想定している組み込み機器と比較してもはるかに高性能な上、MRI そのものも RPi で動いているので意味ないなんて言わないでください! mruby を ARM でセルフビルド・実行してみたかったんだよー!)

数年前に購入した初代 RPi Model B+ と比べても、Wi-Fi や Bluetooth 搭載であることはありがたいです。

RPi3 は Zero のように価格高騰もしていなかったので、普通に Amazon で購入しました。ソニーの英国工場で生産されているらしい RS 版と、中国で生産されている element14 版がありますが、ちょっとだけ安い element14 版、ケースとヒートシンク2個付きを購入しました。5,980円でした。購入時のレートで35ドルは3,722円。日本の Amazon で購入ができる本体のみは4,200円。差額は1,780円ですが、ケースが1,200円、ヒートシンクが2個で580円と考えると妥当な値段だと思います。

DSC_0184
DSC_0184

上が初代 Model B、下が購入した Pi 3 です。緑色のケースが「アリの巣コロリ」っぽくて気に入っています。 このケースがかもし出す昆虫採集感のおかげで、ラズパイを縁の下に設置しなければならなくなった時も安心です。

環境の確認

Raspbian の大きい方のディスクイメージを入れて、最初から色々とプログラミング環境が入っていました。

pi@raspberrypi:~ $ which ruby python perl node lua
/usr/bin/ruby
/usr/bin/python
/usr/bin/perl
/usr/bin/node
/usr/bin/lua

lua まで入っているんですねー。さすが教育用といったところか、私は使わないけど軽量 IDE の Geany もプリインストール済みです。X 環境が入っていない Raspbian LITE 版もありますが、ここまでは充実してないのかな。

pi@raspberrypi:~ $ ruby --version
ruby 2.1.5p273 (2014-11-13) [arm-linux-gnueabihf]
pi@raspberrypi:~ $ git --version
git version 2.1.4
pi@raspberrypi:~ $ gcc --version
gcc (Raspbian 4.9.2-10) 4.9.2
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
pi@raspberrypi:~ $ make --version
GNU Make 4.0
このプログラムは arm-unknown-linux-gnueabihf 用にビルドされました
Copyright (C) 1988-2013 Free Software Foundation, Inc.
ライセンス GPLv3+: GNU GPL バージョン 3 以降 <http://gnu.org/licenses/gpl.html>
これはフリーソフトウェアです: 自由に変更および配布できます.
法律の許す限り、 無保証 です.

基本的なものはすべて入っているようです。バージョンは念の為 apt upgrade した後のものです。

mruby の取得→セルフビルド

git で clone します。鍵ファイルを RPi に転送してないので、SSH ではなく HTTPS 経由で clone してます。

pi@raspberrypi:~ $ git clone https://github.com/mruby/mruby.git
Cloning into 'mruby'...
remote: Counting objects: 34141, done.
remote: Compressing objects: 100% (21/21), done.
remote: Total 34141 (delta 3), reused 0 (delta 0), pack-reused 34117
Receiving objects: 100% (34141/34141), 7.02 MiB | 951.00 KiB/s, done.
Resolving deltas: 100% (21335/21335), done.
Checking connectivity... done.
pi@raspberrypi:~ $ cd mruby/
pi@raspberrypi:~/mruby $ ls
AUTHORS          Makefile   appveyor.yml        doc       mrbgems               test
CONTRIBUTING.md  NEWS       appveyor_config.rb  examples  mrblib                travis_config.rb
ChangeLog        README.md  benchmark           include   mruby-source.gemspec
LEGAL            Rakefile   bin                 lib       src
MITL             TODO       build_config.rb     minirake  tasks

無事 clone できました。 minirake でビルドしてみます。

pi@raspberrypi:~/mruby $ ./minirake

できるかな…!

....
YACC  mrbgems/mruby-compiler/core/parse.y -> build/host/mrbgems/mruby-compiler/core/y.tab.c
sh: 1: bison: not found
sh: 1: bison: not found
rake aborted!
Command Failed: [bison -o "/home/pi/mruby/build/host/mrbgems/mruby-compiler/core/y.tab.c"
  "/home/pi/mruby/mrbgems/mruby-compiler/core/parse.y"]

bison がないって怒られてしまいました。さすがにないか~、ということは flex もなさそうですね。ささっと入れます。

pi@raspberrypi:~/mruby $ sudo apt install bison flex

私の環境では関連ライブラリも含めて3.7MBのファイルが入りました。さあ、気を取り直して再ビルドに挑戦です。

pi@raspberrypi:~/mruby $ ./minirake

結構時間がかかったものの、エラーなくビルドできました!

pi@raspberrypi:~/mruby $ ls bin/
mirb  mrbc  mrdb  mruby  mruby-strip
pi@raspberrypi:~/mruby $ bin/mruby --version
mruby 1.2.0 (2015-11-17)
pi@raspberrypi:~/mruby $ bin/mruby -e 'puts "hello, mruby on pi!"'
hello, mruby on pi!

わあい。ビルドが想像以上に長かったので、早いマシン上の mruby-cli でクロスビルドした方が良さそうです。

ビルド設定を変更

mruby-cli でのクロスビルドは後日として、とりあえずすぐに手元でできるビルド設定を変更していきます。 build_config.rb を開いて、enable_debug をコメントアウトします。念の為、MRuby::Build.new()host-debug, test, bench のところもブロックまるごとコメントアウト。(ここのところ触ってなかったのでもうちょっと良い方法があるのかもしれません)

mrbgems/default.gembox に次の使いたいライブラリを追加しました。

conf.gem :github => "mattn/mruby-xquote"
conf.gem :github => "matsumoto-r/mruby-sleep"
conf.gem :github => "iij/mruby-io"
conf.gem :github => "iij/mruby-regexp-pcre"
conf.gem :github => "iij/mruby-require"
conf.gem :github => "iij/mruby-dir"
conf.gem :github => "iij/mruby-env"

再度、

pi@raspberrypi:~/mruby $ ./minirake

すると、ビルドすることができました。

需要があるかどうか分かりませんが、上の構成でビルドして strip した mruby, mrib, mrbc, mrdb, mruby-strip のバイナリをこちらに置いておきます。Raspberry Pi と Raspbian があれば、ダウンロードして解凍するだけで使える…かもしれません。

次回は GPIO を制御して L チカをやってみたいと思います。

マルコフ連鎖を使って文章の自動生成を行う

cosmo

割と古典ですが、マルコフ連鎖の考え方を用いて、自動生成するスクリプトを書いてみました。入力した文章の単語同士の結合情報を重みづけをして「それっぽい文章」を生成してくれるやつです。以前からよく人工無能などでの実装で使われていますね。

ソースとなる文章をわかち書きに分割する処理に形態素解析コマンドの Chasen を使用しています。スクリプト本体は、文字分割の N-gram ではなく、単語分割したものを入力しますので、わかち書きが出せれば MeCab でも kakashi でも似たような感じでいけると思います。


単語リストに接尾単語リストを関連づけする方が精度が上がりますが、今回はちょっとしたテストコードですので、単語をリストで持たず1単語→接尾単語リストとして実装しています。

試しに、青空文庫で公開されている宮沢賢治の「銀河鉄道の夜」を入力してみると、次のように出力されました。

どうも今晩は見て、暗のところに見えるきれいだからこっちへかけて、 松や本の方はきちんとそろえて行きましょうと時計屋のしげみの底を 一つのやぐらが軽くひっぱましたともう着くころにふりうごかしました。 僕はそっちをもった。 孔雀が見えるのかたちが持っても手がだんだん横の旗を避けるようにした家でした。 いかがです。 美しい頬にふりを走っていました。 大きな黒い外套を揃えていましたよ。 ああそこでいて、おっかさんは空か。 わたくしたちが顔を大切に見えるのふしが云いました。 君もらわなかった。 ここはすぐ横手をつぶってるんなようにかかえられそうなことないか。 今日かがほとんどいちめんの口笛を擦りながら、私どものです。

意味はめちゃくちゃな文章ですが、スクリプトの短さの割にちょっと前の機械翻訳程度の和文は生成されますね。 Twitter や IRC, Slack などの bot や、音声合成システムの Open JTalk と組み合わせたら面白そうです。

参考リンク

佐世保港が一望できる弓張の丘ホテルに行ってきました

友人と佐世保港が一望できる弓張の丘ホテルに行ってきました。

[cardboard id=”2910″]

良いお天気に良い眺め。

[cardboard id=”2913″]

テラスでコーヒーを飲みながら雑談するのは楽しい時間です。

括弧を省略したLispコードのプロセッサーを書いてみました。

supoo(旧実装)

これまで業務でも趣味でも Lisp をガリガリ書くということはなく、せいぜい Emacs の設定ファイルを書くことにしか使ったことがありませんでした。 構文は非常にシンプルで、「これなら字句解析も構文解析も自分で書けそうだ。C と Lisp の勉強がてらやってみよう!」と思い立って書いたのが「supoo」です。

はい、考えが甘かったです。

lex や yacc を使わずにそれなりに動く実装を目指していたのですが、いつまで経ってもパーサ周りのエラーと例外処理に悩まされ続け、コードも複雑化してしまいました。C99ベースで正規表現ライブラリも使っていません。

なぜ既存の解析器を用いなかったかというと、単に lex や yacc ファイルの読み書きがあんまり出来なかったからというのも理由の一つですです。こちらが王道というのは薄々気付いていたので、過去にも何度も挑戦しましたが、その度に挫折…。これらを使った電卓レベルの入門ページはインターネットにたくさんあるんですが、それなりにプログラミング言語の形をしたものを作りたい場合はしっかりとマニュアルを読んで、実際に使用している他言語の実装を読まないとダメのようだーと思っていました。

streem

そういうのを書いたことも忘れて半年以上経った最近、まつもとゆきひろさんが一昨年の暮れあたりから開発している新プログラミング言語「streem」のコードを Github で見て、lex.lparse.yMakefile を眺めているうちに、自分でも書きたくなっていきました。ここ数年の一般的なツールや概念を用いて、何もないところから言語を組み立てていくところを見学することはとても勉強になります。

プログラミング言語を新しく作るところを見たいだけであれば、古い ML やら CVS やら漁れば色々と見れますが、その当時の歴史的な背景まで知っていなければ「なぜそういう実装になったのか」の経緯を本質的に知ることができないような気もしていました。今、リアルタイムで見るからこそ得るものもありそうです。

streem はパイプで連結してちょっとした処理をささっとこなすことができる「より良いシェル(スクリプト)」のようなものを目指しているのかな、と感じました。 パイプで繋げる考えをそのままにシェルスクリプトのようなものを進化させようとした Windows Power Shell を思い出しましたが、方針だけは評価できるものの、実際に出来上がったものは読みにくて書きにくい ガッカリ残念感の哀愁が漂っていたような印象を受けた覚えがあります1。 WPS と比較するのもアレなんですが、”顧客が本当に必要だったもの” は streem の方ですよね!

さて、そんな streem の lex.lparse.yMakefile をひっぱってきて、いろいろといじくり回しているうちに大体の記述は分かるようになってきました。まだパースだけで、式木の構築すらやっていないのですが、入れ子になった括弧を処理して、四則演算を行い、印字する程度のことはできました。

lex と yacc (正確にいうと flex と bison)を使ってなかった旧実装でも、関数定義式(defun)や制御式(if等)まで力技で実装していたので、それに比べたらまだまだラクガキレベルです。 ただ、やっぱり先人の知恵である解析器の便利さを実感することができました。

括弧

Clojure や Scheme を含む Lisp 系の言語は、S式を表現する際に括弧 () を多用します。Lisp 界隈のページを見ると、「括弧が書きづらさや読みにくさにつながって、初心者が寄りつかない」という記事をよく目にします。式木を表現したいだけであれば、Python のようにインデントでも可能ですので、そういう動きも以前からあったようです。

上記リンクでは、Scheme の ML のやりとりが紹介されています。自分も最初は、bison で () に加えてインデントによるネストをサポートしてみようかなと一瞬だけ考えましたが、電卓レベルと言えどちゃんと動いてる構文解析にこれから手を加えるのも億劫になるくらいなので、実用的に動いている実装のパーサから手を入れるのに及び腰になるのは理解できました。

ただ、コミュニティうんぬんの話は置いておいても、何十年も使い続けられている Lisp ですので時代ごとにこういう動きがあったと思いますが、未だに括弧を多用する構文が残っているということは、何か本質的な問題点があったのかもしれません。

supoo.rb

さて、そうは言ってもやっている事自体勉強&趣味なので、車輪の再発明上等でインデントでS式を書けるようにしてみました。

次のようなアプローチです。

  1. supoo はまだ電卓レベルなので parse.y を使いません。評価には GNU Common Lisp (clisp) を使います。
  2. 仮にちゃんと動いていても、yacc 構文では書きません。オレオレなインデント記法→ Lisp 記法を実現するフィルタとして実装します。

フィルタのスクリプト(supoo.rb)は次のようになりました。

中身はただのテキスト・プロセッサーです。要はインデントレベルを検知しながら、必要に応じて () を突っ込んでいるだけ。

次のように使います。

# 実行
ruby supoo.rb < indended-lisp.supoo | clisp -q -

# 通常の Lisp 構文に変換
ruby supoo.rb < indended-lisp.supoo > general-syntax.lisp

例えば、次のようなインデント記法のスクリプトがあったとします。

前置記法は変わらないですが、インデントによるS式のネスティングをしています。 必要以上に改行とインデントを入れなくても良いように、通常の () 構文も使えるようにしています2

このスクリプトを supoo.rb に食わせると

という Common Lisp なコードが印字されます。

clisp で実行すると

$ ruby supoo.rb < indended-lisp.supoo | clisp -q -
0 1 1 2 3
(1 . A)
--- TEST ---
1 2 3 4 5

のように正しく実行することができました。


  1. 結局 bash on Windows の提供という選択肢をとる Microsoft も最近では憎めないですが。 

  2. リストを各要素1行ずつに分けて書きたくないですよね。 

鎮守府歴史探訪〜旧佐世保市歌について〜

佐世保市では、数年前から正午を知らせるサイレンに佐世保市歌のメロディが使われています。 人によっては学校で歌った経験があるということですが、自分が通っていた学校では習いませんでした。 (私が小学生だったころ、市内の小学校に配布されていた冊子「わたしたちの佐世保市」にも掲載されていたような気がしますが)

現在の佐世保市歌

平和的で希望に満ち溢れたメロディと歌詞でとても素敵な市歌ですが、昭和27年に制定されたようで、それ以前は市歌がなかったのか気になったので調べてみました。

旧佐世保市歌

今回調べてみるまで自分も知らなかったのですが、昭和9年頃に制定された「旧佐世保市歌」が存在していたようです。 作詞は多くの校歌や市歌を手掛けた日本文学者の八波則吉氏、作曲は明治大正期に活躍した作曲家の島崎赤太郎氏らしいです。

私が調べた範囲では、それ以上の情報を得ることができなかったため、佐世保市役所に問い合わせてみました。すると、企画部政策経営課の方に快く対応していただき、「市役所ではメロディや楽譜は残っていないが、歌詞は確認できました」と歌詞を送っていただけました。

旧佐世保市歌の歌詞は次のとおり1です。

一、烏帽子岳は高く聳えて
  九十九島の眺尽きせず
  海幸山幸心のままに
   我が市佐世保は天與の港

二、威風堂々舳艫銜みて
  海を圧する艨艟これぞ
  皇國の鎭我等の誇り
   軍港佐世保の輝く誉

三、市民挙りて鎭守と仰ぐ
  八幡宮の御稜威畏み
  一意愛市の思念に燃ゆる
 若き佐世保に栄光あれや

現行の市歌で歌われている「烏帽子岳」や「九十九島」といった佐世保を代表する名所が歌われていてとても親近感がありますね! 市政50周年の折に現在の市歌に変更されたようですが、終戦を迎え歌詞が歌いづらくなった背景もあるのかもしれません。

メロディや楽譜を引き続き探していこうと思います。(時間を探して市立図書館の郷土資料室に行ってみようかな) もし、情報をお持ちの方はコメントをいただけると幸いです。


  1. 作詞の八波則吉氏は昭和28年に亡くなっており著作権的にも問題がないはずですので、全文掲載いたしました。 

アスペクト比と面積から縦横の大きさを求めるRubyスクリプト

Imagemagick-logo

ImageMagick の montage コマンドを使うと複数の画像をタイル状に並べて、1枚のサムネイル集合写真のような画像を作成することができます。スマートフォンの「カメラロール」のようなものです。

tiled-thumbs

具体的には次のようなコマンドでサムネ画像を生成します。

montage -background black -tile 11x20 -geometry 48x48+0+0 *.jpg thumb.jpg

ここで問題となるのが -tile オプション。これは、「複数の入力画像を縦横何個ずつ並べるか」を指定するオプションです。入力画像ファイル数が少なかったり、出力画像のアスペクト比が 1:1 であれば単純に入力画像ファイル数の冪根を求めればいいだけなのですが、16:9 などといったスマホの画面で閲覧させるのを前提としたアスペクト比の場合、何個ずつ並べればいいかの計算がちょっと厄介になります。

入力画像が正方形の場合、入力総数を [math]n[/math], 求めたい縦横何個を [math]x, y[/math], 縦横比を [math]w, h[/math], アスペクト比を升目と考えた時の総数に対する比を [math]t[/math] とおくと、[math]n = xy[/math] で [math]xy \leq wt \cdot ht[/math] を満せばいいわけなので、[math]x, y[/math] それぞれについて解くと、

[math]x = w \sqrt{\mathstrut \frac{n}{wh} }, y = h \sqrt{\mathstrut \frac{n}{wh} }[/math]

という具合になります。

これを Ruby に書き直して計算結果を印字するようにしたものが次のコードです。

#!/usr/bin/env ruby

# 総数
n = 333

# 比率
w = 16
h = 9

def calc(n, w, h)
  t = Math.sqrt(n.to_f / (w * h).to_f)
  return (w * t).to_i, (h * t).to_i
end

x, y = calc(n, w, h)
if x * y < n
  x, y = calc(n + x, w, h)
end

puts "#{x}x#{y}"

calc の戻り値は個数を表すため必ず整数値になるわけですが、総数よりも小さい場合は1枚の画像に収まらないため1、再計算させています。 上の例のように、333 ファイルを 16:9 の比でタイル配置したい場合

25x14

という結果が得られます。


  1. montage コマンドはタイル総数よりも入力画像数が多い場合、複数の画像として出力してくれます。また、足りない場合は余白になります。 

鎮守府史跡探訪〜昭和21年の佐世保空撮カラー映像〜

昭和21年に米軍によって撮影された佐世保の空撮カラー映像が Youtube に投稿されているのを見つけました。貴重なフィルムを投稿していただいて興奮しています。というのも、佐世保は戦前に鎮守府が置かれていたためか、全国でも有数の人口を誇る大都市だった1にも関わらず、当時の空撮写真や海岸線、鎮守府付近の詳細図があまり残されていません。国土地理院で閲覧できる空撮写真も戦後に米軍が撮影したものばかりです。

映像には、大牟田、佐世保、大村上空が映されていました。映像そのものは Youtube のものを見ていただくとして、佐世保上空について現在の地図と比較しながら見ていきたいと思います。

させぼ五番街 付近

sasebo1946_01

sasebo1946_01n

佐世保空襲の影響で空き地が目立つ港湾部です。

現在のさせぼ五番街がある場所は埋め立てされた場所です。カラオケのシダックスがある筋を五番街方面に行き、高速道路をくぐる交差点のすぐ向こう側が海でした。

画面上部、現在は松浦鉄道と高速道路がYの字になっているのが見えますが、撮影当時は画面左に向かっているものは高速道路ではなく、どちらも鉄道でした。高速道路になるこの鉄道は佐世保鎮守府、佐世保海軍工廠内にも伸びており、米軍が占領してからは「ジョスコー線」と呼ばれる線路でした。

現在も平瀬橋の脇にレールの一部を見ることができます。

島瀬町 付近

sasebo1946_02

sasebo1946_02n

画面右上から左に流れるのは名切川です。画面左の名切川沿いにある建物は佐世保玉屋。画面下には、旧国鉄佐世保線(現松浦鉄道)の鉄橋が焼け残っています。

今では想像することもできませんが、空き地になっている場所は空襲前まで木造の平屋が所狭しと並んでいました。こちらで佐世保玉屋周辺の焼ける前の写真を見ることができます。

画面右手の寺院は、現在の東本願寺佐世保別院のようです。

平瀬町 付近

sasebo1946_03

sasebo1946_03n

佐世保鎮守府を上空からカラーで映した貴重な映像です。昭和20年11月に陸海軍は解体され復員省に移行しているので、厳密に言うと鎮守府では既にないのですが、ほぼそのままの姿を見ることができます。

鎮守府内への引き込み線路の奥に見えるグラウンドは、現在、ミニッツパークの野球場・サッカーコートになっています。当時からグラウンドだったんですね。

sasebo1946_04

sasebo1946_04n

先ほどの写真の奥。鎮守府の建物がたくさん見えています。現在は自衛隊病院や音楽隊が置かれているエリアです。画面右上には当時から「海軍橋」の愛称で知られている佐世保橋が見えます。

元町 付近

sasebo1946_05

sasebo1946_05n

佐世保川にかかる海軍橋にさらに近づいたところです。凱旋記念館(佐世保市民ホール)や現在は海上自衛隊佐世保資料館になっている佐世保水交社も見えます。佐世保で一番古い町並みだった元町も壊滅的に焼失していますね…。教法寺の庭がかすかに見てとれます。

佐世保重工業(SSK)ドック 付近

sasebo1946_06

sasebo1946_06n

現在、SSKバイパスが走っている付近です。画面右中央に戦艦武蔵の艤装工事を行なった佐世保海軍工廠の第七船渠(現SSK第4ドック)がしっかり見てとれます。

SSKには仕事でもたまにお邪魔しますが、戦前から稼働中のクレーンや建物が現役で使用されていることも多いです。

佐世保市役所 付近

sasebo1946_07

sasebo1946_07n

この周辺も佐世保川を中心にして見事に焼けています。焼け野原の中、中央右に見える建物は佐世保警察署です。その上流にあるさらに大きな建物は佐世保市役所・公会堂です。

また、画面右上の山の上に見える黒っぽいL字型をした建物は成徳女子高等学校(現佐世保北高)です。

蛇島岸壁

sasebo1946_08

sasebo1946_08n

佐世保海軍工廠の蛇島(じゃじま)岸壁です。現在はSSKの岸壁です。

立神岸壁

sasebo1946_09

sasebo1946_09n

立神(たてがみ)岸壁です。現在は米軍と海上自衛隊が使用しています。

平瀬橋 付近

sasebo1946_10

sasebo1946_10n

中央に流れる佐世保川の手前が佐世保鎮守府、奥が一般市民が暮らすエリアに分かれていました。 平瀬橋も見えます。

佐世保郵便局(本局) 付近

sasebo1946_11

sasebo1946_11n

ここも綺麗に焼けています。現在の国道の場所は空襲前までは細い道だったようで、焼けたのを期に広い道を通して区画整備されたようです。体育文化館(コミュニティーセンター)がある場所は、陸軍佐世保要塞司令部跡ですが、なんだかよく分かりません。

日宇川河口 付近

sasebo1946_12

sasebo1946_12n

現在、佐世保高専の奥の工場がある付近です。ここには第21海軍航空廠の日宇工場があったため、撮影されたと思われます。

佐世保高専 付近

sasebo1946_13

sasebo1946_13n

道の形が比較的そのままになっています。画面を横断するのは現在は西九州自動車道佐世保道路。

その他

sasebo1946_14

sasebo1946_15

航空母艦や二等駆逐艦のような艦艇がたくさん映っていました。

sasebo_shipping_targets_1945-07-02

↑の写真は、米軍が佐世保空襲後の昭和20年7月2日に撮影した針尾島のエビス湾の空撮写真です2。位置関係から考えると、「KASAGI」は航空母艦「笠置」。「HAYATAKA」と書かれているのは、祖父が乗っていた航空母艦「隼鷹(じゅんよう)」のことだと思われます。隼鷹は日本人でもなかなか音読みはできない艦名ですので読み間違えてたようです。 まさか、隼鷹のカラー映像が残っていたとは…!

隼鷹に関する記事は下記が詳しいです。

参考までに、下記は米軍が昭和21年に作成した戦災地図です。

大きな解像度のものはこちら


  1. 昭和15年時点で佐世保市の人口は全国16位。15位の札幌市と1000人ほどしか違わず、当時は横須賀市や尼崎市よりも人口が多かった。 

  2. Sasebo History – Assorted Data on a Historical City in Southern Japan