2026年9月1日火曜日

EXCELの表をKaTeX形式に変換するマクロ

生成AI時代にプログラミング言語を学習する必要はあるのか?

最近では生成AIがプログラムを作成する時代になってきましたが、そんな時代にプログラミング言語を学習する必要はあるのでしょうか?

ということで早速 Google さんに聞いてみました。

生成AI時代にプログラミング言語を学習する必要はあるのか?

 答えは

生成AIがコードを自動生成する時代においても、プログラミング言語の学習は不要になるどころか、AIの出力を正しく理解して使いこなすために重要です。
  • コードを「読む力(読解力)」が不可欠になる
  • 適切な指示(プロンプト)を出すため
  • エラーやトラブルへの対応

 ということで学習の仕方も変わるようです。

  • 「書く」から「理解する・指示する」へ:
    文法を細かく暗記してゼロからコードを打ち込む作業はAIが担うため、全体像を組み立てるプログラミング的思考や構造の理解が重視されるようになっています。
  • 作りながら学ぶ:
    あらかじめ言語を完璧にマスターするのではなく、まずは作りたいものをAIと一緒に形にし、その過程で必要な知識を補うアプローチが効果的です。

とは言え巷にあふれるプログラミング言語の学習書ではやはり文法が優先しているように思います。確かに本としてまとめるには一番書きやすい形式ではないかと思います。

実際にPythonを教えている身としては、教えやすいので文法から入るという流れで教えているのが現状です。ただ、最近はデータ形式を中心に教えるようにして、文法はその流れの中で教えるという方向にしています。Pythonは静的型付け言語ではありませんが、プログラムを作成する上でやはりデータ型を考慮する場面が出てきます。

例えば、inputで入力したデータは数値変換しないと計算には使えない。

小学校でも2020年度から「プログラミング的思考」を教えるようになり、その後、順次中学校、高校へと進み2025年1月の大学共通テストからは科目「情報」が追加され、国公立大学を受験する際は、原則として「情報Ⅰ」の受験が必要となりました。
内容的にはプログラミングを全面に出すというよりも、情報に関する覚えておくべき知識が網羅されているように感じます。

そこで、最近始めたのですがnoteでPython初心者向けの記事を投稿し始めました。
システム開発のV字モデルをベースに、アルゴロジックというゲームを攻略するアプリの開発を行うというストーリーで話を進めています。
まずは、要求仕様から考えて、必要なプログラムの詳細仕様書を作成する流れで、その中でPythonの知識を学習していくという流れで進めています。

note(ノート)には表の挿入機能がない

noteはシンプルなデザインで簡単に文章や画像、音声などを誰でも簡単につくって公開できるメディアプラットフォームです。HTMLも一部使用できるものもありますがtableタグについては使用できないようです。

いろいろと調べるとKaTeX(カテフ)を使って数式や擬似的な表などを表示できるようになっています。ただ、KaTeXの表記方法は面倒なのでEXCELで表を作成してそれをKaTeX形式に変換してクリップボードへコピーするVBAを作成しました。

noteがシンプルなデザインを基本としているので表も単純でシンプルな形式のみを対象として、セルの連結や複雑な罫線なども対象外としています。
EXCELの表をKaTeX形式に変換してくれるサイト(Tables Generatorなど)もあるようですが、note専用の生成ツールとして生成AIに作ってもらいました。


'=== 文字列をクリップボードへコピー ===
Private Sub CopyToClipboard(ByVal s As String)
' DataObjectの作成(遅延バインディング)
    Set myData = CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
    
    ' クリップボードにテキストを設定
    myData.SetText s
    myData.PutInClipboard
    
    MsgBox "LaTeX形式の表をクリップボードにコピーしました。", vbInformation
End Sub

'=== Excel範囲 → KaTeX表変換 ===
Sub RangeToKaTeXtop()
    Dim rng As Range
    Dim r As Range, c As Range
    Dim latex As String
    Dim cols As Long
    Dim rowText As String
    
    Set rng = Selection
    cols = rng.Columns.Count
    
    latex = "$$" & vbCrLf
    latex = latex & "\newcommand{\arraystretch}{1.3} %" & vbCrLf
    latex = latex & "\begin{array}{" & WorksheetFunction.Rept("|l", cols) & "|}" & " \\\\[-1.4em]\hline" & vbCrLf
    
    For Each r In rng.Rows
        rowText = ""
        For Each c In r.Cells
        If c.HorizontalAlignment = xlCenter Then
            rowText = rowText & "\hspace{2px} "
        End If
        rowText = rowText & "\text{" & c.Value & "} & "
        Next c
        rowText = Left(rowText, Len(rowText) - 3)
        latex = latex & rowText & " \\\\" & " \hline"
        If r.Row = 1 Then
            latex = latex & " \\[-1.4em]\hline"
        End If
        latex = latex & vbCrLf
    Next r
    
    latex = latex & "\end{array}" & vbCrLf
    latex = latex & "$$"
    
    CopyToClipboard latex
    
End Sub

EXCELの表をKaTeX形式に変換するマクロ

生成AI時代にプログラミング言語を学習する必要はあるのか? 最近では生成AIがプログラムを作成する時代になってきましたが、そんな時代にプログラミング言語を学習する必要はあるのでしょうか? ということで早速 Google さんに聞いてみました。 生成AI時代にプログラミング言語を学...