はい このセッションではオープンシフトとCI-CDパイプラインを用いて三菱電機カマクラ製作者様が挑戦されたソフトウェア開発の変革についてのお話をご紹介したいと思いますはじめにですね 自己紹介をさせていただきますこのセッションは2人のスピーカーでお話させていただきますのでまず最初に久保さんの方から自己紹介をお願いしたいと思います三菱電機カマクラ製作所の久保と申します よろしくお願いいたします私はカマクラ製作所におきまして大規模リアルタイムシステムのソフトウェア開発に携わっています本日はですね この場をお借りしましてヒューレットパッカード様と取り組んだソフトウェア開発の高速化 高品質化についてご紹介させていただきたいと思いますありがとうございます私ヒューレットパッカードの総道と申しますポイントネクストというサービス事業部門に所属しておりまして業務としてはお客様向けのシステムの設計構築提案などに携わっております技術領域でですね クラウド コンテナ レタ分析 それから各種オープンソースのツールなどを使って技術的なですね アーキテクトチームをリードしておりますよろしくお願いいたします今日の話ですね 大体25分から30分お時間いただきまして4つの流れでですね 話を進めてまいりますまず一番目のところはですね 久保さんに実際に三菱電機様の中でソフトウェア開発で感じらっしゃった課題についてお話をいただきたいと思いますそしてその後2番と3番のところは 私の方で実際にコンテナ基板を使ったソリューションのアプローチのご紹介をさせていただきまして3番では特にプロジェクトとか技術観点で設計導入 技術チェーンにおけるポイントをご紹介したいと思っております4番のところはですね サイド バットンを久保さんにお渡しして導入後のお客様の中での効果 それから今後の展望や計画についてもご紹介いただきたいというふうに思っておりますこの取り組みですね 実際にプロジェクトとして昨年2019年の6月くらいからスタートしたものをベースにしております実例としてコンセッションではご紹介をしていきたいと思っておりますでは実際に1番のところから久保さんにお話をいただきたいと思いますはい それではまず私の方から我々ソフト開発部門が囲いていた課題についてご紹介させていただきますまず我々ソフト開発部門に外的な変化の要因としましてまずお客様の要求が多様化しているところでソフターに対してさまざまな機能をふかしてご提供するところでソフターの大規模化というところが進んでいますさらにそれに伴いましてやはり複雑化というものが進んでおり加えましてそういったソフトはこの世の中の急速な変化に対応するためにお客様がより早く提供してほしいと言ったご要望がありまして単納機関が進んでいると言ったところが開発部門が抱える外的な要因として課題が上がっていますこういった課題はですね以前からあって突然振ってばいたものではないところでこれまでは各開発部門がそれぞれのシステム特性であったりとかですね抱えている人材のスキルであったりといったところで個別にこういった課題に対して対応してきたとただですねこういった3つの課題に対してですね外的要因に対してより早くよりよく対応していくと言ったところで今回ですねこういったところの課題を解決するために特にですね新しい技術といったところをいかに取り入れてそれを組織内に水平展開していくと言ったところを課題として取り上げましたそれはですね組織の中では個別に対応していたものをですねただそれに対しまして組織というのはそれぞれですねこういうの技術が持っておりましてただ単純にそれを捨ててですね新しい技術を水平展開すると言ったところはできなくてやはりですねそれぞれが抱えてきたのはどうというのをいかに活かしつつ新しい技術を取り入れて水平展開するかと言った課題に対しまして今回ヒューレットパッカード様と取り組んでまいりましたそれではですね我々の取り組みつきましてこの後総統様よりご紹介いただきたいと思いますはいでは私の方からですねコンテナ基盤を使ってどのようなアプローチで進めていったかというお話を続けて差し上げたいと思います先ほどご紹介いただいたような課題に対して単純的にですねコンテナ基盤を導入しようという発想もあるんですけれどもそれだとですね本質を見上がってしまうということで我々の取り組みとしてはまずお客様の課題をしっかり何なのかとどの辺を注力すればいいのかといったところをフォーカスしてですねお話を進めてまいりましたのでその辺の流れについてもご紹介していきたいと思いますで初めに我々HPの中でもですねPointnextというサービス部門はですねワールドワイドで非常にスキルの高いコンサル担当がたくさんおりまして今回のようなコンテナ導入ですとかその上でCI CDパイプラインを構築するといった経験もございまして今回ご演奏でご支援させていただけることになりましたお客様とはですね最初にお話をしていって課題についてどういった課題があるのかそれがどういった重要度があってどういう線路で進めていけばいいのかといったところもお話ししながらここに書いてあるような大きく3点集約してですね取り組んでいきましょうというお話をしていきましたで一番のところですねこれは先ほどご紹介いただきましたけれどもソフトウェア開発非常に近年複雑化してさらにリードタイムを短いスピード化を求められているといったところでここ以下に迅速化するかといったところが大きな課題となっていましたでまた2番目のところですけれども先ほどのご紹介にもありましたけれどもソフトウェア開発を行われる複数のグループチームがあってそれぞれ微妙にですね開発の要件も異なるというところで同じパイプラインを適用することができないといったところもありますのでうまく組織の要件に合わせてパイプラインをカスタマイズできるという重難性が求められるというところも大きなポイントとなってきますで2番目のポイントのところはですね特定の組織チームに最初からですねパイプラインを最適化してしまうと後から他のチームに適用しようとした時にですねなかなかそこがボトルネクになってしまってうまく展開できないというところもありますので個別最適化に落ちいてしまわないようにうまく全体の最適化を図りながら効果を最大化していくという進め方が大きなポイントになるという風に捉えておりましたそして3点目のところですけれどもこちらは製薬になるんですけれどもお客様の業務がですね非常に必得性の高い情報を扱うソフトウェア開発業務を行っておられますので原則環境はですねインターネットに接続しない積極な環境をこれをオンプレミスで構築すると言ったところもありますので今回のコンテナ環境ですとかパイプラインをですねインターネットに出ないという前提でですね設計導入それから運用についても考えていく必要があったというところが大きな3点のポイントとなってきますでここをですね進めていくにあたって一番のところにもあったんですけれども迅速差をどうやって担保するかといったところでパイプラインを自動化するというところが非常に重要なキーポイントになってきますと一方でコンテナ基盤ですとか自動化ツールをただ単に導入すればいいといったものではなくてですねやはりその組織チームごとにさまざまな要件を抱えていらっしゃいますので余計な対応化に対応できるようにする必要があって特にですね機場の理想的なパイプラインをこれを皆さん使ってくださいということで共通化標準化したものを上から押し付けてもなかなか浸透していけないですし効果も上がってこないといったところもありますのでここは最初の時点でですね各チームにヒアリングをしてどういった要件があるのかといったところを聞きながらうまくカスタマイズできるということを考えていく必要が今回の進め方としてはクボタスさんのチームが一番最初にパイプラインをよく使って改善が進んでいましたのでここのチームをベースラインのモデルとしてまず一回パイプラインを構築してそこから横展開するときに隣のチームとの差分に応じてパイプラインのカスタマイズを行っていくという進め方をするということを最初に決めましたそれからコンテナとオープンシフトを使っていったのかというところどういう期待を持っていったのかというところについては従来のお客様のパイプラインの運用イメージというものが左側に書いてあるようなものだったのですけれども特にパイプラインの中でもテスト環境をここの構築セットアップに非常に手間がかかっていたという問題がありましたこれは仮想マシンみたいな環境に対して人手で手順書ペースでミドルウェアですとか各使うツールに使い慣れたエキスパートの方がだいたい1日がかりくらいの作業になってしまいますというところが問題点としてあったわけなんですけれどもこれをコンテナですとかオープンシフトこういったものを使っていくことでこの環境自体をコンテナイメージとしてパッケージングしてこれをデプロイするだけでセットアップができるようにすると非常に迅速にセットアップができるといったところを期待していましたまたコンテナイメージを一回作ってしまえば手組みで組むときと比べていつでも同じ環境が作れますと例えば手組みで組んだときにはバージョンが違って前と同じ環境が作れませんとか何か作業ミスとしてしまって同じ環境が作れないといったような問題も過去にはあったようなんですけれどもここは再現性という意味ではコンテナイメージを使っていただければ同じ環境を再現できますよというところも期待できますまた今までは従来はある一定の人握りの方だけがその問題でもあったわけですけれどもここはいろんな組織いろんなチームに展開して使っていただくためにはコンテナデプロイみたいな形で非常に簡単に展開ができるような形にしておけばその人握りの方の業務負荷を奪うことなく誰でもデプロイできるようになるといったところで今までと同じような方品質なものが他のチームの方にも自立的にセットアップをしていただけるといったところが期待できてこういった環境を目指しましょうという話を具体的にプロジェクトをどういうふうに進めていったとか技術的なポイントについても続けてお話ししていきたいと思いますまずプロジェクトの進め方左側から提案フェーズから実際にどういうロードマップを作って実際プロジェクトでどういうふうに実行していったかというお話になるんですけれども提案時に冒頭でご紹介したような左側にある課題の整理とか分析優先度順位付け重要度付けを行っていて要求を整理しますと今回みたいな進め方をしましょう決めた後にロードマップというのがこれはワンショットで一回導入して終わりというプロジェクトではなくて入れたものを改善成長させていってかついろんなチームに横展開して使っていただくということも目指していますのでファーストフェーズがあってセカンドフェーズがあってという形でロードマップも大まかに描いていきました実際に環境を作るというところになってプロジェクトとして実施していくわけですけれども一番右のところで今回は新規で構築する対象のところはオープンシフトのコンテナ基盤のところでしたですのでここを我々ヒュレットパックカードの方で設計導入・テストを行いました周辺のOSSツールいろんな連携をするという話をさせあげるんですけれどもそこについてはメツリシ・ジェンキ様の方でいろいろ通路を試されていたところもありましたのでお客様の方でこの通路連携するというところを試されて我々は通路についてもいろいろ理解はしていますのでお客様が課題を持ったとき技術的な問題点があったとか疑問点があったときにQAベースで技術研とか課題解決の手伝いをさせあげたというような進め方でプロジェクトのご飯は進めていっておりますゴールとしてはこのプロジェクトはオープンシフトとオープンソースツールを適材適所で組み合わせて活用するようなCICDパイプラインを作りましょうといったところを目指していましたオープンシフトだけでパイプラインを作るというケースもあると思うんですけれども今回の場合にはどこをコンテナ化するといいのかとかどこを自動化するというのかというところを都度検討しながら適材適所で組み合わせて使っていきましょうとそれはなぜかというと今までコンテナに使い慣れていないといったところもあったりしますので多くの組織グループの方に使っていただくために全部をコンテナ化してしまうとやっぱりギャップが大きくて使い慣れたツールも組み合わせていきながら全体のパイプラインを使っていきましょうなのでコンテナが一番効果的なところにオープンシフトを置いて全体のパイプラインが効率的に効果的に機能するようにしていきましょうという進め方をしていきました運用メンテナンスも新しいツールをたくさん入れてしまうと使い慣れないツールを管理をしなければいけませんのでそこもあまりにも新しいものどうか入れすぎないというかそういったところも考慮しながら使い慣れているツールですとか今までよく使われているツールを優先して使っていきましょうといったような話も中ではしていきました組織面という意味で言うと主導タスクとかも残ったりしますので新しいパイプラインの中で誰がどのような頻度でどういった可動をしていくのかところを考えていったりですとか例えばコンテナイメージを作る時の運用なんてものもありますのでこの辺も自術意感の中でパイプラインの管理とかイメージの作成管理といったところも考慮しながら進めていくという考え方をしていきました実際にどういうパイプラインができたのかというのはだいたいイメージにするとこういう図になるんですけれども結果的にはですねパイプラインの中心には今回オープンソースのジェンキンスを使っていますジェンキンスが各タスクをキックしていって順にパイプラインを流していくというような全体像になっています上の方にギットラボのアイコンがあるんですけれどもこれがソースコードの履歴間にいわゆるコードリポジトリとして機能していて開発者の方がソースコードをコミットプッシュするとジェンキンスのタスクが動いてそこから先に性的解析を行ってコードレビューと書いてあるのはいわゆる人手のタスクになりますここは従来の業務もコードレビューを行っていますのでジェンキンスのところで一度止めてコードレビューでオッケーボタンを乗すと次に進むみたいなイメージで捉えてくださいそこから先はコンパイルビルドをして団体デストをしていったところが自動で流れていくという形になっています今回はオープンシフトは結合テストのところで使っていますやはり課題のところでお話ししたように結合テストの環境をいろんなツールを組み合わせて作っていますのでここをコンテナ化するというところが一番効果的だろうというところでまずはここにオープンシフトを今回は使っているということになりますギットラボとかもそうなんですけれどもインターネットに接続できない環境ですといったところがありますので例えばgithub.comとかスラックとかそういうサースベースのツールは今回使えないわけですねなのでオンプレで使えるツールといったところでこういった選定をしていますまたギットラボにはギットラボCIといったパイプラインを持った機能というのもあるんですけれどもそれを使えばいい話ももちろんあるんですけれどもジェンキンスでも同じようなことができて組み合わせると言ってやるかともあります今回技術支援コンサルティングの中でもそういった議論もお客様としてどういったパターンで使うのが一番いいのかといったところも話をしてきました結果的にはやはりお客様の中で従来から割とジェンキンスは使い慣れていらっしゃるいったところがありますまたいろんなタスクをキックしていくんですけれどもジェンキンスには非常に豊富なプラグインがあって性的解析とか担大テストとかこういったところのツールと連携するためのプラグインがもう最初からあったのでこれはジェンキンスを使ったほうが特策だろうということでジェンキンスをメインにバイプラインを構成するといった使い方をしていってGitLabはですねあくまでソースコード管理のリポジトリとして使ってコードがプッシュされるとそこからウェブフックでジェンキンスのジョブルをキックするという使い方連携を今回は目指しました下にロケットチャットのアイコンがあってこれはジェンキンスのタスクのですね経過とか成功失敗みたいなステータスを通知してもらっておのおの開発者のほうにフィードバックが戻るといった形にしていますこれが今回のパイプラインの構成でこれはさっきご紹介したようにあくまでベースラインとしての形なのでここから例えば別のグループにパイプラインを持っていって要件に合わせて随時カスタマイズをしていくということも当然考えられます使うツールが違うですとかここのジョブはスキップするとかそういったいろんなバリエーションがあると思いますのでそこにも対応できるようにそこはジェンキンスのジョブをカスタマイズすれば対応できるところが設計上のポイントということになりますあと技術的なポイントをちょっといくつかだけご紹介させてあげるとオフラインで導入しなければいけないのでオフラインで入れるの結構難しくてオフラインで入れるの結構難しくてオフラインで入れるの結構難しくてオフラインで入れるの結構難しくてこれなかなか情報とか実績が少なくて難しいところではあったんですけれども例えばリポジトリを自分たちでちゃんとコピー持っていてその場でローカルで展開しなければいけないとかいろんな技術機制約がありますよとかそういったところはちゃんと我々の方でも事前にさまざまな検証を行っていたのでここは問題なく導入ができていますそしてまたGPUですねワーカーノードにGPUを搭載しているノードを使っていてここは同じように若干セットアップが難しいんですけれどもいわゆるNVIDIAさんのGPUデバイスプラグインといったものを導入して使えるようにするというセットアップが必要です一度これセットアップすればあとは利用者の方でやむるファイルの中でリソースリクエストとしてGPUデバイスをいくつ使うといったことを書いておけば簡単にコンデナポットからGPUが使えるといった形になっていてこの辺もお客様に技術追加をしながらセットアップをしていったところになっています今お話ししたようなところというのはこのプロジェクトよりも前からですね弊社の中では非常にオープンシフトのさまざまな技術検証を行っておりましてかつレッドアップフォーラムですとかオープンシフトミートアップといったところで積極的に技術の紹介をさせていただいておりましたGPUの話もそうですし今回は使ってないんですけれどもCSIを使ったコンテナストレージの管理ですとかオペレダーを使った自動化ですとかあとは使い方をお客様に位置からご紹介するハンズオンワークショップなどもやらせていただいていてこういったところが今回のプロジェクトでも非常に来たと問題なく導入としては完了できましたということになりますここからですねまたマイクをモードししてクボツさんの方から実際導入後の効果と今後の展望についてお話しいただこうと思いますそれではですね私の方から今回の環境の効果と今後の展望についてご紹介させていただきますまずですね先ほど総道様からも話がありましたとおりですね従来ではですね高度なスキルを持った人がまず最初に一つ目の環境を静岡で作ると言ったところでその中で各種のミドルアイですとかですねツールをインストールしたりと言ったところを手でやってそれに併行して手順書を作ってそれですねその手順書を元に次の担当者が同じような環境を複製していくと言った流れになっておりましたこの中でやはり手動でやっているというところが一つ大きくて環境の構築時間に一日またそれ以上かかることもあるとその中でもさらに手順に詰まってしまったりとか業館を読まなきゃいけないと言ったところで完全に同じものが複製できなかったりとかですねそういったことに対する疑問に対して最初に環境を作ったエキスパートの人に質問が集中してしまってそういった高いスキルを持った人材がそういった業務に囚われてしまってなかなか時間が取れないと言ったところの悪循環が生じていたというのが従来の環境になりますここでですねオープンシフトをベースとしたコンテナ環境を取り得ることでまず最初のですねコンテナイメージを作るというのはやはりその今まで通り高度なスキルを持った人材が行うんですけどもそれをですね複製すると言ったところは簡単にですね手順書も簡単にできてしたがってそれにしたがって同様の環境が複製どんな担当者でも複製できると言った後悔ですこれに伴ってですね失敗というところが減ったので環境構築時間というのも2時間以内収まるようになりましたそういったところでですね簡単に誰でもできるようになったというところで質問もですねその高いスキルを持った人材に来ることが少なくなったのでそういった開いた時間というの効率化された実感というところをより負荷価値の高いところに業務主張力できると言った効果が大きく表れております続きましてパイプラインの自動化についてなんですけどもこちらはですね各ソフトウェアを開発する担当者がパイプラインを今まで手動でやっていたところをやはりこの流れを自動化すると言ったところで小さい単位でですね短い時間でこのサイクルを曲がすことができるようになったというところが一つ大きなところになりますこれによってですね何か問題が起きた場合にすばやくその開発担当者に対してフィードバックができるといったところでこのサイクルを小さくすばやく回すことでいわゆるCI-CDの効果であるというと高品質化といったところにつながっているのではないかなと考えておりますさらにはですね自動化したというところで今まで手でやっていた内容が自動で行われるので同じようにですね開発担当者も効率化によって時間が開くのでそういった開いた時間をさらに違う活動に負荷価値の高い活動につなげることができるといったところの効果も表れております続きましてですね今後の展望なんですけどもやはりさっきほどのですねパイプラインも完全に全てが自動化できているわけではないいったところで一つ目としてさらに証化の対象を広げていく特にですね最後の結合テストの環境はまだまだ自動化できるところが多いかなと考えておりますのでそちらに注力してさらに自動化できる範囲を広げていきたいということを考えております二つ目としましてやはりですね最初の目的にあったこういった環境を水平展開するといったところで私たちが中心となって部門の中ですね各チームに対してこういった環境を提供してより早くそういった技術を水平展開するといったところにも続けていきたいと考えておりますそして最後にですね今はカマクラス製作所の中でこういった活動をしているんですけどもやはりそういった活動というのは同じようなですね課題を抱えている部署というのは社内にたくさんありますので社内広く目を向けて他のですね事業をやっているソフターの開発部門にもこういった技術を展開していくことで社内より広く技術を水平展開しておくいったところを考えておりますそれでは最後にですね総同様の方より今回の紹介のまとめをさせていただきたいと思いますでは本日ご紹介した内容のまとめをお話しさせていただきますオープンシフトとCI-CDパイプラインがですねお客様にどうのようなメリット効果をもたらしたのかといった観点で3点させていただきます1つ目左側からですねプロダクティビティと書いていますけれどもソフトウェア開発パイプラインを自動化することによってテスト後で自動化が実現できましたとこれによって今までですね手動で行っていたキスパートの方がですね業務負荷をさいて手でセットアップしていたとというところが自動化できるようになってですね先ほどご紹介いただいたようにより負荷価値の高い業務に集中していたことができるようになりましたとそれから真ん中のユーザビディティとというところは環境ですね展開でプロイしていくといったことが非常に容易になりましたというところでそれこそ他のチームの方にもですね展開していただくといったことが必要になってきますけれどもコンテナを使っていただければ非常にそこは今までとかなり簡単にですね展開することができるようになってきますと従来は手順書を使った手順書を使った手順書を展開していましたのでどうしてもそこには手順書には表しきれないアンモクチみたいなことも当然あったと思うんですけれどもこういったブラックボックスノーハーみたいなものは回避することができるようになったというふうにも考えられと思いますそして3点目クオリティだところですね実はここの効果が非常に大きいというふうに私は考えているんですけれどもソフトウェア開発を手順を基づかれているお客様にとって品質の向上ということは非常に重要な観点かなというふうに思っています今回パイプラインを自動化することによって結果的にはテストの頻度を上げることができますもうちょっと言うとテストの流動を細かくしていってより短い感覚でテストを行っていくことができるようになったというところが大きいですとそのようにすると開発者の方がコードをコミットして今までよりもすぐにテストの結果がフィードバックされるようになってきますどうしても開発者の方は人間ですので記憶しているコードがまだ頭の中にあるうちにテスト結果が分かったほうが明らかに品質には気をするとこれは一般的にもよく言われていることでそういったことでソフトウェア開発の品質を向上していくといった効果が減られるというふうに考えられますこれはバッチサイズの縮小という言い方もするんですけれどもいわゆるその効果として品質向上が期待できますということになりますまた今回パイプラインでは人金数などのツールも使っていて今までは各タスコ人間がやっていたところもあったんですけれどもツールが行うということは結果もログとして記録されるということになりますので例えばパイプラインを何回も回していく中である特定のタスコがよく失敗するなとか言い方悪いんですけれどもどうなったか特定の開発者の方のコードをコミットした時にするみたいなこともおそらく見えてくるのではないのかなというふうに思っていて統計的にパイプライン自体を品質を上げていくといった取組みもこの後可能になってくるかなというふうに考えています以上3点の話を今日させていただいたわけですけれども最後少しだけ弊社のサービスのご紹介だけさせてあげて終わりとさせてくださいこれは知らしとしてもよくお配りしているんですけれども今回みたいにGPUを載せたサーバー上にオープンシフトをセットアップするといった初期セットアップサービスを弊社ご提供していますハードウェアもGPUが例えば8枚乗るサーバーとかもありますのでそのサーバーハードウェアとオープンシフトのソフトやサブスクリプションとあと初期セットアップ我々のサービスをパッケージにしてご提供するといったことも可能ですですので機械学習とかAIの開発者の方とかがすぐにコンテナで開発をしたいといったことにもご要望にもお答えできるサービスとなっていますまたオープンシフト単体でも導入セットアップサービスを行っております要件をお聞きして導入して押さめするというところになるんですけれどもそこにプラスアルファで今回の事例のようにコンサレティングとして使い方ですとかさまざまな周辺のツールとの組み合わせといったことでプラスアルファで技術支援をさせていただくといったことも可能なのでこの辺りを組み合わせていただけると非常にいいのかなと思っておりますでは本日いろいろなことをご紹介してまいりましたがご清聴いただきましてありがとうございました