Help us understand the problem. What is going on with this article?

Laravel製のオープンソースWebDB『Exment』が正式リリース2年なので、これまでとこれからをまとめてみた

こんにちは。株式会社カジトリの佐藤と申します。
オープンソースなWebデータベース、『Exment』の企画立案、開発、営業、統括を行っています。

Exmentは、2019年1月に正式版をリリースし、そろそろ2年が経過します。
この2年間で、さまざまな企業・組織に使っていただきました。
それに伴って、多くの方々からのフィードバック、改善案、ときには不具合報告をいただくことによって、この2年間で、非常に成熟したソフトウェアに育ってきました。心から感謝です。

また、ビジネスとしても少しずつ、結果が出てきました。
投資額と時間を完全リターンできるほどの結果はまだまだですが、それも実現可能なソリューションであることの確信はしています。

一方で、課題や壁も、もちろんいくつか出ていています。
中には、オープンソースならではの壁や苦労もあり、日々対応策を練っている所です。

前回の記事から、およそ1年が経ったということもあり、改めて記事をまとめていくことにしました。(良ければ、前回の記事も読んでください!)
この記事では、以下の内容について、まとめていきたいと思っています。

  • Exmentとはなにか、簡単な紹介
  • Exmentのターゲット、戦略について
  • 苦労している事や、立ちふさがる壁の紹介
  • Exmentの将来。目指していること

Exmentに興味がある方に読んでいただきたいのはもちろんのこと、以下の方にも、参考になってもらえるような記事にするつもりですので、よろしくお願いします。

  • オープンソースをベースにしたビジネスを展開したい方
  • プラットフォームを作ってみたい方
  • システム開発を本格的に行っていきたい方

※思ったより熱が入ってしまい、非常に長くなってしまいました。若干ポエム要素もあります。ご了承ください。

Exmentとは

まず、改めてExmentのご紹介をさせてください。

Exmentとは、「なんでも管理できる、オープンソースのWebデータベース」です。
image.png

そもそもWebデータベースとは何かというと、「Web上で情報管理を行うシステム」です。
Webサイト上でデータを入力し、データの一覧を表示する。データの検索を行う。データを共有する。
ExcelやGoogleスプレッドシートではどうしても難しい、Webシステムならではの機能を、多数搭載しています。

※登録データ一覧表示
image.png

※データ検索
image.png

※データ新規作成
image.png

管理する項目は、画面上でノンプログラミングで、自由に設定できます。例えば「顧客情報」、「契約管理」、「タスク管理」など、さまざまな用途で活用できます。

業務で発生するデータは、何も考えずに管理を始めると、どこかのタイミングで煩雑になってしまいがちです。
例えば、とある製品販売のプロジェクトを小規模で始めた場合を想定します。
最初の頃はGoogleスプレッドシートで良かったけど、顧客の人数が大きくなったり、製品数が増えてきたり、管理する人数が増えてくるタイミングは必ず来ます。
その時には、必要な情報をすぐに引っ張り出せなかったり、顧客と製品の関係性がぐちゃぐちゃになってしまったり、謎のデータや生まれてしまったり(『販売数』列になぜか『佐藤』という値が入っている等)。様々な弊害が出てきます。

Exmentでは、そういったデータを管理するために必要な機能を、非常に豊富に揃えています。
Exmentに寄せられる声で多いのは、「これだけ多機能なシステムが、無料で使えていいのか」という言葉です。
そのような声を多数寄せられるほど、Exmentは非常に多機能なシステムです。

Exmentについての詳細、Exmentが生まれた背景、ならびに強みについては、前回の記事の方が詳しく書いているので、そちらも是非ご確認ください。

ターゲット、戦略について

Exmentを正式リリースしてから約2年間。これまでどのようなターゲット、ならびに戦略で行動してきたか。よく聞かれる内容なので、まとめていきます。

基本機能の充実に注力

重複してしまいますが、Exmentは使ってくださっている方々に、「これだけの機能が本当に無料なのか」と言われるぐらい、かなりの機能を備えています。
これは元々、基本機能の充実に、ずっと注力していたためです。
というのも、ソフトウェアの選定の際には、基本的に引き算採点方式だからです。

先進的で画期的なハードウェア製品だと、特定の分野に特化したものがあれば、基本的にそれ以外に難や穴があったとしても、後からの対応でOKだったり、見逃されたりします。
ですが、ソフトウェアだとそうはいかない事が多いです。基本的に選定の際には引き算採点方式で、足りない機能がある(または多すぎる)と、選んでもらえないか、止めてしまうというケースが多いです。

