SlideShare ist ein Scribd-Unternehmen logo
1 von 56
Downloaden Sie, um offline zu lesen
よくわかる条件分岐

 トゴル・カンパニー
 伊藤のりゆき
アジェンダ
1. ⾃⼰紹介
2. 条件分岐<mt:If>の3つのパターン
• フラグ
• ⼆択
• より複雑                  5%


3. まとめ            15%


                             80%
伊藤のりゆき
               •   有限会社トゴル・カンパニー 代表取締役
               •   オーサリングエンジニア
               •   1-3「Movable Typeテンプレートのカスタマイ
                   ズ基礎」執筆
               •   『Movable Type⼊⾨』(Think IT)
               •   『NORIのFlashユーザのためのMovable Type
                   講座 gihyo.jp版』

               •   Twitter : @nori_togoru
               •   Facebook facebook.com/nori.3oclock
   バージョンアップ    •   トゴル・カンパニー togoru.net
               •   個⼈サイト 3oclock.com


『Movable Type プロフェッショナル・スタイル MT4.1対応』
MTタグ




<mt:If>
条件分岐<mt:If>の共通基本動作


変数の値(あたい)によって
  タグの中を処理する
変数…
• 数値や⽂字など⾃由に
  設定できる仮定の値(あたい)
• 名前=変数名「sample」
• nameモディファイア
            ↓
      name =“sample”
タグの中…

<mt:If>
   〜
</mt:If>
3つのパターン
  • フラグ
   変数値が1かどうか
  • ⼆択
   変数値が1か2か
  • より複雑
   変数値が1か2か3か……etc


値が0の場合=特別な意味なので除外
フラグ

•1→フラグが⽴っている
 →タグの中を処理

•0→フラグが寝ている
 →タグの中をスキップ
MTテンプレート(1)
<mt:If name =“sample”>
 メッセージ
</mt:If>
             ↓
変数sampleに1がセットされてい
  れば「メッセージ」と表⽰する
インデックステンプレート
出⼒は「○○.txt」
[プレビュー]
まとめ:MTタグのテスト

1.インデックステンプレート
2.出⼒は「○○.txt」
3.[プレビュー]
結果
メッセージを表⽰するには…
             フラグを⽴てる


変数「sample」に1をセット
<mt:If name=“sample”>
 メッセージ
</mt:If>
変数の値をセット
• <mt:SetVar>

• nameモディファイア・・・変数名
 <mt:If>にあるnameモディファイアと同じ


• valueモディファイア・・・値
<mt:SetVar>
<mt:SetVar
 name=“sample”
 value=“1” >
             ↓
 変数「sample」に”1”をセット
            フラグを⽴てる
フラグを利⽤するMTテンプレート
      (2)
<mt:SetVar name=“sample” value=“1”>
<mt:If name =“sample”>
 メッセージ
</mt:If>
MTテンプレート(2)結果
まとめ:メッセージが表⽰されない…




メッセージなし
  → <mt:if>の中をスキップ
  → フラグが寝ている
  → sample=0
    または未設定
  → ⽐較結果がFalse(×)である
まとめ:メッセージが表⽰される…




メッセージあり
 → <mt:if>の中を実⾏
 → フラグが⽴っている
 → sample=1
 → ⽐較結果がTrue(○)である
素朴な疑問
1. sampleの値が1以外の時は?
   2,3,10,100,-1,-100,0.4,-0.5,0…

2. sampleの値が⽂字の時は?
   “あ” ”a” ”A” “ABC”…

3. sampleとSAMPLE、Sampleは同じ結
   果?

             テストしてみた
疑問(1)-1
<mt:SetVar name="sample" value="2">
<mt:If name=“sample”>
   メッセージ
</mt:If>
疑問(1)-2
<mt:SetVar name="sample" value=“3">
<mt:If name=“sample”>
   メッセージ
</mt:If>
疑問(1)-3
<mt:SetVar name="sample" value=“10">
<mt:If name=“sample”>
   メッセージ
</mt:If>
疑問(1)-4
<mt:SetVar name="sample" value=“100">
<mt:If name=“sample”>
   メッセージ
</mt:If>
疑問(1)-5
<mt:SetVar name="sample" value=“-1">
<mt:If name=“sample”>
   メッセージ
