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

【BI技術者認定試験対策】性別によって決まる形質!「限性遺伝」を攻略

遺伝子を持っていても、特定の性別(オスまたはメス)の個体にしかその形質が現れない不思議な現象があります。性染色体と表現型の関係を整理しましょう。

1. 問題:特定の性のみに現れる遺伝

【 問題 】 特定の遺伝子が、一方の性の個体にのみ表現型として現れる遺伝現象を何と呼ぶでしょうか?(例:孔雀の飾り羽や、人間の二次性徴など)

① 伴性遺伝   ② 限性遺伝   ③ 従性遺伝   ④ 細胞質遺伝

2. 正解:性に関わる遺伝形式の正解

正解: ② 限性遺伝

3. 解説:性別という「フィルター」

遺伝子自体は両方の性別が持っている場合もありますが、ホルモンの影響などにより、特定の性別でしかスイッチが入らない形質のことです。

[ 遺伝形式の細かな違い ]
限性遺伝(げんせいいでん):特定の性別だけに現れる。例:乳汁分泌(雌のみ)、雄鳥の鶏冠(雄のみ)。
伴性遺伝(ばんせいいでん):性染色体(X, Y)上に遺伝子があり、性別によって現れる確率が異なる。例:赤緑色覚多様性。
従性遺伝(じゅうせいいでん):両性に出るが、性別によって優劣の関係が変わる。例:若ハゲ(男性で顕性、女性で潜性)。

1. 試験のポイント: 最も混同しやすいのが「伴性遺伝」との違いです。「遺伝子がどこにあるか(性染色体)」に注目するのが伴性遺伝、「どちらの性別に現れるか(表現型)」に注目するのが限性遺伝と整理しましょう。
2. バイオインフォの視点: 性特異的な遺伝子発現(Sex-biased gene expression)の解析は、トランスクリプトーム解析(RNA-Seq)における重要なトピックです。同じゲノムを持ちながら、なぜオスとメスでこれほどまでに形態や機能が異なるのか? その背後にある「遺伝子スイッチ」の制御ネットワークをデータから解明する研究が進んでいます。


4. まとめ

「特定の性別だけに形質が出る=限性遺伝」です。生物が繁殖のために特化した能力や外見を維持するための、進化上の重要な仕組みと言えますね!


PR

【VBAスタンダード対策】ReDim Preserveの「保持」と「制約」を攻略!

動的配列のサイズを変更する際、以前の ReDim だけでは中身が消えてしまいました。既存のデータを守りながら箱を大きくするには Preserve キーワードが不可欠です。しかし、この「魔法の言葉」には多次元配列における厳しい構造的制限があります。

1. 問題:ReDim Preserveで変更可能な次元

【 問題 】 下記のように宣言・代入された二次元配列 DataList があります。Preserve を使ってデータを保持したままサイズを変更しようとした際、エラーにならずに実行できるコードはどれでしょうか?

Dim DataList() As Variant
ReDim DataList(2, 3) ' --- 縦3×横4の配列として定義
DataList(0, 0) = "TEST"

' --- ここからサイズ変更を試みる ---

① ReDim Preserve DataList(5, 3)
② ReDim Preserve DataList(2, 5)
③ ReDim Preserve DataList(5, 5)
④ ReDim DataList(5, 5) '(Preserveなし)

2. 正解:サイズ変更の制約に関する正解

正解: ② ReDim Preserve DataList(2, 5)

3. 解説:「最後の次元」しかいじれない!

ReDim Preserve を使用して中身を保持する場合、VBAのメモリ構造上の理由から、変更できるのは「最後の次元のみ」という鉄の掟があります。

[ 二次元配列の構造イメージ ]

DataList( 1次元目 , 2次元目 )
              ↑         ↑
           変更不可   変更可能!

①がダメな理由:最初の次元(行方向)を変えようとしているためエラーになります。
②が正解の理由:最後の次元(列方向)のみを 3 から 5 に増やしているため、構造的に許可されます[cite: 1]。
④について:エラーにはなりませんが、Preserve がないため「TEST」というデータは消えてしまいます[cite: 1]。

