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

【Officeスクリプト入門】型って宣言するの?データ型(型指定)の基本をマスターしよう

前回はデータの入れ物である「変数(let)」について解説しましたが、今回は一歩進んで、Officeスクリプトの最大の特徴である「データ型(型指定)」について解説します!

「型ってわざわざ書かないといけないの?」という疑問を、実際の書き方とメリットを交えてスッキリ解消しましょう。

0. 文法:型は「コロン(:)」のあとに書く

Officeスクリプトで型をはっきりと宣言したいときは、変数名(または定数名)の後ろに : 型名 をつけます。

代表的な型には、以下のようなものがあります。

  • number:数値(整数や小数)
  • string:文字列(文字のデータ)
  • boolean:論理値(true または false)

1. 実践サンプル

それでは、エディタに以下のコードを貼り付けて動かしてみましょう。型をきっちり指定して変数を宣言するサンプルです。

function main(workbook: ExcelScript.Workbook) {
  // ① 数値型(number)を明示して宣言
  let age: number = 20;
  
  // ② 文字列型(string)を明示して宣言
  let message: string = "こんにちは!";
  
  // コンソールに出力する
  console.log(message + "年齢は" + age + "歳です");
}

2. 実行結果

スクリプトエディタの右上にある実行ボタン(よこむきさんかく ▶)を押すと、画面下部の「出力」タブに以下のように表示されます。

  こんにちは!年齢は20歳です

ワンポイント・アドバイス

Q. 型は「絶対に」書かないとダメなの?
結論から言うと、初期値をいきなり入れる場合は書かなくても大丈夫です!

例えば、let age = 20; とだけ書いた場合、Officeスクリプトが自動的に「右側が20(数字)だから、この変数は number 型だな!」と判断してくれます(これを型推論といいます)。そのため、最初のうちは型を省略して書いても問題なく動きます。

Q. じゃあ、なんでわざわざ型を書くの?
型をはっきり書いておく(型指定する)最大のメリットは、「未来の自分やチームのうっかりミスを、エディタがその場で怒ってくれるから」です。

もし、let age: number = 20; と書いたあとに、間違えて age = "二十歳"; のように文字を入れようとすると、実行する前にエディタが「数値の箱に文字を入れないでください!」と赤い波線でエラーを出して教えてくれます。VBAだと実行してエラーになるまで気づきにくいバグを、書いたその瞬間に防いでくれるのが型を宣言する強みなんですよ!


PR

【Officeスクリプト入門】値を変えたくない時に使う!「定数(const)」の宣言方法をマスターしよう

前回はデータの入れ物である「変数(let)」について解説しましたが、今回はもう一つの重要な入れ物「定数(ていすう)」について解説します!

プログラムを書いていると、「途中で中身を絶対に変えたくない(変えられては困る)値处理」が出てきます。そんな時に使うのが定数です。基本的な書き方と、変数との違いをスッキリ整理しましょう。

0. 文法:定数の宣言には「const」を使う

Officeスクリプトで定数を作る(宣言する)ときは、const というキーワードを使い、その後ろに「定数名」を書きます。

変数(let)は後から中身を別の値に入れ替えることができますが、定数(const)は「最初に決めた値を後から絶対に変更できない」という強力なルールを持っています。

1. 実践サンプル

それでは、エディタに以下のコードを貼り付けて動かしてみましょう。円周率のように「世界中で決まっている変わらない値」を定数として宣言し、画面に出力するコードです。

function main(workbook: ExcelScript.Workbook) {
  // 定数 PI を宣言して、初期値 3.14 を代入する
  const PI = 3.14;
  
  // コンソールに定数の値を出力する
  console.log("円周率:" + PI);
}

2. 実行結果

スクリプトエディタの右上にある実行ボタン(よこむきさんかく ▶)を押すと、画面下部の「出力」タブに以下のように表示されます。

  円周率:3.14

