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

【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を切り替えられます。

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


PR

【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) 複数シートを跨ぐ集計など


【GAS】保存場所と「プロジェクト」の正体:スクリプトはどこに消えた?

Google Apps Script(GAS)を使い始めると、「書いたコードはどこに保存されているのか」「ファイルを分けるとどうなるのか」という疑問に突き当たります。まずは、GASに存在する2つの保存形態と、それらを包む「プロジェクト」の正体を整理しましょう。

1. スプレッドシートに埋め込まれるタイプ(コンテナバインド)

スプレッドシートのメニュー(拡張機能 > Apps Script)から作成する、最も一般的な方法です。

[ 特徴 ]
1. 実態:スプレッドシートの「付属品」です。

2. 保存場所:Googleドライブ上に単体のファイルとしては表示されません。シートの中に隠れています。

3. 複数スクリプトの持ち方:エディタでファイルを増やしてコードを分けたとしても、すべてがシートの中に隠れたままになります。

4. コピー:シートをコピーすると、中にある複数のスクリプトファイルも丸ごとコピーされます。

2. 独立したファイルとして存在するタイプ(スタンドアロン)

スプレッドシートを介さず、Googleドライブから直接作成する単独のファイルです。

[ 特徴 ]
1. 実態:Googleドライブに「Google Apps Script」という種類の単一ファイルとして保存されます。

2. 作成方法:ドライブの [新規] > [その他] > [Google Apps Script] から作成します。

3. 複数スクリプトの持ち方:エディタ内でファイルをどれだけ増やしても、ドライブ上では「1つのファイル」としてしか見えません。

4. メリット:特定のシートに縛られず、複数のシートを横断して操作するのに適しています。

3. プロジェクトとは?(いつ、どんな単位で作られるか)

ポイント:プロジェクトは複数のファイルを包む「封筒」

GASの管理単位は、すべて「プロジェクト」と呼ばれます。個別のスクリプトファイル(.gs)を「便箋」とするなら、プロジェクトはそれらを包む「封筒」です。

■ 埋め込み型の場合のプロジェクト
いつ作られる?:シートのメニューをクリックした瞬間に自動で作られます。
単位:そのシート専用。「シート1枚 = 1プロジェクト」で固定されます。

■ 独立型の場合のプロジェクト
いつ作られる?:ドライブから新規GASを作成して保存したときに作られます。
単位:そのファイルそのもの。「1ファイル = 1プロジェクト」です。

なぜこの「プロジェクト」という単位が必要なのか?
それは、Googleからの「実行許可(承認)」や、タイマー実行(トリガー)の設定、Webアプリ公開時のURLなどが、すべて個別のファイルごとではなく「プロジェクト単位」で管理されるからです。

4. コンテンツの比較まとめ

特徴1. 埋め込み型(バインド)2. 独立型(スタンドアロン)
いつ作られる? シートのメニューを押した時 ドライブで「新規」作成した時
プロジェクトの単位 スプレッドシート1枚に1つ 1ファイルにつき1つ
ドライブでの見え方 表示されない(シート内) 単独のファイルとして表示
複数の.gs作成 可能(すべてシート内) 可能(1ファイルに収まる)
シートを削除した場合 中のコードもすべて消える 消えない(独立している)

5. スクリプトファイル(.gs)を分けたときの共通ルール

どちらのタイプでも、同じプロジェクト内でファイルを分けた場合は以下の挙動になります。

  • 関数は筒抜け:ファイルAで書いた関数を、ファイルBからそのまま呼び出せます。特別な設定は不要です。
  • 名前被りに注意:すべてのファイルが内部で繋がっているため、異なるファイルで「同じ名前の変数や関数」を使うとエラーになります。
  • 整理のメリット:一つのファイルが長くなりすぎるのを防ぎ、「処理用」「設定用」など役割ごとに整理できます。


【GAS】Hello Worldからスプレッドシート実行まで:環境構築と権限承認の勘所

Google Apps Script(GAS)の学習は、ブラウザひとつで完結する手軽さが魅力です。まずは基本中の基本である「Hello World」の出力から、実用的な「スプレッドシート上のボタン実行」までの最短ルートを整理してみましょう。

1. ログ出力(Hello World):最小構成での動作確認

プログラミングの第一歩は、正しく環境が動いているかを確認することです。まずはコンソールへの出力から始めます。

[ 手順 ]
1. シート新規作成:[sheets.new] 等で新しいスプレッドシートを作成する。

2. エディタ起動:[拡張機能] > [Apps Script] を選択する。

3. コード入力function helloWorld() { console.log('Hello World'); } と記述。

