Special

【エンジニアは全員犯罪者】プログラミングスキルで凶悪犯罪を阻止するゲーム「異能な僕らと異常な世界」先行プレイレポ

paizaのゲームなので、中身はガチのプログラミング。

PR

 近未来の東京。異能の力が手に入るギフトコードが秘密裏に広まり、事態を重く見た政府は「エンジニア隔離法案」を推し進めた。この異常な世界から平穏な東京を取り戻すために、プログラミング力で凶悪犯罪を阻止せよ―――

 こんなストーリーのブラウザゲーム「異能な僕らと異常な世界」が、paizaからリリースされました。ITエンジニアに特化した転職・就活サービスを展開する同社ならではの、「D~Sランクまで5段階に分かれた問題で、プログラミングの腕試しができる(そして、そのスキルで世界を救うのだ!)」という内容です。

 世界観やビジュアルに遊び心をちりばめながらも、中身は本格派。言語はPython、Java、Cなど主要28言語に対応しており、今作ではHTML+CSS問題も採用しています。今回は、現役のWebフロントエンドエンジニアさんに先行プレイしてもらいました。

※以下、キャプチャー画像は開発中の画面につき、実際の画面と異なる場合があります

「異能な僕らと異常な世界」先行プレイレポ









 あっ! 薄暗いところから、すみません、目grepしてました!

 こんにちは! エンジニアでライターのリックェです。

※目grep:大量の文字列から検索など使わずに、自身の視力を犠牲に特定のパターンを探し出す行為。そこはかとなく気高くエンジニアらしい行為





 今日は、paizaさんの「異能な僕らと異常な世界」をプレイします。

 エンジニアあるいはエンジニアを目指している人向けのゲームで、主にコードを書いて問題に解答します。使える言語は複数あるので、自分の得意なものでプレイできますね。

 「エンジニアは全員犯罪者」という副題、不穏なワクワク感があるなあ。「エンジニア隔離法案」が敷かれたディストピアなんだそうです。パワーワードがガンガン出てくる。

 いい感じのプロモーションムービーがあるので、ぜひご覧ください。

初級編(ランクD~C)に挑戦してみる

 さてさて、早速やっていきます。

 東京都内の各都市がステージになっています。まずは難易度ランクDの「田端」から、いっちょもんでやりますか!


「田端」を選んで……

右下の「制圧に向かう」を選択すると……

出題画面

 なになに?

A君がB君より評価が高ければYesを、そうでなければNoを出力してください。

 なるほどね。イージー。イージー。イージープロブレムですよ。これくらいなら瞬時にコードが頭の中に浮かぶっつーの。

入力画面も自分の好みのテーマが選べる

 解答は、ブラウザ上でコードを入力すればいいわけですね。

 でも、普段使ってるエディタと雰囲気が違うからテンションが上がらないんだよなー。

 なんていうか、白地に黒文字で打ち込むときは僕にとっては「コーディング」じゃなくて「ライティング」なんですよ。

 ねぇ、ダークモードないのー?









 ありました。

 ビジュアル切り替えの機能がついていて、3種類のテーマ(背景とテキストの色の組み合わせ)から選べるんですね。これはありがたい配慮です。

 配慮にあやかって、テーマはダークモードで行きます。プログラミングってのは、闇に刻まれし閃光のポエムだからさ。





調べながらプレイできる

 ご託はいいから解いてみろって話ですよね、すでに頭の中では解けてるんですよ?

 でも、ちょ、ちょっと待ってくださいね、最初から書いてあるreadlinerequireが分からん。createInterfaceも分からん。なんも分からん。

 ……調べます。

 はい、はい、はい、OK~!!!! 理解しました。

 エンジニアに詳しくない人向けに言い訳すると、ググって理解した知識は、エンジニアの脳にあるものと見なしていいんです。エンジニアは暗記しなくていいの!

 アインシュタインも相対性理論に使う光の速度を暗記してなかったって言うし、本当にいいんです! いいんですって!

 こんな感じで、調べて学習しながら少しずつ解いていけるのは、「いのいじょ」の良いところですね。

※「異能な僕らと異常な世界」の略。勝手にそう呼んでいる

 はい。というわけで、解きました。

a > b ? 'Yes' : 'No'

 これでOKでしょ? 三項演算子で1行にまとめた美しいコード。美しいオレ、美しい魔闘家鈴木。

 チョロいじゃん。提出前動作確認もSuccessだし、これで合格でしょう。

 「コードを提出する」を押します。

