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

【BI技術者認定試験対策】細胞の内部構造はどうできた?「膜進化説」を攻略

真核細胞が持つ核膜や小胞体などの複雑な膜構造。これらがどのように誕生したのかを説明する重要な考え方が「膜進化説」です。

1. 問題:細胞内構造の起源

【 問題 】 原核細胞の細胞膜(表層の膜)が細胞の内部へと入り込み(陥入し)、核を包む膜や小胞体などの細胞小器官が形成されたとする説を何と呼ぶでしょうか?

① 細胞内共生説   ② 膜進化説   ③ 獲得形質遺伝説   ④ 自然発生説

2. 正解:細胞の進化に関する正解

正解: ② 膜進化説

3. 解説:内側に折れ曲がってできた「部屋」

真核細胞の最大の特徴である「膜で仕切られた部屋(細胞小器官)」のルーツを説明する説です。

[ 膜進化説のポイント ]
仕組み:細胞表面の膜が内側に折れ曲がり(陥入)、内部のDNAなどを包み込むことで核膜や小胞体、ゴルジ体などが形成されたと考えられています。
対象:主に「核膜」「小胞体」「ゴルジ体」「液胞」などの一重膜の小器官の起源を説明します。

[ 細胞内共生説との違い ]
膜進化説:自らの膜が変化してできた。
細胞内共生説:外の生物を取り込んでできた(ミトコンドリア・葉緑体)。

1. 試験のポイント: 核膜の起源を問われたら「膜進化説」です。ミトコンドリアや葉緑体は、独自のDNAを持つため「共生説」が適用されますが、核膜は細胞自身の膜に由来するという違いを明確にしておきましょう。
2. バイオインフォの視点: 近年、アスガルド古細菌と呼ばれるグループのゲノム解析から、真核生物に近い膜操作タンパク質の遺伝子が見つかっています。これらの遺伝情報をもとに、初期の細胞がどのように膜を折りたたんで複雑な構造を作り上げたのか、進化のシミュレーションが進められています。


4. まとめ

「細胞自身の膜が入り込んでできたのが膜進化説」です。ミトコンドリアなどの「外来種」を受け入れる前に、まずは自分自身の膜を使って「核」という大切な部屋を作ったのが、真核生物への第一歩だったのかもしれませんね!


PR

【VBAスタンダード対策】変数のスコープ(有効範囲)の構造を攻略!

変数は、宣言する場所によってその「見える範囲(スコープ)」が異なります。プロシージャの中で宣言する「プロシージャレベル変数」と、外で宣言する「モジュールレベル変数」の構造的違いを、実行結果から読み解きましょう。

1. 問題:同名の変数が存在する場合の実行結果

【 問題 】 下記のコードを実行して Main プロシージャを呼び出した際、メッセージボックスに表示される数値はいくつでしょうか?

Dim num As Integer ' --- (A) モジュールレベル変数

Sub Main()
    Dim num As Integer ' --- (B) プロシージャレベル変数
    num = 100
    ShowValue
End Sub

Sub ShowValue()
    MsgBox num
End Sub

① 0
② 100
③ エラーになる
④ どちらのnumか選択するダイアログが出る

2. 正解:変数のスコープと優先順位に関する正解

正解: ① 0

3. 解説:なぜ「100」ではなく「0」なのか?

この問題の核心は、「名前は同じでも、メモリ上では全く別の箱(構造)である」という点にあります。VBAでは、より狭い範囲(プロシージャ内)で宣言された変数がその中では優先されますが、他のプロシージャからはその中身は見えません。

[ 変数の階層構造図 ]

■ 標準モジュール全体のエリア
│ [箱A] num (モジュールレベル) -> 初期値 0

Sub Main()
│ │ [箱B] num (プロシージャレベル) -> 100 を代入
│ │ ※Main内では[箱B]が[箱A]を隠す(シャドウイング)
End Sub

Sub ShowValue()
│ │ MsgBox num -> このプロシージャからは[箱A]しか見えない!
End Sub

1. ここが試験に出る!: スタンダード試験では、このように「わざと変数の名前を重複させたコード」で、変数の寿命と有効範囲の理解度を試してきます。Main で代入した num = 100 は、あくまで Main の中だけで有効な「プロシージャレベル変数」に対する操作です。別のプロシージャである ShowValue は、モジュールの先頭で宣言され、初期化(0)されたままの「モジュールレベル変数」を参照するため、答えは 0 になります。
2. エンジニアの視点: Java 17などのフィールド変数とローカル変数の関係と同じ構造です。実務でこの構造的なミス(意図しない0の参照)を防ぐには、モジュールレベル変数には m_num のように接頭辞を付けるのが、デバッグの手間を減らす理系NEOな設計です。


4. まとめ

「自分に近い方の変数が優先されるが、プロシージャをまたけば見え方が変わる」。このスコープの構造を正しく把握することで、変数の値が予期せず変わったり、逆に反映されなかったりするバグを確実に防ぐことができます。減数分裂において各細胞が独自の役割を維持するように、VBAも変数の有効範囲を厳密に分離することで、プログラムの整合性を保つのです。


【BI技術者認定試験対策】食細胞が異物を飲み込む!「自然免疫」を攻略

私たちの体の中に病原体などの異物が侵入した際、真っ先に駆けつけて異物を直接食べて片付けてくれる細胞たちがいます。この初期防衛システムについて詳しく学びましょう。

1. 問題:食細胞による異物の排除