1. ここが試験に出る!: 試験では「行方向(1次元目)を増やそうとしてエラーになるコード」が頻出します[cite: 1]。実務でどうしても行を増やしたい場合は、一度「行列を入れ替えてから拡張し、また戻す」というテクニックが必要になります。
2. エンジニアの視点: メモリを「連続した一行のデータ」として管理している古典的な言語構造ゆえの制約です。この制約があるからこそ、効率的に末尾にデータを追加できる設計になっています。理系NEOな開発者なら、最初から「変動する方を最後の次元にする」ように設計図を引くのが定石です。


4. まとめ

「データを守りたければPreserve。ただし、いじれるのは最後だけ」。このフレーズを丸暗記するだけで、配列の拡張に関するトラブルの8割は回避できます。制限を知ってこそ、動的配列の真のパワーを引き出すことができるのです。


【VBAスタンダード対策】配列リバース(逆順入れ替え)の論理構造を攻略!

配列の要素を逆順に並べ替える処理は、アルゴリズムの基礎です。ReDim で確保した領域の中で、どのように値を入れ替えるのか。ループの範囲設定と、データ消失を防ぐための「一時変数」の役割を理解しましょう。

1. 問題:配列の要素を入れ替えるアルゴリズム

【 問題 】 5つの要素を持つ配列 myAry の中身を逆順(myAry(0)と(4)、myAry(1)と(3)を入れ替え)にしたい。空欄 ( A ) に入る最も適切なコードはどれでしょうか?

Sub ReverseArray()
    Dim myAry() As Variant
    Dim tmp As Variant
    Dim i As Long, n As Long

    myAry = Array("A", "B", "C", "D", "E") '要素数5(0 to 4)
    n = UBound(myAry)

    For i = 0 To ( A )
        tmp = myAry(i)
        myAry(i) = myAry(n - i)
        myAry(n - i) = tmp
    Next i
End Sub

① n
② n - 1
③ n \ 2
④ n / 2

2. 正解:ループ回数の決定に関する正解

正解: ③ n \ 2

3. 解説:入れ替え処理の「折り返し地点」

配列を逆順にする際、最も間違いやすいのが「ループを最後まで(nまで)回してしまう」ことです。構造的な仕組みを図解で確認しましょう。

[ 入れ替えの構造図 ]

対象:(0) (1) (2) (3) (4) ※n=4

1回目(i=0):(0) と (4-0=4) を入れ替え
2回目(i=1):(1) と (4-1=3) を入れ替え
ここで終了!

もし、さらに i=3 まで回すと、(3)と(1)を再び入れ替えてしまい、「元に戻ってしまう」 という現象が起きます。

★ 理系NEOなポイント:
n \ 2:整数除算演算子 \ を使い、中心で止めます(4 \ 2 = 2。i=0から2まで回る)。
一時変数 tmpmyAry(i) = myAry(n-i) とした瞬間に、元の myAry(i) は消えてしまいます。あらかじめ tmp に退避させておくのが、構造的なデータ保護の鉄則です。

1. ここが試験に出る!: 試験では「tmpを使わずに直接代入しようとしていないか」「ループ回数が多すぎて元に戻っていないか」という論理ミスを突いてきます。UBound \ 2 という「半分で止める」感覚を身につけましょう。
2. エンジニアの視点: Java 17などの `Collections.reverse()` を使えば一発ですが、VBAで自作する場合は「メモリ上の値をどう移動させるか」を意識します。この「端と端を順番に入れ替えていく」構造は、並べ替え(ソート)アルゴリズムにも通ずる非常に重要な考え方です。


4. まとめ

「リバースは半分で止める。上書き前に退避する」。この2点を守るだけで、配列操作の正確性は格段に向上します。データの位置を構造的に把握し、制御できるようになれば、VBAエキスパートへの道もぐっと近づきます。


【VBAスタンダード対策】動的配列を定義する「ReDim」の基本構造を攻略!

サイズが決まっていない「動的配列」は、そのままでは使えません。ReDim ステートメントを使ってメモリ上に領域を確保する際のルールと、実行時に中身がどう変化するかという構造的特徴を確認しましょう。

1. 問題:ReDimによる配列の再定義と初期化

【 問題 】 下記のコードを実行した際、最後のメッセージボックスで表示される値として正しいものはどれでしょうか?

