
目次
はじめに
インフラの自動化を導入したいが、どこから手を付けて良いのか分からない。
相談しようにも何を相談すれば良いのか分からない。
そんな悩み事はありませんか?
自動化に取り組むためには、現状の運用業務の整理や自動化ポイントの洗い出し等、多くの準備が必要です。
そういった詳細な分析を行う前に一度、お客様の環境の現状をおおまかに把握することができれば、効率よく自動化を進める糸口になります。
そこで、弊社が今までにお客様と共に自動化に取り組んできた、経験を分析データとするインフラ自動化事前Web診断アプリケーション(以下、Web診断サービス)を新入社員が中心となり開発いたしました。
本記事では開発したアプリケーションの全体像と構成、利用方法についてご紹介します。
インフラ自動化事前Web診断アプリケーションとは
各設問に答えていただくことでお客様環境の現状とご提案を自動診断することができるWebアプリケーションです。

図1:回答画面サンプル
図2:結果画面サンプル
所要時間は5分ほどで以下の3点が分かります。
- お客様の現状
回答の内容からスコアを算出し、お客様環境のインフラ自動化に関する現在のコンディション、進捗度合いを表示しています。
進捗率が低い場合は、インフラ自動化に向けた様々な取り組みが必要であることを示唆しています。
- ボトルネックになりそうなポイント
回答の内容から考えられるボトルネックを表示しています。ここで表示されている内容をもとに、効率よく自動化を進めていくことが可能になると考えています。
- ご提案可能な弊社ソリューション
ボトルネックになりそうなポイントを解決できるようなソリューションをご紹介しています。
実際にご利用していただく流れとしましては、以下のようになっています。
- 事前に弊社担当営業からAppeagisログイン用の情報と、Web診断サービスログイン用の情報のご連絡
- Appaegisにログインする
- Web診断サービスにログインする
- 回答を行う
- 結果を確認する。
※Appeagisを利用している都合上、お客様環境から結果をダウンロードすることができません。
結果画面が手元にほしい場合は、弊社担当営業にご連絡いただくことで後日入手可能となっています。
各コンポーネントについて
本サービスの開発にあたっては、Webフレームワークに弊社独自のSDI Framework(Python Flaskベース)、データベースにMySQLを利用しています。
Webフレームワークとは
Webアプリケーション開発に必要な基本機能を提供しているパッケージのことを、Webフレームワークと言います。例えば、サイトへのログイン機能やアクセスしたページに情報を表示する機能等、どのWebサイトであっても共通して必要な機能というものが幾つかあると思います。Webフレームワークではそういった基本機能が既に用意されているため、利用することで開発の工数削減が可能となっています。

図3.Web診断アーキテクチャ図
- SDI Framework
Webアプリケーションを開発するための機能を提供する弊社独自Webフレームワークです。
Python用WebアプリケーションのFlaskをベースとした基本機能に加えて、外部APIライブラリを内包したパッケージや、データベースへのアクセス機能を持つアプリケーションの開発を容易にする拡張機能を持っているのが、SDI Frameworkの特徴となっています。
- MySQL
Oracle社が提供しているオープンソースのデータベース管理システムです。
アンケートの内容や利用者の回答、診断結果に表示されるボトルネックやソリューションはMySQLを利用して作成されたデータベースに格納されています。
- Appaegis
Appaegis社が提供している外部の接続からサービスを保護するための製品です。Web診断サービスに直接アクセスするのではなく、Appaegisへの接続を経由することで接続ユーザーのアクセス管理を行うと共に、サービスに格納している他の利用者の情報が洩れるのを防ぐことが可能となっています。本サービスは社外からのアクセスが前提となっているため、セキュリティの観点からAppaegisを利用しています。
コンポーネント間の連携
お客様の回答データの格納や結果データの呼び出しを行うには、アプリケーションとデータベース間で連携を行う必要があります。
しかし、アプリケーションの開発に用いているプログラミングとデータベースの間には様々な違いがあり、そのままではデータをやり取りすることができません。
そこで、SQLAlchemyというORMライブラリを利用します。ORMライブラリとはプログラミングとデータベース間の違いを互換してくれる機能を持ったライブラリのことを言います。
SQLAlchemyは、ORMライブラリの中でもPythonで利用できるライブラリとなっており、SQL言語を使うことなくPythonのコードでデータベースを操作することができます。
ここでお客様が回答したデータをデータベースに格納するという具体例に沿って連携について説明します。

図4:コンポーネント間連携
- 1.回答データを受信
アプリケーション内の各プログラムの中心は、図4では送信されたデータを受け取るプログラムになります。ここで様々なデータを受け取り、受け取ったデータによって正しい場所へとデータの送信を行います。
今回の場合では、ここでお客様が回答した回答データを受け取っています。
- 2.回答データを送信
1でお客様が回答したデータを受信しているため、DB操作用のプログラムの中でも回答データを格納するためのプログラムへデータの送信を行います。
- 3.回答データを格納
回答データを格納するためのプログラムに対して回答データが渡されたため、データベースに回答のデータを格納します。
アンケートの種類の表示や回答結果の表示等のデータベースとの連携が必要な時は、上記のようなやりとりを経て連携を行っています。
まとめ
開発メンバーが1年目、2年目の新入社員ということで、うまくいかない場面やどうすれば良いか分からない場面もありましたが、時には先輩からのサポートをいただきながらメンバー間で連携を行い、当サービスを開発することができました。
実際の開発の流れや学習内容については、新入社員開発チャレンジ編にて紹介しています。開発のプロセスやプログラミングスキルの習得に興味がある方はぜひお読みください。
また、サービスの今後についてですが、自動化テクノロジだけでなく他テクノロジへの展開や追加機能の提供を考えています。こちらについては今後サービスがどのように活用されていくかによって柔軟に取り組んでいきます。
本記事を読んでサービスに興味を持たれた方は弊社担当営業までお尋ねください。
※本記事の内容は執筆者個人の見解であり、所属する組織の見解を代表するものではありません。