0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「拡張性」という言葉は、何を拡張するのか

0
Posted at

はじめに

先日、友人からこんなメッセージが届きました。

友人は現在、とある企業の2週間程度のインターンシップに参加しています。

そこで、「用語集をAIで回答する」といった感じのシステムについて要件定義をする機会があったそうです。

その中で友人が、

「これって、AIである必要ありますか?」

と聞いたところ、担当者から

「拡張性も知らんの?」

といった趣旨の返答をされたとのことでした。

もちろん、私はその場にいたわけではありませんし、あくまで友人から聞いた話です。そのため、実際にどのような会話がおこなわれたのか、担当者がどのような意図で「拡張性」という言葉を使ったのかは分かりません。

また、この記事で友人と担当者のどちらが正しいのかを決めたいわけでもありません。

ただ、この話を聞いたときに、

「拡張性って、そんなんじゃないんじゃない?」

と思いました。

ということで今回は、友人の言葉を肴に「拡張性」について考えてみようと思います。

そもそも、AIである必要はあるのか

まず初めに思ったのが、

「用語集をAIで回答する必要ってあるの?」

ということです。

例えば、用語とその説明があらかじめ決まっているのであれば、データベースなどに用語と説明を保存して、それを検索すればいいようにも思います。

一般的な技術用語について調べたいのであれば、公式ドキュメントや信頼できる資料などを調べることもできます。

そのため、最初にこの話を聞いたときの私は、

「用語を調べるためにAIを使うことに、どれくらい意味があるんだろう」

と考えていました。

ただ、友人の

「AIである必要ありますか?」

という言葉について考えていると、もう少し違った捉え方もできることに気がつきました。

これは単純に「AIなんていらなくない?」と言っているのではなく、

「この要件に対して、AIという技術を選定する理由はなんですか?」

と聞いているとも考えられます。

そう考えると、結構大事な質問なんじゃないかなと思います。

「要件にAIと書いてあるからAIを使う」ではなく、

  • なにを実現したいのか
  • どのような制約があるのか
  • 今後どのような機能を追加したいのか
  • その中で、なぜAIが適しているのか

といったことを考えた上で、初めて技術を選択することができるからです。

「AIだから拡張性がある」は正しいのか

今回、担当者が言ったとされる「拡張性」という言葉には、いくつか意味が考えられると思っています。

例えば、

  1. AIを使えば将来的に色々な機能へ拡張できる
  2. 要件定義をする上では拡張性も考える必要がある
  3. 「拡張性」という概念そのものを知らないと思われた

などです。

実際にどれだったのかは分かりません。

ただ、仮に、

「将来的な拡張性を考えてAIを使っています」

という意味だったのであれば、私はその考え自体には納得できます。

例えば、現在は、

「用語を入力すると説明を返す」

だけのシステムだったとしても、将来的に、

  • 自由な文章で質問できる
  • 利用者の理解度に合わせて説明を変える
  • 関連する概念を提示する
  • 複数の情報を横断して回答する

といったシステムにしていく構想があるのであれば、現在からAIを利用する意味はあると思います。

この場合、

「現在の機能だけを見るとAIである必要はないように見えるけど、将来的にこういう機能を追加したいからAIを使っている」

ということになります。

これなら、「拡張性を考えてAIを使う」という説明にも納得できます。

ただ、

「AIなら色々できるから拡張性があるよね」

だけで終わってしまうと、個人的には少し違うように感じます。

技術的に追加できることと、拡張性は違う

今回この話を考えていて、一番自分の中でしっくりきたのが、

「技術的に追加可能であること ≠ システムとして拡張可能であること」

という考え方です。

例えば、ある用語集のシステムに、

  • SNS
  • スケジュール管理
  • 決済
  • 動画編集

などを追加することは、技術的にはできるかもしれません。

しかし、

「色々な機能を追加できるから、このシステムは拡張性が高い!」

と言われると、私は少し疑問に感じます。

そもそも、その機能はこのシステムの何を拡張しているのでしょうか。

「機能を追加できること」と「システムを拡張できること」は、似ているようで少し違うと思っています。

だからこそ、拡張性を考えるためには、

「このシステムは何をするものなのか」

という軸が必要になるのではないでしょうか。

