Slide 1

Slide 1 text

「影響が少ない」を自分の目でみてみる PHPカンファレンス小田原2025 Hideki Kinjyo GitHub: o0h / X: @o0h_ [発表用]

Slide 2

Slide 2 text

ランチ食べましたか?? • こんにちは • 午後が来ました • 私は皆さんの「昼下がりの血糖値」が心配です • 自由に肩を回したり、ストレッチしたり、応援上演してください • ※ 周りの人にお気をつけて • ※ 周りの人も寛容に、何卒・・・ • 頑張りましょう  

Slide 3

Slide 3 text

「影響が少ない」を自分の目でみてみる PHPカンファレンス小田原2025 Hideki Kinjyo GitHub: o0h / X: @o0h_ [発表用]

Slide 4

Slide 4 text

「影響が少ない」を自分の目でみてみる PHPカンファレンス小田原2025 Hideki Kinjyo GitHub: o0h / X: @o0h_ [発表用] 良いタイトルですね!

Slide 5

Slide 5 text

イメージ こういう感じにしていきます  

Slide 6

Slide 6 text

このトークは? 「影響」って大事なんですよ  

Slide 7

Slide 7 text

このトークは?  

Slide 8

Slide 8 text

このトークは?  

Slide 9

Slide 9 text

何故このトークを? "ベテランの感覚”の片鱗を 
 説明できたら面白そうだな〜〜 
 という挑戦をしてみます  

Slide 10

Slide 10 text

主にどんな人向けに? 年数を経ると、たぶん身体で覚えていること  🙅 画期的な考えや斬新な見方を提供する  

Slide 11

Slide 11 text

主にどんな人向けに? これから 
 「良いコードを書けるようになっていくぞ!」 
 な人に向けて  🙆 良く言われている様なことが捉えやすくなるように  

Slide 12

Slide 12 text

自己紹介 • 金城秀樹 / きんじょうひでき • GitHub: @o0h / 𝕏 : @o0h_ • 好きなFWはCakePHP • アイコンは美味しい鮭親子丼の写真です • 最近はPodcastをやっています • ハッシュタグ: #readlinefm  

Slide 13

Slide 13 text

おしながき 今日は3つの章を用意しました 1. 「影響」とか「自分の目で」って、どうやる? 2. 色々な影響や、それに関する諸要素を整理しよう 3. 「見えるようにした」、それでどのくらい意味がありそうか 4. おしまい  

Slide 14

Slide 14 text

1. 「影響」とか「自分の目で」って、どうやる? 2. 色々な影響や、それに関する諸要素を整理しよう 3. 「見えるようにした」、 
 それでどのくらい意味がありそうか 4. おしまい ※7෼ऑ͘Β͍Ͱߦ͖͍ͨ

Slide 15

Slide 15 text

どうやる? • なるべく単純なもの • そのためには  

Slide 16

Slide 16 text

どうやる? • なるべく単純なもの • 人間の脳みそで「見ればわかる」程度の簡易なものが欲しい • 人間の手で書ける程度の簡易なものが欲しい • そのためには  

Slide 17

Slide 17 text

どうやる? • なるべく単純なもの • そのためには • 特別なツールを使わない • 高度な理論や前提知識を要求しない  

Slide 18

Slide 18 text

影響スケッチ こんな図示の方法があります   [ग़య] 
 ᴷ ϚΠέϧɾC.ϑΣβʔζ ஶ΄͔ 
 ϨΨγʔίʔυվળΨΠυ : อक։ൃͷͨΊͷϦϑΝΫλϦϯά P171

Slide 19

Slide 19 text

影響スケッチ   [ग़య] 
 ᴷ ϚΠέϧɾC.ϑΣβʔζ ஶ΄͔ 
 ϨΨγʔίʔυվળΨΠυ : อक։ൃͷͨΊͷϦϑΝΫλϦϯά P171 
 ※ ڧௐ͸εϥΠυ੍࡞ऀʹΑΔ この図には、描き方の規則がほとんどありません。私が影響スケッチ (effect sketch)と呼んでいるだけです。重要なことは、影響を受ける 変数と、戻り値が変わる可能性のあるメソッドについて、それぞれ楕円を 描くことです。 
 [中略] 更新されるものについて楕円を描き、それによって実行時に値 が変わり得るすべてのものに向かって矢印を描くだけです。

Slide 20

Slide 20 text

