オプティムが19年間で利用してきた技術、振り返り

OPTiM TECH BLOG 編集長の川瀬です。

昨年12月に本ブログを開始し約4ヶ月が経過しました。当初目標として週1回の更新を掲げたのですが、メンバーの奮闘もあり目標のペースを継続できています。

いろいろな方にSNSで言及いただくなど反響もあり、大変ありがたく思っております。今後も「OPTiM TECH BLOG」をよろしくお願いいたします。

私がオプティムにジョインして15年程度経過し、これまで多くのプロダクト・サービスに関わって来ました。そこで今回はオプティムのこれまでの代表的なプロダクト・サービスの紹介とそこで利用している技術を、触り程度ですが紹介していきます。

オプティムの沿革も合わせてお読みください。

www.optim.co.jp

2000~ 創業期

当時、インターネット回線は今より遅く、コンテンツのダウンロードや動画ストリーミング開始時のバッファリングには多くの時間がかかっていました。そこで、ダウンロード中やバッファリング中に広告を表示できるシステムを開発し、その広告枠を販売するビジネスを行っていました。

作りとしては、基本的はWeb中心のシステムで、VBScriptによるASP + SQL Server + Adobe Flash(当時Macromedia Flash)などを用いておりました。

2003~ よりクライアントサイドへ

広告関連以外のサービスも開発していこうということで、携帯電話向けの学習システム、遠隔パソコン教室、知的財産権侵害コンテンツ監視システム、携帯用SNS等のサービスを開始しました。

Web関連においてはASPからC#+ASP.NETに移行し、Web関連に加えてクライアントサイドの技術も多く利用するようになりました。

携帯電話向け学習システムでは、当時の携帯向けアプリの開発環境であるJava および BREWの上で、コンテンツにロジックを埋め込むために、スタッフが個人的に開発していた独自のスクリプト言語を組み込みました。これによりクロスプラットフォームでアプリの更新をすることなく、インタラクティブな学習コンテンツの配信を実現していました。

Windowsのクライアント向けアプリケーションも増え、サーバーと言語を統一するためにC#を中心にしましたが、一部C++ Builder等も利用していました。

2005~ Windowsとの闘い

通信事業者向けのPCおよびルータの自動設定、診断復旧を行うソフトウェアの開発を開始しました。

Windows向けクライアントアプリの比重が高まりました。言語としては.NET Frameworkのランタイムのインストールが課題となり、C#の利用は減り、C/C++を用いてWin32 APIをゴリゴリ叩いていました。C++の利用においてはBoostも多用していました。

インタラクティブな画面部分にはAdobe Flashを用い、全体的なフロー制御にはLuaを組み込んでコンパイルなしに画面フローを変更できるようにしていました。

PCの設定において、どうしてもAPIでは設定できず画面を操作する必要がある場合には、画面を自動的に操作するしくみ、今で言うところのRPAのようなことも組み込んだり、それ自体をサービス化していました。

上記の2003年頃に始めた遠隔パソコン教室は「Optimal Remote」としてリモートサポートサービスに生まれ変わりました。より誰でも利用できるようにはNAT超えを行う必要があります。そのため現在のWebRTCにおけるTURNのようなことを行う、リレーサーバーを独自に開発しています。また性能も追求し画面転送に最適化した映像転送方式及びコーデックも独自に開発しました。

サーバー側の環境としては、Linuxを利用するようになり、Webアプリ開発にはRuby on Rails + MySQLを用いるようになりました。

ソースコード管理にはSubversionを利用し、Tracを用いたチケット駆動開発も始まりました。

2008~ クラウド

クラウドによるPC資産管理サービス「Optimal Biz」を開始しております。

コンシューマー向けにスタンドアローンでPCの設定を行うところから、法人(特に中小企業)向けにクラウドから一括で複数台の設定を行ったり情報を収集する仕組みを構築しました。当時大企業においては資産管理システムとしてオンプレミスでサーバーを設置して社内のPCを管理する仕組みはありましたが、中小企業においてはそこまでしてPCを管理するニーズはありません。クラウドであれば社内にサーバーを用意せずPCの管理を実現できます。

Optimal Biz」を始め、クラウド環境のWebサービスとクライアントサイドのアプリが協調して動作するサービスが大半になりました。クラウドから、クライアントを管理する場合、通常はクライアント側にはNATやProxyが存在するため、サーバーからクライアントに対して命令を出す場合にも、基本的にはクライアント側からサーバーに向けて通信を行う必要があり、ポーリングやロングポーリングを駆使して制御を実現しています。