最低機能要件を考える

私はシステムの拡張性を考えるのであれば、最低機能要件をある程度固めておく必要があると思っています。

例えば、ある程度大きなプロダクトを作るのであれば、私は以下のように考えます。

  1. 将来的なプロダクト構想を考える
  2. 欲しい要件を洗い出す
  3. その中から「これがあれば最低限動かせる」という機能を絞る
  4. 最低機能要件として明記する
  5. 最低機能要件に対して開発する
  6. 実際に利用してもらう
  7. 構想や要件を再評価する

最初は5番までで考えていました。

しかし、今回この話について人と話している中で、

「実際に使ってもらったら、そもそも想定していた問題自体が違ったと気づくこともあるよね」

という話になりました。

これは確かにその通りだと思います。

例えば、用語を調べるシステムを作ったとして、実際に使ってもらった人から、

「用語を調べたいんじゃなくて、この資料そのものが理解できないんです」

と言われるかもしれません。

そうなれば、

「そもそも問題設定が違ったのでは?」

と考え直す必要があります。

そのため、

構想 → 要件 → 最低機能要件 → 開発

で終わりではなく、

構想 → 要件 → 最低機能要件 → 開発 → 検証 → 再評価

までが一巡なのかなと思います。

「このアプリに似合う機能」

最低機能要件を考えることで、

「このシステムは何をするものなのか」

が見えてきます。

そして同時に、

「このシステムは何をしないものなのか」

も見えてくると思っています。

例えば、

「専門知識がない人でも、知らない技術用語を理解できるシステム」

を作るとします。

そうすると、

  • 関連する用語を表示する
  • 出典を表示する
  • 理解度に合わせて説明する
  • 質問形式で検索できるようにする

といった機能は、個人的にはこのシステムに「似合う」ように感じます。

一方で、

  • 社員同士でチャットする
  • スケジュールを管理する
  • 決済する

といった機能は、少なくともそのままでは「このシステムに必要なのかな?」と思います。

もちろん、実装すること自体はできます。

でも、

技術的に実装できることと、そのシステムにとって自然な拡張であることは別です。

だから私は、最低機能要件やその上にあるプロダクト構想を「軸」として、そこから拡張案を見ていく必要があると思っています。

「拡張性があるからAI」ではない

ここまで考えて、最初に感じた違和感が少し明確になりました。

もし、

AIを使う

AIなら色々できる

拡張性がある

という考え方なのであれば、私は少し違うと思います。

個人的には、

将来的にこんなプロダクトにしたい

そのために必要な要件を考える

現時点で最低限必要な機能を決める

将来的にどの方向へ拡張するかを考える

そのために適切な技術を選ぶ

という順番なのではないでしょうか。

そして、その結果として、

「だからAIを使う」

のであれば、AIを採用する理由として「拡張性」という言葉を使うことができます。

つまり、

「拡張性があるからAIを使う」のではなく、「何を拡張するのか」が先にある

と私は思っています。

ただ、この会話はもう少し続いてほしかった

ここまで「拡張性」について色々と考えてきましたが、この話をしている中でもう1つ気になったことがあります。

それが、

「この会話、もう少し続いていたら面白かったんじゃない?」

ということです。

友人は、

「AIである必要ありますか?」

と聞きました。

担当者は、

「拡張性も知らんの?」

といった趣旨の返答をしたそうです。

友人側には、

「今提示されている機能だけならAIじゃなくても実現できるのでは?」

という考えがあったのかもしれません。

一方、担当者側には、

「今の機能だけではなく、今後追加する機能まで考えてAIを選んでいる」

という考えがあったのかもしれません。

もしそうなのであれば、どちらかが「拡張性」という言葉を知らなかったというより、お互いが見ているものが違っていただけなのかもしれません。

あと2往復あったら

例えば、

「AIである必要ありますか?」

に対して、

「なんでそう思ったの?」

と返していたらどうでしょうか。

そこで、

「用語と定義が決まっているなら、データベースに保存して検索するだけでもできると思ったからです」

と答える。

そして、

「じゃあ、将来的に自由な文章で質問できるようにするとしたら?」

と返す。

「それならAIを使う意味はありそうですね」

「じゃあ、将来的にそれをやることが決まっているなら、今からAIを使うべきだと思う?」