</mt:If>
疑問(1)-6
<mt:SetVar name="sample" value=“-100">
<mt:If name=“sample”>
   メッセージ
</mt:If>
疑問(1)-7
<mt:SetVar name="sample" value=“0.4">
<mt:If name=“sample”>
   メッセージ
</mt:If>
疑問(1)-8
<mt:SetVar name="sample" value=“-0.5">
<mt:If name=“sample”>
   メッセージ
</mt:If>
疑問(1)-9
<mt:SetVar name="sample" value=“0">
<mt:If name=“sample”>
   メッセージ
</mt:If>
                 本当に0でメッセージは⾮表⽰になるのか?
疑問(2)-1
<mt:SetVar name=“sample” value=“あ">
<mt:If name=“sample”>
   メッセージ
</mt:If>
疑問(2)-2
<mt:SetVar name="sample" value=“a">
<mt:If name=“sample”>
   メッセージ
</mt:If>
疑問(2)-3
<mt:SetVar name=“sample” value=“A”>
<mt:If name=“sample”>
   メッセージ
</mt:If>
疑問(2)-4
<mt:SetVar name="sample" value=“ABC">
<mt:If name=“sample”>
   メッセージ
</mt:If>
疑問(3)-1
<mt:SetVar name=“SAMPLE” value=“1">
<mt:If name=“sample”>
   メッセージ
</mt:If>
疑問(3)-2
<mt:SetVar name=“Sample” value=“1">
<mt:If name=“sample”>
   メッセージ
</mt:If>
検証結果
• sampleの値が1以外の時は?
  →0(ゼロ)の時だけ、メッセージなし
    マイナスも、0.5も、メッセージあり

• sampleの値が⽂字の時は?
  →メッセージあり

• sampleとSAMPLEは同じ結果?
  →同じ結果=⼤⽂字⼩⽂字は無関係
テンプレートが⾃⼰判断
    カテゴリ別                   ⽉別ブログ記事リスト            ウェブページ
   ブログ記事リスト

<mt:SetVar
name=“catArchive”
value=“1”>




                              <mt:Include>
             <mt:Include>                    <mt:Include>


                             フラグで⾃⼰判断する
                            テンプレートモジュール

               <mt:If name=“catArchive”>
                  〜カテゴリ別ブログ記事リスト専⽤処理〜
               </mt:If>
あらかじめ決まっているフラグ
1. P62-P63のMTの予約変数
   アーカイブテンプレート、インデックス
   テンプレート、システムテンプレート

1. catArchive → category_archive
2. <mt:If>ですぐに利⽤できる
予約変数に置換
<mt:If name=“catArchive”>
 〜カテゴリ別ブログ記事リスト専⽤処理〜
</mt:If>




<mt:If name=“category_archive”>
  〜カテゴリ別ブログ記事リスト専⽤処理〜

</mt:If>
アーカイブテンプレートを識別する予約変数名を表⽰する


• アーカイブの種類によって表⽰する予約
  変数名が異なる
<mt:SetVar name=“class-name” value=“$archive_class”>
<mt:If name=“class-name”>
<mt:SetVarBlock name=“class_name”><mt:GetVar replace=“-”,“_” name=“class-name”></mt:SetVarBlock>
<p>予約変数:<mt:GetVar name="class_name"> = <mt:GetVar name="$class_name"></p>
</mt:If>
あと20%
⼆択
変数の値が1または2の時は?

     ↓読み替え

変数の値が1か,それ以外の時は?
「1か」
      具体的な値との⽐較
           =

    モディファイア「eq」

<mt:If name=“sample” eq=“1” >
 メッセージ・・・sampleは1です
</mt:If>
「それ以外」
<mt:If>
 〜
<mt:Else>
 〜それ以外の処理〜
</mt:If>
⼆択のMTテンプレート

<mt:If name=“sample” eq=“1”>
 メッセージ 1です
<mt:Else>
 メッセージ 1以外です。
</mt:If>
⽐較(演算⼦)のモディファイア1

   eq … equal
        =
        等しい

   ne … not equal
        !=
        等しくない