今回の手法 影響スケッチを少し改造してやってみる 1. データや処理を列挙する 2. それらの要素を「使う側」「使われる側」で結ぶ  

Slide 21

Slide 21 text

今回の手法 影響スケッチを少し改造してやってみる 1. データや処理を列挙する 2. それらの要素を「使う側」「使われる側」で結ぶ   変数やプロパティ 関数やメソッド

Slide 22

Slide 22 text

今回の手法 影響スケッチを少し改造してやってみる 1. データや処理を、列挙する 2. それらの要素を「使う側」「使われる側」で結ぶ   「使う側」が 
 データを「保有する」 
 関係 「使う側」が 
 処理を「呼び出す」 
 関係

Slide 23

Slide 23 text

MISSION 難しい道具を使わず、 
 「手書きでできる」レベルの手法で スケッチをする話をします  

Slide 24

Slide 24 text

スケッチの説明とサンプル

Slide 25

Slide 25 text

スケッチの練習 -例題- (突然ですが) 
 「お弁当の注文管理システム」を作ります  

Slide 26

Slide 26 text

スケッチの練習 -例題- その中でも「注文受付」のロジックです。 ・ 注文は「予約」「通常」 ・一部の商品は「要予約」 ・「在庫数」が足りれば注文可能  

Slide 27

Slide 27 text

例   // class ஫จ { public function can஫จड෇(): bool { if ( $this->঎඼DB->is༧໿ඞਢ($this->঎඼ID) && !$this->is༧໿஫จ() ) { return false; } $ࡏݿؔ܎৘ใ = $this->঎඼DB 
 ->getࡏݿؔ܎৘ใ($this->঎඼ID); $ݱࡏͷࡏݿ = $ࡏݿؔ܎৘ใ['ݱࡏͷࡏݿ'] ?? 0; $༧໿਺ = $ࡏݿؔ܎৘ใ['༧໿਺'] ?? 0; return ($ݱࡏͷࡏݿ - $༧໿਺) >= $this->஫จ਺; } こんな感じのメソッドを 題材に 
 (ちょっと解説します)

Slide 28

Slide 28 text

例   // class ஫จ { public function can஫จड෇(): bool { } 注文クラスに can注文受付メソッドが 
 あります

Slide 29

Slide 29 text

例   // can஫จड෇ { if ( $this 
 ->঎඼DB 
 ->is༧໿ඞਢ($this->঎඼ID) && !$this->is༧໿஫จ() ) { return false; } 予約必須商品 
 の場合は 予約注文でなければ 不可(false)です

Slide 30

Slide 30 text

例   // can஫จड෇ { $঎඼ID = $this->঎඼ID; $ࡏݿؔ܎৘ใ = $this 
 ->঎඼DB 
 ->getࡏݿؔ܎৘ใ($঎඼ID); 商品DBから 
 注文商品の 在庫関係情報を 取り出します

Slide 31

Slide 31 text

例   // can஫จड෇ { $ݱࡏͷࡏݿ 
 = $ࡏݿؔ܎৘ใ['ݱࡏͷࡏݿ'] ?? 0; $༧໿਺ 
 = $ࡏݿؔ܎৘ใ['༧໿਺'] ?? 0; 在庫数と 
 予約数を 取得します

Slide 32

Slide 32 text

例   // can஫จड෇ { return ($ݱࡏͷࡏݿ - $༧໿਺) >= $this->஫จ਺; 今回の注文の 
 注文数と比較して 注文可否判定を 返します

Slide 33

Slide 33 text

例となるコードが手に入ったので   // can஫จड෇ {

Slide 34

Slide 34 text

STEP-1 影響スケッチを少し改造してやってみる 1. データや処理を列挙する 2. それらの要素を「使う側」「使われる側」で結ぶ  

Slide 35

Slide 35 text

データ(プロパティ)を列挙する   // can஫จड෇ { if ( $this 
 ->঎඼DB 
 ->is༧໿ඞਢ($this->঎඼ID) && !$this->is༧໿஫จ() ) { return false; } ->঎඼DB ->঎඼ID

Slide 36

Slide 36 text

処理(メソッド)も列挙する   // can஫จड෇ { if ( $this 
 ->঎඼DB 
 ->is༧໿ඞਢ($this->঎඼ID) && !$this->is༧໿஫จ() ) { return false; } ->is༧໿ඞਢ ->is༧໿஫จ

Slide 37

Slide 37 text