Sub ArrayTest()
    Dim myAry() As Integer ' --- (1) 動的配列の宣言
    
    ReDim myAry(2) ' --- (2) サイズを3つ(0-2)に決定
    myAry(0) = 10
    myAry(1) = 20
    
    ReDim myAry(5) ' --- (3) サイズを6つ(0-5)に変更
    
    MsgBox myAry(0)
End Sub

① 0
② 10
③ 20
④ エラー(実行時エラー)が発生する

2. 正解:ReDimによる初期化に関する正解

正解: ① 0

3. 解説:ReDimは「箱の作り直し」である

動的配列を使う上で、ReDim がメモリに対してどのような操作を行っているか、その構造的な動きを理解することが重要です。

[ ReDimの構造的プロセス ]

1. 宣言時:Dim myAry()
「動的配列を使うよ」という名前だけの登録です。中身は空っぽで、このまま myAry(0) = 1 と書くとエラーになります。

2. 初回ReDim:ReDim myAry(2)
ここで初めてメモリ上に 0, 1, 2 の3つの箱が作られます。

3. 二度目のReDim:ReDim myAry(5)
【重要】 単なる ReDim は、既存の配列を一度破棄し、新しいサイズの配列をゼロから作り直します。
そのため、それまでに代入していた「10」や「20」といったデータはすべて消え去り、数値型なら「0」にリセット(初期化)されます。

1. ここが試験に出る!: 試験では「ReDimをすると既存のデータはどうなるか?」という点がストレートに問われます。「作り直し = 初期化」という構造を即座にイメージできるようにしましょう。
2. エンジニアの視点: 「とりあえず大きく確保し直せばいいだろう」という安易な ReDim は、データ消失のバグを生みます。もしデータを残したいなら、次の次の問題で扱う Preserve キーワードが必要になりますが、まずは「ReDim = リセット」という基本構造を叩き込むのが理系NEOな学習順序です。


4. まとめ

「ReDimは、新しい箱への完全な取り替え」。このルールがあるからこそ、配列のサイズを自由に変えられる柔軟性が生まれます。データが消えるというリスクを正しく把握して初めて、動的配列という強力な武器を使いこなせるようになるのです。


【BI技術者認定試験対策】バラバラに受け継がれる!「独立の法則」を攻略

メンデルの法則の3つ目。異なる形質(例えば「種子の形」と「種子の色」)が、お互いに干渉することなく、独立して次世代に伝わる仕組みを整理しましょう。

1. 問題:異なる形質の遺伝

【 問題 】 メンデルの法則のうち、2組以上の対立形質に注目した際、それぞれの対立遺伝子が互いに影響を及ぼすことなく、独立して配偶子の中に分配されるという法則を何と呼ぶでしょうか?

① 優性の法則(顕性の法則)   ② 分離の法則   ③ 独立の法則   ④ 連鎖の法則

2. 正解:遺伝の基本原則に関する正解

正解: ③ 独立の法則

3. 解説:形質の組み合わせは自由自在

「丸い種子」か「しわの種子」かという情報と、「黄色」か「緑色」かという情報は、別々のサイコロを振るように独立して決まります。

[ 独立の法則のポイント ]
前提条件:それぞれの遺伝子が「異なる染色体」の上にある場合に成り立ちます。
表現型の比:2つの形質についてヘテロ同士(AaBb × AaBb)を交配させると、表現型は 9:3:3:1 の比率で現れます。
例外:もし2つの遺伝子が同じ染色体上の近い場所にあると、一緒に動いてしまう「連鎖」という現象が起こり、独立の法則は成り立ちません。

1. 試験のポイント: メンデルの三法則(優性・分離・独立)をセットで覚えましょう。「分離の法則」は1組の対立遺伝子のペアが分かれること、「独立の法則」は2組以上のペアが互いに干渉しないことを指します。
2. バイオインフォの視点: 実際のゲノム上では、全ての遺伝子が独立しているわけではなく、多くの遺伝子が「連鎖不平衡」という状態で存在しています。特定の病気のリスク遺伝子を探す際、どの範囲の遺伝子がセット(ハプロタイプ)として遺伝しやすいかを統計的に解析するのは、バイオインフォマティクスの非常に重要な手法です。


4. まとめ

「別々の特徴は独立して遺伝する=独立の法則」です。この法則があるおかげで、親の様々な特徴がシャッフルされ、多様な個性を持つ子供たちが生まれてくるのですね!