PREV | PAGE-SELECT | NEXT

「ハヤテのごとく!」話数変換スクリプト

 本日発売のサンデーをもって、「ハヤテのごとく!」がしばらく休載されることが発表されました。Twitter等では年末から話題になっていましたが、正式発表となりました。実質6週の休載です。

 2ヶ月近くハヤテが読めないというのは寂しいですが、今まで全く休載せず週刊連載を続けてきたことを考えれば、少し休んで話を作る時間があってもいいのかなと思います。
……という記事を前日時点で準備していたら、休むわけじゃなくて他の仕事をやるそうですが、ともあれ復帰を楽しみに待ちたいと思います。

 来週以降は「週刊ハヤテのごとく!」なるものがサンデーに掲載されるようなので、その内容に注目といったところでしょうか。


再読のススメと話数の対応



 さて、2ヶ月もの間ハヤテが読めないとなると、我々ハヤテブロガーは更新ネタに困ってしまうわけですが(突っ込み禁止)、むしろこの機会にハヤテを再読し、溜まった伏線や放置された布石を整理しておくのはどうでしょうか。

 ここまで350もの話があったわけで、結構忘れていることも多いですし、今読み返すと最近の話を踏まえた新たな発見も多いことでしょう。例えば349話ではナギたちがラーメンを食べに行きましたが、あのラーメン屋は下田へ行く途中ナギが訪れた店と同じ名前だったりします。

 そんな訳で、ハヤテファンの皆さんはこの機会に一度、これまでの話を再読してみるのも良いのではないでしょうか。


 そして、ブロガー的にはやはり再読して思ったことを記事として発表したいですよね! そこで個人的にネックなのが話数の対応です(強引な話のつなげ方)。

 なぜかこの作品の話数は単行本ごとにリセットされ毎回第1話から始まるんですが、サンデーでは当然これまでの通算話数で表記されるので、同じ話のことを指す数字が2種類出てきて面倒なんですね。
 個人的には何巻何話という表記よりも(通算)第何話という表記のほうがシンプルで好きなんですが、流石に350話にもなると印象的な話以外は通算話数を覚えていない上、単行本で調べても通算表記に直すのが面倒だったりで。

 そんな訳で話数を相互に変換するスクリプトを書いてみました。自分用に書いただけなので需要はそんなになさそうですが、まあせっかくなので更新ネタにしてみようかと。


話数変換スクリプト



 出来上がったスクリプト。サンプルはサイドバーに置いてあります。数字を入力して、変換したい方向のボタンを押すだけの簡単設計! 出てくる結果も合ってる……はず。

【更新履歴】
 2014.09.06 41巻10話(外伝)に暫定対応
          ・通算話数"ex"表記です
          ・ひどいコードなので近々直します
          ・本記事のこれ以降のスクリプトや式はまだ直してません
 2013.05.07 Enterで実行するよう修正
 2012.01.04 スクリプト公開


<script type="text/javascript">
<!--
function check(key){
  if(key || key == 0){
    return key;
  } else {
    return 13;
  }
}
function magToCom(key){
  var code = check(key);
  if(code == 13){
   s = parseFloat(document.trans.magazine.value);
   if(s <= 9){
   m = 1; n = s;
   } else if(s <= 20){
   m = 2; n = s-9;
   } else if(s <= 31){
   m = 3; n = s-20;
   } else if(s <= 41){
   m = 4; n = s-31;
   } else {
   m = Math.floor((s+13)/11); n = s-11*m+14;
   }
   document.trans.comic1.value = m;
   document.trans.comic2.value = n;
  }
}
function comToMag(key){
  var code = check(key);
  if(code == 13){
   m = parseFloat(document.trans.comic1.value);
   n = parseFloat(document.trans.comic2.value);
   if(m == 1) s = n;
   else if(m == 2) s = n+9;
   else if(m == 3) s = n+20;
   else if(m == 4) s = n+31;
   else s = 11*m+n-14;
   document.trans.magazine.value = s;
  }
}
// -->
</script>

<form action="#" name="trans">
<dl>
<dt>第<input name="magazine" type="text" style="width: 3em;" onkeypress="magToCom(event.keyCode);" />話</dt>
<dd><input type="button" value="↓" onclick="magToCom()" /></dd>
<dt><input name="comic1" type="text" style="width: 2em;" onkeypress="comToMag(event.keyCode);" />巻<input name="comic2" type="text" style="width: 2em;" onkeypress="comToMag(event.keyCode);" />話</dt>
<dd><input type="button" value="↑" onclick="comToMag()" /></dd>
</dl>
</form>

