第一のサービス第一のサービス

株式会社ベストソリューションズのクラウドシステム構築サービスが出来上がった経緯

弊社のサービス内容、取組姿勢をサービス構築経緯を通して説明させていただきます。

■創業者の簡単な経歴

私は大学を卒業した1989年から約30年間、コンピュータシステムに関わり続けてきました。
IBMや富士通の汎用機COBOLプログラマから職業人生が始まり、VAX、UNIXコマンド、OracleSQL、C言語、オブジェクト指向言語に出会い、OS、データベース技術、プログラミング言語の技術変遷をプログラマとして経験しました。
その後、お客様の業務要件の整理や業務改善の提案、提案が採用され獲得したプロジェクトのプロジェクト管理等を行い、業務整理、改善の勘所、システムの品質の作り込み方について、学び、考え、実践する時間を持ちました。
自分が持っていない視点、高次の視点から自分の仕事とお客様の仕事を見直したいと考え、カナダMcGill大学日本校MBA(インターナショナルビジネス専攻)コースで、日本駐在の様々な国のリーダ達と学び、議論し、考える期間を経て、2000年頃からはインターネットサービス、不動産、Eコマース等のwebサービスを提供するいくつかの会社で、自社サービスシステムを管理する部門の責任者としてシステムの運用、企画、再構築に携わりました。そこで、ユーザ企業のシステム管理者に求められること、エンドユーザと直に対峙するシステムを運用する大変さと面白さ、売上を上げ、コストを上げないためにシステムや体制の工夫でできること、業務改善でできること等、そして、webサービス関連のシステム技術 を、様々な試行錯誤を通して体験的に学び、自分の糧としてきました。

■技術選択

株式会社ベストソリューションズとして、この約20年あまりの経験を元に、再びお客様にシステム開発サービスの提供を始めるにあたり、システムの基盤技術の選択を慎重に行いました。
それまでシステム開発サービスを通じてお客様に提供したり、自社サービスとして運用してきたシステムでは、PHPやJavaといった比較的古い言語を採用しており、言語そのもの構造の問題や、比較的習得しやすい言語であるがゆえのプログラマの能力の問題等により、バグ、障害、運用上のトラブルが発生することがあったからです。
そのような問題の発生を技術選択で抑えることができるのではないかと考え、開発効率、安定稼動、大規模システムの拡張性が期待できる言語を探した結果として行き着いたのが、ScalaとPlay frameworkでした。

■言語Scalaの選択

ScalaはJavaの開発者の一人であるスイス連邦工科大学ローザンヌ校(EPFL)のMartin Odersky教授によって2003年から開発が始まった比較的新しいプログラミング言語です。ScalaはJavaとの互換性を持ちつつ、Javaの問題点を克服すべく開発されました。
Scalaは以下を特徴としています。

1. 開発効率が良い
元々Javaはオブジェクト指向という考え方で作られていた言語ですが、Scalaはこのオブジェクト指向の概念で関数型の機能を解釈し取り込むことにより、プログラミングに柔軟性と広い視野をもたらしたと言われています。
Scalaは、Javaよりも短くスマートなコードが記述でき、エラーの可能性も減少するため、開発効率が上がり、時間的、コスト的にメリットが出ます。
このようなメリットがある反面、ベテランのプログラマ目線で「できるプログラマの使い勝手優先」で作られた言語であるため、習得の難易度が高いというデメリットがあるともいわれています。しかし、これは能力と意識の高いエンジニアのみをプロジェクトに参加させるフィルターとなるため、私共のプロジェクトではScalaの難易度も悪いことばかりではないと考えています。

2. Javaとの互換性
もともとJavaの後継の言語として開発されたScalaは、Javaと互換性があり、大量にある既存のJavaライブラリを使うことができます。
Javaと同様にバイトコードに変換されて実行されるので、システムは高速動作し、性能予測が容易です。

3. 大規模システムを効率よく稼動させる機能を備えている
Scalaは、非同期処理、並列処理、分散処理の機能を内部に持っており、大規模システムを効率よく稼動させ、容易に拡張できるように意識して開発された言語です。
非同期処理とは、メインの処理フローを詰まらせないために、時間を要する処理等をメイン処理の外で行い、結果が出たところでメイン処理フローに戻して処理を行うもので、処理要求をどんどん捌いていくようなシステムで効果を発揮します。また、並列処理により複数の相互作用を及ぼす計算等を同時並行で行うことが可能となります。更に、分散処理により複数のプロセッサを効率よく使って処理速度の向上と負荷分散が可能となっています。

■フレームワークPlay frameworkの選択

Play frameworkは、Scala用のWebアプリケーションフレームワークで、Scalaを提供しているLightbend社(旧Typesafe社)から提供されています。
世の中には様々なwebアプリケーションが存在していますが、それらが実装しなくてはならない要件はある程度似ています。このwebアプリケーションに共通した機能を部品として、Scalaで使いやすく提供しているのがPlay frameworkです。

Scala、Play frameworkは、米国では、Twitter、Facebook、Linkdin、日本では、ニコニコ動画、SmartNews、Chatwork等で採用されており、よく名前を聞くようなwebシステムサービスでの採用が増えています。

