よくわかる条件分岐
Upcoming SlideShare
Loading in...5
×
 

よくわかる条件分岐

on

  • 4,923 views

 

Statistics

Views

Total Views
4,923
Views on SlideShare
3,039
Embed Views
1,884

Actions

Likes
2
Downloads
8
Comments
0

21 Embeds 1,884

http://3oclock.com 1116
http://www.sixapart.jp 382
http://www.movabletype.jp 244
http://feeds.feedburner.jp 54
http://www.goodpic.com 15
http://webcache.googleusercontent.com 15
http://www.3oclock.com 13
url_unknown 7
http://feeds.feedburner.com 7
http://localhost:8888 6
http://cache.yahoofs.jp 4
http://obur-golestan.somee.com 3
http://asobiva.net 3
http://translate.googleusercontent.com 3
http://learning.esdlife.com 2
http://portal.unitbv.ro 2
http://www.slideshare.net 2
http://paper.li 2
http://www.jonbeshsabz.somee.com 2
http://contact.somee.com 1
http://translate.google.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

よくわかる条件分岐 よくわかる条件分岐 Presentation Transcript

  • よくわかる条件分岐 トゴル・カンパニー 伊藤のりゆき
  • アジェンダ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:SetVarname=“catArchive”value=“1”> <mt:Include> <mt:Include> <mt:Include> フラグで⾃⼰判断する テンプレートモジュール <mt:If name=“catArchive”> 〜カテゴリ別ブログ記事リスト専⽤処理〜 </mt:If>
  • あらかじめ決まっているフラグ1. P62-P63のMTの予約変数 アーカイブテンプレート、インデックス テンプレート、システムテンプレート1. catArchive → category_archive2. <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 繰り返し
  • 以上です。ありがとうございました。 トゴル・カンパニー 伊藤のりゆき