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

【VBAスタンダード対策】配列の要素数「カッコの中の数字」の正体を攻略!

配列を Dim XX(3) と宣言したとき、使える箱は3つだと思っていませんか? 実はVBAの標準的な構造では、指定した数字は「最大インデックス(添字)」を意味します。ここにある「+1」の法則を正しく理解しましょう。

1. 問題:Dim XX(3) で作成される要素の範囲

【 問題 】 Dim XX(3) As Integer と宣言した場合、この配列で使用可能な要素(インデックス)の組み合わせとして正しいものはどれでしょうか?(※Option Baseなどの特殊な設定はしていないものとします)

① XX(1), XX(2), XX(3) の計3つ
② XX(0), XX(1), XX(2) の計3つ
③ XX(0), XX(1), XX(2), XX(3) の計4つ
④ XX(0), XX(1), XX(2), XX(3), XX(4) の計5つ

2. 正解:配列の要素範囲に関する正解

正解: ③ XX(0), XX(1), XX(2), XX(3) の計4つ

3. 解説:カッコ内の数字は「上限値」を指す

VBAの配列宣言 Dim XX(n) において、カッコ内の数字 n は要素数ではなく、使用可能な最大インデックスを構造的に指定しています。

[ 配列の物理構造イメージ ]

Dim XX(3) と書いた場合:
箱 [0] : XX(0)
箱 [1] : XX(1)
箱 [2] : XX(2)
箱 [3] : XX(3) <-- ここまで使える!

結果として、全部で 4つ の要素が作られます。

[ なぜ勘違いが起きるのか? ]
★ 他の言語との違い:Java 17やC言語では int a[3] は「3つの要素(0, 1, 2)」を作りますが、VBAは「上限が3(0, 1, 2, 3)」を作るという独自の構造を持っています。
★ 1から始めたい場合:もし XX(1) から XX(3) の3つだけを使いたいなら、構造的に Dim XX(1 To 3) と宣言するのが「理系NEO」な安全な書き方です。

1. ここが試験に出る!: 試験では For i = 0 To UBound(XX) のようなループが出た際、要素がいくつあるかを正確にカウントできるかが問われます。UBound 関数は上限値(この場合は3)を返すため、ループは4回回ることになります。
2. エンジニアの視点: 「0番目を使うか使わないか」はVBA開発者の永遠のテーマですが、配列のサイズを求める際は 上限 - 下限 + 1 という計算式が常に成立します。この「+1」を忘れないことが、インデックス範囲外エラー(Runtime Error 9)を防ぐための鉄則です。


4. まとめ

「カッコの中の数字は、最後に使える番号」。この構造を理解していれば、配列の要素数を数え間違えることはありません。細胞分裂の回数と細胞の数が n+1 になる関係のように、VBAの配列もまた、指定した番号までの道筋の中に、常に「0」という原点を含んでいるのです。


PR

【VBAスタンダード対策】配列の多様な宣言構造を攻略!

VBAの配列には、宣言時に要素数を固定する「静的配列」と、後からサイズを変更できる「動的配列」があります。それぞれの宣言文法と、インデックス(添字)の構造的な決まりを整理しましょう。

1. 問題:配列の宣言方法と要素数の関係

【 問題 】 下記のA~Dの宣言のうち、VBAの文法として誤っているもの、または実行時にエラーとなる可能性が高い構造はどれでしょうか?

A: Dim List(5) As String
B: Dim List() As Integer
C: Dim List(1 To 10) As Double
D: Dim List(X) As Variant ' ※Xは変数とする

① A:要素数が5つの静的配列として宣言されている
② B:後でReDimが必要な動的配列として正しく宣言されている
③ C:添字の下限を1、上限を10として正しく宣言されている
④ D:宣言時に変数を使ってサイズを指定することはできない

2. 正解:配列宣言の制約に関する正解

正解: ④ D(および ① の解釈)

3. 解説:静的と動的、それぞれの宣言ルール

VBAの配列構造において、最も注意すべきは「Dimによる宣言時に変数を使えるか」という点です。

[ 配列宣言の構造ルール図 ]

■ A:静的配列 Dim List(5)
実は要素数は 6つ です(0,1,2,3,4,5)。試験では「5」と書くと0番目を含めて6つになる構造がよく問われます。