ワンポイント・アドバイス

なぜわざわざ「const(定数)」を使うの?
「中身を変えられる let だけ使っていれば、大は小を兼ねるから良いのでは?」と思うかもしれません。しかし、あえて const を使うのにはプログラミングにおいて非常に重要な理由があります。

  1. うっかりミス(バグ)を防げる
    もし const PI = 3.14; と書いた後に、コードの別の場所で間違えて PI = 5.55; のように値を上書きしようとすると、Officeスクリプトが「定数だから変更できません!」と実行前にエラーで教えてくれます。これにより、計算ロジックが途中で狂ってしまうバグを未然に防ぐことができます。
  2. コードが読みやすくなる
    他の人(あるいは数ヶ月後の自分)がコードを見たときに、const で書かれているだけで「あ、この値は最初から最後まで変わらない決まり文句なんだな」と一目で理解できます。

現代のプログラミング(OfficeスクリプトのベースであるTypeScriptなど)では、「基本はまず const を使い、後から値を書き換える必要がある時だけ let を使う」というのが、綺麗で安全なコードを書くための鉄則(ベストプラクティス)とされています。ぜひこの意識を持って使い分けてみてくださいね!


【VBAスタンダード対策】Exit For 脱出時の「カウンタ変数」の値を構造的に見抜く!

ループ処理を途中で強制終了する Exit For。しかし、途中で脱出した瞬間、ループの回数を数えていた「カウンタ変数」の中身がいくつになっているか、正確に把握できていますか? 試験で狙われる変数の内部構造を解き明かします。

1. 問題:Exit For を実行した直後の変数の中身

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

Sub LoopTest()
    Dim i As Integer

    For i = 1 To 10
        If i = 5 Then
            Exit For
        End If
    Next i

    MsgBox i
End Sub

① 4
② 5
③ 6
④ 11

2. 正解:ループ脱出時の変数状態に関する正解

正解: ② 5

3. 解説:途中で抜けた時と、最後まで回った時の「違い」

Forループにおけるカウンタ変数 i の値は、「どこで処理が中断されたか」によって、その後の構造的な値が全く異なります。

[ Forループ内のタイムライン構造 ]

・i = 1, 2, 3, 4 ── 順調に処理
・i = 5 になった!
  │
  ├── If i = 5 Then が成立
  └── Exit For が実行される

★ 途中で脱出した場合(今回)
Exit For は、Next i(値を+1する処理)に到達する前に、ループの外へジャンプする構造です。そのため、変数 i5 のまま保持されます。

★ 比較:もし途中で抜けずに「完走」した場合
10回目(i=10)の処理が終わり、Next i を通ることで iは 11 に増えます。そこで初めて「10を超えたから終了」と判定されるため、完走時の最終値は 11 になる構造を持っています。

1. ここが試験に出る!: スタンダード試験では、「Exit Forで抜けた時はその時点の値(5)」になり、「最後まで完ソウした時は上限+ステップ値(11)」になるという、カウンタ変数の最終的な数値の違いを確実に突いてきます。メッセージボックスがどこで実行されているかを落ち着いて読み解きましょう。
2. エンジニアの視点: Java 17などの `for (int i=1; i<=10; i++)` 内で `break;` する構造と同じですが、VBAの `Next` は「値を増やして判定に戻る」という明確なステップ構造を意識しやすいのが特徴です。実務において、ループを抜けた後に「データが見つかって途中で抜けた(i<=10)」のか、「最後まで見つからなかった(i=11)」のかを判定するスマートな理系NEO設計によく使われます。


4. まとめ

「Exit ForはNextを通らないから、その時の値のまま」。このループ構造の仕組みを理解しておけば、条件に合致したデータが何番目に見つかったかを正確に捉えることができます。変数の変化を頭の中でシミュレーションして、完璧なアルゴリズムを構築しましょう。


