今回の記事は新型コロナウイルスの影響で普段リモート開発をしていて浮き彫りになった問題点の1つとして「開発側と運用側でコミュニケーションが難しい時がある」といったものがありましたので、その原因として考えられる「IT専門用語が難しくしている」に焦点を当てて、業務中に発生した知ってもらえたら嬉しい用語を(個人的頻出度で)紹介していきます。(かなり噛み砕いていますので厳密で完璧にあっているものではないものもあります)
- デプロイ
頻出度第一位は「デプロイ」です。ほぼ毎日slack上で打ち込んでいる気さえしてくる単語です。開発側が作った制作物を他人にも見てもらえるように反映することです。英和辞書などで調べると「配置する」といった意味がでてきますが、このままだと日常会話で出てくることもないでしょうし、直感的に理解することが難しいですね。もし自分がエンジニアをしていなく、デプロイと聞いたらどこかの国がミサイルでも配置しているのかと思ってしまうでしょう。 - 本番環境 & 検証環境
1位のデプロイと関連しまして、よく使う定番フレーズが「本番環境にデプロイしました。」とか「検証環境にデプロイしました。」です。環境の単語がイメージしにくいのではないでしょうか。
環境は目に見えるものではないので、得体の知れないところにデプロイしましたと言われたところで「どこか知らないけど、反映したことはわかったで。」のような感覚かと思います。この文脈でいう「環境」はサービスが動いているサーバーのことです。本番環境は実際にユーザーが見るサーバーで、検証環境はつくったサービスをいきなり公開にするのは怖いので、社内向けへの確認や動作の確認をするためのサーバーです。
別名で本番環境はプロダクション( Production )環境、検証環境はデベロップメント( Development )環境やステージング( Staging )環境と呼ばれることもあります。
ここまでで、もし「プロダクション環境にデプロイしました」というフレーズを聞いたらそれは「ユーザーが使えるように反映した」のような意味です。 - サーバー & サーバーサイド
こちらは「サーバーが落ちた。」などで聞くと思われます。「サービスが動いている場所」のような感覚でなんとなくわかるけど、具体的にはよくわからない言葉ではないでしょうか。
サービスが動いている場所というのは間違っていないですが、サーバーは英語の[ Server ]から来ており、給仕する人という意味で何かを給仕しているのですが、特定のものに限定されません。アプリケーションを動かす役割をサーブ( serve )していればアプリケーションサーバーで、データベースの役割をしていればそれはDB( データベースサーバー )です。そしてこの例のようにアプリケーションとデーターベースのサーバーが分けられていることもあれば1つのサーバーが両方を兼ねていることもあります。
「サーバーが落ちた。」というのは何かしらの役割を給仕できなくなった状態です。
そしてよくサーバーサイドとクライアントサイドのようなフレーズも見かけるかもしれません。ネットサーフィンしている私たちはクライアント(客)としてサービスを給仕されているのでサービス使用者はサーバーサイドに触れることができません。
サーバーサイドエンジニアはユーザーが触れることができない箇所を開発しているエンジニアです。代表的なサーバーサイドを開発するプログラミング言語ではPHP、Ruby、Python( 当社で使用しているメイン言語 )があります。 - クライアント
クライアントはつまりユーザーのことです。ですがユーザーは人間なので上記のサーバーから来たものを受け取ることもできません。なのでここでいうクライアントはブラウザやスマートフォンのことです。ブラウザとはSafari、Chrome、Firefox、Microsoft Edgeなどで、スマートフォンでは主に知られているのがiOSで動くiPhoneとAndroid OSを載せたものです。それぞれ動作は同じではなく、違いがあります。
ブラウザではサーバーから受け取ったものを解釈してそれを表示するようにしますが開発に主に使用されるプログラミング言語はJavaScriptです。またスマートフォンではiOSならSwift、AndroidならKotlinなどがあります。当社ではブラウザ側ではJavaScriptのフレームワークNuxt.jsとスマートフォンではiOSとAndroid両方同時に開発できるFlutterを採用しています。 - Cookie (クッキー)
業務でなくとも、プライベートでネットサーフィンをしていれば、途中で見かけた人も多いのではないでしょうか。もちろん、甘くて美味しいお菓子のクッキーではありません。そもそもこのCookieは何のためにあるかといえばユーザーの情報を覚えておくためにあります。そしてその保管場所です。
本来はネットサーフィンをしていてもあなたのことをサービスは判断できません。ユーザーAさんがまた同じサイトに訪れてもAさんということはわかりません。データベースに情報を保存してあっても誰かわからないので何を返してよいかはわかりません。つまりCookieがないとあなたが大好きなAmazonでショッピングカートに商品を入れても、カートの商品はそのまま入ったままではいてくれません。それでは困るので、初回のサイトへのアクセス時に使っているブラウザ( SafariやChromeなど )にCookieをサイトは仕込み、今後はCookieが送信されサービスはそれを頼りにあなたを認識してくれます。
他にもあなたが気になる商品の広告が出てくるのもこのCookieが原因です。 - セッション
上のCookieでユーザーを認識してくれると書きましたが、Cookieはサーバーにアクセスした時に持っていれば自動的に送られるデータです。
先ほどの例につづき、ショッピングだったら、何の商品をカートに入れたかを認識するためにあるのがセッションIDです。これがあなたのブラウザのCookieの中に一部として入っており、サービスを利用しているとセッションIDがCookieごとサービスに密かに送られ、サービスはセッションIDを元にしてカートに入れる、外す、購入するなどの利用状態( セッションデータ )を判断しています。
そして例えばログイン済みのユーザーがログアウトすると、以後、利用状態を追いかける必要はないのでセッションIDは捨てられます。この一連の流れをセッションという単位で表します。個人を認識するための値なのでこれはセキュリティの観点からもれては他人に知られてはいけません。
開発中に当社のサービスの1つでイベント申し込みをしたのに申し込み済みになっていない。というケースがあったのですが、こちらのセッションが切れているので申し込みをしたユーザーだと認識できていないことが原因でした。 - Cache (キャッシュ)
こちらも普段、ネットサーフィンをしていれば、見かけたことがある言葉かもしれません。
業務ではよくある問い合わせで開発側が「デプロイしました。」と反映したが運用側では「確認したのですが、変わっていません」です。これはキャッシュが悪さをしているかもしれません。( キャッシュは悪いやつではありません )。
インターネットを利用する上で、同じサイトにまた行くというのはかなりよくあることだと思います。例えば写真が多いサイトは読み込む写真が多いので当然、完全にページを表示するのは文字だけのページと比べれば遅いです。そこで自動的にページの一部のデータを保存しておき、また来た時に、それを利用し早く表示するということをやっています。それのデータの保存場所がキャッシュです。
なのでページの表示が変わっていないというのはこのキャッシュにためられた古い情報を使うとしていることが原因になっていることがあります。なのでブラウザの設定各種からこちらを消せば解決することがあります。
本質的には一度した処理を保存しておき、効率的に再度利用するためのものなので、今回のテーマはビジネスサイドなのでブラウザのキャッシュを取り上げましたが、他にもコンテンツキャッシュサーバーやクエリキャッシュがあります( 興味があれば調べてみてください ) - AWS
AWSはAmazon Web Serviceの略称です。Amazonと聞くとどうしても買い物のAmazonや電子書籍のKindle、映画のAmazon Premiumを想像すると思いますが、実はWebサービスのインフラ( 基盤 )をネット上( クラウド )で提供しています。
AWSはサーバーをネット上使えるEC2というサービスや、データベースのRDS、世界各地に置かれたコンテンツキャッシュサーバーの集合のCDN( Content Delivery Network )であるCloud Frontというサービスなどを提供しています。それを利用することで場所にとらわれずにサービスのインフラを構築することができます。
逆にオフィスにコンピューターを冷却するスペースを用意し、実際に現物のサーバーを購入したりして、設置する方式はオンプレミスと呼ばれたりします。
番外編
- hoge
たまにエンジニアがデプロイしました。と言い確認してみると次の言葉を見かけることがあるかもしれません。こちらはエンジニア達の中では有名なダミーテキストです。実際に使用できる形を想定したデータを用意しお見せするのがいいのですが、もし見かけてもこれはふざけてやっているわけではない可能性が高いです。 - lorem ipsum
こちらもよく使われるダミーテキストです。ダミーテキストなので意味は特になく、仮置きに使われます。少し長めのダミーテキストであり、一般的には
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
として使用されることが多いです。
今回はビジネスサイドに知って欲しい用語を技術的な部分には触れない範囲で紹介してみました。これでみなさんのプロジェクトでのコミュニケーションがより円滑になる助けになれば嬉しいです。また需要があれば更新もしくは続編を出すかもしれません。それでは良い開発ライフを。