しかも「データ管理システム」というのは、かなり成熟しきっている分野です。なので、代替の製品も多数あるということになります。

なので、戦略としては、基本機能の充実、かつ無料での提供に注力してきました。その甲斐もあって、基本機能はかなりご好評をいただいております。
特に、データ検索のしやすさは、他システムとの差別化ポイントとして、よく挙げております。「顧客に紐づく、契約情報・保守情報を一覧表示する」といったことが、1クリックで実現可能です。

その上で拡張性も確保

それでも、業務によっては「必ず足りない機能」というものも出てきます。
別システムに顧客情報をPOSTしたり、業務上必ず必要となる自社専用の画面が、必要となることもあります。(Accessで作成したシステムをWebDBに移行する時などに、良くあります)

そこでExmentでは、Wordpressのプラグインのように、拡張性も高められるようにしています。
業務で必要になる機能に関するコードを、規定のルールに則ってPHPで書くことのみで、機能を追加することができるようにしています。
「YouTubeの検索・ならびに結果の登録を管理したい」という要望があれば、独自のページを追加できるようにしたり、
image.png

「データをシステムAと連携できるようにしたい」というニーズがあれば、特定のボタンを追加して、外部システムと連携できるようにしたり、
image.png

毎日バッチを実行して、データを集計したり。さまざまなことができるようにしています。

この拡張性が、前述の「基本機能の充実」と非常にマッチしています。
あるシステムを作る時に、フルスクラッチだと非常にお金と時間がかかります。
しかしExmentであれば、『足りない機能だけプラグインで開発し、あとはExmentの基本機能を使用する』ということができるため、工数を大幅に削減することができます。

基本機能を完全無料、拡張やサポートを有償

「ソリューションの無料版」を実現する場合に、手段はいくつかあります。例として、「ユーザー数は5人まで無料」「データは5000件まで無料」「テーブルは5テーブルまで無料」といった内容です。
そういった方法もありますが、「基本機能は完全無料」ということを心掛けています。

製品の利用する時に、「特定の機能を使用するために有償版」というのは、時に使いにくく、結局その製品を試すことが出来ず、非採用になることも多いです。
そのため、「基本機能は完全無料」にはかなり拘っています。もちろんこの方針は、将来はどうなるか分かりませんが、それは今後も、なるべく変えずに行きたいと考えています。
その分、環境構築、拡張機能(プラグイン)の受託開発や、サポート、トレーニングなどを行う際に、有償で承っております。

技術的な質問や、設定方法についての質問も、公開当初は無償で回答していたこともありました。
しかし現在は、回答を行わないようにしています。
何故かというと、有償サポートを契約いただいているお客様に対して不公平になってしまうし、限られたリソースを、今後の新規機能開発、有償サポート、営業などに割り当てるためでもあります。
そのため、現在は設定方法、環境構築方法などの問い合わせをいただいたら、有償サポートを案内するようにしております。
(なお、問い合わせページにもその旨を説明していて、同意にチェックした場合のみ、問い合わせ可能にしています)

オンプレミス環境、自社クラウド環境などに構築できる

2020年現在はクラウドシステム。SaaSサービス全盛期です。環境をサービス提供者が構築し、顧客はその環境を間借りするだけのパターンがほとんどです。
しかしながら、Exmentではその時代の流れからある意味逆行し、オンプレミス環境でも動作するようにしています。

データを外部に公開出来ず、SaaSサービスを断念するような会社も、まだまだ多いです。
頑張ればSaaSサービスを採用できたとしても、それには果てしない稟議・審査を通さないと採用されないような会社も、間違いなくあるはずです。

そのような会社でも、Exmentを採用できるような想定で開発しています。言ってしまえば、外部ネットワークを完全に遮断しているインフラ環境でも、Exmentの一部機能をオフにするのみで、Exmentは動作します。
「審査を多数通して、SaaSサービスを採用する」のと、「完全遮断環境なオンプレミス環境でも動作するシステム」の採用率は、後者の方が間違いなく高いです。

ちなみに、Exmentの有償サポートなどの契約をさせていただいている企業は、9割以上がオンプレミス、もしくは自分達で構築したインフラ環境でExmentを動かしています。

なお、Exmentの環境をLAMP、特にPHPとLaravelを選択したのにも、大きな意図があります。
それは開発者が多いこと、ならびにレンタルサーバーを含めた多くのサーバーで動作することです。

