全国150万人の "ダイスに命を懸けている"皆さまいかがお過ごしでしょうか。 鈴村リク です。 今回はゲムマで購入した 複雑なルールや初心者には難しいロール 演技をする を一切排し、誰でも物語に没入できるゲームをご紹介します。 MAP に示された各探索箇所のカードをめくり、そこに記されたシナリオを クリアして次の探索箇所を選択して進んでいき、この世界から脱出する道を目指しましょう。 MAP を自由に探索しているうちに、きっとある事に気付くでしょう。 それがトゥルーエンドへの道標となります。 そうしてあなたが物語を最後まで読み解いたとき、 きっと感情揺さぶる体験が待っていることでしょう。 本来、禁忌事項 タブー であることが物語の最後に出迎えます。 ざっくりプレイ方法 1. MAPシートに各シナリオカードを裏面にして伏せる 2. 各プレイヤーは装備カードを選択し手元に 3. 各プレイヤーは個性値を振り分け、HPを算出する 4. シナリオカードをめくり、イベント・戦闘を進める 5. 隣接するシナリオカードへ移動し、めくって探索を繰り返す 6. 最後の戦いを制することができれば勝利 墓から目覚めた先は、選択とダイスによって運命の決まる世界 『レガシーコード LEGACY CODE 』は2019年秋にゲームマーケットで販売されたゲーム。 制作は クリエイターズ編集部。 イベント開始直後からブースには求める人で長蛇の列ができ、45分で400セットを完売させた驚異のゲームです。 当時の私はカタログで広告を見た瞬間に購入を決意し、最優先で確保に向かったことを覚えています。 このゲームの魅力は、なんといっても ゲームのとっつきやすさとデザイン性の高さではないでしょうか。 カードがすべての進行をしてくれます。 改めてこちらが箱の表面 はい、カッコいい! 誰もがこれから始まる壮絶な冒険に胸を躍らせることでしょう。 2つのパッケージで1つの絵が完成するところもニクイ演出ですね。 イラスト担当のひな助氏・はこしろ氏・伊瀬村氏が本当に良い仕事をしています。 タイトルにもある通り、レガシーコードは 日蝕の物語と月の物語と2つのバージョンが発売されておりまして、内容物はほぼほぼ同じなのですが、ストーリーが別物です。 日蝕の物語は、とある「鍵」の行方をめぐるよりドラマティックなストーリー。 月の物語は、より根源的な世界の謎に迫るストーリーとなっています。 両者は一応パラレル設定なので、どちらかだけでもプレイ可能です。 ただ、2つともプレイすることで互いのストーリーの補完がされたりするので、好きもの a. a私 は両方プレイしよう! 内容部は物語の根幹となるシナリオカード13枚。 プレイヤーが使用する装備カード4枚 エンディングシートが4枚、MAPシート、ダイスが2個付属。 ゲムマ価格とは言え、この内容で1,000円は安いんじゃないかな。 シナリオカードは裏面に場所の名前が書いてあり、表に向けることで物語が進んだり敵が出現したりします。 プレイヤーは棺の中から出てくる設定なので、初期位置は墓地から。 13枚のシナリオカードはこのように配置し、1枚のカードを解決したら、矢印の書かれている方向へ進むことができます。 上から順に進んでいって、最終的には下層で待ち受ける怪異と対峙していきます。 まっすぐ出口へ進むもよし、周囲を探索するもよし。 すべてはあなたと仲間が決めていくのです。 冒険の心強い味方となる装備カード。 大斧・太刀・弓・魔杖から各プレイヤー1枚選択します。 各武器には 攻撃・防御・回避・神秘のステータスが割り振られており、異なる性質を持っています。 ここに個性値を3点まで自由にふり、自分だけの武器にしていきます。 また武器には固有スキルがあり、ゲームを有利に進めることができるでしょう。 もちろん発動には代償も必要ですが… シナリオカードをめくると敵が登場し、戦闘となる場合があります。 ビジュアルが怖いですね…この怖さで序盤の敵と言うのだから恐ろしいものです。 ダイスは付属のものを使用。 バージョンによって赤のダイスと青のダイスと色が分かれているのが最高です。 失敗時のHPの減り方が結構激しいので、常にドキドキ。 物語を進め最後の敵を倒すとこれまでの冒険に即したエンディングを見ることができます。 このゲームはマルチエンディングになっているので、物語の全容を知りたければ複数回のプレイが推奨されます。 でも1回のエンディングまでは20分ぐらいで終わるのでそこまで大変ではないのが救い。 プレイしてみて 今回 私は4人でプレイし、すべてのエンディングに到達しました。 カードをめくってダイスを振るだけのシンプルなルールなので、1度理解できればサクサクとプレイできるのもありがたかったですね。 戦闘は序盤から意外とシビア。 最初はステータスを満遍なく上げていたのですが、どうしても突破できない箇所があったので、 メンバー内で役割を分担して特化型のキャラを作って攻略していきました。 1人から遊べますが、 人数がいればいるだけ難易度が下がる印象です。 やらなきゃやられてしまうので、仕方ないね。 箱には謎解き要素もあると記載されていましたが、 確かに要素はありましたがかなり少なめ。 謎解きメインで購入すると肩透かしをくらう可能性があります。 ゲームが普通に楽しいので、そこを中心に考えていきましょう。 1度プレイをしてゲームを楽しんだら、 今度は未プレイの方に対してインストと進行の補助が可能になるので、多角的に見てTRPGの入門として良いゲーム だったと感じました。 興味のある方はぜひ、プレイしてみてください!.
次のはじめに を読んで、とてもいい本だと思ったと同時に、 20代の自身が知っておけば良かったことを記載しています。 自身の力や配慮が足りなかったことの戒めや反省です。 (あまりQiita向けではない気がしますが・・) 下記の問題で疲弊して悩んでいる方や この記事を読んで、興味が出てきた人は、 本書を買って読んで学んで頂ければと思います。 ソフトウェアのバグや不具合が多くて困っている• ソフトウェアのリリース頻度が遅くて困っている• アジャイル初めてみたけど、なんかうまく回っていない気がする うまくいってないことに対するインパクトについて まず、うまくいっていないこと自体は残念ながら特殊な状況ではない(我が会社だけではない)ということです。 本書であげられている例を要約すると、2002年時点のある調査で、アメリカだけでソフトウェアの障害が600億ドル規模で失われていると記載されています。 大体今の(2019年12月1日時点で)任天堂の時価総額より高い、というとPMや部長レイヤーにも伝わる(伝わった)と思います。 現場と上のレイヤーとの認識の違い 開発者がソフトウェアの開発を行うときに、何に時間を費やしているか、 その理解をしてもらうことから始めるのが良いと思います。 特に、開発経験がない人たちには、現場との認識のズレが生じやすい箇所だと思います。 ここは大体本書の通り、 PM・部長レイヤー:コーディングに時間がかかる 実際の現場の結果:仕様書を読んだり、ドキュメントを書いたり、会議に出席したり、デバックに多くの時間が取られている という状態になっている(た)ことを伝える必要があります。 まず、コーディングという機能という価値を生み出すところに、多くの時間を割くことができていない、という現状を証拠を揃えて伝える必要があります。 なんでコーディングに時間が取れないの? この質問に対しては『ソフトウェア開発が複雑である』という前提を理解してもらう必要があります。 『なぜ複雑なのか』については、人によって色々と答えがあると思いますが、 まず現実が複雑であり、人がその現実で無意識に行なっていることを(しばしば他の人の頭から)抜き出し・洗い出しを行い、それをコンピューターに対して、正確に伝える(コードを書く)というところにあると、いう回答が当時の自分にも刺さるでしょう。 また、ソフトウェア開発に対して、今のやり方が良くないことを本書のような例を持って、異議を伝えるべきです。 ソフトウェア開発プラティクスに従うことは手術の前の消毒のようなもので、どのようなソフトウェアを開発していても正しく行われる必要がある。 従わなければ最近が患者を殺してしまうように、たった1つのバグがアプリケーションを殺してしまうかもしれない。 規律が必要だ。 47-p. 48 レガシーコードを放置するべきではない 本書では、レガシーコードというキーワードが頻発しますが、 ここでいうレガシーコードとは、マイケル・フェザースのを引用しつつ、 テストのできないコードをレガシーコードと定義している p. 6 としています。 それだと、当時の自分や上のレイヤーの人には、少し伝わりづらい可能性があるので、 『修正や拡張といった作業が難しいコード』 と言うほうが伝わりやすいかもしれないです。 機能の追加や修正といった手を加えることにより、正しく動くかを担保すると同時に、 機能の追加や修正が行われる前のソフトウェアと同様に、他の機能が正しく動くかも担保する必要があり、 その担保はテストにより担保するので、テストのできないコードを放置するべきではない、という論法です。 また、(ユニット)テストを作るためには、先にある程度優れたコードがないと、 テストができないので、コード品質も重要という点も述べた方がいいです。 しかし、優れたユニットテストを行うには、テスト可能な優れたコードがあることが前提となる。 これはレガシーコードには当てはまらない。 したがって、コードを整理して、先にいい状態にしなければいけないことになる。 これは言うは易く行うは難しだ。 7 とはいっても納期、お客様の要望いっぱいあるんだけどどうするの? 要望に関しては、本当に必要なものを精査できる立場、ないしはここまでで聞く耳を持っていただけているなら、5章をまるっと読んでもらえると、とても助かります。 本当にその機能がいるのか、それを突き詰めてもらえると、いくらか案件は消せたと思います。 リファクタして意味があるの? まず、すべてのコードをリファクタしたい、という要望は絶対に通らないことを理解しましょう。 また、リファクタを行うことを本書のように、負債を返すことの重要さをきちんと説明できるようにすれば、リファクタを行うこと自体は受け入れてもらえるでしょう。 そして、本書のような7つの戦略に従い、行うべき対象を正しく精査し、少しずつでも負債を返すようにしていくことが大切です。 終わりに 以上、本書には色々と学びがあり、過去の自分に本書のようなものに出会えていれば、 もっと色々と幸せになれたかもしれません。
次のお仕事でレガシー改善っぽいことばかりやっていたら、他部署のエンジニアから「レガシーの人」と呼ばれた。 老害の化身みたいな印象を刷り込まれつつある。 そんなわけで、レガシーにまつわる本を読んだ。 インターネットをみているかぎり評判が良さそうで、ネクストバイブル的な扱いを受けていた。 読んでいて思ったことなどを雑に書き留める。 感想たち 全体的にとても読みやすく、整理されている。 訳も自然。 キーワードを挙げるなら、アジャイル、TDDあたり。 タイトルからは少しずれる印象かもしれないが、レガシー関係なく良いコードを書く方法にかなりページを割いている。 その理由は、最終章の以下文で端的に説明されている。 良いものがどんなものか知らなければ、レガシーコードをリファクタリングしてもより良いものにしようがないのだ。 241 「レガシー改善やるぞ」とそれ自体が目的になってしまいがちで、それもふまえてより大局的に「良いコード」を志向している点に、本書の価値を感じる。 書かれていること自体も理論と実践のバランスよく、ソフトウェア開発者が日々意識しやすい言葉を使っていて、ジュニアからシニア、マネージャまで、ソフトウェア開発者と呼ばれる人々に広く示唆を与える内容となっている。 失敗のコスト 本書の前半は、広くソフトウェア業界が抱える問題意識を示している。 主にアメリカのソフトウェア業界をターゲットとして、権威ある調査機関が行った調査について、定量的に紹介されている。 CHAOSレポートはその中の代表的な一つで、いろんなところで引用されている。 この数字は、ソフトウェア開発者以外からみると、信じられないくらい低いと思う。 というか、ソフトウェア開発者からみても低い。 「成功」「問題あり」「失敗」の3状態の定義として、例えば「予算がオーバーした」は「問題あり」に分類される。 そう聞くと、ソフトウェア開発者としては納得できる。 この感覚の差に内在するのはソフトウェアの複雑性だと思う。 から、以下のコメントが紹介されている。 そして、ソフトウェア障害がアメリカだけで年間600億ドルもの損失になっていることを紹介している。 600億ドルといえば、現時点のレートで6. 5兆円程度。 ので、それを超える勢い。 よくわからん。 技術的卓越性 自分はアジャイルを全然知らないのだが、本書はアジャイルの根底にある「余計なものはないほうがいい」という思想のもと、レガシーコードを生み出さないことに繋がることを説明している。 たぶん。 マネジメントプラクティスが先行しすぎていることを指摘し、技術プラクティスの重要性を強調している。 たぶん、より開発生産性の高い状態を目指したらアジャイルチックなスタイルになっているのが理想なのだと思う。 アジャイルマニフェストの起案者は、「今後は技術的卓越性やで」といってるらしい。 技術的卓越性とはなにか、という点については、本書では十分には説明されていない。 アジャイルの聖典であるにある以下。 Continuous attention to technical excellence and good design enhances agility. 「技術研鑽を常に意識せよ」ということだと思うが、アジャイルにおいてそれが明文化されていることに意味がありそう。 各自の解釈で。 変更しやすく 仮想世界は物理世界とは異なり、物理法則がない。 それもあってか、ソフトウェア開発において「第一原理」となるものはまだない。 オブジェクト指向や単一責務の原則のようないわゆる設計原則がそれに近しい位置にはいるが、それが不要なソフトウェア開発もまた存在する。 そのため、「良いコード」の定義は様々あるとした上で、「変更のしやすさ」を大きな要素として挙げている。 変更のしやすさはソフトウェアの内部品質であり、内部品質は結果ではなく原因であり、良いソフトウェアが備えているものである、としている。 高凝集・疎結合にしたり、ポリモーフィズムを駆使したり、オブジェクト指向の原則に従った開発を行うことや、テストでふるまいを書くことが「良い」とされている。 その「良い」と感じる根源は、変更のしやすさであり、より根源的には不確実性、わからなさに対する戦略だと思う。 コードは読み手のために書くという意識は大切だし、その人の不安をなるべく減らしたい。 ホスタビリティ。 おもてなし。 品質の定義 品質を高めるには?みたいな文脈で、「まず品質を定義しろ」みたいなことが書いてあった。 気がする。 当然のことながらケースバイケースであり、本書でも品質を定義するやり方については書かれていないし、従来の品質管理の手法はソフトウェアに適用できない的なことも書いてある。 内部品質に関しては、ひとつはコードの複雑性、例えば循環複雑度のようなものは計測ツールが色々あるので、なにも決めていない場合はそのあたりから初めて、徐々にチューニングしていけばいいかもしれない。 ある組織においてソフトウェア開発者を評価するとき、外部品質(機能要件、非機能要件含む)が目立つが、内部品質の評価はあまり議論されていない気がする。 外部品質の目的がユーザ体験なら、内部品質の目的は開発者体験、世にいうDXというやつなのかもしれん。 であれば、その観点で評価をするべきだし、まさに技術的卓越性が評価観点になること、端的には「技術力」で評価されることは一定納得がいく。 リファクタリングのモチベーション もちろん機能拡張や改良のコスト削減に寄与することが前提。 それに加えて、一開発者の視点でもモチベーションになりうる。 コードのリファクタリングは、コードを書くときにしてはいけないこと、代わりにすべきことを学ぶ上で最速の方法のひとつなのだ。 227 ソフトウェア開発において、大なり小なりリファクタリングのスキルは求められる。 自分の体感とも一致する。 一発目に書いたコードをそのままプッシュしてプルリクエストを作成することはほぼない。 自分の場合、まずテストコードを書いてからテストをとおすコードを書く。 その時点ではテストをとおすことを考えていて、コードの品質については考えていないので、ひどいコードになっている。 それをある程度リファクタリングする。 そういえば、かの名著『リファクタリング』の第2版が出ているが、まだ読んでいない。 と思ったらもうすぐ邦訳が出そうな雰囲気なので、折に触れて読んでみる。 まとめ 原題の『Beyond Legacy Code』のほうが好きで、日本語の「脱却」とは少し違うニュアンスを感じる。 「うぅ…抜け出したい…」よりも「我々の戦いはまだ始まったばかり!」みたいな。 始まっていきましょう。 kyabatalian.
次の