⽐較(演算⼦)のモディファイア2

   lt … less than
        <
        未満

   gt … greater than
       >
                   他にもあるので
       より⼤きい オンラインヘル
                    プを参照
より複雑
  1か2か3か……etc
 <mt:If>で判断できるのは1つ
          ↓
   判別したいのは3個以上
(2個までなら<mt:Else>を利⽤)
          ↓
   判別する数だけ繰り返す
<mt:If>の繰り返し
<mt:If name=“sample” eq=“1” >
  sampleは「1」です
</mt:If>

<mt:If name=“sample” eq=“2” >   メリット:分岐の数
  sampleは「2」です                  が増えても繰り返す
</mt:If>                        だけなので分かりや
                                すい

<mt:If name=“sample” eq=“3” >   デメリット:
  sampleは「3」です                  sample=1だと、そ
</mt:If>                        の後の分岐はテスト
                                する必要がないが、
                                実⾏してしまう
より⾼度に
<mt:If name=“sample” eq=“1”>
 sample は1です
<mt:ElseIf eq=“2”>
 sample は2です
<mt:ElseIf eq=“3”>
 sample は3です
<mt:Else>         メリット:sample=1の時は
 sample は4です      <mt:If>を1度しか実⾏しな
                  くてよい
</mt:If>
                 デメリット:分岐が複雑にな
                 ると混乱する
まとめ:条件分岐(1)
• MTタグ <mt:If>
• 変数の中⾝を特定の値と⽐較し、結果次
  第で動作内⽤を変える。
• ⽐較結果…
    「○(True)」か「×(False)」
• ⽐較結果が「○(True)」の時だけ
    <mt:If> の中を実⾏する。
まとめ:条件分岐(2)
  3つのパターン
•   フラグ
    1かどうか
    nameモディファイア

•   ⼆択
    1か2か
    ⽐較演算⼦(eq,ne……)
    <mt:Else>

•   より複雑
    1か2か3か……etc
    繰り返し
以上です。
ありがとうございました。



    トゴル・カンパニー
    伊藤のりゆき

Weitere ähnliche Inhalte

Was ist angesagt?

単純ベイズ法による異常検知 #ml-professional
単純ベイズ法による異常検知  #ml-professional単純ベイズ法による異常検知  #ml-professional
単純ベイズ法による異常検知 #ml-professionalAi Makabi
 
MLP SVM Chapter 7 分割法
MLP SVM Chapter 7 分割法MLP SVM Chapter 7 分割法
MLP SVM Chapter 7 分割法Taikai Takeda
 
Mplusの使い方 初級編
Mplusの使い方 初級編Mplusの使い方 初級編
Mplusの使い方 初級編Hiroshi Shimizu
 
最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-Shintaro Fukushima
 
ノンパラベイズ入門の入門
ノンパラベイズ入門の入門ノンパラベイズ入門の入門
ノンパラベイズ入門の入門Shuyo Nakatani
 
Active Learning 入門
Active Learning 入門Active Learning 入門
Active Learning 入門Shuyo Nakatani
 
Jubatus Casual Talks #2: 大量映像・画像のための異常値検知とクラス分類
Jubatus Casual Talks #2: 大量映像・画像のための異常値検知とクラス分類Jubatus Casual Talks #2: 大量映像・画像のための異常値検知とクラス分類
Jubatus Casual Talks #2: 大量映像・画像のための異常値検知とクラス分類Hirotaka Ogawa
 
[第2版] Python機械学習プログラミング 第4章
[第2版] Python機械学習プログラミング 第4章[第2版] Python機械学習プログラミング 第4章
[第2版] Python機械学習プログラミング 第4章Haruki Eguchi
 

Was ist angesagt? (8)

単純ベイズ法による異常検知 #ml-professional
単純ベイズ法による異常検知  #ml-professional単純ベイズ法による異常検知  #ml-professional
単純ベイズ法による異常検知 #ml-professional
 
MLP SVM Chapter 7 分割法
MLP SVM Chapter 7 分割法MLP SVM Chapter 7 分割法
MLP SVM Chapter 7 分割法
 
Mplusの使い方 初級編
Mplusの使い方 初級編Mplusの使い方 初級編
Mplusの使い方 初級編
 
最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-
 