開発周辺ツールでは、Gitを使い始めたり、Jenkinsを用いたCI環境の構築を行っております。

2010~ スマホの波

スマートフォンの普及に先駆けて、全社的に既存のサービスをすべてスマホ対応にしようとなり、PC向けの開発は絞り込みスマホ対応を急ぎました。

そのなかでも「Optimal Biz」はPC向けの資産管理サービスから、MDM( Mobile Device Management )として大きく飛躍することになります。上記の通り、PC向けの時代には中小企業向けを想定していました。大企業においてはLAN内でオンプレミスのサーバーを用いてPCの管理を行っていたからです。ところがスマートフォンが対象になった途端にLANのみでは管理しきれず、サーバーはインターネットからアクセスできる必要が出てきました。それであればクラウドサービスでも良いのではないかということと、時代的にセキュリティ要件さえ満たせばクラウドも利用可という企業が増え、大企業でも利用いただけるようになりました。

一般的なWebサービスの場合、書き込みは少なく、読み込みが殆どで、負荷分散の第一歩はリードレプリカを用意するという形になりますが、デバイス管理の場合、各デバイスから定期的にインベントリ情報が送られてきて書き込みが発生するため、リードレプリカで分散するという対応は意味を成しません。処理の改善と合わせて、仮想サーバーでは賄いきれないところを物理サーバーにしたり、ストレージをioDrive等のメモリ・ストレージにしたりする力技も使いながら負荷と戦っています。

www.optimalbiz.jp

リモートサポートにおいてもAndroidに対応することと合わせて、スマートフォンのカメラを用いることで、端末自体のサポートではなく、リアルな世界をサポートするというコンセプトで遠隔作業支援サービス「Optimal Second Sight」を開発しました。「Optimal Second Sight」はスマートグラスにも対応し、徐々にIoTへの取り組みをはじめました。

www.optim.co.jp

PC向けの資産管理やMDMの要素の1つであるコンテンツ管理技術を活用した「パソコンソフト使い放題」や「タブホ」といったサービスを開始しています。「タブホ」についてはコンシューマー向けサービスということもあり、ページめくりをどれだけストレスなくできるかを追求し、ページ情報を配信する形式を試行錯誤や画質の微調整を行っています。

www.optim.co.jp

2016~現在 AI/IoT および 〇〇xIT

スマホ・タブレットの次の時代に向けて、AI / IoTに関するサービス開発をはじめました。

IoTを実現するための基本中の基本としてデバイス管理があり、これまで培ったデバイス管理技術に加えて、そのデバイスから上がってくるデータも管理・活用していくというコンセプトで「Cloud IoT OS」を開発しました。IoTで集まってくるデータを活用するためAIに関する取り組みも強化しています。

単純にシステムとしてプラットフォーム作るだけではなく、〇〇xITとしてより各産業に根ざしたサービス開発を行うこととなり、例えば医療においては、「Optimal Second Sight」をベースとしてオンライン診療サービス「ポケットドクター」を開発しています。

www.optim.cloud

クラウドにおいてはマイクロサービス化しており、Kubernetesを始めとする各種OSSや Load Impact/k6 を使用した負荷試験の実施 - OPTiM TECH BLOG で紹介した、Load ImpactDatadogなどのサービスを利用しています。

対象OSとして、Linux(サーバーおよび組み込み)、iOS、Android、Windows、macOSがあり、開発言語は、Rust( Rust カテゴリーの記事一覧 - OPTiM TECH BLOG )だけを使っているわけではなく、C/C++、Go、Java、Ruby、Python、Objective-C、JavaScript等を適材適所に利用しています。

これら、現在注力しているサービスに伴う技術に関しては、これからもこのブログで詳しく紹介していきますのでお楽しみに。

最後に

オプティムのこれまで取り組んできたサービスと、そこで利用している技術について振り返ってみました。現在はAI / IoTに注力していますが、ITの時流に沿ってOSや言語にこだわることなく、新たな技術に挑戦し製品、サービス化を行ってきました。

オプティムではこのような時代の流れに沿ったあるいは先取りした製品、サービスの開発に興味がある方を大募集中です。

www.optim.co.jp

ご連絡はTwitter からDM頂いても結構です。 twitter.com