いものやま。

雑多な知識の寄せ集め

ORの事例研究発表の難しさ。

9/9の週に名古屋でOR学会のシンポジウムや研究発表会を聴いてきた。

そこで興味深かった事例研究の話と、事例研究の発表がなぜ難しいのかについて書いてみたい。

配合計画

研究発表会の2日目には企業事例交流会として事例研究の発表がいろいろあった。 その一つが飼料の配合計画の話。

これは動物に与える飼料を複数の原料をうまいこと配合して作ろうという問題。

飼料販売では原料費のコストが売上の9割を占めていて、営業利益は2%とかなんだとか。 そのため、原料費を抑える必要があるとのこと。 最近は原料費や輸送費の高騰もあって、その重要性はさらに増しているらしい。

解きたい問題は、複数の原料を混ぜ合わせる量を決めて、成分などの制約を守りつつ、原料コストを最小化するというもの。 これ自体は典型的な線形計画(LP)の問題で、ソルバーとかを使って簡単に解ける。 「マクドナルドのメニューだけで1日に必要な栄養をとるにはどうしたらいいか?」みたいな記事をネットで見かけるけど、それと同じなので。 実際、LPの問題として解いてくれる既存のソフトもあるとのこと。

面白いのはここからで、実際の業務だと他にもいろいろ要件が入ってきて、単純に適用するだけでは不足することも。 運用上の問題とかもあったりね。 そこでいろいろ工夫が必要になってきて、それらの課題をどうやって解決していったのかという知見が事例研究の肝となる。

今回の場合、次のような要件が追加で必要だったとのこと:

  • 有効桁数を考慮する必要がある(細かい量は実際には取れないため)
  • 成分値の丸め計算にクセがある(総和を丸めるのではなく、原料ごとに丸めてから和をとる必要がある)
  • 最小計量値の制約(その原料を使うなら最低この量以上使わないといけない)

既存のソルバーで解くのだとこれらの制約が守られないことがあり、解いたあとに制約が守られるように解を調整したり、条件を調整して何度も問題を解き直したりが必要だったらしい。

ただ、これらは整数計画問題(MIP)にしてやればうまいこと条件を記述できる。 そこでMIPで記述して問題を解くようにしたと。

これにより、ソルバーを回したあとに試行錯誤する作業をなくせて、また、厳密に最適解が得られるようになったことでコストも削減できたと。 削減できるコストとしてはそれほど大きなものではないけど、前述の通り、原料費が売上の9割を占めているため、利益の増加としてはけっこう大きなものとなる。

そんな感じで、とても興味深い話だった。

なぜ発表できたのか

ただ、そうなると疑問が湧いてくる。

「なぜこの内容を発表できたのか?」

この発表は、MIPソルバーの代理販売をしているオクトーバー・スカイの方によるもので、共同研究者として飼料配合計画システムの構築を行なったユーズウェアの方の名前が挙がっている。

オクトーバー・スカイはこれによりMIPソルバーの有用性を示せるので、発表する意味がある。 また、OR学会としても数理最適化の有用性を示せるし、自分のような聴講者としても実務での話を聞けるので、とても嬉しい内容となっている。

ただ、ユーズウェアとしては発表してしまってよかったのかなと。 ユーザの手間を抑えてコストも抑えられる技術となれば、かなり重要な内容で、これを公開してしまっては他の企業との競争優位性を失ってしまうリスクがある。 また、発表したことでユーズウェアに何かメリットがあったかというと「?」なところがある。 デメリットこそあれメリットが見えてこない・・・ あえて挙げるなら企業としてのCSRの一環やアピールとなるけど、アピールしたい先とはあまりマッチしてないような。

