SEが、React／Vue.js・NoSQL・マイクロサービスなシステムに使えるバックエンドクラウドサービスを開発した話。あるいは、ビジネスと新しいテクノロジーをどうバランスさせるのか。

岩崎英俊といいます。文系学部出身の元SEで、今どきのシステム開発のためのバックエンドクラウドサービスを開発・提供するHexabaseという会社の代表をしています。

サービス名もHexabaseと言いまして、ReactやVue.js、NoSQL、マイクロサービスなどを使った今どきのシステムを効率よく高品質で開発できるサービスになっています。

この記事では、私がシステムエンジニアとして考えていたこと、Hexabaseを開発した経緯を紹介します。

人的なマネジメントというより、ビジネスと技術のバランスをどうとるかという広義のマネジメントの話になっています。

# システムエンジニアの役割

ひとくちにシステムエンジニアといっても範囲が広く、やっていることも人によって違っています。

Wikipediaでは[**システムエンジニア**](https://ja.wikipedia.org/wiki/%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2) を、次のように説明しています。

```
システムエンジニア（略称：SE、エスイー）とは、
日本において情報システム関連の業務に従事する者を指す用語である。

システムエンジニアの職域に関する明確な定義は存在しないが、
日本の企業では慣習的にコンピューターシステムやその周辺の情報システムに関わりながら
以下のような業務を行う者を指すことが多い。

- 企画、設計、開発、評価、プロジェクトマネジメント、コンサル、工事、保守、運用
```

私も、システム開発会社で、販売・会計・人事などバックオフィス系システムの開発プロジェクトに参加して、企画・設計・開発・プロジェクトマネジメントなどに従事してきました。そんな経験から、システムエンジニアの本当の役割は「**お客様にとって役に立つシステムを、適切な条件の範囲で実現すること**」だと考えています。


# システム開発の難しさ

システムエンジニア時代には、企業向けシステム開発の難しさをたくさん感じていました。

たとえば、システム開発には、長い期間とたくさんのコストが必要です。企業システムの場合は、数千万円から数億円、あるいはそれ以上の費用がかかります。

しかし、それだけのコストをかけたにも関わらず、意外と使いやすいものになりません。UIなどはひと昔前のスタイルですし、操作にも柔軟性が有りませんでした。さらに、それを維持・メンテナンスするにも多くの工数がかかりました。

すでにコンシューマ向けで、無料または数百円から数千円で使いやすいWebサービスが登場していました。それと比較すると、企業向けのシステムは大掛かりで小回りがきかず、使い勝手が悪いものになっていました。

そういったシステム開発の課題を、私自身がずっと感じていました。

なぜ、このような難しさがあるのでしょう。

システムを開発する立場からは、次のような視点で説明できると思います。

まずは、お客様のビジネス状況が刻々と変化するため、ビジネスと実際のシステムにギャップが存在していること。それから、お客様の期待と実際のシステムにもギャップがあること。

このようなギャップを小さくするため、システムを継続的に改修していく必要がありますが、改修するにも時間とコストがかかります。でも、それができないとビジネスとシステムのギャップが増々大きくなってしまいます。

何より、お客様のビジネス状況の変化に対して、お客様のやりたいことも常に変化しています。ビジネスの変化に対応するため、「次はこうしてみよう」とチャレンジしても、それが成功するとは限りません。成功しても、ビジネス状況はさらに変化を続けていきます。

システム開発は、このようなギャップの変化に対応を続けなければなりません。

![*システム開発の難しさ*](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1571350/25cea937-8408-c2f8-cf1f-a44855bdf751.png)



# 新しい課題を新しいテクノロジーで解決する

では、このような課題をどのように解決していけばいいのでしょうか。

ものすごく単純な考え方ですが、課題には、すでに解決策が存在する課題と、まだ解決策が存在しない新しい課題に分けることができます。

すでに解決策が存在しているなら、既存の技術で確実に解決策を実現できるでしょう。新しい課題だと思っていても、既存の技術でうまく解決できることも、まだまだたくさんあります。「枯れた技術の水平思考」で、既存の技術を新しい領域に適用できることもあるでしょう。

しかし、新しい課題を解決する、新しい解決策も不可欠です。それが、新たなお客様を引き付ける突破口にもなるかもしれません。

情報技術の分野は進化の早い領域なので、新しい課題を解決する新しいテクノロジーが次々と登場しています。新しい課題であっても、新しいテクノロジーをうまく活用することで解決できることがもっともっとあるはずです。

システムエンジニアは技術者なので、こうした課題をテクノロジーの力で解決していく役割を担っています。

とはいえ、新しいテクノロジーによる解決策を提案できる状況を整えるのは、結構大変です。

たとえば、新しい技術には、バグや性能的な限界、適用範囲の制約がつきものです。どのように使いこなすかナレッジの蓄積も必要です。何より、学習コストや新しい技術を使いこなす人材の確保も必要になるでしょう。

![*新しい解決策*](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1571350/92f85128-591f-15b2-64bf-8ea9ca864647.png)


これらは、技術的な課題というよりも、システム開発ビジネス側の課題ですね。ビジネス側としては、既存の技術を使いまわして、できるだけたくさんのお客様の課題を解決できたほうがいいので、どこの現場でも新しいテクノロジーを導入できる訳ではありません。


# よくあるWebシステムで考えてみる

すこし具体的な例で考えてみましょう。

最近、多くの情報システムはWeb技術がベースになっています。そして、それなりの規模と性能を求められる動的なWebシステムは、次のような構成に分けることができます。

- **フロントエンド：**バックエンドで動的に生成したHTML+JS+CSSを表示。ページ単位で遷移する
- **バックエンド：**Linux上に、ミドルウェアやWeb開発フレームワークをインストールする。  
  より高性能なバックエンドでは、Webサーバ・アプリケーションサーバ・データベースサーバに分割する
- **インフラ：**Linuxインスタンス・DBインスタンスを定常的に運用する

このようなシステムを実際に構築するときは、パブリッククラウドのコンテナ上に、Web開発フレームワークをインストールして、その上にアプリケーションを実装する場合が多いと思います。

![よくあるWebシステム](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1571350/31a61b11-dbc7-e73a-eeb0-80f004b387cd.png)

このようなシステムは、システム構成としては手堅いものですが、それを継続的に開発・運用しようとすると、次のような課題が顕在化します。そこで、次のような新しいテクノロジーを使った、今どきのシステム開発が広がり始めています。

- **課題：**
  - 開発・運用・保守の手間が大きく、変化に弱い
  - アプリケーションサーバやデータベースサーバがスケールしにくい
  - 定常的にVMインスタンスを運用するためコストが高くなる
- **解決策：**
  - ReactやVue.js・Angularなどのフロントエンド開発フレームワークの導入
  - クラウドサービスが提供するミドルウェアを統合
  - スケールできるNoSQLデータベースの活用
  - Kubernetes + Dockerによる柔軟なVM運用

![*新しいテクノロジーを使った今どきのシステム開発*](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1571350/75ce3995-bdb9-c3d8-dba3-93b2ddc529d6.png)

# 新しいテクノロジーが求められる理由

新しいテクノロジーが求められている理由は、DX(デジタルトランスフォーメーション)に代表される取り組みで、ビジネスと一体となったスピード感・柔軟性が求められているからだと思います。

コロナ禍などで明らかになったように、環境変化に対応できる柔軟性とスピード感がますます重要になっています。しかも、この変化に対応できる企業とできない企業に大きく分かれている印象を受けます。大都市圏でリモートワークできない企業がまだまだ多いのも、旧来のビジネススタイルから容易に変化できない現状の表れではないでしょうか。

また、新しいビジネスに積極的に取り組む企業であっても、ちょっとうまくいくと、すぐに真似されてしまいます。そのため、競合よりも速いスピードで進化し続けないと、勝ち続けることができません。

もちろん、ビジネスを支えるシステムも、そのスピードについていかないといけません。

そのために、新しい課題に合わせて新しいテクノロジーを積極的に採用していく必要は、ますます高まっていくのではないでしょうか。

それでも、このような新しいテクノロジーを、プロジェクトごとに構築するのは手間がかかります。バグや性能的な限界を見極める必要があります。システムエンジニアにとっても、フロントエンドからバックエンド・DevOpsまで幅広い領域の理解が必要です。共通システム基盤を整備することも考えられますが、ひとつの企業で、継続して環境を整えるのも、それなりに大きなコストがかかるでしょう。

私も、システム開発会社に所属していた時代に、当時のそれなりに新しいテクノロジーを使って、サービスの事業化に挑戦させてもらいました。しかし、さらに新しいテクノロジーへの対応が必要になったとき、限られたビジネス資源のなかで投資してもらうのに非常に苦労しました。

# 起業のきっかけ

私自身も体験してきたシステムエンジニアのこうした課題解決を支援するため、Hexabaseを起業しました。

そのきっかけとなったのが、当社のCTOであるJeane Paul Banayat Solivaとの出会いです。彼とは、2015年ごろに出会いました。そのころ彼は、複数台のRaspberryPIを集めて、MongoDBのクラスタ構成を作れないかと、プライベートでいろいろ試していたりしました。

![slide5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1571350/0d4f56b2-23b9-c480-c6b6-b97af6efe5e3.png)

彼のエンジニアリング能力は、衝撃的でした。

そして、彼の技術力を活用することで、新しいテクノロジーを積極的に採用したシステム開発のプラットフォームを作ろうと、2016年に一緒に起業しました。

# Hexabaseとは

そして2020年にリリースしたのが、Hexabaseというサービスです。

Hexabaseは、業務システムのバックエンドを提供するクラウドサービスで、次のような特徴を備えています。

![*Hexabaseとは*](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1571350/ab31e9e4-5c44-e9a6-c048-92e6eae9b8d6.png)

- Kubernetesによるマイクロフレームワーク基盤上で稼働
- 業務システムで必要となる基本コンポーネントを提供。  
  ユーザー管理、アクセス制御、ワークフロー、リレーション可能なNoSQLデータベースを標準装備。
- ReactやVue.jsなどのSPAから接続できるバックエンドAPIを提供
- 不足する機能は外部サービスのAPIをインテグレーション

技術的な詳細は別の記事で紹介したいと思いますが、システム開発において次のような効果が得られます。

- **バックエンドの開発工数の削減。開発期間の短縮**  
  とくに、Web開発フレームワークをAPIモードで利用する場合と比較して、バックエンドAPIの開発やメンテナンス工数を削減できる
- **システム運用工数の削減**  
  OSやミドルウェアのアップデート、データベース容量やアクセス集中も気にしない
- **フロントエンドとバックエンドの開発プロセスを分離**  
  フロントエンド側はビジネスサイドと一体になって、素早く継続的な改善できる

このようなバックエンド基盤を自社で用意し、維持していくのは、かなりの技術と工数が必要になると思います。我々もHexabaseの開発に3年かかりました。

Heabaseであれば、それがすぐに利用できます。

Hexabaseは、すでに32システムでご活用いただいています。また、システム開発会社10社に開発パートナーとなっていただいています。

![*Hexabase 開発パートナー*](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1571350/666e3918-6f87-568b-e853-aabb93ee7ee8.png)

- [開発パートナーインタビュー > 株式会社アスネット：Hexabase health](https://www.hexabase.com/column/hexabase-health?qiita_iwask01)

# 新しいテクノロジーをキャッチアップする

システムエンジニアの皆さんが日頃から感じているように、新しいテクノロジーに追随するのは、決して簡単ではありません。

たしかにビジネスを考えたら、技術を固定して投資を回収したほうが楽だと思います。新しいテクノロジーに対応しなければ、ナレッジの蓄積や学習コスト、新しい技術を使いこなす人材の確保も不要です。

しかし、それでは技術が陳腐化してしまい、新しい課題を容易に解決できなくなってしまいます。

この課題は、組織やチームによって、解決策が違ってくると思います。

私たちは、つねに新しい課題を解決できるよう、変化に追従していこうとしています。Hexabaseは、常に作り直しを続けて、新旧のテクノロジーが混在している状態になっています。マイクロサービスとそれを支える技術のおかげで、テクノロジーの利用自体が柔軟にできるようになっているのです。

そして、システムエンジニアの皆さんに、システム開発のプラットフォームとしてHexabaseを利用していただきたいと考えています。

![新しいテクノロジーをキャッチアップする](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1571350/2f9e9fe0-8fef-cf86-ba38-a63f5eba5801.png)


# まとめ

Hexabaseを使っていただきたいのは、お客様にとって役に立つシステムを実現しようと、日夜奮闘しているシステムエンジニアの皆さんです。

Hexabaseを利用することで、システム開発に、今どきの新しいテクノロジーを素早く導入できます。お客様にとっても、今どきの使いやすい柔軟なシステムを手ごろな期間とコストで実現できます。それが、システム開発会社の競争力につながっていくと思います。また、若い人たちに、新しいテクノロジーにチャレンジする機会をあたえることにもなるでしょう。

もちろん、まだまだ不足している機能やサービスもあると思いますが、システムエンジニアの皆さんの声を反映して改善していきます。実際、この1年、ご利用いただいているシステムエンジニアのフィードバックから、APIやドキュメント・サンプルコードの充実を進めてきました。

ご興味がありましたら、まずはHexabaseを調べたり、試したりしてください。そして、開発パートナーになることを検討していただるとありがたいです。

- [**Hexabase**](https://www.hexabase.com/?qiita_iwask01)
- [**開発ドキュメント**](https://devdoc.hexabase.com/?qiita03)
- [**APIリファレンス**](https://apidoc.hexabase.com/?qiita03)
- [**開発コミュニティ**](https://community.hexabase.com/)
- [**開発パートナー募集**](https://www.hexabase.com/service/partner/)

また、随時情報を発信しておりますので、ぜひTwiiterかFacebookでフォローしてください。

- [**Twitter @Hexabase1**](https://twitter.com/hexabase_jp)
- [**Facebook**](https://www.facebook.com/hexabaseinc)

Hexabaseをよろしくお願いします。

## 関連ページ

- [エンジニアによるマネジメント - エンジニアだからこそ発信できるマネジメントの知識を発信しよう - Qiita](https://qiita.com/official-events/c826cda7a9514df143cb)