ノンパラベイズ入門の入門
ノンパラベイズ入門の入門ノンパラベイズ入門の入門
ノンパラベイズ入門の入門
 
Active Learning 入門
Active Learning 入門Active Learning 入門
Active Learning 入門
 
Jubatus Casual Talks #2: 大量映像・画像のための異常値検知とクラス分類
Jubatus Casual Talks #2: 大量映像・画像のための異常値検知とクラス分類Jubatus Casual Talks #2: 大量映像・画像のための異常値検知とクラス分類
Jubatus Casual Talks #2: 大量映像・画像のための異常値検知とクラス分類
 
[第2版] Python機械学習プログラミング 第4章
[第2版] Python機械学習プログラミング 第4章[第2版] Python機械学習プログラミング 第4章
[第2版] Python機械学習プログラミング 第4章
 

Ähnlich wie よくわかる条件分岐

タダで始めるテストファースト入門 ~ C# Express + NUnit
タダで始めるテストファースト入門 ~ C# Express + NUnitタダで始めるテストファースト入門 ~ C# Express + NUnit
タダで始めるテストファースト入門 ~ C# Express + NUnitYasuhiko Yamamoto
 
数理最適化と機械学習の 融合アプローチ -分類と新しい枠組み-
数理最適化と機械学習の融合アプローチ-分類と新しい枠組み-数理最適化と機械学習の融合アプローチ-分類と新しい枠組み-
数理最適化と機械学習の 融合アプローチ -分類と新しい枠組み-MIKIOKUBO3
 
不均衡データのクラス分類
不均衡データのクラス分類不均衡データのクラス分類
不均衡データのクラス分類Shintaro Fukushima
 
カラーミーショップ「カスタマイズスクール第1期vol.1」
カラーミーショップ「カスタマイズスクール第1期vol.1」カラーミーショップ「カスタマイズスクール第1期vol.1」
カラーミーショップ「カスタマイズスクール第1期vol.1」ec-campus
 
MTDDC Hokkaido : テンプレートタグでBrainf*ckを作ってみた
MTDDC Hokkaido : テンプレートタグでBrainf*ckを作ってみたMTDDC Hokkaido : テンプレートタグでBrainf*ckを作ってみた
MTDDC Hokkaido : テンプレートタグでBrainf*ckを作ってみたKatsuhiro Endo
 

Ähnlich wie よくわかる条件分岐 (8)

Machine Learning Fundamentals IEEE
Machine Learning Fundamentals IEEEMachine Learning Fundamentals IEEE
Machine Learning Fundamentals IEEE
 
タダで始めるテストファースト入門 ~ C# Express + NUnit
タダで始めるテストファースト入門 ~ C# Express + NUnitタダで始めるテストファースト入門 ~ C# Express + NUnit
タダで始めるテストファースト入門 ~ C# Express + NUnit
 
数理最適化と機械学習の 融合アプローチ -分類と新しい枠組み-
数理最適化と機械学習の融合アプローチ-分類と新しい枠組み-数理最適化と機械学習の融合アプローチ-分類と新しい枠組み-
数理最適化と機械学習の 融合アプローチ -分類と新しい枠組み-
 
不均衡データのクラス分類
不均衡データのクラス分類不均衡データのクラス分類
不均衡データのクラス分類
 
カラーミーショップ「カスタマイズスクール第1期vol.1」
カラーミーショップ「カスタマイズスクール第1期vol.1」カラーミーショップ「カスタマイズスクール第1期vol.1」
カラーミーショップ「カスタマイズスクール第1期vol.1」
 
MTDDC Hokkaido : テンプレートタグでBrainf*ckを作ってみた
MTDDC Hokkaido : テンプレートタグでBrainf*ckを作ってみたMTDDC Hokkaido : テンプレートタグでBrainf*ckを作ってみた
MTDDC Hokkaido : テンプレートタグでBrainf*ckを作ってみた
 
Inside Movable Type
Inside Movable TypeInside Movable Type
Inside Movable Type
 
Tokyo r27
Tokyo r27Tokyo r27
Tokyo r27
 

Kürzlich hochgeladen

Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 

Kürzlich hochgeladen (9)

Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 

よくわかる条件分岐