忍者ブログ
バイオインフォマティックス技術者試験、情報処理試験など、IT系の試験を基礎から勉強します。また、Javaなどプログラミングを勉強します。

【VBAスタンダード対策】Select Caseによる「文字列パターンマッチング」を攻略!

Select Case は数値だけでなく、文字列の分岐にも威力を発揮します。特に「〇〇で始まる」といった、ワイルドカードを使った柔軟なパターンマッチングを行う際の、VBA特有の構文構造をマスターしましょう。

1. 問題:ワイルドカードを使った文字列判定の文法

【 問題 】 変数 buf に格納された文字列が「Excel」で始まるかどうかを判定し、メッセージボックスを表示したい。空欄 ( A ) に入る正しい記述はどれでしょうか?

Sub StringTest()
    Dim buf As String
    buf = "Excel_VBA_Standard"

    Select Case True
        Case ( A )
            MsgBox "Excel関連のデータです"
        Case Else
            MsgBox "その他のデータです"
    End Select
End Sub

① buf = "Excel*"
② buf Like "Excel*"
③ Is Like "Excel*"
④ "Excel*"

2. 正解:文字列パターン判定に関する正解

正解: ② buf Like "Excel*"

3. 解説:「Select Case True」という特殊な構文構造

`Select Case` で文字列の「部分一致」や「パターン判定」を行う場合、通常の数値判定とは異なる特殊な構造(テクニック)が使われます。

[ 文字列パターン判定の構造ルール ]

1. 通常の書き方(Case "Excel*")は使えない
もし Select Case buf と書き、Case "Excel*" と指定した場合、VBAは「Excel*」という文字そのものと完全に一致するか(完全一致)を判定してしまいます。ワイルドカードとして機能しません。

2. 「Select Case True」の構造マジック
部分一致を行いたいときは、最初の行を Select Case True(条件が正しいものを探す)にします。そして、Caseの後ろに buf Like "Excel*" という、判定結果が True か False になる条件式を直接記述します。

3. ワイルドカードのルール
*(アスタリスク):0文字以上の任意の文字列(Excel* で「Excelで始まる」)
?(クエスチョン):任意の1文字
#(シャープ):任意の数字1文字(0〜9)

ここが試験に出る!: スタンダード試験では、Select Case True の構文パターンや、ワイルドカード * ? # の意味の違いが正確に理解できているかが問われます。特に不等号の時は Case Is > 10 のように Is を使いましたが、Like演算子の時は Is を使わず「変数名 Like ...」と書く構造の明確な違いを整理しておきましょう。


4. まとめ

「あいまい検索は Select Case True と Like のコンビで通す」。この特殊な構文構造をマスターすれば、ファイル名のルールチェックや、特定のキーワードが含まれるデータの仕分けなど、実務でよくある文字列処理を美しくコントロールできるようになります。

PR

【VBAスタンダード対策】Select Caseによる「複数値のカンマ指定」を攻略!

Select Case では、連続した範囲(To)だけでなく、「1または5」「2または6」のように、離れた複数の値を指定することも可能です。その際の正しい記述文法と判定の仕組みを押さえましょう。

1. 問題:カンマ区切りによる複数値の判定

【 問題 】 下記のコードを実行して CheckGroup(5) を呼び出した際、メッセージボックスに表示される文字列として正しいものはどれでしょうか?

Sub Test()
    Call CheckGroup(5)
End Sub

Sub CheckGroup(num As Integer)
    Select Case num
        Case 1, 5
            MsgBox "グループA"
        Case 2, 6
            MsgBox "グループB"
        Case Else
            MsgBox "その他"
    End Select
End Sub

① 「その他」が表示される
② 「グループA」が表示される
③ 「グループB」が表示される
④ 構文エラー(コンパイルエラー)が発生する

2. 正解:複数値指定の判定に関する正解

正解: ② 「グループA」が表示される

3. 解説:カンマは「または(Or)」の構造を持つ

特定の値を複数ピックアップして条件分岐させたい場合、VBAでは非常にシンプルな記述構造が用意されています。

[ 複数値指定の構造ルール ]

1. カンマは「Or」の意味になる
Case 1, 5 と書くと、内部的には「対象の変数が 1 または 5 の場合」という Or 条件の構造になります。今回引数に渡されたのは「5」なので、見事に条件に合致し、グループAが実行されます。

2. 「To」との違いを意識する
もし Case 1 To 5 と書いた場合は「1, 2, 3, 4, 5」のすべてが対象になりますが、Case 1, 5 であれば「1」と「5」のピンポイントな2つの値だけが対象になります。