■ B:動的配列 Dim List()
カッコの中を空にするのが動的配列の構造です。この時点ではメモリは確保されず、後で ReDim を使ってサイズを決定します。

■ C:範囲指定 Dim List(1 To 10)
「1から始まる」とはっきり指定する構造です。Option Base 1 を使わずに下限を固定できるため、実務で推奨される書き方です。

■ D:変数による指定 Dim List(X)
【重要】 Dimステートメントで要素数を指定する際、変数を使うことはできません。変数の値に応じてサイズを決めたい場合は、一度「B」の形で宣言し、その後 ReDim List(X) とする必要があります。

1. ここが試験に出る!: スタンダード試験では「静的配列の宣言に変数を使っていないか」「動的配列なのにカッコの中に数字を書いていないか」といった、DimとReDimの使い分けが厳格に問われます。
2. エンジニアの視点: Java 17などの言語では `int[] list = new int[x];` のように変数での初期化が当たり前ですが、VBAは「コンパイル時にサイズが決まるもの(Dim)」と「実行時に決まるもの(ReDim)」を構造的に区別しています。この「理系NEO」な厳密さを理解すると、メモリ管理のミスが減りますね。


4. まとめ

「Dimで変数は不可、サイズ変更はReDim」。この配列宣言のルールを守ることで、実行時のエラー(「定数式が必要です」など)を未然に防ぐことができます。配列もまた、宣言という「設計図」を正しく書くことで、初めて大量のデータを安全に格納する器として機能するのです。


【BI技術者認定試験対策】生命の組み立てライン!「翻訳のプロセス」を攻略

DNAの情報を肉体(タンパク質)へと変換する「翻訳」。この複雑な作業に関わる主要なメンバーと、その手順を完璧にマスターしましょう。

1. 問題:タンパク質合成の役割と手順

【 問題 】 タンパク質合成(翻訳)に関する以下の説明文の空欄( A )〜( D )に当てはまる用語の組み合わせとして正しいものはどれでしょうか?

核から運ばれた( A )が( B )に結合すると翻訳が始まります。( B )は( A )上の3つの塩基配列である「コドン」を読み取ります。そこへ、コドンに対応するアミノ酸を付けた( C )がやってきて、( B )の中でアミノ酸が順番に結合し、( D )鎖が作られます。

① A:tRNA、B:リボソーム、C:mRNA、D:ペプチド
② A:mRNA、B:リボソーム、C:tRNA、D:ペプチド
③ A:mRNA、B:ゴルジ体、C:tRNA、D:核酸
④ A:tRNA、B:核小体、C:mRNA、D:ペプチド

2. 正解:翻訳の登場人物に関する正解

正解: ② A:mRNA、B:リボソーム、C:tRNA、D:ペプチド

3. 解説:精密なリレー形式の組み立て

各登場人物の「役割」を現場の作業に例えると非常に分かりやすくなります。

[ 翻訳のメインキャラクター ]
★ mRNA(伝令RNA):設計図のコピー。現場へ情報を運ぶ。
★ リボソーム:組み立て工場。mRNAを読み取り、作業の場を提供する。
★ tRNA(転移RNA):運び屋。特定のコドンに対応するアミノ酸を運んでくる。
★ アミノ酸:材料。つなぎ合わされてペプチド鎖(タンパク質の元)になる。

1. 試験のポイント: tRNAが持っている、mRNAの「コドン」と対になる3塩基を「アンチコドン」と呼びます。この「コドン」と「アンチコドン」がぴったり合うことで、設計図通りのアミノ酸が選ばれる仕組みは最頻出ポイントです。
2. バイオインフォの視点: 1つのmRNAに対して複数のリボソームが結合し、同時にタンパク質を合成している状態を「ポリソーム」と呼びます。バイオインフォマティクスでは、このポリソームの状態を解析することで、単なるmRNAの量だけでなく、実際にどれくらい「活発にタンパク質が作られているか」を定量評価します。


4. まとめ

「mRNAの情報を、リボソームという工場で、tRNAが運んできたアミノ酸を使ってつなぐ」。この一連の流れが「翻訳」です。それぞれの役割をしっかり区別しておきましょう!


【BI技術者認定試験対策】正確に引き継ぐ仕組み!「半保存的複製」を攻略

