Mangaism

アニメ、漫画の感想や考察を書いてます

ラノベキャラで学ぶプログラミング講座「論理演算と少しでも速いコードの書き方」

この記事は

ネタなんだな~。
思い付いちゃったら実行したくなった。

ハローワールド

プログラミングには解法がありません。
こういうの作りやがれって答えは用意されてるんですけれど、作り方はいっぱいあるんですよね。
違うのは、出来上がった成果物を動かした時の「動作が完了するまでの時間」。
1分で動作が終わる作り方もあれば、59秒で終わるやりかたもあるって感じです。

たったの1秒の差。
これを一大事と捉えられるか否かが「優秀なプログラマー」か「平凡なプログラマー」かの境界線になります。

想像してみてください。
とあるアプリをタップしてから立ち上がるまでに1分掛かる場合と、59秒掛かる場合を。
10回起ち上げたくらいならば、僅か10秒しか変わりませんよね。
大きな差とは言えません。

けれど、100万回起ち上げたならば。
100万秒、つまり、約278時間という膨大な差になります。


本番で稼働しているプログラムは、数十万から数百万ものコード(行)から成り立っています。
ほんのコンマ数秒の違いが積み重なれば、処理速度に大きな違いが生まれることもあるのです。

今回の講座では、少しでも速いプログラミングのコツについてお話します。
手始めに論理演算の順序について解説していきましょう。

f:id:nuruta:20190210010303j:plain
ロリ界の2大巨頭

論理演算とは

日本語のお話を少々。
次の文章を見て下さい。

文章A : 「八一君は将棋が好きで、かつ、竜王位を持っている。」

八一君は将棋が好きで竜王でもあります。
なので、文章Aは正しいことになります。
「かつ」というのは、前半部分も後半部分も正しい時に"だけ"使える接続詞です。

では、もう1つ文章をご覧下さい。

文章B : 「昴君はバスケ、または、サッカーが好きである。」

昴君はバスケットボールが好きですが、サッカーは好きではありません。(好きかもだけど)
なので、文章Bは前半が正しく、後半は正しくありません。
然しながら、この文章Bは全体として見れば正しいことになります。
「または」は、2つ以上の事柄のどれか1つでも正しければ、全体の文としても正しくなります。


論理演算とはこれらの言葉の性質を利用した計算の事です。
「かつ」も「または」も論理演算子と呼ばれています。
他にも論理演算子はあるのですが、一先ず割愛しますね。

クズ竜八一の場合

ではでは、本題に入りましょう。
次の文章をご覧下さい。

文章C : 「八一君は小学生以下、または、合法ロリしか興味が無い」

ロリ王こと竜王・八一君は、女性の好みが少し偏っています。
小学生女児か、大人なんだけれど見た目が小学生程度にしか見えない女性(所謂合法ロリ)しか目に入らないのです。

これをプログラミング的に翻訳すると次のようになります。

文章C-1 :
もし
 【女性の年齢】 が 【12歳以下】 
または
 【女性の見た目】 が 【幼い】
ならば
 八一君のストライクゾーンである。

2つの条件が並んでますよね。
1つは女性の年齢が12歳以下か否か。
もう1つは、"大人の"女性の見た目が幼いかどうか。
便宜的に前者を条件①。後者を条件②とします。

それではテストをしてみましょう。
シャルロット・イゾアールちゃんが八一君の性癖に見合うか考えてみます。

f:id:nuruta:20190206220949j:plain
シャルちゃん(6)
先ず条件①を検証します。
シャルちゃんは6歳の女の子です。幼くて舌も回りきらないので、八一君のことを「ちちょ(師匠)」と呼んで懐いています。
八一君はデレデレです。
従って問題無く条件をクリアしております。

続いて条件②ですが、これは検証の必要性がありませんね。
「または」というのは、いくつかの条件のうち1つでも正しければ全体も正しいことになります。
条件①が正しい時点で、条件②は違っていても問題が無いという事です。
念の為検証してみても、シャルちゃんは年齢通りの幼い容姿をしていて、クリアしていますので、尚更不要な検証と言えます。

結果、シャルちゃんは八一君の中での筆頭嫁候補と言えそうです。


