Tomorrow Will Be A Better Day

Published

- 14 min read

システム運用で必要な勘所は、Factorioで教えてもらった話

img of システム運用で必要な勘所は、Factorioで教えてもらった話

本記事の投稿背景

1月にIncident Response MeetupのツイートとRegional Scrum Gathering Tokyo 2024の資料を眺めていたら、久しぶりにFactorioの文言を見つけました。

懐かしくなったので、大分昔にプレイしたFactorioの思い出を書いてみようと思ったのがきっかけです。

ちなみに、記事の前提として、著者は一応何度かクリアはしていますが、最近は起動すらしてなかったですし、Factorioのプレーヤーとしてはシングルプレイしかしてませんし、マルチサーバーを立てたこともないので比較的ライトなユーザーになります。

世の中にはFactorioにかなりの時間をつぎ込んでいる方や現在も遊んでいる方もいるので、正直ビクビクしながら記事を書いてみます((((;゚Д゚))))

ただ、Factorio自体はすごく面白いゲームで、IT業界でシステム運用に関わる方なら、「あー、このゲーム要素、システム運用のあのケースっぽいなあ」って感じることがいくつかあるので、IT企業で複数の方がオススメしているのも納得です。

ということで、本記事ではFactorioプレイ未経験の方向けに、Factorioとシステム運用の関連性あたりを書いてみようと思います。

Factorioとは

Factorioは2016年にSteamで早期アクセスで配信開始となったゲームで、2020年に正式リリースされたリアルタイムストラテジーゲームです。

2024年現時点ではWindows/Mac/Linuxでプレイ可能で、日本語にも対応しています。現在はNintendo Switchでも配信されています。

Factorio(Nintendo Store)

また、数年前だと、エンジニアの採用試験に使われたり、研修に使っていた企業もありました(注:現在もやっているのかは不明です)

著者は2016年の早期アクセスのタイミングで購入したので、本記事中に感じたほとんどの内容が2016年にプレイしたときの記憶になります。

とはいえ、2024年の現在でも基本のプレイ要素は同じで、

最近だと、2023年11月にさくらインターネットの前佛さんが、「ITエンジニアにおすすめのFactorio御紹介」というスライドを公開していました。

ゲームのスタートとゴール

実際のゲーム画面としては、以下のような感じです。

Factorioの詳細なプレイルールは、他のサイトでの紹介にお願いするとして、Factorioのスタートは以下のような状態から始まります。 スタート ゲームのストーリーとしては、プレーヤーが乗っていた宇宙船が墜落してしまい、とある惑星に不時着してしまいます。

不時着から生き残ったプレーヤーは、その惑星にある様々な資源を使って、脱出用のロケットを建造し、発射させることでゲームクリアとなります。 ゴール ただ、ロケットが不時着した状態からいきなりロケットを作れるのではなく、下記の図のように、「ロケットを作るには電池が必要で、電池を作るにはエンジンの開発が必要で、エンジンを作るには…」というように、様々な開発技術を進化させていく必要があります。 技術 ゲーム序盤は、鉄鉱石を掘り出して、そこから鉄板を作るような段階から進めるので、ロケットを作るまでには漫画Dr.STONEのように技術進化のステップを一歩ずつ辿っていくことになります。

Factorioとシステム運用

Factorioの最低限のゲームルールを紹介したところで、本記事の本題であるFactorioとシステム運用の関係性について、4つの視点から書いていきます。

1.目標設定

先の章で記述した通り、ゲームの最終ゴールは、ロケットの開発&発射なのですが、そこに至るプロセスによって、ゲーム内で様々な実績が解除されていきます。

実績

「8時間以内にクリア」してみたり、「ソーラーパネルを使わずにクリア」にチャレンジしてみたり、プレイ開始時の目的によってプレイ内容が異なったり、途中で目的を変更したりすることも自由です。

これは、プロジェクト内で数々な制約を受けつつ、システム構築における要件を満たしていく過程を疑似体験しているような学びを得ることができるのではないでしょうか。

2.資源調達と開発/運用

Factorio内の生産物は、いくつかは自分でも作っていくことができます。