元々私は、C#をはじめとしたMS系の技術に明るい人間です。Office.jsについては、「日本で5本の指に入るレベルで詳しいです」と言っても、そんなに盛ってないぐらいです。
それほどのOffice畑、MS畑出身の人間です。

そんな自分ですが、オープンソースでやる以上、開発者が多くて多くの環境で動作するPHP、そして使いやすくて勢いのあるLaravelを選択しました。(Laravelは最近、ちょっと下火な気がしますが...)
その方が、プラグインを全世界のエンジニアが開発する時に、人口も多くてより開発しやすい、ということを想定してのことです。

エンジニアをターゲットに

Exment公開当初は、「ITに詳しくない方をはじめ、誰でも使えるようなデータ管理システム」を目指していました。
しかしこの方針は、公開1ヶ月~2ヶ月で方針転換しました。

Exmentはオープンソースゆえに、自分達でサーバー構築・インストール・テーブルなどの初期設定をしてもらうことになります。そしてその初期設定は、どれだけマニュアルを充実させても、その難度と複雑さの回避は、かなり難しいと思いました。
また、「誰でも使えるデータ管理システム」は、競合も非常に多数あります。
そのため、「オープンソースで、ITに詳しくない人でも、環境構築・設定をできるシステム」という戦略は、限界があるように感じました。

それもあり、現在の方針は、ある程度割り切って、「社内SE・情シスの方に選んでもらえるようなシステム」、ならびに「Webシステムを製品開発する際に、コスト削減のためにも、選んでもらえるような仕組み」としています。
「社内の情シスの方が初期設定を行い、ITに詳しくないその後の一般社員が使う時は、情シス担当者がハンドリングする」といった運用を想定しています。

エンジニアをターゲットにした戦略は、上手くいっていると考えています。
実際に問い合わせをいただく方の多くは、システム開発会社、情シスの方といったシステム関連の方々が非常に多いです。

直面してきた・直面している課題

ここからは、実際にオープンソースソリューションを開発・運用していて、直面してきた・直面している課題についてまとめていきます。

各々のサーバーに構築できるため、その環境特有の不具合が発生することがある

通常のSaaSサービスであれば、不具合の報告を受けた時に、自社で運用しているサーバー内で調査をして、対応していく場合がほとんどです。
ですがExmentの場合、基本的に各管理者が各々で環境構築しているので、その環境特有の不具合が出ることがあります。
その場合の不具合は、当然こちらの環境だと再現しないため、その調査を行うことが非常に骨が折れることがあります。

具体的にお話します。
Exmentの機能の一つである「バックアップ・リストア」機能が正常に動作しない、という報告を受けることがありました。
しかし、こちらの環境だと正常に動作します。なので、なかなか手を出せずにいました。

もう少し調査、ならびに詳細情報を聞くと、DockerでExmentを構築した場合に、その現象が発生するということが分かりました。
これは、Dockerで環境構築をした場合に、PHP設定で必要な内容が、既定だと入っていなかった・・・というのが根本の原因でした。

その原因が判明した後は、マニュアルにその設定を追加することの明記を行ったり、バックアップ・リストアに必要な設定が完了しているかどうかの事前チェックを含めたりなど、工夫を加えています。

業務の上で、解決が必ず必要な課題が出ることがある

実際にソリューションを運用していると、「業務を遂行する上で、必ず改善しなければいけない課題」に直面する場合があります。
しかし、「その課題を解決するには、非常に骨が折れる改修が必要」というパターンが発生することもあります。

こちらも具体例をお話します。
Exmentの機能の一つに、データのインポート機能があります。
これはcsv、xlsxファイルから、データベースにデータをインポートすることができる機能です。

しかしこの機能が、Web画面からインポートを行った時に、どうにもタイムアウトエラー・メモリ超過エラーが発生するという報告を受けていました。
画面からのデータインポート件数を制限したり、コマンドによるインポートを実現する、PHP設定でメモリ上限を無制限にする、といった施策を色々打っていたのですが、なかなか解決に至っていませんでした。

更に調査を進めていた所、どうやらインポートに使用しているライブラリ「PhpSpreadSheet」が、大量データの読み込みに向いていないということが分かりました。
それが分かってから、使用しているライブラリを、「SpOut」というものに切り替えました。
SpOutは、シンプルながら軽量・メモリ使用量も最低限というライブラリです。

その入れ替え対応を行ったリリースによって、インポートがだいぶ安定するようになりました。
ライブラリの置き換えにはけっこう苦労しましたが、今の所は安定してインポート実施が出来るようになったので、置き換える価値はあったと考えています。

