こんにちは。エンジニアの廣瀬です。
このブログでお伝えし続けている通り、クラシコムでは「北欧、暮らしの道具店」とその運営を支えるシステムを社内で開発(内製)しています。僕が入社してからも、カート画面の改善やスマートフォン向けアプリのリリースなどを行ってきました。
一方で、インフラやCI/CD環境の整備、分散したアプリケーションの統合など、お客様やオペレーションを行う社内のスタッフからは見えない部分の改善、いわゆる「技術的負債」の解消、内部品質の向上にも取り組み続けています。
なぜ内部品質の向上に取り組むのかといえば、一般的には、@t_wadaさんが『アジリティを支える品質特性』などの講演で言及されている通り、サービスや組織が変化に適応し競争力を維持し続ける上で、事業を支えるソフトウェアの保守性・変更容易性といった内部品質が大きな役割を果たすからに他ならないと思います。
(『アジリティを支える品質特性』より)
けれども「北欧、暮らしの道具店」は、アプリのリリース以降、サービスの機能という面では目に見える変化がそこまであるわけでもなく、ECとしてはある程度の形が構築できているように思えます。それでも内部品質、とくに変更容易性というものは本当に重要なのでしょうか?僕は、重要であり、我々の事業にとって不可欠なものだと考えています。むしろ変更容易性こそが、我々が作るシステムにおいて最も重要な特性だと考えています。
(変更容易性とは何か、についてはそれはそれで考えるべきことがたくさんありますが、ここでは「ソフトウェアに対して必要な変更をストレスなく行えること」という意味で考えたいと思います)
ソフトウェアは動かし続けるだけでも劣化する
まず、たとえサービス自体に何の変化が無かったとしても、システムがクラウドをはじめとしたプラットフォームやOSSの上に成り立っている以上、それらの変化への追従から免れることはできません。バージョンアップに対応できなければセキュリティリスクを抱えることになりますし、提供が終了されるものがあれば乗り換えない限りサービスを存続させることもできなくなります。
それだけでなく、ウェブやアプリであればブラウザ・OSも変化していきます。プライバシーに関連する領域のようにプラットフォームの方針や法規制の変化に影響を受けることもあります。我々は自分たちだけで事業を行っているわけではないので、たとえば決済や物流にまつわる対応も発生します。そして(有り難いことに)お客様が増えていけば、求められるパフォーマンスだって変わっていくことでしょう。
同じシステムを動かし続けるだけでも、同じように動かし続けるためには、必ず何らかの変更を行なっていかなければならないのです。
ワークスタイル、ライフスタイルとの両立
サービスを継続するだけでもそれを支えるシステムを変更していかなければならないわけですが、変更容易性が低く、何を変更するにしても重荷になるような状態であったとしたらどうすればよいでしょうか。その場合、それでも対応できるだけの人員を確保するか、それができなければ残業をしてでもとにかく頑張って対応していくか、いずれかを選択せざるをえなくなります。
勿論、もっともっとエンジニア・デザイナーを増やしていきたいとは考えています(絶賛募集中です!)。それでも、自分たちがどういう人と働きたいか、そしてその人がクラシコムでの仕事にやりがいを感じられそうか、という点を妥協してでも人を増やしたいわけではありません。単に「〇〇ができる」というスキルだけではなく、我々がやりたいことや抱えている課題に興味を持ってくれる方、ワクワクしてくれる方と一緒に仕事がしたいと考えています。そのスタンスはカジュアル面談を入り口とした採用プロセスにも表れているかと思います。
また、クラシコムでは、エンジニア・デザイナーも例外なく、すべての従業員が原則として残業をしません(よく面談で「本当ですか?」と訊かれるのですが、本当ですよ!)。クラシコムのミッションである「フィットする暮らし、つくろう。」は、お客様だけでなく従業員の「フィットする暮らし」をも含んだものであり、過去に代表の青木が以下のように記しています。
自由で、平和で、希望のある会社が、お客様のフィットする暮らしづくりをする事業を展開し、そこで働く人のフィットする暮らしをつくる土台となり、この世界でそういうライフスタイルを送る事が可能である事を内外に示し、「人生には全うする価値がある事を証明」し、それを持って「希望の裏付けを増やす」事にささやかに貢献する事を目指す。
(「クラシコムのミッション、ビジョン、バリューメモ」より)
お客様に対してどれだけ価値を提供できていたとしても、その裏で疲弊している人間がいるようでは、逆に「“そういうライフスタイル”を送ることは難しい」あるいは「“そういうライフスタイル”は誰かの犠牲を必要とする」ということを示してしまうことになります。だからといって従業員の方だけを見て、お客様に対して何も価値を提供できていなければ(ここで言えばソフトウェアに必要な変更を行っていくことができなければ)本末転倒であることは言うまでもありません。
(ちなみに「フィットする暮らし」とは何ぞや、という点については、社員である自分も「何ぞや?」と問い続けている言葉なので、何となくは分かっているつもりではあるもののハッキリと説明することは難しいのですが…。店長は「ほかの誰かではなく、自分のモノサシで満足できる暮らし」と表現しています)
お客様に価値を提供し続けていきたい。けれどもいたずらに人を増やすことはしたくないし、自分たちを犠牲にするやり方では意味がないーーそんな理想に近付くために必要なものが、ソフトウェアの変更容易性だと思うのです。我々が、我々らしい働き方で、ソフトウェアを用いてサービスを継続的に提供していくためには、何よりもまずその変更容易性こそが不可欠だと思うのです。
そもそもただ継続させたいわけじゃない!
はじめに「目に見える変化がそこまであるわけでもなく」と書きました。でもそれは意図して変化してこなかったわけではありません。まさに変更容易性が低いがために、変化させたくてもさせられなかったという面もあります。「ECとしてはある程度の形が構築できているように思えます」とも書きましたが、僕個人は「北欧、暮らしの道具店」がいわゆるECのままであることは勿体無い、ぶっちゃけて言うと「つまらない!」と考えています。
「北欧、暮らしの道具店」は、もっと、様々な可能性があるサービス、プロダクトだと思っています(僕は入社以来、折に触れて「北欧、暮らしの道具店」のことを「ECではない」と述べてきました。この話については機会があればまたどこかで書きたいと思います)。だからこそ、継続させるためだけでなく、今後も変化させていけるように、技術的負債の解消、内部品質の向上に取り組んできたわけです。
(2018年、2019年、2020年…今年もこの場を借りて言わせて頂きます)
ただでさえ安定して動かし続けるだけでも大変なことではあるのですが、それでももっとサービス、プロダクト自体を変化させていきたい。前述の通り、単純に人数や時間で解決するようなアプローチは我々のやり方と相容れません。よってますます、ソフトウェアの変更容易性を高めていくこと、そして変更容易性が高い状態を維持し続けていくことが、我々が作るシステムには求められていると思うのです。
「素敵なお店」をつくる技術力
変更容易性といっても、当然のことながら簡単に手に入れられるものではありません。必要なのは「変更しやすいように作ろう」みたいな気持ちなんかではなく、要求される仕様を実現しながらも、アーキテクチャ、設計、実装、すべての領域に渡って「どうあれば変更がしやすいか」ということを洞察し、それを実現する技術力です。(これも詳しくは機会があればどこかで書きたいと思います)
お客様から選ばれ、お客様の期待に応え続けられること。かつ、その開発に携わるエンジニア・デザイナーも、システムを使ってオペレーションを行うスタッフも、お店で働く誰もが疲弊せず、生き生きと働いていること。リアル店舗を持たないお店だからこそ、その状態を実現したままスケールしていくこと。それは確かに「素敵なお店」で、もしかしたら夢のような話かもしれませんが、できそうにないこと、できなかったことをできるようにすることこそがエンジニアリングだと思うのです。
かつてインターネットが普及する前であれば、我々の規模で月間200万人が訪れるようなお店を作ることは難しかったと思います。すでに「北欧、暮らしの道具店」は技術が進歩したお陰で存在することができていると言えます。そこから更に、技術力が無ければ実現できない、技術力があるからこそ実現できる「素敵なお店」というものを、エンジニアとして作ってみたい、世の中に生み出してみたい、と僕は考えています。
(決して技術だけで「素敵なお店」が作れるとは思っていません。けれど、商品やコンテンツ、カスタマーサポートなどと同じように、「このお店が素敵なのはシステムもイケてるから」と言えるような状況になったら面白いだろうな、と考えています)
***
クラシコムには外から見える以上に、技術的に挑戦する場があると思っています(言い換えると技術的に解決しなければならない課題がまだまだ山積みだということです)。少しでも興味を持たれたら、ぜひともカジュアル面談でお話できれば!と思います。