STEP-2 影響スケッチを少し改造してやってみる 1. データや処理を、列挙する 2. それらの要素を「使う側」「使われる側」で結ぶ  

Slide 38

Slide 38 text

要素同士を結ぶ   列挙した要素を

Slide 39

Slide 39 text

要素同士を結ぶ   結び付けてみると 
 こんな感じに

Slide 40

Slide 40 text

要素同士を結ぶ:データの結びつき   インスタンス/クラスの 
 プロパティ インスタンス/クラスの 
 プロパティ

Slide 41

Slide 41 text

要素同士を結ぶ:処理の結びつき   処理の呼び出し 処理の呼び出し

Slide 42

Slide 42 text

要素同士を結ぶ:処理の「持ち主」   "$this" の関係 "$this" の関係

Slide 43

Slide 43 text

要素同士を結ぶ:アプリケーション外のつながり   // can஫จड෇ { $ࡏݿؔ܎৘ใ = $this 
 ->঎඼DB 
 ->getࡏݿؔ܎৘ใ($঎඼ID); $ݱࡏͷࡏݿ 
 = $ࡏݿؔ܎৘ใ['ݱࡏͷࡏݿ'] ?? 0; $༧໿਺ 
 = $ࡏݿؔ܎৘ใ['༧໿਺'] ?? 0; DBから 
 データをとる処理

Slide 44

Slide 44 text

要素同士を結ぶ:アプリケーション外のつながり   // can஫จड෇ { $ࡏݿؔ܎৘ใ = $this 
 ->঎඼DB 
 ->getࡏݿؔ܎৘ใ($঎඼ID); $ݱࡏͷࡏݿ 
 = $ࡏݿؔ܎৘ใ['ݱࡏͷࡏݿ'] ?? 0; $༧໿਺ 
 = $ࡏݿؔ܎৘ใ['༧໿਺'] ?? 0; 在庫数と 
 予約数を 取得します このメソッドの話 ->getࡏݿؔ܎৘ใ

Slide 45

Slide 45 text

要素同士を結ぶ:アプリケーション外のつながり   DBから 
 カラムの値を 
 そのまま使うなら

Slide 46

Slide 46 text

要素同士を結ぶ:アプリケーション外のつながり   「使う側」と 
 「使われる側」の 
 関係が結ばれる

Slide 47

Slide 47 text

STEP-2 影響スケッチを少し改造してやってみる 1. データや処理を、列挙する 2. それらの要素を「使う側」「使われる側」で結ぶ 3. ショートカットすると・・・  

Slide 48

Slide 48 text

スケッチの全体像   全体像は 
 こんな感じに // class ஫จ { public function can஫จड෇(): bool { if ( $this->঎඼DB->is༧໿ඞਢ($this->঎඼ID) && !$this->is༧໿஫จ() ) { return false; } $ࡏݿؔ܎৘ใ = $this->঎඼DB 
 ->getࡏݿؔ܎৘ใ($this->঎඼ID); $ݱࡏͷࡏݿ = $ࡏݿؔ܎৘ใ['ݱࡏͷࡏݿ'] ?? 0; $༧໿਺ = $ࡏݿؔ܎৘ใ['༧໿਺'] ?? 0; return ($ݱࡏͷࡏݿ - $༧໿਺) >= $this->஫จ਺; }

Slide 49

Slide 49 text

スケッチできたね というのが、 
 今回の土台となる図法です!  

Slide 50

Slide 50 text

影響をさせてみる

Slide 51

Slide 51 text

影響とは・・・   例えばココが変わったら?

Slide 52

Slide 52 text

影響とは・・・   呼び出し元に 
 「影響」をもたらして

Slide 53

Slide 53 text

影響とは・・・   影響が 
 矢印たどって 見えてくる (嬉しい)

Slide 54

Slide 54 text

1. 「影響」とか「自分の目で」って、どうやる? 2. 色々な影響や、それに関する諸要素を整理しよう 3. 「見えるようにした」、 
 それでどのくらい意味がありそうか 4. おしまい ※5෼͘Β͍Ͱߦ͖͍ͨ

Slide 55

Slide 55 text

1. 「影響」とか「自分の目で」って、どうやる? 2. 色々な影響や、それに関する諸要素を整理しよう 
 そもそも「影響」ってなんだっけ?の話 3. 「見えるようにした」、 
 それでどのくらい意味がありそうか 4. おしまい