【生物学問題】脳の情報リレー!「シナプス伝達」を攻略

脳内の電気シグナルは、神経細胞の隙間をそのまま飛び越えることはできません。そこで活躍する「化学物質を使った通信の仕組み」を整理しましょう。

1. 問題:神経細胞間の情報伝達

【 問題 】 神経細胞(ニューロン)同士の接合部において、電気信号が到達した際に神経伝達物質が放出され、それが次の細胞に受け取られることで信号が伝わる一連の現象を何と呼ぶでしょうか?

① 活動電位   ② シナプス伝達   ③ 跳躍伝達   ④ 膜電位固定

2. 正解:神経シグナルに関する正解

正解: ② シナプス伝達

3. 解説:電気と化学のハイブリッドシステム

1つの神経細胞の中は「電気信号(活動電位)」で素早く伝わりますが、細胞と細胞の間の隙間(シナプス間隙)は「化学物質(神経伝達物質)」に変換されてバトンが渡されます。

[ シナプス伝達の流れ ]
1. 到達:電気信号が神経末端(シナプス前細胞)に届きます。
2. 放出:シナプス小胞から「神経伝達物質(グルタミン酸やGABAなど)」が隙間に放出されます。
3. 結合:次の細胞(シナプス後細胞)の受容体に物質が結合します。
4. 再起動:次の細胞に再び電気信号が発生し、情報が先へ進みます。

1. 試験のポイント: 神経細胞の結合部を「シナプス」、そこで情報が伝わる現象を「シナプス伝達」と呼びます。混同しやすい「跳躍伝達」は、軸索の髄鞘(マイエリン鞘)を電気信号がジャンプして高速移動する現象のことなので、区別しておきましょう。
2. バイオインフォの視点: AIの「ディープラーニング(深層学習)」の数理モデルは、このシナプス伝達の仕組み(入力の合計値がある閾値を超えると次のノードへ信号が伝わる)を模して作られました。生体内のリアルな脳をコンピュータ上に再現する「計算神経科学(Computational Neuroscience)」では、膨大な数のシナプス結合の強度がどう変化するかを微分方程式などを用いてシミュレーションしています。


4. まとめ

「ニューロン間の隙間を神経伝達物質で満たして信号を渡す=シナプス伝達」です。この物質のやり取りの効率が変化することが、私たちの脳の「記憶」や「学習」の正体でもあります。電気から化学物質へ、そしてまた電気へと切り替わる見事なリレーシステムですね!



【Officeスクリプト】VBAやGASとは何が違う?メリットと賢い使い分けを徹底比較!

Excelの業務効率化といえば「VBA(マクロ)」がおなじみですが、最近Excelの画面に「自動化」タブという新しいボタンが登場したのをご存知でしょうか?

これは「Officeスクリプト」という、Microsoftが提供する次世代の自動化機能です。「これまでのVBAと何が違うの?」「GoogleスプレッドシートのGASと同じなの?」という疑問を、メリットや比較と合わせて分かりやすく解説します!

0. 結論:VBAとOfficeスクリプトの違い

まずは、VBAとOfficeスクリプトの主な違いを一覧表で見てみましょう。

比較項目従来のExcel VBA新しいOfficeスクリプト
プログラミング言語 VBA(Visual Basic for Applications) TypeScript(JavaScriptベース)
動く場所(環境) パソコン(デスクトップ版Excelのみ) クラウド & パソコン(Web版・スマホ版・デスクトップ版)
ファイルの形式 マクロ有効ブック(.xlsmなど)が必要 通常のブック(.xlsx)のままでOK(※スクリプトはクラウドに保存)
他のアプリとの連携 PC内の操作や外部ファイル連携が得意 TeamsやOutlook、Power Automate等との連携が超得意

1. ちなみに、Googleスプレッドシートの「GAS」とは同じもの?

