SlideShare une entreprise Scribd logo
1  sur  56
Télécharger pour lire hors ligne
よくわかる条件分岐

 トゴル・カンパニー
 伊藤のりゆき
アジェンダ
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
    繰り返し
以上です。
ありがとうございました。



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

Contenu connexe

Tendances

Active Learning 入門
Active Learning 入門Active Learning 入門
Active Learning 入門
Shuyo Nakatani
 

Tendances (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章
 

Similaire à よくわかる条件分岐

不均衡データのクラス分類
不均衡データのクラス分類不均衡データのクラス分類
不均衡データのクラス分類
Shintaro Fukushima
 

Similaire à よくわかる条件分岐 (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
 

Dernier

Dernier (12)

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 

よくわかる条件分岐