M'4

ルービックキューブで学んだことをまとめます

3-Style手順表からのコピペが楽になるスクリプトを書いた

TL;DR;

下記のリポジトリを参照してGoogleスプレッドシートの手順表に設定すれば、 自分の3-Styleの手順を簡単にコピペできるようになります! 誰かに手順を紹介したいときに便利にお使いいただけます。

この記事のねらい

みなさん元気に3-Styleを回しているでしょうか?

1つ覚えては2つ忘れるを繰り返している、3-Style初心者のかわむ (@kawam1123)です。

何を間違えたのか、いきなりUF/UFRバッファで3-Styleを練習し始めて2か月が経ちました。hinemosに登録したコーナーの手順はまだ267手順です。エッジはEkaのみ20手順程度。手順を回しているだけで楽しいのですが、集中して練習する時間を取って回さないとなかなか定着しません。なんとか成功できるようにはなってきましたが、早く1分を切れるようになりたいです。

3-Styleの手順を選んでいくためにも、いま自分が回している手順をほかの人に気軽に共有したい!と思うことが多くなりました。 そんな課題を解決するためのスクリプトを書いたので、紹介します。

免責事項

  • 私は3-Style超人ではないので、本記事の内容は(3-Style上達のために)最適な内容でない場合があります。ご容赦ください。
  • ちなみに私の3x3x3目隠しのPBは1:30くらいです。公式はM2/OPで2:30程度。
  • UF/UFRバッファでのPBは2:30くらい(執筆時点)。まだまだ遅いです。10回に1回くらいしか成功しません。

3-Styleって何?

本記事をご覧になる方の大半はスピードキューバーでしょうから、解説は不要と思いますが念のため。(既にご存知の方は飛ばしてください)

WCA公式競技のひとつに、ルービックキューブ(3x3x3キューブ)を目隠しで解く競技があります。 3x3x3 目隠し (3x3x3 with blindfolded)と呼ばれます。目を開けていても難しいルービックキューブを目隠しをして解くなんて超人か!?と最初は思うかもしれませんが、実はそこまでアクロバティックな技術は必要ありません。
OP/OPやM2/OPならいくつかの手順とセットアップ方法を覚えるだけで揃えられるようになります。疑似的な2点交換を繰り返すだけで揃っていくので、理解しやすいでしょう。

(大村さんは下記の動画で一週間あれば攻略できる!と主張していますが、その通りだと思います)

3x3x3目隠しの手法の中で難しいのは、3点交換を繰り返すものです。これを3-cycleや3-Styleと呼びます*1これは、コーナー378手順、エッジ440手順、計818手順をすべて覚えて回すという変態的な手法です。 この手法が開発された当時は、まだそんな多くの手順を覚えて実行することができるのか?と懐疑的な人も多かったのでしょう。しかし、使いこなしている目隠し超人が多いのが現実です。

現在の世界記録保持者であるMax Hilliardの試技(Cubing USA Nationials 2019)を見てみましょう。 6秒で分析と記憶を終えて、9秒で実行しています。 人間でしょうか?

Jack Caiによる14.18の試技も見てみましょう。一度も止まることなく滑らかに指が動いています。非常にカッコいいですね。

まっさんのソルブも好きです。動画内に手順が書いてあって理解しやすくなっています。

3-Style 手順表とは何か?

さて、こんなにカッコよく目隠しソルブができる3-Styleという手法ですが、 覚える量がたくさんあるだけでなく、様々な手順のなかから自分に合った手順を選定していく必要があります。 これは大変です。そんなところからスタートしていては、何年かかっても揃えられないかもしれません…?

ここでスピードキューブ界隈の素晴らしいオープンな文化が出てきます。 偉大な先人たちは、自分が使っている手順表を惜しげもなく公開してくれているので、それを見ながらまずは自分で回してみる、というのが近道です。なんて素晴らしい! 私もいまこの道をゆっくり歩いています。

有名なキューバーの手順表はいくつもありますが、たとえば次のようなものがあります。

その他の様々な手順表については、BLDライフの手順表ページを参照するとよいでしょう。

手順表の中身

手順表というのは次のような見た目をしています。

3-Style手順表の例(まっさん手順表)
3-Style手順表の例(まっさん手順表)

これはUFRバッファの手順表です。列が2つ目のステッカー、行が3つ目のステッカーに相当します。つまり、 う(UBL)とさ(LDF)が交差するところに書かれた手順[R' D R, U2]は UFR-UBL-LDFの3点を交換する手順だ 、という風に読むことができます。

これがコーナーとエッジについてそれぞれシートが分かれて一覧になっています。

このとき、複数のバッファを使う/使っていた方の手順表であれば、バッファの数だけシートが分かれています。

余談ですが、この手順表の形式に則って、目隠しキューバーのためのツール「hinemos」の手順表としてインポートすることができます。手順表の全体をコピーして、hinemosの手順表に張り付けましょう。すると手順クイズを無限に楽しむことができます。

hinemosの3-Style表(まだ全部埋まっていません)

課題は何か?

この手順表を見ながら練習していくわけですが、 「自分はこういう手順で回している」ということを他のキューバーに伝えるときには、ステッカーと手順で会話をします。 目隠しキューバー同士は記号だけで会話ができる不思議な生き物なのです。

会話例:
「UFR-RBU-LFUいいのない?」
「UFR-RBU-LFU [R U' D' R': [R' U R, D]] どうですか」
「いいね!」

