![見出し画像](https://assets.st-note.com/production/uploads/images/68546608/rectangle_large_type_2_5b73b6f885ec2aa525f596cb0c30de91.jpg?width=1200)
僕がPortXの開発を楽しんでいる理由
こんにちは。初めまして。
僕は12月からPortXというプロダクトを開発しております。PortXは国際貿易の見積査定業務を自動化するエンタープライズ向けのプロダクトです。
今日は、僕がPortXの開発を楽しいと思っている理由を整理してみたいと思います!
設計力が試されるプロダクトだということ
僕は前職で受託開発をしておりました。その会社でエンジニアを始めた頃は、ほとんど設計論を知らないままにシステムを作っていました。結果として、この手で、たくさんのファットコントローラーや、技術的詳細に汚染されたビジネスロジックを生み出してきました。
このままだとコードを書くのが楽しくない日々が続くと思い、設計論を勉強するようになりました。設計論を読むと、それまでに脳内に溜まっていたアンチパターンがきれいに整理されており、時々に応じた解決策も提示されていて、非常に感銘を受けました。それ以降、設計論を読んでは、実務で使う、使いすぎたくらいでまた新たな問題に直面し設計論に戻るという学習のサイクルが始まり、そのサイクル自体を楽しめるようになりました。
そんな設計論にハマってしまった僕にとって、PortXが対象とする問題領域はとてもおもしろいです。データやビジネスロジックがあちらこちらに散らばっていて、カオス状態ですが、これをソフトウェアに落とし込めたらどんなに嬉しいだろうかと考えてしまいます。エリック・エヴァンスのドメイン駆動設計で、複雑なソフトウェアの例として、貨物輸送サービスが出てきますが、まさにあそこに登場するオブジェクトやビジネスロジックがPortXが対象としている問題領域です。
この時代にエンタープライズ向けのSaaSをやることの意味
僕が読んできた設計論は2000年台初頭に書かれたものが多いです。
例えば、エリック・エヴァンスのドメイン駆動設計が世に出たのが2003年です。現代のWebアプリケーションフレームワークの設計に大きな影響を与えているPATTERNS OF ENTERPRICE APPLICATION ARCHITECTUREも2003年に発売された本です。この時代に、エンタープライズ向けのソフトウェア開発の歴史が始まったと言えるでしょう。
2000年代前半は、ハードウェアの性能がビジネス要求に追いつき、技術者が市場に増えてきたのが伴って、エンタープライズ向けのソフトウェアプロジェクトががんがん立ち上がっていた時代です。しかし、当時のソフトウェアプロジェクトは、天才頼りになっていて、再現性が低いものでした。
現代のエンタープライズ向けソフトウェア開発は、2000年台初頭とは大きく様相が変わりました。
ユーザはTwitterやYouTubeのような使いやすさを求めますし、市場の変化は速くなりましたし、ソフトウェアに関わる技術の進化も速くなったので、プロダクトに求められる水準は高くなりました。
一方では、マーチン・ファウラーやエリックエヴァンスの設計論を読めますし、AWSやGCPにコンテナをデプロイして飼い慣らすことができますし、DockerやCircleCIやDatadogといったサードパーティのツールが使えます。
また、クラウドや仮想化技術、セキュリティ技術の進歩によってSaaSというソフトウェアの提供モデルが可能となりました。SaaSを利用するユーザ企業が最初に大きくリスクをとる必要がなく、その提供価値に見合った金額を月単位で払うことができますし、いつでも辞めることができます。SaaSベンダーは、多数の企業から月額でお金をいただきながら、機能追加や改善を行い、その提供価値が大きくなるにつれて金額を引き上げることができます。また、SaaSベンダーは複数企業を相手にするため、より汎用的で本質的な問題解決を行います。
この時代にエンタープライズ向けのSaaSを開発するにあたって、ソフトウェア開発の天才である必要はありません。
一方で求められるのは、世の中にある膨大なデータから、チームやプロダクトにとって有益なものを抜き出し、整理し、うまく組み合わせることです。
膨大なデータと向き合うためには、単純に学習能力が大事になります。例えば、本を読むのが苦じゃない、新しいことを勉強するのが苦じゃないという人が向いていると思います。
膨大なデータから有益なものを抜き出すためには、そのデータにおける文脈と、自分達がいる文脈を理解している必要があります。例えば、2000年代初頭に書かれた設計論をその時代の文脈とともに理解し、現代のソフトウェア開発の文脈と照らし合わせてこの時代に最適な判断をする必要があります。
データを整理し、うまく組み合わせるためには、複数の分野における原理原則を理解する必要があります。例えば、SaaS開発においては、設計や開発のプラクティスだけでなく、対象とする業務フローや業界、商慣習、法律への理解がとても大事です。
僕は残念ながら天才ではないものの、本を読むのが好きだったり、様々な分野(文脈)に興味があったり、分野横断的な活動が好きです。
PortXの開発は、業務フローが複雑だったり、電子帳簿保存法が関わってきたり、3PL・船会社・集荷トラック会社それぞれが異なる文脈を持ってたりします。将来的に、物流業者の与信を計算するといったことも考えています。
こんなにたくさんの文脈が関わっていて、知的好奇心が満たされる場所は滅多にないですよね!そういう点が、僕にとってはめちゃくちゃ楽しい要素です。
最高な環境
とはいえ、僕は海運業界や物流業界で働いたことがないので、業務フローを深く理解するのは難しいです。
エリック・エヴァンスのドメイン駆動設計(僕がこの本が好きすぎて本記事3回目の登場です笑)に書いてある通り、エンタープライズ向けのソフトウェア開発においては、業務を深く理解したドメインエキスパートをプロダクトチームに引き入れることが重要です。ドメインエキスパートと開発者は、共通言語を用いた問答を繰り返すことによって、ソフトウェアのあるべき姿を炙り出していきます。
PortXの開発では、熊本さんという元通関士の方に関わってもらっています。実際、僕は、先週だけで熊本さんと3回ほどミーティングを行い、業務に関するあれこれを聞きました。これはエンタープライズ向けのソフトウェアを開発している者にとっては最高な環境です。
また、PortXはALL STAR SAAS FUNDさんから出資をいただいております。ALL STAR SAAS FUNDさんは、SmartHRさんや、アンドパットさん、ログラスさんなど、素晴らしいSaaSの会社に投資されておられます。ALL STAR SAAS FUNDさんからは出資先の企業に対して、SaaSの知見が集まるNotionが提供されており、いつでも見ることができます。最高ですね、、
また、個人的な話ですが、前職にいる時からALL STAR SAAS FUND前田ヒロさんのPodcastを聴いていて、毎回新しいエピソードが出るのを楽しみにしていました。さらに個人的な話ですが、ログラスの松岡さんがドメイン駆動設計(4回目の登場笑)に関する有益な知見をインターネット上で発信されているのをずっとウォッチして勉強させてもらっていたりします。SmartHRさんやアンドパッドさんの技術ブログもよく参考にしています。
そんな感じで、ALL STAR SAAS FUNDさんや、その周りのエコシステムに、勝手に親近感を抱いております笑。
そんな最高な環境で、チャレンジができるなんて、僕にとっては夢のようです!
Shopifyへの憧れ
僕がPortXの開発を楽しいと思っている最後の理由は、Shopifyへの憧れです。
僕は前職で、Shopifyアプリ(拡張機能のようなもの)の開発案件に携わったことがありました。
Shopify APIのクライアントとして、OAuthトークンを取得し、エンドポイントを叩くわけですが、その開発者体験が異常に良かったのです。APIが明確な上に、ドキュメントが読みやすく、メタフィールドなどの機構を使えばカスタマイズも柔軟にできる。それらが1つのアプリケーション基盤として成立しているというのは、すごいことだと素直に思いました。また、来年にはShopify FlowがShopify Plusでなくても使えるようになり、壮大なオブジェクト指向設計が始まります。それによって、ストアオーナーは既存のアプリを組み合わせることで無限の可能性を手にします。
Shopifyは、開発者やストアのエコシステムを大事にしており、本来は自前で開発できるものを開発していなかったりします。あくまで自社の提供価値をコアAPIと決済システムの提供に限り、エコシステム全体が強くなるようなシステムが志向されています。
また、Shopifyのイベントも、、、
Shopifyの素晴らしさを語ると止まりません笑。
Shopifyの戦略がPortXにも適応できるかはわかりませんが、顧客への提供価値を最大化するということが徹底的に考えられていて、それが全てのインターフェースに滲み出ている点は見習いたいなと思います。
僕は幸運にも、PortXというエンタープライズ向けのソフトウェアをゼロから設計・開発できる場所にいます。僕がShopifyの開発をしているときに良い感情を抱いたように、PortXに関わる人にも良い感情を抱かせるようなインターフェースを目指したいなと思っています。
まとめ
まとめると、僕がPortXの開発を楽しいと思っている理由は以下の4つです。
- 設計力が試されるプロダクトだということ
- この時代にエンタープライズ向けのSaaSをやることの意味
- 最高な環境
- Shopifyへの憧れ
楽しいという感情の背景には、その人の生まれ持った性格や過去の経験が複雑に関係していると思います。僕とは違う視点でPortXの開発をおもしろいと思う方もいるかもれません。
あなたが、少しでも「PortXの開発、楽しそう!」と思ってくださったなら、一度気軽にお話ししたいです!
その後、良ければ一緒に素晴らしいプロダクトを作りませんか?
yu_tomori@japanfuse.com までご連絡ください。
この記事が気に入ったらサポートをしてみませんか?