※三項演算子:AならばB、AでないならばC の条件分岐を記述する演算子。?と:の組み合わせ。A,B,Cを3つ書くから三項演算子

お、こんな感じで解答結果の判定が入るんですね、クールじゃん。

 あ、TEST CASE 2。

 これは実際の現場みたいに、テストコードがいくつかあってそれが自動実行されているんですね。

 いいぞいいぞ、テスト駆動開発は現場でも有効な開発方法ですし。

 おっと、TEST CASE 4で引っ掛かってしまいました。

 なぜだ。

 分かった。Numberで数値変換が必要なんだ。

 標準出力から取得したabは文字列なので、比較する前に数値に変換しないとダメなんですね。

 そのまま文字列同士を比較すると辞書順の判定になるから、例えば“100”より“90”が後ろに(大きく)なって判定が失敗するというわけだ。そういう落とし穴って、意外とはまりがちだよな~。

 エンジニアじゃない人には何を言っているか分からないと思うんですが、要するに、初心者の浅い理解を狙い撃ちする良問だってことです!

 今回の僕のミスは、「いのいじょ」の魅力を伝えるためのrequiredな必須ムーブですから、これを読んでいるエンジニア仲間の人は勘違いしないでください! 大丈夫です! 安心して仕事を振ってください。

 ほらっ、今度は! 全部のテストをパスしたから! ほらっ!

4択問題もあるよ


「大塚」の問題

 「エンジニアリング」は、プログラミング能力だけを指す言葉ではないですよね。問題にどう立ち向かうかといった、ロジカルシンキングも試されます。

 こちらもイージー問題ですが、これからエンジニアを目指す人向けの良問だと思います。

 そして、こんなのは「乗換案内」を使えば一発だぜ! 答えは310円です。個人的には東京乗り換えをおすすめするぜ!

HTML・CSS問題もある

 エンジニアの分野は多岐にわたりますが、それでも計算結果や検索結果を画面に表示するところは変わらないわけで、その主たるものがブラウザへの表示です。

 ブラウザの表示といえば、HTML、CSSが花形ですね!

 こちらは、指定されたHTMLにCSSを適用して、リースの中に動物たちを入れましょうという「御茶ノ水」の問題です。





 僕レベルでしたら、これくらいは目をつむっても書けます。ちょちょいのちょい、と!

 ここまでの流れで、エンジニア能力をあまりお見せできていませんでした。

 このコードの実行結果で、ちゃんとしたエンジニアだぞってところも見せておきますね。

 エンジニアは、仕様書通りに作るだけじゃなくて、その背後にあるクライアントの本当の要望まで読み切ってこそ、真のエンジニアと言えるのです。

 ご照覧あれ。










このサングラス姿はまぎれもなく……

 これが、クライアントが本当に欲しかったものです。あれ、タモさんじゃないんでしたっけ?

クリア報酬もあるぞ!

 エンジニア的なところばかり紹介してきましたが、ゲームなので問題を解くとクリア報酬として「着せ替え」衣装がゲットできます。

 なんというか、そのう……









 趣味全開にできます!

難問にチャレンジする

 ……という感じで、ランクD~Cを中心に攻略を進めていきました。それなりに歯ごたえはありますが、やはり自分のようなスーパーエンジニアには、before breakfirstでした。

 やっぱり、ここでちゃんと確認しておきたいのは、

 難しい問題はちゃんと難しいのか? ですよね。

 だって、誰でも解けちゃう問題だったら、挑戦しがいがないじゃないですか? ねぇ。

 というわけで、行っちゃいましょう! ランクS問題!









 人感センサー問題か。

 要約すると、全ての点が含まれるように、半径rの円を複数配置するということね。

 しかも、配置する円の数が少なくなるように配置しなさい、と。

 これは頭の中で考えるには難しい問題だな……。コードに落とし込む前に、紙に書いて状況を理解しよう。

 ……暗いな。

































 あっ……









 ……春なんだなあ。

















 なんとなく「できました」で終わらせない、真面目なエンジニアの皆さんは「異能な僕らと異常な世界」に挑戦してみてくださいね!

 また「これからプログラミングを勉強したい」という真面目な皆さんには、3分間の動画で学べる「paizaラーニング」がオススメ。環境構築不要、ブラウザ上でコードを書ける機能があるほか、スキルアップ、スキルチェック用の問題もたくさん用意されています。気軽に始めて、長く使い続けられるはず。

提供:paiza株式会社
アイティメディア営業企画/制作:ねとらぼ編集部/掲載内容有効期限:2023年4月26日

Copyright © ITmedia, Inc. All Rights Reserved.