2020年08月28日
Webとキューブと私
~第1回 なぜルービックキューブなのか?~
こんにちは、松原です。
今は「案件相談窓口」として、お客様からご相談いただいた案件の見積やスケジューリングに必要な作業工数の算出を担当しています。元コーダーで、たまにコーディングもします。
リモートでもできる業務がほとんどなので、今年の3月末頃から、かれこれ4ヵ月ほど在宅ワークが続いています。
外出自粛でこれまで以上に家で過ごす時間が長くなり、これをきっかけに何か新しいことをはじめたという方も多いのではないでしょうか。私もヨガ、料理、裁縫、あつ森など、いくつか試してみたものの、かなり飽きっぽい性格なので、なかなか長続きするものはありませんでした。
友人に勧められた30日プランクチャレンジは、まさかの1日目で終了。そんな私が、2ヵ月ほど前からはじめて、毎日欠かさず続けているものがあります。そう、それが「ルービックキューブ」です!
なぜルービックキューブ?
ある日、何気なくテレビを見ていたら、俳優の藤木直人さんが22秒でルービックキューブを完成できる。という話が耳に入ってきました。嘘でしょ?と思って検索してみると、どうやら本当らしく、そのときに「ルービックキューブには解法があって、手順どおりに回せば誰でも6面そろえられる」ということを知りました。
選ばれし者のみに与えられた才能ではなかったのか。それなら私にだってできるじゃん!ということで、早速キューブを購入し解法を見ながら回してみたのですが、初回は6面そろえるのに30分以上かかってしまいました。
なるほど、誰でもできるはずなのに意外とできる人が少ないルービックキューブ。これを「特技」にして履歴書に書いたら、賢そうな印象を与えられそうだし、ありだな。
不純な動機でさらに検索すると、6面完成の早さを競う「スピードキューブ」という競技があることもわかりました。その大会は世界各国で行われているらしく、世界キューブ協会 (WCA)の情報によると、現在の世界記録は、なななんと3.47秒!
Netflixでは、そんなスピードキューバ―のドキュメンタリー映画も配信されています。
凄いですね、、ここまでいかないと特技とは言えないのか?
とりあえずもう少し早くできるようになりたい。そんな思いでYouTubeの攻略動画を見ながら練習をはじめました。「ルービックキューブ 攻略」で検索すると、ルービックキューブの理論、定石、指の使い方など、たくさんの動画が出てきます。ちなみに「ルービックキューブ」は登録商標なので、「立体パズル」や、単に「キューブ」と呼ばれたりもします。
そんなこんなで、気付けば朝も夜もキューブを回し続け、家の中はキューブだらけに。今このタイミングでこんなにも嵌ってしまうとは。
奥深きスピードキューブの世界
ルービックキューブ自体は子どもの頃から知っていたけど、実際にやってみると、スピードキューブの世界は知らないことだらけでした。その中のひとつが、この記事の題材である「スクランブル」です。
キューブを6面揃えるための準備として、まずはキューブの面をバラバラに崩さなければなりません。このキューブの面を崩すことを「スクランブル」といいます。大会では公平性を保つために、指定された形にスクランブルしたキューブを使って競技します。でも、揃える前に「指定された形に崩す」ってどうやってやるか想像しずらいですよね?
あまり知られていないかもしれませんが、キューブには、回転させる「面」と「方向」(時計回りか、反時計回りか)をアルファベットと記号で表した「回転記号」というものがあります。
例えば、向かって右面(Right)を時計回りに回す記号は「R(アール)」、同様に2回転させるのは「R2(アールツー)」反時計回りに回すのは「R'(アールプライム) 」といいます。3x3x3のキューブでよく使う回転記号を表にまとめました。
時計回り | 時計回りに2回転 | 反時計回り | |
---|---|---|---|
右面(Right) | R | R2 | R' |
左面(Left) | L | L2 | L' |
上面(Up) | U | U2 | U' |
下面(Down) | D | D2 | D' |
前面(Front) | F | F2 | F' |
背面(Back) | B | B2 | B' |
R2 F D R' U R B2 U B' U2 F2 R2 U2 L2 U' R2 D' F2 B2
上記のように回転記号を組み合わせることで、この順番どおりにキューブを回せば、いつでもどこでも誰でも同じようにキューブを崩すことができるのです!
スクランブルを行うときは、基本的にキューブの白色の面を上に、緑色の面を前にして行います。こうして先程の回転記号の順番にキューブを回していくと、下の展開図のようにバラバラに崩れます。
スクランブルのプログラムを作ってみよう!
前置きが大分長くなりましたが、今回私が始めるのは「ランダムでスクランブルを表示して、自動でキューブの展開図を描画するプログラムを作ってみよう!」という連載企画です。
いつもキューブを回す前には、競技のときと同じように必ずスクランブルをしています。適当に崩してしまうと簡単に6面揃ってしまったり、よいタイムが出ても素直に喜べないことがあるからです。
普段はスクランブルとタイマーがセットになっているモバイルのアプリを使用しているのですが、PCで手軽に使えるものが見当たらなかったので、自分で作ってみようと思います。また、回転の仕組みを自分で考えながらプログラミングすることで、キューブの理解が深まりタイムも早くなるかもしれません、そうなってほしい!そんな願いもあったりします。
制作物の完成イメージはこんな感じです。
その制作過程を今後数回に分けてレポートしていきます。次回は開発手順を決めて、早速制作に入っていきたいと思います!
また、私のソルブ(6面を完成させる一連の動作)の成長と、キューブの魅力もあわせて伝えていけたらいいなと思っています。どうぞよろしくお願いいたします!
ただいまのBest average of 5:37.97
※「Best average of 5」は、連続した5回のソルブの中で、最も早いタイムと最も遅いタイムの2回を除いた、3回のタイムの平均値です。