<p><a href="http://ataraxia.blog20.fc2.com/blog-entry-796.html">About this script</a></p>


 もうちょいスマートな書き方があるかもしれないし、Enterキーを押したら結果が出るようにとかしたかったですが、Javascriptはよくわからんので今後の課題ということで……。(2013.05.07追記:Enterで結果出るようにしました)
 まあこれでも記事を書くときはそこそこ便利なんじゃないかなー。自分はこれがあると割と楽です。

 ちなみにこのスクリプト、各巻11話収録であることが前提になっているので、今後何らかの事情で1冊に10話以下あるいは12話以上収録された場合は計算結果が合わなくなります。その時は修正するつもりですが、忘れてるかもしれないのでもし使いたいという方がいればご注意ください。


 以下では、スクリプト中に書かれている式の解説というか、変換式の導出過程を書いておきます。興味ない方は飛ばしてください。いやまあそもそもこの記事自体、ごく限られた層しか興味なさそうな内容ではありますが!

話数変換式の導出



 ハヤテの単行本は基本的に11話構成なんですが、1巻が9話、4巻が10話しか収録されていないという例外があるため、一般式を求めることは困難です。そこで4巻までと5巻以降で場合分けして考えてみます。

 以降、単行本の話数を「m巻n話」、通算の話数を「第s話」と表記します。以下ではmとnが与えられた時にsを、あるいは逆にsが与えられた時にmとnを求めようというのが目的です。


4巻まで



 各巻それぞれ9, 11, 11, 10話収録されているので、m,nが与えられれば、sは「(m-1)巻までの収録話数の総和+n」という式で求まる。すなわちsはmとnの関数として

120104_01.png

逆にsが与えられた場合は、m,nは各巻に何話から何話までが収録されているのか考えつつ上式を逆に解いて

120104_02.png

として求まる。


5巻以降



 m巻のn話目が通算何話目かを考えると、4巻までで41話収録し、それ以降は毎巻11話ずつ収録することから

120104_03.png

 逆にs≧42が与えられたとき、そこからm,nを求めることを考える。しかし上の式を単に解いても未知数が2つあって求まらないので、話数の関係を不等式で評価することから始めてみる。
 m巻n話の通算話数というのは、m巻1話の通算話数以上、(m+1)巻1話の通算話数未満となることから、1≦n≦11のもとで

120104_04.png

を満たす。ここから、その話が何巻に収録されているのか、すなわちmを求めてみる。先ほどのs(m,n)の式から

120104_05.png

この各辺に13を加え、その後11で割ると

120104_06.png

これは収録巻mに関する不等式になっているが、(n-1)/11<1なので、上の式の中辺の端数を切り捨てた整数部分はmと等しくなる。したがってsに13を加えて11で割り、その端数を切り捨てればmが求まるので

120104_07.png

この鍵括弧のような記号⌊⌋はfloor関数(床関数)で、ざっくり言えば端数切り捨てを表すもの。mが求まれば、nは先ほどのs(m,n)の式を解いて

120104_08.png

と求まる。


余談



 求めた式を使って劇場版特典として配られた99巻に収録されている話が通算第何話にあたるのか調べてみると、11*99+1-14=1076話となり、あと725話の積み重ねが必要だとわかります。1年に50話で計算しても14年半かかる計算です。ハヤテはその頃まで続いているのだろうか(しかも夏休み終わりまでの部分で)!

 まあ実際はこれまで通りのペースならあと2年くらい、通算450話くらいで劇場版あたりの時期まで行くとは思いますけどね。あくまで余談ということで。


HiNA2 Spring has come!! 〈初回限定盤〉
桂ヒナギク starring 伊藤 静
ジェネオン・ユニバーサル (2011-12-21)
売り上げランキング: 233

劇場版ハヤテのごとく!HEAVEN IS A PLACE ON EARTH +99〈初回限定版〉 [Blu-ray]
ジェネオン・ユニバーサル (2012-02-29)
売り上げランキング: 322

| ハヤテのごとく! | 23:40 | comments:0 | trackbacks:0 | EDIT

COMMENT















非公開コメント

TRACKBACK URL

http://ataraxia.blog20.fc2.com/tb.php/796-1979e75c

TRACKBACK

PREV | PAGE-SELECT | NEXT