こういう会話になったら、とても面白いと思います。

そして、インターンシップとしてもかなり学びがあるのではないでしょうか。

正解がどちらなのかは、それほど重要ではないと思っています。

「なぜこの技術を使うのか」を考えること自体に意味があるからです。

インターンシップだからこそ「どうして?」を大事にしたい

もちろん、インターンシップの目的によっても変わります。

学習を目的としている場合もあれば、実際の開発に近い経験をすることを目的としている場合もあります。

個人的には、実戦形式の中で学習するのが一番面白いと思っています。

実際の開発では、最初からすべての目的や答えが与えられるとは限りません。

曖昧な要件が来ることもあると思います。

そんな中で、

「どうしてこの技術なんだろう?」

と疑問を持つ。

そして、自分なりに考えて、

「別の方法でもできるんじゃないですか?」

と聞いてみる。

これは実際の開発に近い経験の1つなのではないでしょうか。

だからこそ、インターンシップでこういう質問が出たのであれば、個人的にはかなり大事にしたいです。

もし私が担当者だったら、

「AIである必要ありますか?」

と聞かれたら、

「お、なんでそう思った?」

と聞いてしまうと思います。

そこから相手の考えを聞いて、

「じゃあ、こういう機能が増えたらどうする?」

と聞く。

そういうやり取りができたら、とても面白そうです。

「目的を言わない」と「説明しない」は違う

インターンシップでは、課題の目的を最初からすべて説明しない場合もあると思います。

例えば、

「与えられた要件をそのまま実装するのではなく、要件そのものに疑問を持てるか」

を見たいのであれば、最初からそれを言ってしまうと意味が薄くなります。

そのため、あえて目的を伏せるということもあると思います。

ただ、その場合はその分だけフォローが必要です。

目的が分かっていれば、参加者はなんとなくでも指針を持って動くことができます。

目的を伏せるのであれば、自分で考える範囲が広くなるため、その分だけ担当者とのやり取りが大切になります。

だからこそ、

「AIである必要ありますか?」

という「どうして?」が出てきた瞬間は、対話を始めるいい機会なのではないでしょうか。

質問する側も、答える側も

もちろん、

「AIである必要ありますか?」

という聞き方にも改善できるところはあると思います。

例えば、

「今の機能だけを見ると、データベースで検索する形でも実現できそうだと思ったのですが、将来的にどのような機能を想定してAIを使っているのでしょうか?」

と聞けば、意図はより伝わりやすくなります。

一方で、答える側も、

「拡張性も知らんの?」

で終わるのではなく、

「どういう意味?」

と聞くことができます。

私は、会話をするときに毎回すべての前提を説明する必要はないと思っています。

ただ、

「自分の考えが誤解されているかもしれない」

と思ったのであれば、それを修正する。

逆に、

「相手がどういう意味で言っているのか分からない」

のであれば、もう少し聞いてみる。

そうやって会話を続けていくことが大事なのではないでしょうか。

まとめ

今回は、友人から聞いたインターンシップでの出来事をきっかけに「拡張性」について考えてみました。

最初は、

「AIだから拡張性があるって、どういうこと?」

くらいの気持ちでした。

しかし、色々と考えていくと、

  • AIを採用する理由
  • 技術選定
  • 最低機能要件
  • プロダクト構想
  • インターンシップでの学習
  • 技術者同士の対話

まで話が広がりました。

今回考えていて、個人的に一番しっくりきたのは、

技術的に追加可能であること ≠ システムとして拡張可能であること

という考えです。

そして、

「拡張性があるから、この技術を使う」

ではなく、

「何をどのように拡張したいのか。そのためにこの技術を使う」

という順番で考えることが大切なのではないかと思います。

また、今回の友人と担当者の会話についても、「どちらが正しかったのか」というより、

あと2往復くらい会話が続いていたら、かなり面白い話になっていたんじゃないか

と思っています。

「拡張性」という言葉を知っているかどうかではなく、

「あなたの言う拡張性って、何を拡張する話ですか?」

とお互いの考えを確認する。

技術について「どうして?」を持つことと、その「どうして?」を潰さずに対話すること。

今回の話を通して、そんなことを考えるきっかけになりました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?