Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

プログラミング社内勉強会 モデルを作ろう

中級からのプログラミングに大切なこと、それはモデルを作る力だと思います。

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to comment

  • Be the first to like this

プログラミング社内勉強会 モデルを作ろう

  1. 1. モデルを作ろう!! 後 藤 暁 子
  2. 2. 2 モデルって何だろう? 大体のサイトでMVCのモデルは次のよう に説明されています。 【モデル】 システム内のビジネスロ ジックを担当します。シス テムの設計や機能をどう するかがここで行われます。 MVCとかで聞く けど…
  3. 3. システム内の ビジネスロジック…?
  4. 4. 4 そもそもモデルとは? モデルってなんだろう?
  5. 5. 物理の世界だったらこう 坂道に駐車している 車の写真 複雑なものを抽象化して必要なものだけにすること
  6. 6. プログラミングの 世界の中のモデル
  7. 7. クラス設計 classファイルとか Interface とか
  8. 8. 8 モデルを考えてみる例 料理するプログラムを作る 第一弾 肉じゃが レシピをDBからとってくる。 下準備 野菜類→皮をむいてカット 肉→一口大に切る 調味料→計測して入れる その後、煮込む。
  9. 9. 9 モデルを作る必要があるのか? foreach($materials as $material){ If($material[‘category’] == “vegetable”){ peal($material); cut($material); }else if ($material [‘category’] == “meat”){ cut($material); } $prepared_materials[]=$material; } boil($prepared_materials); DBからとってきたものを foreachとかIf文とかで処 理したらいいじゃないで すか?
  10. 10. 10 モデルを作らないと次にこうなる foreach($materials as $material){ If($material[‘category’] == “vegetable”){ peal($material); cut($material); }else if ($material [‘category’] == “meat”){ cut($material); //調味料を追加 }else if($material [‘category’] == “seasoning”){ measure($material); } $prepared_materials[]=$material; } boil($prepared_materials); if文で書いたとこ ろには、if文で追 加していくしかなく なっちゃう! どこに何があるのかわか らない わかりづらい →総崩れ…っ!
  11. 11. 11 将来的にこうなる。 foreach($materials as $material){ If($material[‘category’] == “vegetable”){ peal($material); cut($material); }else if ($material [‘category’] == “meat”){ cut($material); //調味料を追加 }else if($material [‘category’] == “seasoning”){ measure($material); //油揚げを追加 }else if($material [‘category’] == “aburaage”){ light_boil($material); } //肉と野菜に下味をつける場合 if ($material [‘seasoning’] == “true”){ //肉の場合 if($material[‘category’] ==“meat”){ momikomi($material); //野菜の場合 }elseif($material[‘category’]==“vegetable”){ seasoning($material); } … 悪夢のようなコードが続く。 $prepared_materials[]=$material; } boil($prepared_materials); 見づらいし、 変更しづらいよねっ ダメ。絶対。
  12. 12. 12 モデルを考えてみよう そういわれても(泣) 1個1個処理するなら わかるんだけど
  13. 13. 13 一つの手段 カテゴリー分けする 野菜 肉 調味料 全部材料の種類
  14. 14. 14 材料を継承して、それぞれの具材にする Vegetable extends Material{ private boolean $need_seasoning; …途中省略… public function preapare(){ peal(); parent::cut(); if($need_seasoning){ seasoning(); } } Meatクラス、Seasoningクラスを同じく 作る foreach($materials as $material){ $prepared_materials[]= $material->prepare(); } boil($prepared_materials); モデル(クラス) 呼び出し側
  15. 15. 15 モデルを考えてみよう とはいっても、肉とか野菜とか はイメージしやすいけど、実際 のプログラミングの現場は ○○した時に××を△△する みたいな処理の連続で 何をモデルにすればいいのか わからない~
  16. 16. 16 いきなり、できるものではないので 一人で悩まないで! 話し合ったり 紙に書いたり プロトタイプを作ったり 段々できてくる。
  17. 17. もう一度言います。 複雑に見える事象から 概念とロジック を抜き出そう。
  18. 18. 18 モデルの世界に正解はない 作った後に、あー、こうすれば よかったと思うこともあります。 だから…まぁせいぜい… 悔いが残らないほうを 自分で選べ
  19. 19. 19 イケてるモデルとは ・すっきりしている ・思考が伸びる ・機能を改変したり、付け足しやすい ・人に説明しやすい ・あたっている感覚がある ・ビジネスに貢献する
  20. 20. まずは作ってみよう!

    Be the first to comment

中級からのプログラミングに大切なこと、それはモデルを作る力だと思います。

Views

Total views

187

On Slideshare

0

From embeds

0

Number of embeds

182

Actions

Downloads

0

Shares

0

Comments

0

Likes

0

×