3. 「To」と「カンマ」の組み合わせも可能
応用として、Case 1 To 3, 5(1〜3、または5)のように、範囲指定と個別指定をカンマで繋ぐ高度な構造もVBAでは認められています。

ここが試験に出る!: スタンダード試験では、If文の If num = 1 Or num = 5 Then という長くなりがちなコードを、Select Case を使ってスッキリ書き直す問題が出題されます。カンマの前後で条件が「いずれかに一致(Or)」の構造になっているかを冷静に見極めましょう。


4. まとめ

「離れた値はカンマで繋ぐ。それはOrのメッセージ」。このシンプルな文法構造をマスターすれば、不規則に並ぶ特定データの仕分け処理も迷わずスマートに記述できます。If文のOr連打から卒業し、見やすいコードを心がけましょう。


【VBAスタンダード対策】Select Caseによる「数値範囲」の分岐構造を攻略!

複数の条件で綺麗に分岐させたいときに便利な Select Case。単一の値だけでなく、「〇〜〇の間」や「〇より大きい」といった数値の範囲を判定する際の、VBA特有の構文構造と判定の優先順位をマスターしましょう。

1. 問題:数値範囲の指定と境界値の判定

【 問題 】 下記のコードを実行して JudgeScore(10) を呼び出した際、メッセージボックスに表示される文字列として正しいものはどれでしょうか?

Sub Test()
    Call JudgeScore(10)
End Sub

Sub JudgeScore(score As Integer)
    Select Case score
        Case 1 To 5
            MsgBox "ランクC"
        Case 5 To 10
            MsgBox "ランクB"
        Case Is > 10
            MsgBox "ランクA"
        Case Else
            MsgBox "対象外"
    End Select
End Sub

① 「ランクB」が表示される
② 「ランクA」が表示される
③ 「ランクB」が表示された後、「ランクA」も表示される
④ 構文エラー(コンパイルエラー)が発生する

2. 正解:Select Case の範囲判定に関する正解

正解: ① 「ランクB」が表示される

3. 解説:「上から順に、最初に一致した場所だけ」動く構造

Select Case の範囲指定には、文法ルールと処理の流れ(フロー)に関する重要な構造的特徴が3つあります。

[ Select Case の構造ルール ]

1. 〇〜〇の範囲は「To」を使う
Case 1 To 5 のように記述します。このとき、開始値と終了値(1と5)のどちらも条件に含まれる(以下・以上)という構造になります。そのため、5 To 10 には「10」もピッタリ含まれます。

2. 不等号を使うときは「Is」が必要
「10より大きい」を表現する場合、単に Case > 10 と書くとエラーになります。必ず Is キーワードを補って Case Is > 10 と書くのがVBAの絶対ルールです。(※Isは検査対象の変数を指す身代わり構造です)

3. 最初に一致した Case だけが実行される
【超重要】 もし JudgeScore(5) を呼び出した場合、5は「1 To 5」と「5 To 10」の両方に合致してしまいますが、VBAは上から順に判定し、最初に一致した段階でSelect Case全体を脱出する構造になっています(結果はランクCになります)。

ここが試験に出る!: スタンダード試験では、不等号を使うときに Is を書き忘れていないか、また Case 1, 2, 3 のような「カンマ区切り(いずれかに一致)」と To による「範囲指定」が正しく使い分けられているかが厳しく問われます。


4. まとめ

「範囲はTo、不等号はIs、一致したら即脱出」。この3つの構造ルールを頭に入れておけば、複雑な多方向分岐もすっきりと読みやすいマクロに落とし込むことができます。If文の連打に頼らない、スマートな条件分岐を構築しましょう。


【BI技術者認定試験対策】ゲノム編集の案内役!「crRNA」を攻略

ノーベル賞を受賞したゲノム編集技術「CRISPR/Cas9」。ハサミ役である酵素(Cas9)を、狙ったDNA配列へと正確に案内するナビゲーター「crRNA」の役割をマスターしましょう。

1. 問題:標的DNAを認識するRNA

【 問題 】 CRISPR/Cas9システムにおいて、CRISPR領域から転写されて作られ、標的となる対象DNAの塩基配列と相補的に結合することで、Cas9酵素を目的の場所へと誘導する役割を持つRNAは何でしょうか?

① mRNA   ② crRNA(CRISPR RNA)   ③ tracrRNA   ④ gRNA(ガイドRNA)

2. 正解:ゲノム編集の構成要素に関する正解

正解: ② crRNA(CRISPR RNA)

3. 解説:ハサミを誘導する「指名手配書」

もともとこの仕組みは、細菌が過去に感染したウイルスの断片(DNA)を自分のゲノム(CRISPR配列)に記憶し、再感染時にそれをRNAとしてコピーして敵を撃退する「獲得免疫システム」に由来しています。

