関連するソリューション
業務改革
AI
システム開発
エバンジェリスト・フェロー 玉越 元啓
今回のテーマは、「ローコードAI開発」についてです。昨今、ローコード、ノーコード開発というバズワードに関する記事を数多く目にします。気軽に使えるAIに関するローコードの機能やサービスを、紹介していきます。
- ローコード/ノーコードとは
- AIのローコード/ノーコードの状況
- 実践例:翻訳API(Google Translate)
- 実践例:Excel関数の活用例
- 実践例:画像処理系(TeachableMachine)
- まとめ
ローコード/ノーコードとは
通常のソフトウエア開発の場合、実現したい機能をコンピュータで理解できる言語で記述することが必要になります。このときの言語はプログラミング言語と呼ばれ、プログラミング言語で記述された一連の文はコードと呼ばれています。
プログラミング言語は現在700種類超(*1)存在しており、実現したい機能や機能を動かしたい環境によって使い分ける必要があります。ソフトウエア開発にはプログラミング言語に習熟した人材が必要となりますが、習得するのに専門的な知識と時間が必要となることが課題の一つでした。
※外部サイト *1 List of programming languages
この課題を解消するために提唱・推進されているアイデアがローコードです。開発済のソフトウエアの機能の一部を微調整ができる部品として提供し、これらの組み合わせでソフトウエアを開発します。これらの部品や調整機能を提供するのがローコード開発ツールです。
ローコード開発ツールにおいては、利用頻度の高い機能が「既に完成した部品として提供」してあります。そのため、用意されている部品を組み合わせ、「足りない部品を自分で作ることでソフトウエアを完成させることになります。
ノーコードとは、開発ツールが提供している機能だけでシステム開発を実現するものです。
プログラミング言語を習得するよりも、ローコードツール/ノーコードツールの使い方に慣れる方が平易であるため、プログラミングできる人材不足(*2)への対応策として推進されています。
※外部サイト *2 総務省 ICT人材の不足・偏在
弊社HPでローコードの情報をまとめた資料を公開しています。よろしければご覧ください。
資料ダウンロード
- 開発における課題
- ノーコード、ローコード、スクラッチの比較
- ローコード開発とは何か
AIのローコード/ノーコードの状況
AIの開発には、単なるシステム開発以上に、専門的な知識が必要となります。プログラミング言語のほか、AIのアルゴリズムに関する知識、統計学・線形代数・微分積分などの数学分野がその代表です。
AIの普及を進めるため、ローコード/ノーコード的なツールや機能が提供されるようになってきました。これらは専用のツールとして提供されるほか、既存のツールの機能やプログラミング言語から利用できる機能として提供されています。これらのうち、比較的身近で手軽に使えるツールや機能について使い方を紹介します。
翻訳エンジンの利用
Google翻訳の機能をGoogle Spreadsheetsから利用する方法とPythonから利用する方法です。まとまった文章を翻訳したいときや翻訳結果を残しておきたい場合などでは、翻訳サイトを使うのではなく、スプレッドシートの関数やプログラムから翻訳機能を呼び出すことができます。
(1) Spreadsheetsの関数
翻訳機能を提供する関数が用意されています。
=GOOGLETRANSLATE(翻訳したい文,翻訳元言語,翻訳先言語)
翻訳の精度はあまりよくはありませんが、文意をとるには十分なレベルです。
(2) spreadsheetsのカスタム関数
Goolge Apps ScriptにはLanguageAppという言語翻訳機能を呼び出す機能があります。Apps Scriptとは、ExcelにおけるVBAに相当する機能です。こちらの機能を使った翻訳精度のほうがよいように感じます。
Extensions から Apps Script の編集画面を開きます。
Scriptとして、下のコードを記述します。
Function translate(originalText, translateFrom, translateTo) {
Utilities.sleep(1000);
If ( originalText.length > 0 ) {
Return LanguageApp.translate(originalText, translateFrom, translateTo);
} else{
Return '';
}
}
シートからは次のように呼び出します。
一日にLanguageAppを利用できる回数には上限があります。また、利用するには一定以上間隔をあける必要があります。
※外部サイト *3 Class LanguageApp
(3)PythonからGoogle翻訳を利用
PythonからGoogle翻訳機能を呼び出す方法です。
pip install googletrans でライブラリをインストールして利用します。
実践例:Excel関数の活用
Excelでも簡単な予測ができる関数が用意されています。今回は線形的な予測をするものと周期的な予測をするものを紹介します。
(1) FORECAST.LINEAR
FORECAST.LINEAR関数は、線形トレンドに沿った既存の値に基づいて値を予測します。FORECASTは、線形回帰を使用して将来価値の予測を計算し、売上、在庫、費用、測定値などの数値を予測するために使用できます。
線形回帰とは、従属変数(y値)と独立変数(x値)の間の関係をモデル化するための統計の手法です。FORECASTは線形回帰を使用して、既存のx値とy値に基づいて、指定したx値のy値を計算します。
構文
= FORECAST(x、既知のy、既知のx)
引数
X:予測の計算に使用するx値のデータポイント
既知のy:従属配列またはデータの範囲(y値)
既知のx:独立した配列またはデータの範囲(x値)
戻り値
予測値
上図のセルの関数は下のようになっています。
(2) FORECAST.ETS
FORECAST.ETS関数は、季節的な傾向に従う既存の値に基づいて値を予測します。FORECAST.ETSを使用して、パターンで売上、在庫、経費などの数値を予測できます。
予測値を計算するために、FORECAST.ETSはトリプル指数平滑化と呼ばれる計算を使用します。これは、全体的な平滑化、傾向の平滑化、および季節的な平滑化を適用するアルゴリズムです。
構文
= FORECAST.ETS(target_date、values、timeline、[seasonality]、[data_completion]、[aggregation])
戻り値
予測値
引数
target_date:予測の時間または期間(x値)。予測を計算する必要があるタイムライン上のポイントを表します。
Values:既存または履歴値(y値)。予測を計算するための既存の履歴値。
Timeline:タイムライン、数値のタイムライン値(x値)。タイムラインは、一定のステップ間隔の数値で構成されている必要があります。たとえば、タイムラインは、年次、四半期、月次、日次などになります。
Seasonality:[オプション]季節性の計算(0 =季節性なし、1 =自動で計算、n =タイムライン単位の季節の長さ)。
data_completion: [オプション]欠測データの処理方法(0 =ゼロとして処理、1 =平均値として処理)。デフォルトは1。
aggregation :[オプション]集約方法。デフォルトは1(AVERAGE)です。
引数の補足です。
季節性の引数は、タイムライン単位で表される季節パターンの長さを表します。たとえば、今回の例では、データは四半期ごとの周期をもつため、季節性は3として与えられます。許可される値は、0(季節性なし、線形アルゴリズムを使用)、1(季節パターンを自動的に計算)、n(季節の長さをあらわす、2から8784までの数値)です。
季節性の上限が「8784」なのは、366日 x 24時間、から来ていると推測しています。
data_completion引数はオプションであり、欠落しているデータを処理する方法を指定します。オプションは1(デフォルト)とゼロです。デフォルトでは、隣接するデータ値を平均化することにより、欠落している値を推測します。ゼロが指定されている場合、欠落しているデータポイントをゼロとして扱います。
集計引数はオプションであり、タイムラインに重複する値が含まれている場合にデータポイントを集計するために使用される関数を制御します。例えば、21年4月のデータが複数あった場合、この月のデータ値を計算する方法を指定することができます。デフォルトは1で、AVERAGE(平均)を使用します。その他のオプションは、以下の表になります。
予測をできるだけ正確にするために、FORECAST.ETSを使用する前に手動で集計することをお勧めします。
Value Behavior
1 (or omitted) AVERAGE
2 COUNT
3 COUNTA
4 MAX
5 MEDIAN
6 MIN
7 SUM
上図のセルの関数は下のようになっています。
実践例:画像処理系(TeachableMachine)
TeachableMachineは以前の記事で使い方や実例を紹介しました。
今回は、TeachableMachineでつくったモデルを自分のプログラムに組み込む方法です。画像などを選んで学習が終わったら、右上のExport Modelボタンからモデルファイルをダウンロードします。
※外部サイト Teacheable Machine
ダウンロード時に表示されるサンプルファイルとダウンロードしたモデルファイルを同じフォルダに保存します。サンプルファイルは画像データを読み取り、予測結果を返す簡単なものです。モデルの構造を表示してみるとシンプルなAIであることがわかります。
tf.keras.utils.plot_model(model, to_file='model_combined.png')
このようなシンプルなモデルでも、プログラミングすると下のようなコードになると思われます。実際にモデルを開発するには、これに画像の読み取り・学習・結果表示などの機能を開発する必要があります。
画像認識AIのモデルの例
def create_model():
model = tf.keras.models.Sequential([
keras.layers.Dense(512, activation='relu', input_shape=(224,224,)),
keras.layers.Dropout(0.2),
keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
return model
まとめ
■ローコード/ノーコードは、開発用ツールが対応している範囲であれば簡単に開発できる一方、有効に活用するにはツールで対応できる範囲に要件を制限することが必要。
■AIにおいてもローコードの開発環境やツールが用意されており、それらを活用することでAIの開発を進めることができる。様々なツールや機能が提供されているので、身近なもので実験したり、目的に応じて使い分けたりすることが大切。
■有償の高機能なAI開発ツールには、データの加工からAIのアルゴリズム選択・学習の一連のプロセスがある程度自動化された環境が用意されているものもある。