ふんわり放牧

個人の日記です

(職場の)システムの内部の話

昔は実装できるレベルまで考えたことがないから、イメージついてなかったけれど、今となればそれは当然だよねという話。

ちょうど一年前まで、本番運用に耐えられるソフトウェア・システムを書いたことがなかった。 今でもゼロからそれをやれと言われると考えることが多すぎる気がしていて、できる気がしないのだけれど、 仕事としては本番運用中のシステムを調整して、いい感じにするということを業務としている。

既にこの辺の話はインターネットに同僚が書いているのでサラッと書くけれど、 今、開発しているバックエンドシステムは、Mobile環境向け・Webブラウザ向け・社内向け...のように複数のシステム利用環境や用途に対して、それぞれ適当な粒度でWeb APIを作っているという感じ。 裏は一つの仕組みだったり、繋がっていたりそういう感覚。

これ、開発に関わる前はそこまでしっかり考えが及んでいなくて、「一つの口を複数のシステムから叩いているかなー」みたいなことも漠然と想像としてはあった。 まぁそういうシステムも世の中には普通にあるとは思うけれど、Pros/Consはあるはずで、我々の選択としては上記で説明したようなものが妥当であったのだろう。

もちろん、どういうスタイルでもめちゃくちゃ想定外ということはなくて、「システムと思ってたら実は、裏には人がいました」とかそういう類の異常さ*1ではなく、基本的には普通のWeb APIの開発であるから、理解は全然できるし開発業務には入れるんだけれど、そういう細かいところというか、ディテールの部分で理解が及んでいなかったなぁみたいなことを思っている。

似たようなことは学生時代にもあって、ゲーム開発に関わっている人と話していた時に、「セーブデータってどういうふうになっているんですかね」って質問して、 「そりゃ、普通にデータベースがあって......」という反応をされたことを思い出す。 何かしらの状態を管理するんだから、データベースを使うのは妥当だと思うんだけれど、 自分の中では、学校で習う「データベース」と普段から慣れ親しんでいる「セーブデータ」という概念が上手く結びついていなかったのだと思う。

私は1つのプロダクトしか知らないので「これが当然でしょ」みたいな状態になってしまうのもよくない気がしていて、我々からすると当然だが、別のプロダクトに関わってる人からすると異常なことというのが起こっているかもしれない。そういうちょっとした恐怖感みたいなのはある。幸い社内の他のプロダクトを眺めることはできるので、気になるなら調べればいいだけなのだが。でも、それでも社内では当然だが〜というスコープ問題は起きているかもしれない。我々はCTOの口車に乗せられている可能性はある。

思い込みや固定観念などを防ぐためにも、いろんな人が入ってくれるほうがいいんだろうな、みたいなことを採用のためのミーティングに参加しながら思ったし、 「なんでこの(職場ではない)システム、Webからの表示は早いのに、Androidからの表示は遅いんだろ」って出来事で、今や昔のことに思いを馳せていた。

*1:人がいると思ってたら実はChatBotだったとか、途中で入れ替わってるとかは聞いたことがあるな