mtbの学んだことのブログ

とあるPythonエンジニアのブログ

機能という言葉のもやもや

システム開発・ソフトウェア開発の設計に関する書籍をいくつか読んだりします。

いろんな書籍を読んでいるなかで、よくわかんないなあと思うことがあります。

わかんないこと

それは、「機能」という言葉の意味です。

「機能」という言葉が出て来た時に、「この本は、今、どういう意味というかどういう粒度で話をしているんだろう」という疑問が出てきます。

そして、なんの話をしているかを間違えると、全然理解が進まないです。

で、それを解消するために、機能って言葉について、もう少し詳しく考えてみたいと思ってます。なんか近い話がどこかに書いてないのかなあ。と思ってインターネットを検索しました。

インターネットで検索しながら、自分が学んだことを書きます。

機能という言葉の定義

機能という言葉について調べていると、以下のことが個人的に重要でした。

  • 機能は、ある物が本来備えている働きのこと
  • 機能は、全体を構成する個々の部分が果たしている固有の役割のこと

このあたりに書いています。

kotobank.jp

とりあえず、以下の理解が進みました。

  • 単体では機能と言わない。
  • 複数で全体を構成するから、機能という。
  • 誰かがどう動くかを期待している働きを機能と言っている。

機能の単位

機能という言葉で検索していると、いろんな機能が出て来ました。 その機能をどんな単位で決めるかを考えてまとめてみました。

  1. 国単位で考える機能(お金の機能、法律の機能、とか。)
  2. 組織単位で考える機能(人事の機能、営業の機能、研究の機能とか。)
  3. チーム単位で考える機能(予算管理の機能、時間管理の機能とか。)
  4. 仕事単位で考える機能(在庫引当機能、レビュー機能、とか。)
  5. 行動単位で考える機能(受注を確認する機能、在庫を確認する機能、受注に対して、在庫を引き当てる機能、とか。)

機能にはいろんな単位があるんだなあと思いました。

個人的には、「これ、どういう意味があるんだろう?なんのためにあるんだろう?」とかを考えたり、それを知ったりするのが好きです。

だから、色々考えたりします。それって、機能を自分なりに考えてたんだなあ、と思いました。

機能の階層

システムの機能の粒度の話を検索してたら、機能の階層という話が出て来た。

階層があるのかあ、なるほど。と思いながら、ぼんやり考えていました。

すると、ここに書いてあるシステム開発って、仕事の単位でシステムを開発しようとしているケースが多いなあ。と思いました。

そして、仕事の単位を一つのプロジェクトにして、システムを開発していくことが多いのかもなあ。そして、その一つ一つを実現する小さい何かを、ソフトウェアで実装していくのかなあ、とか思ったりしました。

参考:見てたページ

で?

ちょっと脱線しました。

結局のところ、機能という言葉の意味は、定義のところに書いたとおりです。

そして、モヤモヤ色々考えた結果、話をしている目的によって、機能という言葉の意味は変わるのかな、というのが今の僕の理解です。

例えば、「ソフトウェアをどう作るか?」を考えていて、機能の話が出て来たら、それは、ソフトウェアで作るものに何が必要かの話だと思います。

「ソフトウェアをどう使うか?」の話をしていたら、「ソフトウェアでどんな仕事をしようとしているか」が機能なのかなあ、とも思いました。

あと、「ソフトウェアで何がしたいのか?」の話をしていたら、「ソフトウェアで解決したい問題」が機能なのかなあ、とも思いました。

二つ目は、シナリオ。 三つ目は、ストーリー。とか書いた方がわかりやすいんじゃないかな、とか思いました。 一つ目は、、、、なんだろう。モジュール?なんか違うような。 機能かなー、うーん。って思ったのが僕の今のところの話です。