4. 保存と実行:プロジェクトを保存し、[実行] ボタンをクリックする。

5. 結果確認:実行ログに「Hello World」と表示されることを確認する。

2. シート操作と権限:Googleの「承認の壁」を突破する

ポイント:初回実行時のセキュリティ警告は「詳細」から進む

セルへの書き込みを行う際は、Googleアカウントへのアクセス許可が必要です。「確認されていません」という警告が出た際の正しい突破手順を把握しておきましょう。

[ 承認フロー ]
1. コード追記function writeToSheet() { SpreadsheetApp.getActiveSheet().getRange("A1").setValue("Hello World"); } を追加。

2. 実行:関数を選択して [実行] をクリック。

3. 警告対応:[権限を確認] > アカウント選択 > [詳細] をクリック。

4. 許可:最下部の [(プロジェクト名)に移動(安全ではない)] > [許可] を選択。

5. 目視確認:スプレッドシートのA1セルに文字が書き込まれたことを確認する。

3. ボタン実行の実装:UIへのスクリプト割り当て

開発画面を開かずに実行できるよう、シート上の図形にスクリプトを紐付けます。

[ ボタン化の構成図 ]

Step.1: 図形の挿入
[挿入] > [図形描画] からボタンを作成し、[保存して終了]。

Step.2: 関数の割り当て
図形を右クリック > [︙] > [スクリプトを割り当て] を選択。
カッコなしの関数名 writeToSheet を入力。

Step.3: 実行状態の解除
一度セルをクリックして選択を解除してから、ボタンを左クリック。

Step.4: 最終確認
画面上に「実行しています」と出て、A1セルが更新されることを確認。

4. なぜ「保存場所」の理解が必要なのか?

1. 実体の基準: 作成したスクリプトは、スプレッドシート本体に紐付いた「コンテナバインド・スクリプト」として管理されます。
2. ファイル管理: Googleドライブ内のシートと同じ場所に存在し、独立した拡張子(.gs)ファイルとして単体で表示されることはありません。
3. コピーの挙動: シートをコピーすれば中のコードも同期してコピーされるため、ツール配布が非常にスムーズです。



【BI技術者認定試験対策】二段構えの防御システム!「免疫」を攻略

私たちの体は、病原体などの外敵から身を守るための「免疫(めんえき)」という高度なシステムを備えています。今回は、その基本となる2つの仕組みについて整理しましょう。

1. 問題:生体防御の2つの仕組み

【 問題 】 生体が持つ免疫システムは、生まれつき備わっている[ A ]と、後天的に特定の病原体を記憶して攻撃する[ B ]の2段階に大きく分けられます。空欄の組み合わせとして正しいものはどれでしょうか?

① A:自然免疫 / B:獲得免疫
② A:獲得免疫 / B:自然免疫
③ A:体液性免疫 / B:細胞性免疫
④ A:物理的防御 / B:化学的防御

2. 正解:免疫の分類に関する正解

正解: ① A:自然免疫 / B:獲得免疫

3. 解説:即応部隊と精鋭部隊

免疫系は、侵入者に対して役割の異なる2つの部隊が連携して働いています。

[ 免疫の2段階システム ]
自然免疫(しぜんめんえき):異物が侵入するとすぐに働く「即応部隊」です。好中球やマクロファージなどが、相手を問わず食作用によって異物を排除します。
獲得免疫(かくとくめんえき):特定の異物を記憶して攻撃する「精鋭部隊」です。T細胞やB細胞が関わり、一度感染した病原体を記憶するため、2回目以降の感染では強力に阻止します(適応免疫とも呼ばれます)。

[ 連携の流れ ]
・自然免疫が異物を食べ、その情報を獲得免疫に伝える「抗原提示(こうげんていじ)」によって、スムーズな防御が行われます。

1. 試験のポイント: 「自然免疫=非特異的(誰でも攻撃)」「獲得免疫=特異的(特定の相手を記憶)」という性質の違いを明確にしましょう。ワクチンの原理は、この「獲得免疫」の記憶力を利用したものです。
2. バイオインフォの視点: 獲得免疫の主役である抗体やT細胞受容体の遺伝子は、驚くほど多様です。次世代シーケンサー(NGS)を用いてこれらの受容体配列を網羅的に解析する「レパトア解析」は、感染症やがん免疫療法の研究において非常に重要なデータ駆動型アプローチとなっています。


4. まとめ

「生まれつきの自然免疫、学習する獲得免疫」!この二段構えの防御があるからこそ、私たちは多様な病原体の中で健康を維持できています。それぞれの中心となる細胞(マクロファージやリンパ球など)もセットで覚えておくと完璧ですね!