Googleスプレッドシートを自動化する「Google Apps Script(GAS)」を知っている方なら、「OfficeスクリプトとGASって考え方は同じなの?」と思うかもしれません。

結論から言うと、根本的な考え方や仕組みは「ほぼ同じ」です!

  • 兄弟のような関係のプログラミング言語
    GASは「JavaScript」、OfficeスクリプトはJavaScriptを発展させた「TypeScript」という言語を使います。基本的な文法(for文によるループやif文による条件分岐など)は全く同じなので、片方を覚えればもう片方もすぐに理解できます。
  • クラウドで動くマクロという共通点
    どちらもプログラムコードはパソコン内ではなくクラウド上に保存され、サーバー側で実行されます。そのため、ファイルを開いていなくても外部から自動実行できる仕組み(OfficeスクリプトならPower Automate、GASならトリガー設定)を持っている点もそっくりです。

まさに、「GoogleのGASに対抗して、Microsoftが満を持して作ったExcel版のGAS」がOfficeスクリプトだとイメージすると非常に分かりやすいです!

2. Officeスクリプトの「3つの大きなメリット」

VBAと比べたとき、Officeスクリプトには実務をガラリと変える強力なメリットが3つあります。

① クラウド(Web版Excel)やスマホでも動く!

VBAはパソコンにインストールされたExcelでしか動きませんでしたが、OfficeスクリプトはWebブラウザ上で開く「Web版Excel」でも、スマホのExcelアプリでも実行できます。Mac環境でもWindowsと全く同じように動作するのも嬉しいポイントです。

② ファイルの拡張子を「.xlsm」に変えなくていい!

VBAを使う時は、ファイルを「マクロ有効ブック(.xlsm)」という特殊な形式で保存する必要があり、セキュリティの観点から社内で嫌がられることもありました。Officeスクリプトは、プログラムコードがファイルの中ではなく「使う人のクラウド(OneDrive等)」に保存されるため、通常の「.xlsx」ファイルのままで自動化が可能です。

③ Power Automateと連携して「全自動化」ができる!

これが最大の強みです。Microsoftの自動化ツール「Power Automate」と組み合わせることで、「毎日朝9時に、指定のExcelのスクリプトを実行してデータを集計し、結果をTeamsやOutlookで自動送信する」といった、Excelを開くことすらしない完全自動化が簡単に作れます。

3. 実務での賢い使い分けルート

「じゃあ、全部Officeスクリプトにすればいいの?」というと、実はそうではありません。それぞれの「得意分野」に合わせて、以下のように使い分けるのがベストです。

  • Officeスクリプトが向いているケース
    ・Web版のExcel(Teams上のExcelなど)で共同編集しながらマクロを動かしたい時
    ・定期的な集計をPower Automateで夜間に勝手に終わらせたい時
    ・セキュリティの関係でマクロ有効ブック(.xlsm)が使えない職場環境の時
  • VBAが向いているケース
    ・「パソコン内の特定のフォルダにある複数のファイルを読み込む」ようなローカルPC内の操作をしたい時
    ・ユーザーフォーム(オリジナルの入力画面)をカチッと作り込みたい時
    ・長年蓄積された社内の巨大なVBA資産をそのまま活かしたい時

ワンポイント・アドバイス

これから学ぶならどっち?
もしあなたが「これからプログラミングを学んで、クラウド時代の自動化をマスターしたい!」と考えているなら、Officeスクリプトが断然おすすめです。
OfficeスクリプトのベースであるTypeScript(JavaScript)は、Web開発の世界で世界中の一流エンジニアが使っている超メジャーな言語。ここで身につけた文法や知識は、Excelの中だけでなく、GASを使ったGoogleアプリの自動化、さらにはWebアプリ開発など、他の幅広いITスキルにそのまま直結します。
歴史あるVBAの強みを活かしつつ、新しいOfficeスクリプトの武器を手に入れて、一歩先の自動化スキルを目指してみませんか?