■そして、自社ビジネスフレームワークRaptorの構築

株式会社ベストソリューションズは、業務システムをwebシステム(クラウドシステム)として開発し、運用支援することに特化した会社です。世の中には様々な業務要件が存在しますが、業務システムとして考えると、それらが実装しなくてはならない要件には似ている部分が多く存在します。
このような業務システムに共通した機能を、株式会社ベストソリューションズのオリジナル部品として開発しRaptorと名づけて、クラウドシステム開発に活用しています。
Raptorの開発には、中小企業庁「ものづくり補助金」、及び、東京都「革新的サービスの事業化支援事業」補助金に採択していただいた資金を活用して開発を行っております。 もちろん、Raptorのクラウド部品はScala、Play frameworkを使って開発しており、Raptorを組み合わせてクラウドシステムを開発する際にも、Scala、Play frameworkを使って開発を進めています。

pdf詳しく見る

■Scalaを使いこなす優秀なエンジニアによる開発体制を作るために

Scalaは言語としては優秀なのですが、「できるベテランプログラマの使い勝手を優先して開発されたプログラミング言語」であるため習得が難しいといわれています。そのため、日本では優秀なエンジニアを見つけることが難しく、見つけたとしても人件費が高騰し、お客様に採用していただきやすい価格でシステムを構築することが難しいという課題があります。
この課題を解決するため、国外にも目を向け開発パートナー会社を探した結果として、ベトナム、ハノイ工科大学の若い卒業生達が立ち上げた会社と業務提携を行い、弊社の開発チームをベトナムで持つことが可能となりました。
開発に携わるエンジニアは、ハノイ工科大学でソフトウェア工学を修め、ScalaやPlay frameworkの特徴を活かしたシステム構築スキルを持ち、日本人と変わらないかそれ以上の仕事に対する責任感を持って開発に臨んでくれています。
また、ブリッジエンジニアは、日本の慶応大学、神戸大学、関西学院大学等への留学経験や、一定期間の日本でのシステム開発の現場での就業経験を持ち、システム開発で必要となるコミュニケーションを日本語で十分行うことが出来るスタッフで構成されています。
これらエンジニア、スタッフ達と2年間程試行錯誤を行い、日本側から業務仕様をを伝える仕様書の様式等の細かなノウハウも確立してきていますので、かなり複雑な業務仕様を伴うシステムの構築も正確に行うことができるようになっています。
優秀なエンジニアを求めてベトナムの協力会社を得るに至ったのですが、副作用として、開発コストが下がりました。また、弊社の日本側メンバも小数精鋭で、大きな会社のような間接コストがあまり発生しない体制となっているため、規模の大きな会社、日本人開発者だけで構成されたチームに比べ、弊社から提案させていただく開発費見積は、内包される技術の高さにも関わらずお客様に採用していただきやすい提供価格になっています。

■要件定義について

要件定義の場面における弊社の強みは、システムベンダーとしての経験と、自社サービスを切り盛りするクライアント側の両方の視点を持って、お客様の業務について聞かせていただき、考え、提案させていただくことができることだと考えております。
お客様から「ベストソリューションズさんは他のシステムベンダとは感じが違う」と言っていただくことがあるのですが、それはクライアント担当者様の立場とお考えをうまく察しながら用件を聞かせていただきつつ、しっかりと「あるべき」提案が出来ているかなと私共が感じているときに言われることが多いように思います。

要件定義は、業務課題改善、業務効率化、システム化の対象業務の整理と範囲決め等のために行う行為ですが、お話を聞かせていただくときには、以下のようなことを大事にしています。

1. 対象業務と課題を「見える化」して、お客様のミーティング参加メンバやその後ろにおられる関係者の皆様の間で、同じ絵を見ながら考えを出し、解決に向けたアイディアを積み上げることが出来る状況を作ること。 お客様の業務については、「そのお仕事のお客様は誰なのか」「何を提供してどのように喜んでいただくものなのか」「お仕事の要素を単純化してみるとどのような構成になっているのか」「そのお仕事の中心価値は何か」といったことを大事にしてお話を聞かせていただくことにしています。

2. 「見える化」したお仕事の資料を関係者の皆様と共有し、お話を十分に聞かせていただき、皆様のお話を取りまとめ、関係者の間で共有すること

3. 考える材料が揃ったところで、現実を見据えつつも「あるべき」ソリューションを考え、叩き台として提案し、お客様とのすり合わせを行い、検討にご参加いただいている皆様の間で納得できる解決・改善案とすること

4. システム化にあたり、最初にシステム化する対象業務の範囲(スコープ)を明確化し、コスト、開発期間のブレをなるべく小さくして開発に取り掛かること

ベストソリューションズでつくりあげた要件定義プロセス、技術基盤、開発体制により、雑誌編集管理、工場工程管理、業務案件管理、販売管理、自動車部品取付管理、目標管理 等の業務分野で、業務課題を解決するクラウドシステムを構築し、お客様の業務を支えるシステムの運用支援をさせていただいております。