そんなわけで思い切って質問してみたんだけど、自分もうまく質問できず。 回答としては「特許をとっているから公表できた」というものだったんだけど、それは公表できた理由であって、公表しようと思ったモチベーションの話ではないから。 うーん、なんて聞いたらよかったかなぁ(^^;

事業会社へのインセンティブをどう作るか

ORの事例研究の発表は、コンサルや研究者、OR学会、そして自分のような聴講者には非常に有益なものになっている。 なので、どんどん発表が増えてほしいというのはある。

一方で、事業会社には発表して得られるメリットがほとんどない。 もちろん企業のアピールにはなるだろうけど、マネされてしまって競争優位性を失うリスクもあるので、それに見合うのかどうか。 導入するのにもコストかけてるわけだし。

特許をとるという手もあるけど、これは防御策であって、やはり手間やコストはかかるので、それに見合うだけのリターンがないとなかなか難しい。 企業は慈善活動で働いてるわけじゃないからねぇ。

これが機械学習とかの分野であれば、利益に直結することが少ないのでまだいいんだけど、ORが扱ってるのはまさに利益に直結する部分なので、だからこそORの研究は有益なんだけど、それと同時に公表を難しくしてしまっているところがある。

公表しても問題ないとするには、基本的にはマネできないようにするか、マネされても問題ないという状況を作る必要がある。

一番シンプルなのは特許をとること。 ただ、特許をとるのは手間もかかるしコストもかかる。 それに見合うだけのリターンがないのであれば、企業秘密として扱った方が合理的な選択となる。 特許をとるにしても、いかにマネしにくいようにするかであれこれ手を入れるようだし。

あとは、手法としてはマネできるけど、必要となるデータを取得できなかったり、その他のノウハウを秘匿して、実施を困難にするという手もある。 機械学習だとこれも大きくて、学習のための膨大な実データが必要だったり、あるいは計算リソースへの膨大なコスト投入がないとマネできないというのがあったりして、マネが難しいから公表できるという側面も。

他には市場で圧倒的なシェアを持っていたりする場合も公表はしやすい。 それなら他社にマネされてもシェアを奪われるリスクは少ないからね。 競争優位性を生んでる要素はおそらく他にあり、ORの活用はそこまで重要じゃなかったりするので。 (余談だけどシンポジウムで発表のあった日本パレットレンタルはこの条件を満たしていて、業界でのシェアは1位で約半数を占めていたはず)

逆にいうと、そういう状況でない限り、公表するのはかなり難しい。 実際、自分もいろいろ発表したい内容はあるんだけど、発表するわけにはいかないからなぁ・・・

そんなわけで、事例研究の発表がもっといろいろ出てきてほしいけど、条件を満たすのはなかなか難しい。 何か事業会社側にインセンティブを作る必要はありそう。

たとえば特許取得の手間やコストをサポートしてあげて公表しても問題ない状態を整えてあげるとか。 そうすれば事業会社には省コストで特許という知財を得られるインセンティブが生まれる。

あるいは事例の公表を条件としてコンサル料を割引するとか。 金銭的なインセンティブはシンプルだけど企業としては分かりやすいだろうし。

まぁ、それでも企業側は基本的に公表を渋るだろうけど。

素朴に成果を報告しあえて全体として進んでいけるのがもちろん理想ではあるだろうけど、企業もお金を稼がないとやっていけないし、OSSで問題になってるようなフリーライド問題とかも出てくるので、現実は簡単でないんよなぁ。

今日はここまで!

CLAMP展に行ってきた。

国立新美術館CLAMP展が前期(2024-07-03~2024-08-12)、後期(2024-08-14~2024-09-23)と開催されていた。

そこで、8/7(前期)と9/13(後期)で見てきたので、感想とか。

CLAMP展へ

国立新美術館の最寄りである乃木坂駅を降りると、早速CLAMPのキャラが出迎えてくれる。

通路の柱でCLAMPのキャラがお出迎え

さくら(カードキャプター)とか

CLAMP展は2階で開かれているので、エスカレータで向かうことになる。 ただ、時間帯によってはエスカレータ前に行列が。 前期はタイミングよく10分くらいで入れたんだけど、後期は40分くらい待つ感じだった。 まぁ、場合によっては3時間待ちとかもあったようなので、比較的すんなり入れた方だとは思う。

入ったあとはまずロゴとかメッセージが展示されていた。

CLAMP展のロゴ

CLAMPからのメッセージにはサインが

カラーイラスト展示

展示はCLAMPにちなんで「C」「L」「A」「M」「P」の5つのエリアに分かれていて、最初の展示は「C: Color」のカラーイラスト展示となっている。 (ちなみにCLAMPという単語には「じゃがいもの山」という意味もあるらしく(『学園特警デュカリオン』第2話参照)、このブログの名前「いものやま」もそれにちなんでつけたところがある)

この部屋だけは前期と後期で展示が違った感じ(逆に言うと他の部屋は共通だったはず)。

古くは『聖伝』から新しくは『GATE7』(やクリアカード編)までと、CLAMP作品全般に渡ってカラーイラストの原画(のはず)が展示されていて壮観だった。

前期はけっこう見たことあるイラストが多かったけど、後期は見たことないイラストもけっこうあったかな。 あと『xxxHOLiC』の構図はやっぱり目を引くものがあるなと思ったり。

ちなみに、写真はNGだったけど、画集が出てるので興味のある人はぜひ。

名場面集

次の「L: Love」は名場面の原稿が展示されていた。

展示を見ながら、どれもいいシーンだったよなぁとしみじみ。

ただまぁけっこうネタバレというか肝心なシーンも多かったので、CLAMP作品を一通り読んでいた方がいいかなとは思ったり。 乾闥婆王と蘇摩のシーンとかね。

ストーリー

続いて「A: Adventure」の展示。

Adventure入口

『聖伝』や『魔法騎士レイアース』など、ストーリーの大きな流れを追える原稿が展示されている感じ。 古い作品は知られてないものも多いと思うんだけど、いい作品がたくさんあるからこれを機に読まれるといいよね。

展示の様子

翔(フライ)を初使用する名シーンの原稿も

写真だと分かりにくいと思うけど、原稿で見るとベタの塗り方とかが見えて、へぇっと思ったり。 それにしても名画だよねぇ。

ムービー

「M: Magic」ではCLAMP作品のキャラや場面がトランジションしていく映像が流れていた。

映像が流れていく

フレーズ集

最後「P: Phrase」はCLAMP作品でたくさん出てくる名言を集めた展示。

そして名言の書かれたシールを1枚もらえて、壁に貼ることができる。 めっちゃたくさん貼られていて壮観だった。

名言の書かれたシール

壁一面にシールが貼られた景色は壮観

出口へ

続く部屋では年表とか関連作品が展示されていた。 休載中の作品、早く続きが読みたいよ・・・

そして今回の展示のための書き下ろしイラストの展示。

阿修羅とさくら

そして出口へ。

「貴方の旅路に幸多からんことを」

いやー、粋な展示だよね。

コラボメニュー

美術館内のレストランやカフェではコラボメニューもあった。

東京BABYLON』をイメージしたイカ墨のスパゲッティ

『X』の天の龍をイメージしたカシスハニー&クランベリーソーダ

これもよかったね。 まぁ量はもうちょっとほしかったけどw

今日はここまで!

名古屋を旅行してきた。(その2)

前回の続き。

8番出口?

ちょっと余談だけど、ウェルビー今池に向かうときに、今池駅から一番近いのが8番出口。 これがゲーム「8番出口」を思い起こさせてちょっと面白かった。

8番出口

雰囲気がめっちゃゲームっぽいw

タイルとか天井とかモデルになってる?w

熱田神宮

4日目は観光で、まずは熱田神宮へ。

鳥居

大楠。めっちゃデカい

拝殿

おみくじは中吉

信長塀

熱田神宮で食べたかったのが宮きしめん

冷たい宮きしめん

前来たときも食べたんだけど、これが本当に美味しいんだよなぁ。 これがまた食べたくて熱田神宮に来たまであるw

葛もちバーなるものも

この葛もちバーもヒンヤリしてて美味しかった。

赤福

熱田神宮をあとにして向かったのは矢場町にある松坂屋名古屋店

ここでは赤福赤福茶屋というお店を出していて、赤福などをお店で食べることができる。 そして夏季限定で赤福氷なるものを出していたり。

店先には赤福氷の文字が

平日の午後だし、すんなりと入れるかと思ったら行列。 人気あるんだなぁ・・・ 30分弱待って無事食べることができた。

赤福

中に餡子と白玉が入ってた

ふわふわのかき氷に抹茶シロップがかかってて、それを中の餡子と絡めながら食べたんだけど、いやー、美味しかったね。 一緒に出されたほうじ茶の香りもよかった。 あとお土産として赤福も購入w

大須観音

松坂屋ではお土産としてういろうも買うつもりだったんだけど、検索で見つけてた情報が古くて、目的のお店がなかったり。 そこで急遽、大須観音まで向かうことにした。

向かう途中で「やば珈琲店」というのがあった。ヤバそうw

矢場とんインパクトがすごいw

大須観音に続く仁王門通り。色合いがすごい(^^;

ここで大須ういろ本店に立ち寄り、お土産のういろうをゲット。

なんかオシャレな感じのお店だった。 ういろうもモチモチの甘さ控えめな感じで美味しかったねぇ。

大須観音

まるや本店

このあとは名古屋駅まで戻り、以前食べられなかったひつまぶしを食べた。

向かったのはまるや本店の名駅店。

まるや本店 名駅

着いたのが17時半頃だったけど、少し行列ができていて、30分くらい待った。

ひつまぶし

最後はお茶漬けで

これも美味しかったなぁ。 最初はそのまま、次に薬味を乗せて、最後にお茶漬けでということだったけど、個人的にはそのまま食べるのが一番好きだったかな。 薬味は加減が難しくて、下手するとうなぎの風味を消してしまいそうだったので。 まぁそれだったらうな重でもいいのでは?ってなってしまいそうだけど。

ちなみに店を出たら行列がめっちゃ伸びてて1時間待ちくらいになってた。 いやー、危なかった。


あとは新幹線に乗って無事帰宅。

名古屋は美味しいものがたくさんあってよかったなぁ。 サウナも堪能できたしいい旅行だった。

今日はここまで!

名古屋を旅行してきた。(その1)

OR学会のシンポジウムと研究発表会が名古屋の南山大学であったので、9/9(月)〜9/12(木)で名古屋を旅行してきた。

名古屋へ

宿はウェルビー今池にしようと決めてたので、前乗りしてサウナを1日多く楽しもうかとも思ったんだけど、シンポジウムが午後からだったので素直に午前中に新幹線で向かうことにした。

富士山がちゃんと見えた

予定通りに名古屋について、まずはお昼ということで行きたかったラーメン屋へ。

麺家 獅子丸

向かったのは「麺家 獅子丸」。

ここはホロライブ所属のVTuberである獅白ぼたん(ししろん)が自身の企画「ししろんと行く!47都道府県ラーメンツアー」で愛知県のラーメンで紹介したお店。

麺家 獅子丸

ししろんのステッカーもあった

獅子丸ぱいたんらぁめんとローストビーフ

全体的に洋風で店内もオシャレだった。

ぱいたんらぁめんも独特な感じ。 パイタン麺ってあまり食べたことないけどおいしかったね。 軽く食べられた。 ローストビーフ丼もよかった。

南山大学

お昼を食べたら南山大学へ。

1日目は正門から

2, 3日目は山手通門からが近かった

1日目はシンポジウムで、『働き方改革とOR』というテーマのもと、流通関係の事例などの話が聞けた。 やっぱり現場だと細かい要件がいろいろあって、それに対応していく必要があるんだなと。

個人的にはパレットの運用計画を立てる話が面白くて、これが最小費用流問題の形に帰着できるというのはなるほどだった。 あとヒューリスティクスを実装してみるのはどこかで経験してみたいと思いつつ、なかなか手付かず・・・

2日目、3日目は研究発表会で、電力関係や事例研究の発表を聞いたり。 電力関係はやっぱり制度が複雑すぎて、研究内容が現場とちょっとあってないと感じたり。 まぁ制度が複雑すぎるのが悪いと思うけど。

個人的には特別講演の学校での働き方改革の話が面白かった。 話し方が面白かったというのもあるけど、問題をちゃんと見える化して科学的に扱えるようにして、どこまでリスクをとるのかとか、コストをかけるのかなどを論理的に考えていくのはやっぱり重要だなと考えさせられた。 あとブラック企業のこととか。 ルールなき中での競争はなんでもありになってしまうので、やっぱりルールをちゃんと決めて、その中で公正な競争がされるようにしないとなんだよなぁ。

あとはペンシルパズルのルールを記述するDSLを考えたという発表も個人的に面白かった。 まず発想が面白いし、仕様もよく考えられてる。 これでいろんなパズルを同じテーブルの上で考えたりできるようになると思うので、今後の展開にも期待したいところ。

ウェルビー今池

今回の宿は3日ともウェルビー今池

ウェルビー今池

やっぱりここはいいねぇ。 サウナがいいのはもちろん、露天風呂もあるし、ご飯も美味しいのが最高。

キンキンに冷えたビールが最高

今池カレーうどん

キュウリの一本漬けに八丁味噌の串カツ

八丁味噌とんかつ

いやー、八丁味噌のカツが美味すぎた。

ビールとキャベツの塩タレ

チキン南蛮

ベトコンラーメン

ちなみにこのベトコンラーメンも美味しかったんだけど、個人的には地元のスーパー銭湯で食べられるベトコンラーメンの方が好みだった。 いや、こうして食べ比べてみると、地元のベトコンラーメンが美味しすぎるんだよなぁ。

朝食はバイキング

朝食も地味に美味しくてやっぱりいいサウナだ。


長くなったので一旦区切り。

今日はここまで!

戸隠に行ってきた。(その2)

前回の続き。

奥社、九頭龍社

中社のあとは奥社(おくしゃ)と九頭龍社(くずりゅうしゃ)へ。

奥社は無料の駐車場がないので、有料の駐車場へ。 と、ここで駐車場が満車で、待ちが発生。 どれくらい待つのか心配になったけど、幸い少しの待ちで入れたのでよかった。

そんなこんなで15時10分頃に奥社に向かって出発。

参道の入り口

奥社へは片道2kmくらいで、40分くらいかかるとのこと。

途中には随神門(ずいしんもん)と呼ばれる門があって、屋根がすごいことになってた。

随神門

巨大な杉が立ち並ぶ参道を進む

進むうちに石段が見えてきて、そしたら突然の渋滞が。

突然の渋滞

ここから奥社まではずっと渋滞で、とろとろ進む感じだった。 待つのはまぁいいんだけど、虫(たぶんアブ)が寄ってくるのが大変だった。 ひたすら扇子で煽いで防戦してたけど、周りの人もだいぶ苦戦してた感じ。

そんなこんなで16時20分頃になってようやく奥社に到着。

奥社

この奥社、向きがおかしいように思ったんだけど、調べると平入りと妻入りってのがあるんだね。 伊勢神宮で見た平入りが普通なのかと思ってたけど、妻入りというのも普通にあるっぽい。

そして九頭龍社は奥社のすぐ隣り。

九頭龍社

このあとは御朱印をもらって戻っていった。

戻ってから食べた蕎麦ソフト

天岩戸開き神話

ちなみに戸隠神社に祀られてる神様は天岩戸(あまのいわと)開き神話にちなんだ神様となっている。

奥社にあった説明

奥社に祀られてるのは岩戸を開いた手力雄命(たちからおのみこと)、中社に祀られてるのは作戦を考えた思兼命(おもいかねのみこと)、火之御子社に祀られてるのは岩戸の前で踊りを披露した天鈿女命(あめのうずめのみこと)、宝光社に祀られてるのは思兼命の子である天表春命(あめのうわはるのみこと)となっている(九頭龍社は地主神の九頭龍大神)。

戸隠という名前の由来も、開けた岩戸をここまで投げ飛ばしたかららしい。

思兼命は埼玉(秩父)にも縁のある神様で、意外なところで神話とのつながりを感じると面白いよね。

広徳の湯

そんなこんなで駐車場に戻ってきたときには17時近くに。

善光寺に寄れる時間でもなく、けっこう歩いて汗もかいたので、お風呂に寄って休憩してから帰りたいなと。

最初に向かったのは戸隠神告げ温泉。

ただ、行ってみたらなんとお風呂に入るのが30分待ちとのこと。 それはちょっとということで離脱。

そのあと調べてみると、長野ICの近くに広徳の湯というスーパー銭湯があると分かったので、向かってみた。

19時頃に到着して、一風呂浴びてスッキリ。 ついでに夕飯も食べた。

夏野菜カレー

帰路へ

夕飯も食べて20時半頃に長野を出発。

そのあとは休憩を挟みつつ高速を走り、日付も変わって0時半頃に自宅に到着。 さすがに疲れて最後はちょっと運転を変わってもらったりしたけど(^^;

美味しいお蕎麦も食べれたし、戸隠でもちゃんと五社巡れたのでよかったなぁ。

今日はここまで!

戸隠に行ってきた。(その1)

せっかくの連休だったので8/11(日)に戸隠までドライブしてきた。

長野へ

朝の5時半頃に自宅を出発し、圏央道、関越道、上信越道を通って長野まで。

連休の中日なのでそこまで混まないかなと思ったけど、思ったよりも車が多く、ジャンクション前後は渋滞気味だった。 あと事故ってる車もいたり。

まぁそんな感じでやや時間もかかり、休憩を挟みつつ、11時頃に善光寺に到着。

今回は戸隠を回るのが目的だったけど、せっかく長野まで来てるので善光寺もお参りする予定だった。 ただ、駐車場が全然空いてない・・・ 何か行事があるとかでもないはずなのにこんなに混んでるとは思わなかった。

これだと戸隠に行く前にだいぶ時間がかかってしまうということで、離脱。 余裕があれば戻ってきてからお参りしようかなと。 まぁ、結局そんな余裕はなかったんだけど。

大久保の茶屋

戸隠バードラインを通ってまず向かったのが「大久保の茶屋」。

大久保の茶屋

以前、善光寺&戸隠に行ったときに食べたのがこのお店で、ここのお蕎麦がとても美味しかったのでまた食べたかったんよね。 今回戸隠に行こうと思った理由の1つでもあったり。

お店には11時半頃に着いたんだけど、この時点で行列が。 前に10組くらいはいて、席に案内されるまでに1時間半くらい待ったかな。 すごい人気で驚いた。

天ざる蕎麦とイワナの塩焼きを注文。

天ざる蕎麦

イワナの塩焼き

いやー、ここのお蕎麦はやっぱり美味しかった。 待った甲斐があったね。

そしてイワナもまた絶品でとてもよかった。 身が思った以上に柔らかくホクホクで最高だった。 1日10本限定となってたけど、食べれてよかったなぁ。

そんな感じで食事を満喫して出たのが13時半頃。 予定よりだいぶ遅れが(^^;

宝光社、火之御子社

戸隠神社には五社あって、まず向かったのが宝光社(ほうこうしゃ)と火之御子社(ひのみこしゃ)。

駐車場に停められるかがちょっと心配だったけど、なんとか停められて一安心。

宝光社の鳥居

長い階段・・・

宝光社

いやー、階段が大変だった。

そして火之御子社へは神道(かんみち)を通って移動。 片道15分くらいで、ちょっとした登りも。 基本的には木陰を進むものの、歩くからけっこう暑かったなぁ。

神道

火之御子社

中社

その次は中社(ちゅうしゃ)へ。

ここは大きな駐車場もあるから大丈夫だった。 とはいっても、けっこう埋まってたので驚いたけど。

中社

さざれ滝

社殿の右奥にある滝の近くは涼しさもあってよかったね。


長くなったので一旦区切り。

今日はここまで!

OOC2024の発表を見てみた。(その1)

Object-Oriented Conference 2024 (OOC2024)が3/24(日)に開催されたんだけど、そのときの動画がアップされてきてる。

それらの中からいくつか気になるものをピックアップして感想とか補足を書いてみたい。

まず取り上げたいのはミノ駆動さんの『クソコード動画「カプセル化 Mk-II」で考える、上手くカプセル化できない理由』。

「目的」と「手段」

動画が相変わらずオモロイんだけど、発表の肝になってるのは動画そのものではなく、「目的」と「手段」について言及して、その関係について議論しているところだと思う。

プログラミングというのは手段を提供するものなので、目的について考えなかったり、目的と手段をごっちゃにしがち。 そうすると「間違ったDRY」で「手段が同じなんだからコードを共通化しよう」みたいになって、動画のように「複数の目的があるのに手段が1つしか提供されてない」状況が発生して、カプセル化が壊れる、と。 目的が違うなら手段も分けた方がよくて、そうするとカプセル化が壊れにくい、と。

元々の「カプセル化」の動画は「属性をプライベートにしてgetterとsetterを作るのがカプセル化と勘違いしてる人がいるよね」という内容だった。

今回の動画は「カプセル化するとして、そのときに間違ったDRYしないようにしよう」という内容と言えそう。 なので裏のテーマは「間違ったDRY」な気がする。

DRYはよく言われる原則だけど、間違って使ってしまうことが多い原則でもある。 目的が違うのに現状の実装が同じだからと共通化してしまうと、あとで苦労することが多いのよね。 DRYするときは「目的が同じか」に気をつけた方がいい。 これはカプセル化と関係なく言えることだったりする。

「インタフェース」と「実装」

この「『目的』と『手段』をちゃんと分けて考えよう」というのは「『インタフェース』と『実装』をちゃんと分けて考えよう」という話につながってくる。

「インタフェース」というのはモジュールを外から眺めた姿で、そのモジュールが「何(What)を提供するのか」という「目的」を規定するものとなっている。 一方、「実装」はモジュールを内側から眺めた姿で、そのモジュールが「どうやって(How)目的を達成するのか」という「手段」を提供するものとなっている。

そう考えると「目的」と「手段」の「N対N対応」についても分かりやすい。

動画では「複数の目的に対して1つの手段で頑張るのはよくない」と言ってたわけだけど、これは複数のインタフェースに対する実装を1つのコードで頑張ろうとしてるわけだから、そりゃ大変となる。 そして「目的ごとに手段を用意しよう」というのは、インタフェースごとに実装を用意しようということになるので、素直な実装と言える。 さらに動画では言及されなかったけど、「1つの目的に対して複数の手段を用意する」というのも可能で、そうするとコードの柔軟性がぐっと上がることになる。 これがさらに進むと依存性の注入の話になってくる。

実装の再利用をどうするか

ところで、間違ったDRYはよくないものの、実装を再利用したいというのはよくある話で、そういったときにどうしたらいいのかも知っておくといい。

これは目的をより小さな目的に分割し、小さな目的に使える実装を提供して、処理を委譲する。 目的は小さく分けると汎用的な目的になるので、それを提供する実装も汎用的になり、再利用しやすくなる。

たとえば電子レンジの例を考えてみると、「食べ物を温める」という機能自体は電子レンジが提供するものの、そのためには「時間を測る」「電圧を上げる」「電磁波を発生させる」といったサブの機能が必要で、それらはモジュール化された機器を使うことになる。 そういったモジュール化された機器は電子レンジ以外の家電にも使えるわけよね。 さらにそういったモジュールもさらに小さなモジュールの集まりで構成されてるわけで。

そんな感じで、単純だけどちゃんと動く部品をまず作り、それらを段階的に組み合わせて創発的に機能を作っていくといいんよね。 まさにオブジェクト指向という感じ。

今日はここまで!