もう1つテストをしてみます。
袴田ひなたは八一を虜に出来るでしょうか。

f:id:nuruta:20190207220706j:plain
袴田ひなた(12)
ひなたは小学6年生。
3月3日生まれなので、作中ではほぼ11歳だったのかもしれません。
(画像のキャプションでは12歳としましたが)
どちらにせよ12歳以下なのは確かですので、条件①はクリアーです。

やはり条件②は検証の必要性がありませんね。
見た目もこれ以上無いって程ロリロリしてますし。

ひなたも八一の嫁候補ですね。


3つ目のテストを始めます。
小倉唯さんが八一の性癖に見合うか考えてみましょう。

f:id:nuruta:20190206221943p:plain
小倉唯さん(23)
条件①はどうでしょう。
今現在23歳である彼女は、大人の女性です。
流石に12歳以下ではありませんので、条件①は満たしません。

続いて条件②。
見た目というのは、見る人によって変わる価値観ではありますが、一般的には23歳には見えない童顔と言えそうです。
条件②はクリアしますので、彼女も八一君にとってはストライクゾーンに入るといえます。

長谷川昴の場合

文章D : 「昴君は小学生以下、または、合法ロリしか興味が無い」

「小学生は最高だぜ」という名言を生み出したロリ界の王。
長谷川昴は、世間の目を欺くべく嫌々ながら合法ロリなら良いかなと嘯いています。
本心では小学生しか目に入らないのですが、建前を採用しておきましょう。

同じようにプログラミング的に置き換えてみますが、文章が前述の八一と同じなので、今回は条件を入れ替えてみます。

文章D-1 :
もし
 【女性の見た目】 が 【幼い】 
または
 【女性の年齢】 が 【12歳以下】
ならば
 昴君のストライクゾーンである。

前者を条件②β、後者を条件①βとします。

それでは、同様に3つのテストケースを見てみましょう。
シャルロット・イゾアールちゃん。
条件②βに適合するでしょうか。
見た目は幼いのは確かです。
実際年齢的にもそうなので、当たり前ですね。
けれど、合法ロリというのはそもそもが「大人」を対象とした言葉です。
シャルは子供ですので、条件②βは不適格となります。

即ち、引き続いて条件①βが適するか調べることになりますね。
これについては先に述べた結論と合致しますので省略します。

袴田ひなたもシャルと同様です。
条件②βで弾かれて、続く条件①βで合格するケースです。

小倉唯さんはどうでしょうか。
今度は条件②βで合格し、条件①βはパスします。

結論

世間一般的に見て、小学生以下の女児と合法ロリと呼べる女性のどちらが多いでしょうか。
12歳以下の女性と13歳以上の年齢の女性では、総数から比較すれば圧倒的に13歳以上の女性の方が多いのは間違いありません。
これは火を見るよりも明らかな事象です。

しかし、合法ロリの女性と制限すれば、恐らくですが、立場は逆転します。
12歳以下の女児の方が多くなるんじゃないでしょうか。

これを踏まえ、八一君のケースと昴君のケースを比較してみます。
「条件検証の回数」に焦点を当てた時、より無駄が多いと"思われる"のは、どちらのケースでしょうか。
昴君の方が、無駄に条件の検証を行っていますよね。

このように、複数の条件のうち1つでもOKならば良いという「または」を用いる場合、「条件検証の回数」が"より少なくなると想定されるケース"を採用すると無駄な処理を省けます。
テスト対象をしっかりと見定めて、どの条件を先に持ってくるかを考えるべきなのです。

終わりに

如何でしたでしょうか。
プログラミングは「速さ」が求められるのです。
が、先ずはやはり「仕様書通りに動くか」が大前提です。
慣れないうちは前提が守られている担保が取れてから、余裕があれば、速さについての検討をされた方が賢明かもしれません。

皆さんも八一君や昴君に負けないロリコンになるよう励んでくださいね。
(くれぐれも三次元に手を出しちゃダメだぞ。)


余談。
八一と昴の画像を連結しようと素材を探してたら、先駆者が居てワロタw
(一番最初に貼ってある画像がそれです。ちょっと加工しましたが、お借りします)