DNAが分裂して増えるとき、どのようにして正確にコピーが作られるのでしょうか?そのエレガントなコピー方式について学びましょう。

1. 問題:DNA複製の様式

【 問題 】 DNAが複製される際、二重らせんがほどけ、もとのDNA鎖(親鎖)の1本を型枠(テンプレート)として残し、それに新しい鎖を合成して2本の二重らせんを作る方式を何と呼ぶでしょうか?

① 全保存的複製   ② 半保存的複製   ③ 分散的複製   ④ 逆転写

2. 正解:DNA複製メカニズムに関する正解

正解: ② 半保存的複製

3. 解説:半分は「思い出」、半分は「新品」

この仕組みのおかげで、DNAの塩基配列の情報はミスが少なく、極めて正確に次の細胞へと受け継がれていきます。

[ 半保存的複製のポイント ]
★ 仕組み:2本鎖がジッパーのように開き、それぞれの鎖に対して相補的な塩基(AにはT、GにはC)が結合して新しい鎖が作られます。
★ 結果:新しくできた2本のDNAは、どちらも「古い鎖1本」と「新しい鎖1本」のペアになります。
★ 証明:メセルソンとスタールが、重い窒素(15N)を使った実験によってこの方式を証明しました。

1. 試験のポイント: 「半分(1本)を保持(保存)して増える」から「半保存的」という名前がついています。DNAポリメラーゼという酵素が、型枠となる古い鎖の情報を読み取って新しい鎖を合成していくというプロセスとセットで覚えましょう。
2. バイオインフォの視点: 複製の際、稀に読み取りミス(置換や欠失)が起こります。これが「突然変異」です。バイオインフォマティクスでは、多くの個体のゲノム配列を比較することで、どこで複製ミスが起こりやすいのか、それが進化にどう影響したのかを計算によって解析します。


4. まとめ

「元の半分をテンプレートにする=半保存的複製」です。ワトソンとクリックがDNAの二重らせん構造を発見した際、直感的に「これなら簡単に、正確にコピーができるはずだ!」と確信した、生命の極めて合理的な仕組みですね!



【生物学問題】筋肉の酸素貯蔵庫!「ミオグロビン」を攻略

血液によって運ばれてきた酸素を受け取り、筋肉の中に蓄えておく特別なタンパク質があります。激しい運動を支えるこの物質の役割を整理しましょう。

1. 問題:筋肉内で酸素を保持するタンパク質

【 問題 】 血液中のヘモグロビンから酸素を受け取り、骨格筋や心筋の細胞内で酸素を貯蔵・運搬する働きを持つ赤色の色素タンパク質は何でしょうか?

① フィブリン   ② ミオグロビン   ③ アルブミン   ④ コラーゲン

2. 正解:生体内の酸素輸送に関する正解

正解: ② ミオグロビン

3. 解説:ヘモグロビンとの連携プレー

ミオグロビンはヘモグロビンよりも「酸素を引きつける力(親和性)」が強いため、血液からスムーズに酸素を受け取ることができます。

[ ミオグロビンの特徴 ]
★ 酸素の貯蔵:筋肉が活動する際に必要な酸素を一時的にストックしておき、供給が追いつかない時に放出します。
★ 構造の違い:ヘモグロビンが4つのユニットが集まった複合体であるのに対し、ミオグロビンは単一のユニット(単量体)で構成されています。
★ 赤色の正体:赤身の魚(マグロなど)や肉が赤いのは、このミオグロビンが豊富に含まれているためです。

1. 試験のポイント: 「血液 = ヘモグロビン」、「筋肉 = ミオグロビン」という場所の違いを明確に分けましょう。どちらも鉄を含む「ヘム」を持っているため赤く見えますが、役割と存在する場所が異なります。
2. バイオインフォの視点: ミオグロビンは、X線結晶構造解析によって初めてその三次元構造(立体構造)が解明されたタンパク質として、バイオインフォマティクスや構造生物学の歴史において非常に象徴的な存在です。PDB(Protein Data Bank)の記念すべき第1号データとしても知られています。


4. まとめ

「筋肉の中で酸素をキープするのはミオグロビン」です。血液の運び屋(ヘモグロビン)から酸素のバトンを受け取り、筋肉のエネルギー生産を支える、いわば「酸素の備蓄基地」のような存在ですね!