こういった、「多くの方に使っていただいているからこそ、解決しないといけない課題」は、これまでいくつも直面してきました。
こういった課題は、一つ一つ解消していくしかないです。

スピード感重視の開発の弊害

これまでExmentは、上記の「基本機能の充実を重視」するために、何よりもまずは開発を優先してきました。
そのおかげで、2年でかなり多くの機能を実装することはできました。
しかしその弊害で、Exmentのソースがかなり怪しい状況になっていました。
この本の言葉を借りるのであれば、「不吉な臭いが漂い始めた」という状況になっていました。

不吉なソースの問題点はいくつかありました。

  • 機能を追加した時に、それが本当に問題ない修正なのか、担保が非常に難しい状況になっている。
  • テストを画面で手動で実施したけど、それとは別パターンでエラーになる。また、想定外の操作を行った時にエラーになる。
  • ソースも一部、読みにくい構成になっていた。誰よりも、世界で1番Exmentのコードに詳しいはずの自分でも、「あれ、これなんだっけ」になってしまうときもあった。

「安全性とスピード感」を担保したまま開発を進めていける、そんな腕のあるエンジニアのいるプロジェクトもあるとは思います。ですが、残念ながら凡人の自分はそうではありませんでした。

そのため少し前から、機能追加より、リファクタリングの実施、テストコードの強化を重視して開発を進めています。
テストコードは元々ありましたが、その数を大幅に増強している所です。特に問題になりやすい&不具合に気付きにくい点を優先して、テストコードを追加している最中です。

リファクタリングも、可能な限り読みやすく、他の方にも読めるような調整を進めています。この本を読んで勉強しています。

このリファクタリングとテストコードは、一般的な経営者や投資家には、その意味・価値が、理解できない人もいるかもしれません。
「機能追加を先にしろ!」「お金になる行動を取れ!」「営業しろ!」といったことを言われそうな気がします。
リファレンスとテストコードは、直接的にはお金になりません。ですが、今後システムの規模を大きくしていった時に、システムの品質を担保するためにも、必ず重要になっていくものです。
なので、一度立ち止まる勇気を持ち、最近まで新機能はほぼほ停止、リファクタリングなどを最優先で進めていました。

Exmentのこれから。将来達成したいこと

それでは、Exmentがこれから、どのようなことを目指し、どのようなビジョンを持っているかを、語っていきます。

世界規模で使われるシステムにしたい

Exmentのような「オープンソースのWebデータベース」は、世界で見ても、かなり希少です。
そういった背景もあり、世界をターゲットにしていくことを考えています。

日本が非常に特殊な市場かというと、決してそうではないと思います。
もちろん、日本特有なデータ管理の仕組みもありますが、基本的には、「データを複数人で管理したい」という要望は、世界中であるはずです。
なので、対応すべきことに対応すれば、世界でも戦うことはできると考えています。

競合製品の最大手である「Salesforce」の、2019年1Qの売上を参考にしてみます。
https://s1.q4cdn.com/454432842/files/doc_financials/2019/CRM-Q1-FY19-Earnings-Presentation.pdf
image.png

アジアの市場は、10%にも満たない状況です。ここからは少々暴論ですが、アジア=日本と考えた場合でも、海外をターゲットに広げただけで、10倍以上の市場規模を見込めることになります。