【 問題 】 白血球の一部である好中球やマクロファージなどが、体内に侵入した異物(細菌など)を取り込んで分解する働きを何と呼ぶでしょうか?

① 飲作用   ② 食作用   ③ 拡散   ④ 浸透

2. 正解:生体防御の反応に関する正解

正解: ② 食作用

3. 解説:体を守るアメーバ状のハンター

自然免疫の主役である「食細胞」は、異物を自身の細胞内に取り込み、酵素などを使って消化・殺菌します。

[ 代表的な食細胞 ]
好中球(こうちゅうきゅう):白血球の中で最も数が多く、感染部位に素早く移動して細菌などを食べます。
マクロファージ:大型の食細胞で、異物を食べるだけでなく、その情報を他の免疫細胞(T細胞など)に伝える役割も持っています。

[ 働き(食作用) ]
・異物を細胞膜で包み込み、「食胞(しょくほう)」という小胞を作って取り込みます。その後、リソソームと融合して加水分解酵素によって処理されます。

1. 試験のポイント: 以前学習した「自然免疫」の具体的なアクションがこの「食作用」です。相手が誰であっても(非特異的)、異物と認識すればすぐに攻撃を開始するのが特徴です。
2. バイオインフォの視点: 食細胞が異物の表面にあるパターン(PAMPs)を認識する「受容体(TLRなど)」の遺伝子解析は、免疫学の重要テーマです。これらの受容体がどのように進化し、多種多様な病原体に対応しているのかをゲノム比較によって解明する研究が行われています。


4. まとめ

「好中球やマクロファージによる異物の捕食=食作用」です。この強力な「掃除屋」たちが24時間体制でパトロールしているおかげで、軽微な感染は自覚症状が出る前に抑え込まれています。免疫システムの第一防衛線をしっかりイメージしておきましょう!


【GAS】コードにメモを残す「コメント」の書き方と実践サンプル

プログラムを読みやすく、管理しやすくするために欠かせないのが「コメント(メモ書き)」です。数日後の自分やチームの仲間のために、日本語で説明を残す習慣をつけましょう。

1. コメントの種類と書き方

GAS(JavaScript)では、用途に合わせて2種類の書き方を選べます。

function commentIntro() {
  // ① 単一行コメント:スラッシュ2つでその行の末尾までがメモになります
  const tax = 1.1; // 行の途中から書くことも可能です

  /*
    ② 複数行コメント:
    このように、複数行にわたる長い説明を
    書きたいときに便利です。
  */

}

2. 実践:コメントと console.log の組み合わせ

コメントで「なぜこの処理をするのか」を説明し、console.log で「実際に何が起きているか」を確認するのが開発の基本スタイルです。

function sampleFunction() {
  // 現在の日時を取得して変数に入れる
  const now = new Date();
  
  // 実行ログに現在時刻を表示して、正しく取得できたか確認する
  console.log("現在時刻:" + now);
  
  /*
     ここから下の処理はまだテスト中なので
     実行されないようにコメントアウト(一時停止)しておきます
  */

  // SpreadsheetApp.getUi().alert("こんにちは!");
}

3. コメントを書く時のコツ

  • 「なぜ(Why)」を書く: コードを見ればわかること(例:シートを取得する)よりも、目的(例:集計漏れを防ぐために最新シートを指定)を書くと効果的です。
  • ショートカットを活用: 行を選択して Ctrl + /(Macは Cmd + /)を押すと、一瞬でコメントのON/OFFを切り替えられます。

コメントは「未来の自分へのメッセージ」です。丁寧にメモを残すクセをつけることで、プログラミングの上達も早まりますよ!

【GAS】独立型(スタンドアロン)GASで「外部」からシートを操る手順

【実践】独立型(スタンドアロン)GASで「外部」からシートを操る手順

今回は、特定のシートに依存しない「独立型スクリプト」を作成し、離れた場所にあるスプレッドシートを操作する具体的な手順を解説します。

1. 独立型プロジェクトを新規作成する

まずは、Googleドライブから単体の「プログラムファイル」としてGASを作成します。

  1. Googleドライブを開き、[新規] > [その他] > [Google Apps Script] を選択。
  2. エディタが開いたら、左上のプロジェクト名を好きな名前(例:データ集計ツール)に変更して保存します。

2. 住所(スプレッドシートID)を取得する

独立型はシートの中にいないため、操作対象の「住所(ID)」が必要です。

  • 操作したいスプレッドシートを開き、URLの以下の部分をコピーします。
    /d/[ここの長い英数字]/edit

3. コードを書いて「遠隔操作」の設定をする

独立型では openById という命令を使います。以下のコードを貼り付けてみましょう。

function writeToSheet() {
  // (1) コピーしたIDを貼り付け
  const ssId = 'あなたのスプレッドシートID';

  // (2) IDを使って、離れた場所にあるシートを開く
  const ss = SpreadsheetApp.openById(ssId);

  // (3) 一番左のタブのA1セルに書き込む
  ss.getSheets()[0].getRange('A1').setValue('独立型から書き込み成功!');
}

4. 実行と「スペルミス」の罠

実行ボタンを押して承認を済ませれば完了です。変化がない場合は以下をチェック!

  • スペルミスopenById の「I」と「B」は大文字。
  • 保存忘れ:コードを書き換えた後は、必ず保存(Ctrl+S)してから実行。

まとめ:使い分けの基準

タイプ主な命令向いているシーン
埋め込み型 getActiveSpreadsheet() そのシート専用のツール
独立型 openById(ID) 複数シートを跨ぐ集計など