はかせのラボ

私の頭の中を書いていく雑記ブログです

雑記 開発環境の構築が開発において一番難しい説

あいさつ

どうも、はかせです。

本当は今日はUE4の進捗を上げたかったのですが、
上げられないので雑記です。

環境が変更されたってのと
なぜかプルできない問題に直面し作業時間が無事死亡いたしましたw

さてそんな感じの背景があったのと
昨日まで参加していたJPHACKSでも
開発環境でちょっともにょったので
そこらへんの所見というかそんな感じのこと書いてきまーす。

開発環境とは

一口に環境と言っても
色々あって全部書くのは辛いので
ここでは
ゲームの実行ファイルの作成環境
に限定して書いていきます。

要はUnityやらUE4やらって話ですね。

環境作るのって本当大変

開発環境作るのって大変です。
はい。本当。タイトルにも書きましたが
開発において一番難しいまであると思っています。

厳密に言えばチーム開発で
チームメンバー全員で同様の環境を構築し
その環境を開発が進むにつれて正常にアップデートし続けること

かなり難しいです。

というのもですね、

「Unityをぶちこめば完了です」

ならまぁ割とすぐどうにかなるんですけども
「Unityを入れて次に○○を入れてその後に依存関係が・・・」
ってなってくると途端に死に始めますw

あと
「今まで○○だったけどこれからは△△にするから」
これもかなり死臭がしますね。

環境ってのはどこまで行っても
インストールしたソフトウェアの組み合わせになってくるわけであって
その噛み合わせがどっか悪いと途端に動かないとか他の環境では出ないエラーとか出てきます。

環境構築のために新しく入れたソフトウェアもそうですし、
予め入ってるソフトウェアとかも、もちろん噛み合わせの対象になります。
(WindowUpdateはぬるさん)

もちろん人間の脳みそで全てのソフトウェアの有無やら
依存関係、パスの通し方etc...を
完全に把握しきるなんてのは土台無理な話です。

なのでそういったものを管理するソフトウェアやら
インフラエンジニア様がいらっしゃるわけなんですけどね。
いや本当にインフラエンジニア様様です。
もし直接お礼が言えるなら言っときましょうね。

難しい環境構築をどうする

このまま

あれが難しい
これが難しい
マジふぁっきん

って書き続けるの簡単なんですが、
それではさすがに生産性が無さ過ぎるので
じゃあこの難しい環境構築を少しでも楽にするためには
どうするべきかみたいなところも少し書いてみたいと思います。

ちなみに私はインフラエンジニアどころか
プロのエンジニアですらないので、
あくまで素人意見として
「あぁこんな考え方するやつもいるのね」
程度に見てください。

さてでは素人意見をつらつらと書いていきますよ。

私の意見は極めて単純で
それぞれ必要最低限の環境を用意するだけにすればいい
って感じです。

「開発環境が異なったらマージとかがうまく行かないじゃないか」
「作業を一人でやれと?」
「ふぁっきん」

こんな感じの声が聞こえてきそうですね。

でも考えて見てください。
全部の端末で最終ビルドしますか?
おそらく一部の最終ビルド用の端末以外は
自分がかかわるごく一部の機能さえ動けば
開発とそれにかかわるマージは可能なはずです。
(実際JPHACKSではそんな感じで最終的な環境は一台のみに構築した)

ようはこんな感じでマージしてけばいいのではないかと
f:id:hakase0274:20191028201152p:plain

確かに環境がそれぞれ微妙に異なる部分が生まれるので
直移植はできないですが全ての端末で同一の環境を用意しようとして
バグり続けるぐらいならマージやビルドは別端末でやるっていう解決の方が
現実的です。

それに環境がでかくなればなるほど
ビルドが長くなるだのバグが追いにくいだの
何かとめんどうが起きてきます。

それなら環境は必要な最低限度のものに抑えてしまったほうが
そういっためんどうもないし環境作るのも楽になるしで
良いのではないかなという感じです。

あとがき

今回は環境構築やらマージやらでもにょる問題を
素人目線からどうにかできないかと考えてみた話でした。

もしかしたらこの記事で書いた内容が
既に試されてポシャってるかもしれませんし
逆もあり得るかもしれません。

ただこの形ないしは類する形で
環境を最低限にできれば
かなり変なバグに遭遇する率が減ると思うんですよね。
(メモリが足りないとかメモリが足りないとかメモリが足りないとか)

実際の現場では環境構築問題をどうやってるんでしょうね。
そんなことが気になる最近でした。

今回の記事が良ければスターやコメント等よろしくお願いします。
それでは今回はこの辺でノシ