モデルからプログラムを自動生成する開発手法で効率化と品質向上を実現
まずはじめに、御社が行っている「モデル駆動型ソフトウェア開発」について教えてください。
弊社では、品質が高く価値あるソフトウェア開発の実現を目標として、モデル駆動型ソフトウェア開発を行っています。モデルとは、システムの構造や振る舞いを記述した設計情報のことで、モデル駆動型ソフトウェア開発とは、システムの設計情報からソースコードなどの実装成果物を自動生成する手法のことを言います。これにより、コーディング作業の削減や人為的ミスによるバグを防ぐことができるのです。
現在、受託開発を行う際にもモデル駆動型ソフトウェア開発を活用し、お客様のビジネスに直結したソフトウェアの開発を目指しています。
また、我々のモデル駆動型ソフトウェア開発を支える設計の考え方として、ドメイン駆動設計という方法論を活用しています。お客様の業務に依存する部分はドメイン駆動設計を活用しながら普遍的なモデルとして設計し、お客様の業務に依存しない純粋なシステム部分はJavaとSpringを使って開発しています。お客様の業務とシステム的な要素はライフサイクルが違うので、そこを切り離せるように工夫しています。具体的には、Xtextというツールを使ってDSL(domain-specific language:ドメイン固有言語)というお客様の業務を具体的かつ正確に記述するための独自言語を作り、その独自言語を使ってモデル駆動型ソフトウェア開発をしていく――という仕組みです。
モデル駆動型はソフトウェア開発の有効な方法として、今後、世の中の開発手法を変えていく可能性があります。
御社では営業支援サービス「かけるくん」というプロダクトを扱っているとのことですが、こちらはどんなサービスなのでしょうか。
「かけるくん」は、モデル駆動型ソフトウェア開発を活用して開発した、営業の業務効率化のためのツールです。スマートフォンのアプリで音声入力や簡単入力を行うことができ、社外にいても営業活動の内容をすばやくメモ感覚で記録することができます。PCやタブレットでも使えるので、いつでも、どこでも営業をサポートすることができるのです。
自社サービスを開発したことにより、僕たち自身がドメイン駆動設計やモデル駆動型ソフトウェア開発を学び、実践する機会にもなりました。今後もモデル駆動型ソフトウェア開発の特徴を活かしてバージョンアップしていく予定で、営業担当者がシンプルかつ簡単に使えるサービスを目指したいですね。
モデル駆動型ソフトウェア開発に興味を持ち、入社を決意
高崎さんのご経歴を教えてください。
物心ついた時には身近にパソコンがあって、触っているうちにコンピュータの世界に興味を持ちました。その後、専門学校で情報処理の学科に進学。卒業後は大手メーカー系列の子会社にSEとして就職しました。主に公共機関や役所を相手に仕事をしている会社だったのですが、僕はビジネスへの興味から産業系の部署に行き、とんかつ屋のシステムを作ったりしていたんです。
その後、ひょんなことからベンチャー企業に出向し、開発のためのツールを作るプロジェクトで1年ほど仕事をしました。途中、そこで一緒に働いていた一人がサン・マイクロシステムズに転職し、Javaのインストラクターになりました。当時、Javaが流行し始めた時で僕も気になっていたところ、開発経験もあるからという理由で同社に呼ばれ、インストラクターとして分析・設計、Javaを教えることになったんです。
3年働いた後に転職活動をして、今度は金融系ベンチャー企業に就職。外国為替証拠金取引のシステムを作る部署でマネージャーを務め、8年くらい働きました。
現在の会社に入るきっかけは、弊社の社長である大島と飲みにいったことがきっかけです。実は大島は、サン・マイクロシステムズ時代、僕の前任者でした。一緒に働いたことはありませんでしたが、顔は知っていたのです。
ある時、数人で飲みに行って、大島からモデル駆動型ソフトウェア開発の話を聞きました。僕も興味を持っているテクノロジーだったので面白そうだなと思い、アクティアに入社することを決めました。今年で入社して4年目を迎えます。
高崎さんの現在の仕事内容は?
COOという肩書きで仕事をしています。会社をまわしていく経営の面や、各案件に対するプロジェクトマネジメント、お客様と話をしてどのようなシステムを作るか分析・設計するのが、僕が主に担当している仕事です。手を動かしてコードを書くこともあります。
弊社では、情報を落とさず、一貫性を保つために、なるべく設計した人がコードまで書くようにしています。また、開発チーム内の全員がいつでも他のメンバーの担当範囲をカバーできるようにチーム体制を考えています。それにより、高品質なシステムを安定的に開発できる体制を敷いています。
苦戦したプロジェクトから学んだ謙虚、尊敬、信頼の大切さ
これまでに、最も思い入れのあるプロジェクトは?
前職の金融系ベンチャー企業の時、とても苦労したプロジェクトがありました。その経験が今の自分を形成したと思っています。
当時、そのプロジェクトでは、新しいメンバー、新しいやり方、新しいテクノロジーを使ってプロジェクトを進めようとしていました。他にも指揮命令系統が不明確だったりして……。今考えると、ダメになる要素は色々とあったんです。みんながどんどん疲弊して悪いサイクルに陥り、労働時間も相当長かったですね。
そんな時、プロジェクトマネジメントで実績のある人が役員として入ってきました。その人の指揮でプロジェクトの問題がみるみると整理されて立て直されていったんです。結果、プロジェクトは納期通りにリリースすることができました。奇跡が起こったと思いましたね。その人は、僕が今まで出会った管理職クラスの人の中では、いちばん手本にしたい人です。
また、このプロジェクトをやり切れたのは、家族の支えも大きかったです。家の玄関を出る際にへたり込み、涙が止まらなくなったことがあったのですが、幼稚園に入る前の三女がやってきて「パパ大丈夫?」と涙を拭いてくれました。あの瞬間があったから、今も笑っていられるんだと思います。最後の一線は家族に支えられ、色々と思いが詰まったプロジェクトになりました。
苦戦した経験から学んだことは?
組織を作る上でのリーダーの適性について考えさせられました。リーダーには色々なタイプがいます。みんなを引っ張っていくタイプや、後ろでみんなを支えるサーバントリーダーなど。僕はどちらかというと後者です。みんなを下支えすべきところは下支えし、引っ張っていくところは引っ張っていく。
あと、エンジニアからリーダーになった人は陥りがちなのですが、最終的には自分で手を動かして何とかしようとするプレイングマネージャータイプもいます。そのような働き方は、ある一定量から個人の能力を超える瞬間があり、他のところに手がまわらなくなってしまうケースが多いのです。苦戦したプロジェクトがその例です。リーダーは全体の状況を見ながら指揮をとる側であって、やりすぎちゃいけないんですよね。
リーダーとして様々な経験をした高崎さんだからこそ言えることですね。
チームで仕事をする時には、謙虚、尊敬、信頼が大切です。その中でも特に大切なのは尊敬だと思っています。僕にもできないことがあり、できる人が他にいます。年齢や経験に関係なくお互いに尊敬し合う関係づくりを大事にしていきたいですね。仕事は一人ではできませんから。
モデル駆動型ソフトウェア開発の普及を目指して
仕事をする上で大切にしている方針は?
お客様から「自分たちのビジネスの成功を考えてやってくれている」と思ってもらえるような仕事をしていきたいです。受け身ばかりだとなかなかそうならないと思うんです。時には厳しいことも伝え、ビジネスがより良くなるための提案をしていきたいですね。システムを作り、使う目的をしっかりと考えた上で、仕事に臨みたいと思っています。
現在、注目している技術はありますか。
モデル駆動型ソフトウェア開発に関するテクノロジーですね。Xtextで書いた抽象的な構文をプログラミング言語のランゲージサーバーに送ると、他の言語になり戻ってくるという技術を研究しているところもあるのだとか。まだまだ実用化は先だと思いますが、いつか簡単に使える日が来ると思います。その前に漕ぎ出しておかないと、波に乗れません。そういったことを意識して、技術の変遷を見ています。
最後に、今後の展望をお聞かせください。
弊社のプロダクトである「かけるくん」は、モデル駆動型ソフトウェア開発によって開発したことをお伝えしました。この「かけるくん」を使って、モデル駆動型ソフトウェア開発の良さをPRしていきたいですね。そして、モデル駆動型ソフトウェア開発を普及させることで、開発を楽にできるようにし、苦しいプロジェクトから解放される人を増やしたいと思っています。