ただ、ゲームを進めていくと、「Aに必要な素材はBとCで、Bを作るにはDとEとFが必要で、そのすべての原材料をプレイヤーが持っておくにはインベントリ(プレーヤーが持ち運ぶカバンのようなもの)の上限を超えてしまう」といった事態が発生するので、各種の生産工場を準備したり、輸送ベルトで別の場所へ生産物を運んだりする必要があります。

開発

そのような生産工場や生産物の輸送経路を開発していくと、最初は一画面に収まるような生産工場がどんどん広がっていき、ゲーム終盤となると、最初の方に開発を進めていた資源の採掘場所では資源が枯渇し、別の土地に資源を求めに旅をしていく必要も出てきます。

さらなる資源を求めて別の土地へ旅をするプレーヤーは、あたかも自社内の経営資源が枯渇して、資金調達先を探し回っているベンチャー企業のCEOのようですし、限られた資源と土地の中で効率的な生産ラインを構築するのは、システム内における複雑なデータ構造を把握しつつ、安定したシステムの開発/運用業務を行っているエンジニアのように感じることができると思います。

3.障害対応

また、運用を続けていくと、現住生物の攻撃や、環境の変化によって、システムが障害を起こすこともあります。 攻撃 上記の画像のように、システムに対して現住生物から攻撃が行われ、運用しているシステムが破壊されることもあります。

アラート また、上記の画像のように、即時対応が必要でないものの、システム内からアラートが発砲されることで、現在稼働中のシステムで問題が発生していることを知ることができます。

Factorioにおける障害対応は、あたかもシステム運用中に障害が発生したインシデントに対処するような感覚を経験することができます。

最初は障害に対する復旧が即時にできたとしても、徐々にシステムが拡大していくと、システムが大きく破壊された後にプレーヤーが到着することになったりするので、事前に障害を防ぐための対策を行うことが重要になってきます。

このような障害対応を何度も経験することで、システム運用時に外的脅威に対して防御が弱い部分や、復旧が大変な設備において、セキュリティ対策をしっかりと整えておくことがどれほど重要なのかを学ぶことができます。

4.リファクタリング

前述したように、Factorioのゲームを進めるにあたって、システムはどんどん拡大していきます。

その際、ゲーム序盤で構築した自動化経路が、中盤後半になると、時代遅れの技術を使っていて、そこがシステム全体のボトルネックになってしまったりといったことが発生します。 リファクタ

ボトルネックになってしまった場所がシステム全体の生産速度を下げてしまうことにもなるので、可能な限り新しい技術を使った要素に置き換えていくことが重要になってきます。

ただ、そのリファクタリングにかけられる資源は有限ですし、リファクタリングばかり行っていると、本来の目標となるロケットの開発が遅れてしまうので、リファクタリングのタイミングを見極める必要があります。

これは、すべての最新技術がシステム構築/運用において、ベストな選択肢とは限らず、全体を俯瞰して、どこにリファクタリングのリソースを割くべきかを判断することが重要であることを学ぶことができます。

また、システム運用初期に、システムの拡張性も考慮に入れて、土地や資源を広く使用してしまうと、リファクタリングにかける資源が大きくなってしまったり、逆に土地を限界ギリギリまで近づけて生産ラインを作ってしまうと、加工した生産物が別の生産物の素材になったりといった、ゲーム後半のシステム要件に対応するときに、かなり複雑な生産ラインを作る必要が出てきます。

そのため、システムを運用する際に、リファクタリングの余地をどこまで残しておくのか?効率的に資源を活用するには、どこまで並行生産するラインを準備するのか?というシステム設計が重要になります。

さいごに

本記事は、Factorioとシステム運用の関連性を

  1. 目標設定
  2. 資源調達と開発/運用
  3. 障害対応
  4. リファクタリング

の4つの視点で書いてみました。

若干こじつけ感もありますが、Factorio自体はIT業界でたまに話題になるゲームなので、IT業界で仕事をしていて、Factorioをプレイしたことがない方は、ぜひプレイしてみるのをオススメします。

ただ、複数の方が書いていますが、無限に時間が吸い取られる中毒性のあるゲームなので、くれぐれも用法用量を守ってプレイしてください。

それではまた。