また、Salesforceの売上は、2019年通期で132億8,000万ドルでした。(https://www.salesforce.com/jp/company/news-press/press-releases/2019/03/1903052/)
Salesforceだけでも、それだけの数値を秘めている市場になります。

なので、視野を日本だけに留まらせず、世界に拡大をしていきたいと考えています。
そのために必要なのは、英語の発信、システム内の英語の翻訳の最適化(今はGoogle翻訳を使用してしまっている)、他多言語の対応などが必要です。
自分は残念ながら英語はものすごく苦手なので、英語が得意・システムにも少々強い方と手を組んで進めていきたいと考えています。

Wordpressのようなプラットフォームにしていきたい

Exmentがかなり意識しているのが、WordPressです。

image.png

WordPressは、ご存知ブログ・アプリ・Webサイトを構築することができる、オープンソースのWebシステムです。Exmentの公式サイトも、カジトリの公式サイトも、WordPressで出来ています。

WordPressは2020/12現在、全世界の全Webサイトの、39.4%シェアを取っています。「日本」のシェアでも、「ブログサイト」のシェアではありません。「全世界の」「全Webサイトの」、39.4%がWordPress製です。

また、2019年に、WordPress.comの親会社Automatticは、Salesforce のベンチャーキャピタル部門 Salesforce Ventures から3億米ドルを調達しています。
https://thebridge.jp/2019/09/wordpress-com-parent-automattic-raises-300-million-from-salesforce-at-a-3-billion-valuation
この投資によって、Automattic の企業価値は30億米ドルになるといいます。

時に脆弱性の問題などが謳われるWordPressですが、それだけの価値のあるソリューションであることは、数値が表す疑いようのない事実です。
それだけのシェアを取っている理由は、「使いやすい」「プラグイン・テーマの充実」などいくつもありますが、その理由の大きな一つは、システム無料のシステムだからと考えています。

システムは無料で、誰でも比較的かんたんに導入できる。WordPress.comというSaaSサービスもある。テーマやプラグイン、サポートは、自社だけでなくサードパーティ製のものも含めて、非常に充実している。
WordPressをベースにして、ビジネスを回している会社・エンジニアも世界中に存在します。

Exmentは、このようなプラットフォームを作っていきたいと考えています。
特にプラグインによって、機能を追加していく仕組みは、WordPressをインスパイアしています。
基本機能のシステムは完全無料、プラグインやテンプレートを無償・有償で提供し、SaaSサービスやコンサル、サポートを有償で承る。こんなビジョンを描いています。

完全なるオープンソースを目指していきたい

今現在、佐藤の頭の中だけにあるような仕様が、まだまだたくさんあります。
すべての仕様を公開するというのは非現実的ですが、それにしたってまだまだ、仕様の透明化は出来ていないと考えています。

なので今後は、まずリファレンス整備を進めていきたいと考えています。
プラグインやエンジンを開発者が開発する際、作りやすいような資料作りが出来るのは、今の所自分だけです。
それと並行し、リファクタリングも今後、進めていかなければいけません。

多くの開発者がジョインしたくなるような、そんなソリューションを目指しています。
「この機能が欲しい」→「そしたら、プルリクエストを出そう」といった開発者の計らいによって、どんどんシステムが充実していくような、そんなソリューションです。
そのためには、全世界の開発者が、「このシステム開発にジョインしたい」「このシステムをもっと広めていきたい」と思ってもらえるようなシステム、ならびにコードにしていきたいです。

また、だいたいのオープンソースプロジェクトには備わっているユーザーフォーラムや、Twitterなどの情報発信をしていきたいと思っています。
ただ、過疎になりそうで、ちょっと怖いです。過疎感は出したくないというので、ちょっとビビっているというのも正直なところです。
ならびに、自分もユーザーフォーラムに関する知識はそんなにないので、どうにかして調べてみたり、教えてもらったりして、知見を広げていきます。(詳しい方、教えてください・・・!)

なぜ、これをやっているか

なぜ、このシステムをずっとやっているのか?そんなことを聞かれることがあります。
世の中に貢献したい、誰かの役に立つシステムを作りたいというのも、確かにあります。

でも、なによりも「面白いから」やっています。
ニーズがものすごくあって、世界で通用するかもしれないぐらいの内容で、世の中の役に立ち、それでいてこれだけ面白い挑戦が出来ていることが、何よりも幸せです。

オープンソースでビジネスを成功させている事例は、本当に少ないです。
時流は確実にオープンソースに流れているので、それの先駆者になっていきたいです。特に、大企業主導でないソフトウェアでも、オープンソースでのビジネスの成功例となっていきたいです。

そういった挑戦を出来ていることが、何よりも誇らしいし、ワクワクします。
少しでも興味がある方は、ぜひとも公式サイトから試してみてほしいです。非常に喜びます。
また、ものすごく気に入ってくれたら、記事を書いたり、周りに紹介したり。
欲しい機能があれば、GitHubのスターを増やしたり、プルリクしてほしい。そんな願いがあります。

このExmentをベースにして、関わってくださる方々と、全く新しい経験や開発、挑戦をしていきたいと、そう思っています。

ここまで読んでくださって、心から感謝します。

リンク集

hirossyi73
株式会社カジトリ 代表取締役社長。 OSSなLaravelのWebデータベース「Exment」、C#・Python・PHP開発、WordPressによる個人サイト作成をはじめとして、幅広い開発を手がけています。 最近電子書籍を発行しました。Amazon Kindleストアで「ぽんこつエンジニア」で検索。
https://kajitori.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away