[ CRISPR/Cas9を構成するRNAたち ]
crRNA(CRISPR RNA):今回の主役。標的DNAとぴったり結合する「指名手配の顔写真(配列)」にあたる部分です。
tracrRNA(トランス活性化型CRISPR RNA):ハサミ(Cas9酵素)とcrRNAをがっちり繋ぎ止めるための「ホルダー(土台)」の役割をするRNAです。
sgRNA / gRNA(シングルガイドRNA):研究やゲノム編集をやりやすくするため、本来バラバラだった「crRNA + tracrRNA」を人工的に1本に連結したものです。

1. 試験のポイント: 「対象DNAに対応する(相補的な)配列を持つ」という、ターゲット特異的な部分を指す場合は「crRNA」が正解です。一方で、「crRNAとtracrRNAを1本にまとめた人工RNA」という文脈であれば「gRNA(ガイドRNA)」が正解になります。問題文の細かいニュアンスを読み分けましょう。
2. バイオインフォの視点: ゲノム編集を設計する際、crRNAの配列(約20塩基)をどうデザインするかが極めて重要です。ゲノム上の目的の場所だけに結合し、似たような別の場所(オフターゲット領域)を誤って切断しないよう、全ゲノム配列を対象に高速に文字列検索(ブラストやマッピングアルゴリズム)を行い、最適なcrRNA配列候補を算出するソフトウェアの開発は、バイオインフォマティクスの中心的なテーマの一つです。


4. まとめ

「標的DNAをピンポイントで見つけ出すナビゲーター=crRNA」です。これがあるおかげで、30億塩基もある膨大なゲノムデータの中から、たった1箇所のピンポイントなバグ(狙った配列)を見つけ出して書き換えることができるのですね!


【BI技術者認定試験対策】ゲノムの超精密リカバリ!「相同組換え修復」を攻略

放射線や化学物質などによって、DNAの2本鎖が両方とも切断されてしまう致命的なエラー(2本鎖切断)。生命が持つ、最も正確なデータ復旧システムについて学びましょう。

1. 問題:DNA切断の正確な修復機構

【 問題 】 DNAの2本鎖切断が発生した際、細胞内にある配列が非常によく似た(相同な)もう一方のDNA鎖をお手本(テンプレート)として利用し、失われた配列を正確にコピーして元通りに修復する仕組みは何でしょうか?

① 非相同末端結合(NHEJ)   ② 相同組換え(HR)修復   ③ 塩基除去修復   ④ ミスマッチ修復

2. 正解:DNA修復メカニズムに関する正解

正解: ② 相同組換え(HR)修復

3. 解説:1文字も漏らさないパーフェクト・リカバリ

2本鎖切断の修復には大きく分けて2つのルートがありますが、その安全性(正確性)には雲泥の差があります。

[ 2本鎖切断を直す2つのルート ]
相同組換え(Homologous Recombination)修復:細胞分裂の前(DNA複製後)など、手元に「全く同じ配列のスペア(姉妹染色分体)」があるときに使えます。そのスペアをお手本にして1文字ずつコピーするため、エラーがほぼ起きない完璧な修復が可能です。
非相同末端結合(Non-Homologous End Joining):お手本を使わず、切れた末端同士をむりやり繋ぎ合わせる突貫工事です。手軽ですが、繋ぐときに文字が数文字消えたりズレたりする(エラーが起きやすい)特徴があります。

1. 試験のポイント: 「配列が相同のDNAをお手本にする」「正確にコピーする」というキーワードが出たら、間違いなく「相同組換え修復」です。がんを抑制する有名な遺伝子(BRCA1/BRCA2など)は、この相同組換え修復で重要な役割を果たしており、これが壊れるとがん化のリスクが高まるという医療・病理系の問題ともよくリンクします。
2. バイオインフォの視点: ゲノム編集技術(CRISPR/Cas9など)では、狙った場所をCas9でバッサリ切断した後、細胞が「相同組換え修復」を行おうとする性質を逆手に取ります。あらかじめ、少しだけ文字を書き換えた「人工的なお手本DNA」を一緒に細胞へ送り込んでおくことで、細胞自身に狙い通りの遺伝子改変(ノックイン)を正確に行わせることができます。このターゲット配列のデザインや、意図しない場所(オフターゲット)の予測にバイオインフォマティクスがフル活用されています。


4. まとめ

「同じ配列をお手本にして正確にコピー・修復する=相同組換え修復」です。システム開発で言えば、壊れたデータベースのテーブルを、別の同期用サーバー(レプリカ)にある完全なログを使って1行の狂いもなくクリーンにロールバックするような、非常にスマートな信頼性設計ですね!