【開発手法】常々Webアプリの開発環境が何を指すか統一されればいいなと願っておりますが、短期的には現場で混乱しなきゃいいかなと思ってます

に公開

はじめに

https://zenn.dev/noranuko13/articles/b30c8ed65e8e27

対象

  • 開発環境と聞いて、どの環境か分からなくなるITエンジニア向け。

ほにゃらら環境まとめ

ローカル環境

ローカル環境というと誰にでも通じる。間違いない。

開発者の誰かのPC上に構築された環境です。URLでいえばlocalhostが含まれています。恐らくこの呼び方を知らない現場の方もいると思います。一部の現場ではローカル環境呼びが主流のようですが、どこから由来するものかは良く分かりません。

ちなみにIT用語辞典にもローカル環境はありません。ローカル、テスト環境、本番環境はあります。恐らく正式な呼称ではないものと思われます。

開発環境

Development Environmentといえば開発環境です。IDEや実行環境など開発用のツール類がインストールされていて、開発者が実際にコードの修正を行う環境を想定していると思います。

開発環境(development environment)とは、機器やソフトウェア、システムを開発するために必要な機材やソフトウェアなどの組み合わせ。また、それらを組み合わせて構成された、開発者の作業環境。
開発環境とは?意味を分かりやすく解説 - IT用語辞典 e-Words

https://e-words.jp/w/開発環境.html

README.mdの構築手順を見ても、公式ドキュメントを見ても、Development Environmentと書いてあると思います。呼び方に正解があるとすれば開発環境でしょう。

ローカル開発環境

名前が合体しました。Local Development Environment、ローカル開発環境。開発者のPCに構築した開発作業ができる環境です。

凄いですね。何でもありますね、『「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典』。

その他の環境

ステージング環境がないことはあります。ステージング環境がなくても、検証環境があるとか。

テスト環境は自動テストが動く環境、CIを動かすGitHub ActionsやCircleCIなどの環境を指すことが多いです。また開発者のPC上でテストを動かす環境を、部分的にそう呼んだりする場合がありますが、頻度は多くないです。

本番環境はどこも本番環境呼びでしたね。しかし本番環境が複数ある場合、用途ごとに別名が付くことはありました。商談で使用する営業環境、イベントで使用するデモ環境、◯◯社様専用など。間違える心配はないので、特別な環境名が付くのは問題ないでしょう。

定義の齟齬が招く開発環境の罠

開発環境と呼ばれるサーバーが存在する

単刀直入に申しますと、Gitリポジトリのdevelopブランチが随時デプロイされる、最新の環境を開発環境と呼んでいる現場がいくつかありました。参画したプロジェクトでどうも話が噛み合わず、よくよく定義を確認してみると。

  • 私(開発者がローカルのPCに作った環境のことをいってるんだな)
  • 先方(開発の最新の状態をデプロイした社内の環境のことをいってるんだな)

という奇妙な状態が発生していた次第です。

識者の中には、このサーバーでしか行えない開発作業があって、直接修正やコミットを行うことがあるのだろうと思った方もいるかもしれません。しかしそのような作業が発生しない場合でも、開発環境と呼ぶ現場があるのです。インフラはECS、VPS、レンタルサーバーなど多種多様。

一体何がどうなって、そうなったのか。もしご存知の方がいらっしゃいましたら是非。予想では中途半端に略してしまったか、過去前述のような開発作業をしていたかだと思うのですが。developブランチからきてるのも大きい気はしますが、mainブランチのこともあるでしょうし。

しかしよく調べてみると、英語でも似たようなやり取りがあったり。

https://www.reddit.com/r/devops/comments/z02e3b/comment/ix45dq4/

参画者の学習コストと翻訳コスト

これまで確認してきた通り、開発環境といえば開発者が開発作業を行うPCの環境のことを指すのが主流です。定義からいえばローカルPCでも専用の別サーバーでも、開発作業を行う場所であれば開発環境と呼んでも良さそうな気はしますが。

ここで何故問題が起きているかに立ち返ると、同じ単語で全く別の環境を指す用語が存在してしまっていることです。

私はもう慣れましたが、最初のうちはいちいち頭の中で翻訳していて面倒でした。それで一瞬思考が持っていかれるので、脳内CPUの使い方としてもあまりよろしくないです。ローカル環境を開発環境と呼んでから訂正したり、逆もまた然り。

『開発環境』という用語が識別できるのが社内限定で、その範囲がポータブルなスキルの領域に至り、ややこしい重複に発展するのは賢いとはいえない気がします。情報の一意性については以下の記事で解説していますので、よろしければ。

https://zenn.dev/noranuko13/articles/6294a4d9817600

では何と呼ぶべきか

もちろん私だけで決めることはできませんし、決めたところで普及する余地もありません。そんなに簡単に解決する問題なら、「ヤードポンド法は滅ぼさねばならない」なんて世の中割れたりしないでしょう。

しかし記事として投げっぱなしで終わる訳にもいかないので、どう呼ぶべきかいくつか提案してみます。

  • 開発サーバー・ステージングサーバー・本番サーバーなど、サーバー呼びに改める。
  • 社内検証環境・検証環境など、あくまで検証環境と呼ぶ。
  • 開発最新環境・最新環境など、別の名前を考える。

サーバー呼びは明確に区別できそうです。環境構築以外の文脈において、ローカル環境のことを開発サーバーとは呼ぶことは少ないですから。しかし開発環境がサーバーな現場だと混乱しそうですね。Redditには「私の開発環境は本番サーバーです(キリッ」してた方がおられましたが。

https://www.reddit.com/r/devops/comments/z02e3b/comment/ix5ufez/

検証環境はなかなか良いと思う反面、サブドメインや英名をどうするか。Testは使えませんし、QAだと既存の試験環境と被るところもありそうです。最新環境だと最早、何の最新か分かりませんね。

素直にローカル開発環境と呼ぶのが近道な気がしてきました。これも予想ですが、恐らく10年後もこの問題は解決していないでしょうね。

大事なのは相手に伝わること

新卒入社して特定の会社一筋だと、こういった落とし穴に気づきにくいと思います。こうして記事を書きましたので、少なくとも『開発環境』という単語が何を表現するか、現場によって異なるということは周知できたと考えています。

つまり迎える側も参画する側も、準備ができるということです。

迎える側の準備としては、Wikiに環境一覧を整備する、チーム内で呼称を統一するなど可能でしょう。たまに人によって呼び方が違うことがあります。今の呼称がややこしいと思うなら、サブドメインや呼称の変更をするのもありですが、稼働年数やコストと相談で。

参画する側の準備としては、参画した後に環境一覧を確認する他、環境構築を通していわゆるローカル環境が何と呼ばれているか把握するなどです。そもそも現場によって呼び方が違うことを理解し、郷に入っては郷に従えで対応するのが無難です。

おわりに

伝わればよいのだぁ。

Discussion