拘らなければいいのだけど、 #WordPress だと、コードの入力で一段下げる場合、スペースではなくタブを使うように注意される。だから、 #Blogger にコードを載せる際もタブにした方が良いかなと思うのだけど、普通に入力するとタブが複数のスペースに変換されちゃう。見た目はそちらの方が綺麗なんだけど、コピー&ペーストする際にスペースをタブに変換しなくては行けなくて面倒。 #Gemini もタブではなくスペースを使うから、いつもタブに変換してから #WordPress で使ってる。
そんなわけで、#Blogger にコードを載せる際にタブにしようとして、スペースを削除してタブに変えたのに、保存したらスペースに戻されてしまった。以前はタブにできたのに、何が違うのか、覚えてない。
コメント
インデントをタブにするよう要求するWordPressが特殊なのかもしれない。
#Gemini に尋ねてみた。
私:Geminiにコードを作成してもらった時もインデントはスペースですね。どうしてタブにしないのですか?
G:Gemini(のような大規模言語モデル)が生成するコードのインデントがスペースになっているのは、いくつかの理由が考えられます。
1. コーディング規約と一貫性:
事実上の標準: 多くのプログラミング言語のスタイルガイド(PEP 8 for Python、Google Style Guidesなど)では、インデントにスペースを使用することを推奨しています。特にPythonでは、インデントが文法の一部であるため、一貫したスペースの使用が非常に重要です。
ツールの互換性: スペースによるインデントは、様々なテキストエディタ、IDE(統合開発環境)、バージョン管理システム(Gitなど)との互換性が高く、予期せぬ表示のずれやエラーを防ぎやすいという利点があります。
可読性の確保: スペースの数を固定することで、異なる環境でコードを見た場合でも、インデントの幅が一定になり、可読性を保ちやすくなります。タブ文字は、エディタの設定によって表示幅が変わる可能性があるため、一貫性が損なわれることがあります。
2. モデルの学習データ:
圧倒的な量のスペースインデント: Geminiは、インターネット上の膨大な量のコードを学習データとしています。そのデータセットの中で、スペースによるインデントが圧倒的に多く存在するため、学習の結果としてスペースを生成する傾向が強くなると考えられます。
学習データの偏り: タブを使用するコーディングスタイルも存在しますが、全体的な割合としてはスペースの方が多いため、モデルがスペースをより「標準的」なインデントとして学習している可能性があります。
3. 実装上の簡便さ:
単純な文字列生成: 言語モデルは、基本的にはテキスト(文字列)を生成するものです。スペースは単なる空白文字として扱いやすく、タブのような制御文字を特別に意識する必要がないため、実装が比較的容易であると考えられます。
4. 出力先の多様性:
様々な環境での利用: Geminiが生成するコードは、様々な環境(異なるOS、エディタ、Webページなど)で利用される可能性があります。スペースであれば、どのような環境でも比較的安定した表示が期待できます。
なぜタブの方が良いと考えるか?
前回のやり取りで触れましたが、タブには以下のような利点があります。
セマンティックな意味: タブは「インデント」という構造を示す明確な意図を持った文字です。
アクセシビリティ: スクリーンリーダーなどが構造を認識しやすい可能性があります。
ユーザーのカスタマイズ性: ユーザーはエディタの設定でタブの表示幅を自由に調整できます。
Geminiへの影響:
Geminiのような言語モデルは、ユーザーからのフィードバックや、より良いコーディング慣習に基づいて進化していく可能性があります。もし多くのユーザーがタブによるインデントを希望するのであれば、将来的にそのように生成されるようになる可能性も否定できません。
現状としては、様々な理由から、特に広く普及しているコーディング規約に沿って、スペースによるインデントを生成するようになっていると考えられます。
もし、Geminiが生成したコードをタブでインデントしたい場合は、ご自身のテキストエディタの機能(例えば、スペースをタブに置換する機能)を利用して変換する必要があります。
"インデントには “本物のタブ” を使うこと、“スペース” は駄目だそうです。"
WordPressでコーディング時の注意点 | work.log
https://worklog.be/archives/2112
"WordPressではインデントはタブを使い、見た目は半角スペース4個分になるようにします。"
コーディングスタイルガイド | WordPress The Right Way
https://www.wptherightway.org/japanese/code_style_guide
"Spaces may align code within documentation blocks or within a line, but only tabs should be used at the start of a line.*
*: The WordPress JavaScript standards prefer slightly broader whitespace rules than the jQuery style guide. These deviations are for consistency between the PHP and JavaScript files in the WordPress codebase.
"
JavaScript Coding Standards – Coding Standards Handbook | Developer.WordPress.org
https://developer.wordpress.org/coding-standards/wordpress-coding-standards/javascript/