Slide 56

Slide 56 text

プログラミングの秘密   public function getࡏݿؔ܎৘ใ($঎඼ID) { // ͝ʹΐ return $ࡏݿؔ܎৘ใ; } こんなコードがありまして

Slide 57

Slide 57 text

プログラミングの秘密   public function getࡏݿؔ܎৘ใ($঎඼ID) { // ͝ʹΐ return $ࡏݿؔ܎৘ใ; } 図式化してみまして get在庫関係情報($arg) 商品ID 在庫情報

Slide 58

Slide 58 text

プログラミングの秘密   ೖྗ ܭࢉ ग़ྗ public function getࡏݿؔ܎৘ใ($঎඼ID) { // ͝ʹΐ return $ࡏݿؔ܎৘ใ; } get在庫関係情報($arg) 商品ID 在庫情報 概念化してみました

Slide 59

Slide 59 text

プログラミングでやりたいこと プログラミング = 「何かしらの結果を得る」というプロセス  

Slide 60

Slide 60 text

プログラミングでやりたいこと プログラミング = 「何かしらの結果を得る」というプロセス   ग़ྗ ココが目的 ೖྗ ܭࢉ こっちは手段

Slide 61

Slide 61 text

プログラミングでやりたいこと   「何かしらの結果を得る」というプロセス  ここに関わるものが「影響」

Slide 62

Slide 62 text

影響の例

Slide 63

Slide 63 text

例①  

Slide 64

Slide 64 text

入力が変わると結果が変わる たとえばこういうのがあって   get商品詳細($ID) 商品ID 詳細情報

Slide 65

Slide 65 text

入力が変わると結果が変わる 入力に応じてデータが出力される   get商品詳細($ID) 1012 1012の詳細

Slide 66

Slide 66 text

入力が変わると結果が変わる なので、入力が変わると結果が変わる   get商品詳細($ID) 9999 9999の詳細

Slide 67

Slide 67 text

例②  

Slide 68

Slide 68 text

計算が変わると結果が変わる たとえばこういうのがあって   get商品詳細($ID) 詳細情報 $IDの商品詳細を 
 取得する

Slide 69

Slide 69 text

計算が変わると結果が変わる 入力に応じてデータが出力されるが   get商品詳細(2) 2の詳細 $IDの商品詳細を 
 取得する

Slide 70

Slide 70 text

計算が変わると結果が変わる 計算の中身が変われば結果が変わる   get商品詳細(2) null $IDの商品詳細を 
 取得する ステータスが 
 有効でなければ除外

Slide 71

Slide 71 text

例③  

Slide 72

Slide 72 text

「エラー」化する影響   get商品詳細(int $id) 詳細情報 整数で$IDを受け取っていたのを

Slide 73

Slide 73 text

「エラー」化する影響 条件が変わって、合致しなくなると   get商品詳細(string $name)

Slide 74

Slide 74 text

「エラー」化する影響 入出力の「する」「される」の関係が成立しないと 
 エラーとなる   詳細情報 get商品詳細(string $name)

Slide 75

Slide 75 text

入力っつーのは、<引数>だけのことだけじゃな いぜ! 
 ※ このトークでの言葉の遣い方です

Slide 76

Slide 76 text

色々なものがある 「入力」は「計算に対して与えられるもの」と捉えると面白そう 1. アプリケーションコードの中にあるもの 2. アプリケーションコードの外にあるもの 3. アプリケーションの外にあるもの  

Slide 77

Slide 77 text

1. アプリケーションコードの中にあるもの コードとして表現したデータ • 関数やメソッドの引数 • クラスやオブジェクトのプロパティ • グローバルに定義した変数や定数  

Slide 78

Slide 78 text

2. アプリケーションコードの外にあるもの コードに対して注入したデータ • 設定ファイルから読み込んだ値  

Slide 79

Slide 79 text

3. アプリケーションの外にあるもの 別のシステムやI/Oを挟んで渡ってきたデータ • データベースの中身 • スーパーグローバル変数や環境変数 • 外部からWebAPI経由で取り出したデータ  

Slide 80

Slide 80 text

ってな事で!  

Slide 81

Slide 81 text

色々な影響や、それに関する諸要素を整理しよう  ✅ DONE  

Slide 82

Slide 82 text

1. 「影響」とか「自分の目で」って、どうやる? 2. 色々な影響や、それに関する諸要素を整理しよう 3. 「見えるようにした」、 
 それでどのくらい意味がありそうか 4. おしまい ※6෼͘Β͍Ͱߦ͖͍ͨ

Slide 83

Slide 83 text

1. 「影響」とか「自分の目で」って、どうやる? 2. 色々な影響や、それに関する諸要素を整理しよう 3. 「見えるようにした」、 
 それでどのくらい意味がありそうか 
 不必要な影響を防ぐ、意味のある影響を残す 4. おしまい

Slide 84

Slide 84 text

「影響」と「良いコード」 基本的には、 
 コードのある一部分について 
 「与える/受ける影響が少ない」コードを目指す  キーワード: 「保守性」、特に「解析性」「変更性」  

Slide 85

Slide 85 text

乱暴な例   左の方が影響を受けやすい 右の方が影響を受けにくい

Slide 86

Slide 86 text

乱暴な例   色々な影響を受けている(/与えている) 
 => 色々な仕事をしている気がする => 中身のコードが複雑そう。。。

Slide 87

Slide 87 text

影響の「距離」 基本的には、 
 影響の「距離」を縮める  

Slide 88

Slide 88 text

乱暴な例   さっきのコード $ࡏݿؔ܎৘ใ = $this->঎඼DB 
 ->getࡏݿؔ܎৘ใ($this->঎඼ID); $ݱࡏͷࡏݿ = $ࡏݿؔ܎৘ใ['ݱࡏͷࡏݿ'] ?? 0; $༧໿਺ = $ࡏݿؔ܎৘ใ['༧໿਺'] ?? 0; return ($ݱࡏͷࡏݿ - $༧໿਺) >= $this->஫จ਺;

Slide 89

Slide 89 text

$ࡏݿؔ܎৘ใ = $this->঎඼DB 
 ->getࡏݿؔ܎৘ใ($this->঎඼ID); $ݱࡏͷࡏݿ = $ࡏݿؔ܎৘ใ['ݱࡏͷࡏݿ'] ?? 0; $༧໿਺ = $ࡏݿؔ܎৘ใ['༧໿਺'] ?? 0; return ($ݱࡏͷࡏݿ - $༧໿਺) >= $this->஫จ਺; 乱暴な例   さっきのコード 在庫関係情報を 
 DBから取って ->getࡏݿؔ܎৘ใ

Slide 90

Slide 90 text

乱暴な例   さっきのコード $ࡏݿؔ܎৘ใ = $this->঎඼DB 
 ->getࡏݿؔ܎৘ใ($this->঎඼ID); $ݱࡏͷࡏݿ = $ࡏݿؔ܎৘ใ['ݱࡏͷࡏݿ'] ?? 0; $༧໿਺ = $ࡏݿؔ܎৘ใ['༧໿਺'] ?? 0; return ($ݱࡏͷࡏݿ - $༧໿਺) >= $this->஫จ਺; ($ݱࡏͷࡏݿ - $༧໿਺) 差分を計算して、 
 結果を返す

Slide 91

Slide 91 text

乱暴な例   処理とデータの関係だけ示すとこうなる?

Slide 92

Slide 92 text

乱暴な例   在庫関係情報の「中身」を注意深く見てみると・・・ $ࡏݿؔ܎৘ใ = $this->঎඼DB 
 ->getࡏݿؔ܎৘ใ($this->঎඼ID); $ݱࡏͷࡏݿ = $ࡏݿؔ܎৘ใ['ݱࡏͷࡏݿ'] ?? 0; $༧໿਺ = $ࡏݿؔ܎৘ใ['༧໿਺'] ?? 0; return ($ݱࡏͷࡏݿ - $༧໿਺) >= $this->஫จ਺; ここに注目したい ['ݱࡏͷࡏݿ'] ['༧໿਺'] ここに注目したい

Slide 93

Slide 93 text

乱暴な例   DBの知識が、そのまま流れ込んでいる $ࡏݿؔ܎৘ใ = $this->঎඼DB 
 ->getࡏݿؔ܎৘ใ($this->঎඼ID); $ݱࡏͷࡏݿ = $ࡏݿؔ܎৘ใ['ݱࡏͷࡏݿ'] ?? 0; $༧໿਺ = $ࡏݿؔ܎৘ใ['༧໿਺'] ?? 0; return ($ݱࡏͷࡏݿ - $༧໿਺) >= $this->஫จ਺; ['ݱࡏͷࡏݿ'] ['༧໿਺']

Slide 94

Slide 94 text

乱暴な例   このようにスケッチを更新できる

Slide 95

Slide 95 text

やったぜ!心の声(強要)   気軽に・実験的に更新ができる!? 
 単純な手書きって、それが嬉しいね〜

Slide 96

Slide 96 text

なんで、そんな事を言うんですか?   もし「機械にやらせる」なら、 
 もっと「画一的」で「完成された」定義が必要かも。 硬直的で、遊びが許されなくなるリスクに!  探索的に理解を深めにくくなる

Slide 97

Slide 97 text

乱暴な例   影響の「距離」が伸びた

Slide 98

Slide 98 text

防火壁 基本的には、 
 影響の「距離」を縮める  仲介層を「防火壁」として機能させる  

Slide 99

Slide 99 text

乱暴な例   「右」の情報を「左」に渡しすぎている => 「左」の負荷(仕事量)を上げている こいつが情報を取りすぎ

Slide 100

Slide 100 text

乱暴な例   計算処理を「右側」に押しやる改修 public function get༗ޮࡏݿ਺($঎඼ID): int { $ࡏݿؔ܎৘ใ = $this->getࡏݿؔ܎৘ใ($঎඼ID); // $ࡏݿؔ܎৘ใΛ͜͜ͰΰχϣΔ return $༗ޮࡏݿ਺; }

Slide 101

Slide 101 text

乱暴な例   「1段飛ばし」な影響がなくなった

Slide 102

Slide 102 text

「無関係」を剪定する 「影響が多い」は困るが 
 「影響がない」は無価値  

Slide 103

Slide 103 text

「無関係」を剪定する 「意味のある影響」を残す それ以外を排除する  

Slide 104

Slide 104 text

乱暴な例   こんなコードがあったとして final class ͓໺ࡊ { private string $໊લ; private int $ΧϩϦʔ; private int $Ձ֨; } get੫ࠐՁ֨($oyasai);

Slide 105

Slide 105 text

乱暴な例   スケッチしてみる

Slide 106

Slide 106 text

乱暴な例   が、もう少し踏み込むと・・・

Slide 107

Slide 107 text

乱暴な例   「影響しない」ものが紛れ込んでいそう 税計算に関係なさそう

Slide 108

Slide 108 text

やったぜ!心の声(強要)   気軽に・実験的に更新ができる!? 
 単純な手書きって、それが嬉しいね〜

Slide 109

Slide 109 text

乱暴な例   渡す(受け取る・要求する)データを絞ってあげる final class ͓໺ࡊ { private string $໊લ; private int $ΧϩϦʔ; private int $Ձ֨; } get੫ࠐՁ֨($oyasai->getՁ֨()); $oyasai->getՁ֨()

Slide 110

Slide 110 text

乱暴な例   図が単純になった

Slide 111

Slide 111 text

1. 「影響」とか「自分の目で」って、どうやる? 2. 色々な影響や、それに関する諸要素を整理しよう 3. 「見えるようにした」、 
 それでどのくらい意味がありそうか 4. おしまい

Slide 112

Slide 112 text

おさらい 「影響」は「関係」によってもたらされる 「関係」は「要素」同士のつながり  

Slide 113

Slide 113 text

おさらい 「関係」を見抜いて 
 「影響」と向き合うと、 
 コードを整理しやすくなる  

Slide 114

Slide 114 text

このトークで伝えたかったこと  

Slide 115

Slide 115 text

ヒントになりそうですか?(なると嬉しいな🍥) 「ベテランの感覚」「見え方」や 
 「マインドモデル」の片鱗が、 
 少しでも掴めれば幸い  

Slide 116

Slide 116 text

どう活かすか? 良い可視化ツールや、 
 分析・定量化の手法もある分野  先人の資産が「意味のあるもの」になるのは、 
 利用者自身の直感や納得があってこそ  

Slide 117

Slide 117 text

活かしてこ! 「丁寧に真心を込めて自分の手で書いてみる」 
 をやることで 「目覚める」ことに繋がる  

Slide 118

Slide 118 text

活かしてこ! 便利なものが使えると便利なので、 そうなっていきたいですね!  

Slide 119

Slide 119 text

活かしてこ! みんなで 
 スマイルま〜るまるして 
 いきましょう!  

Slide 120

Slide 120 text

おしまい! お付き合いいただき ありがとうございました!!