実に心温まるやりとりですね。 しかし、これは手順とステッカーの対応をすべて暗記している目隠し強者だけに許された特権的会話です。3-Style初心者にはなかなか追いつけません。

そもそもこの会話に参加するためには、次のような手順を踏まねばなりません。

  1. 3-Style手順表から該当する手順を探す
  2. 該当するセルにある手順をコピーする(ここでは [R U' D' R': [R' U R, D]]
  3. その手順を表す2つ目/3つ目のステッカーを特定する(ここでは RBULFU
  4. 自分のバッファを思い出す(ここでは UFR
  5. テキストエディタにバッファ、ステッカー、手順をそれぞれペーストする。
  6. Twitterなどで相手に伝える

実にステップが多くて面倒です! こんな単純なコピー&ペースト作業を行うことは重大な人権侵害に当たります。さあ自動化しましょう! というのが、今回のスクリプトを書く動機となりました*2。具体的には、3-Style手順表でお世話になっているまっさんがこの問題を提起してくださったので、それを実現するためにちょっと手を動かしてみよう、というのがスタートでした。

どのように解決したか?

上記の課題に対し、 Google Apps Scriptを利用して、バッファ/ステッカー/手順をパースして出力するスクリプトを実装しました。

実装の詳細については気が向いたらここに追記します。

インストール方法や使用方法については、GitHubリポジトリを参照してください。

簡単な利用方法と機能紹介の動画を作りました。これを見ると雰囲気がわかるでしょう。

実際の使用例

これを使うと、バッファ/ステッカー/手順だけでなく、自分のLettering Schemeに沿ったレターペアもあわせて出力ができます。 実際に使うと次のような感じですね。

こうやって「自分はこういう手順をこの指使いでやっていますが、いかがでしょうか?」と目隠し先輩諸氏に問いかけるために非常によいツールになりました。満足!

さらに便利な機能を追加:手順展開とキャンセル

詳細は省きますが、 3-Styleの手順ではセットアップとコミュテータの間で手順のキャンセルが頻繁に発生します。 このとき、キャンセルも含めた一連の手順として覚えておかないと、回すときにもたついてしまいます。

たとえば例に出した [R U' D' R': [R' U R, D]] を考えてみましょう。

これは私のレターペアでは めせ に当たる手順です。単純にセットアップ表記(Conjugate)とコミュテータ表記を展開すると次のようになります。

[R U' D' R': [R' U R, D]] の手順を展開する:
R U' D' R' [R' U R, D] R D U R' //セットアップを展開する
R U' D' R' (R' U R D R' U' R D') R D U R' //コミュテータを展開する
R U' D' R' R' U R D R' U' R D' R D U R' //これでいいか?

このとき、セットアップの最後の R' とコミュテータの最初の R' をキャンセルすることができます。 つまり、この手順を回す上では、次のように覚えておくとよいのです。

[R U' D' R': [R' U R, D]]
R U' D' R2 U R D R' U' R D' R U D R'

そこで、 この手順内でのキャンセルをうまく処理して展開するために、手順展開機能を実装しました。 特にコーナー3-Styleに出てくるようなキャンセルについてはすべて処理することができます。(エッジの Rw M = R とするようなキャンセルは未実装)

これは自分で手順を理解する上でも便利に使える機能ができた、と思っています。複雑にキャンセルする手順もありますので、すぐに手順に展開できるのは便利です。

例 UFR-RBU-BDR [U' R: [R' D R D', B2]]
U' D R D' B2 D R' D' R B2 R' U

おわりに

4/21にまっさんのツイートを見て「そうだ、作ってみよう」と思ってから、思ったより時間が経ちました。少しずつバグ修正をしたり機能追加をしているうちに、自分にとってどんどん便利なツールになっていくのが嬉しいですね。

「自分が抱えている課題を解決するためのツールを作ってついでに公開しておく」というのは、非常にいいやり方かもしれません。 (少なくとも1人はそのツールによって助かる人がいる、ということですから)

Google Apps Script、ほとんど初めて触りましたが、気軽で楽しいツールですね。また思いついたら機能追加していきます。そして3-Styleを使いこなせるようになります!

(おしまい)

おまけ:初学者のための参考資料

本記事ではまるで触れませんでしたが、3x3x3目隠しの基本的なテクニックについては、先人たちの叡智たる記事がたくさんあります。これから目隠しソルブをやってみたい方は、ぜひ色々読んでみるといいでしょう。

入門記事

動画チュートリアル

大村さんの日本語解説動画

OP/OP法を解説するプレイリストと、最近公開された「一週間で攻略しよう」という解説動画です。

SpeedCubeReviewによる解説

網羅的な解説です。この動画だけでなく、上記の記事の解説と合わせて視聴すると理解しやすいでしょう。OP/OPとM2/OPそれぞれの解説があります。

Jpermによる解説

みんな大好きJpermです。ちょっと早口ですが、必要な要素はすべてまとまっています。これを見て理解を確認するのもよいでしょう。

*1:3-cycleと3-Style、BH Methodは何が違うの?といった厳密な定義はGoogle先生もしくは近くの目隠ししている人に聞きましょう

*2:自動化に取りつかれるのはエンジニアがよく罹る病気です。いつものことです。