※当サイトの記事には、広告・プロモーションが含まれます。

VS CodeでPythonのコーディングのフォーマッターを利用するには拡張機能のインストールが必要

gigazine.net

WindowsではOSに何らかの異常が発生した時、青い背景にエラーメッセージが表示される「(死の)ブルースクリーン(Blue Screen of Death)」が画面に映し出されます。このブルースクリーンの生みの親は誰なのかについて、30年以上にわたってMicrosoftWindowsの開発に携わるエンジニアのレイモンド・チェン氏が公式ブログで解説しています。

Windowsで表示されるブルースクリーンの生みの親は誰なのか? - GIGAZINE

⇧ 何と言うか、誰が作ったとかよりも、「ブルースクリーン」が発生した際に、どういう対応をすれば良いかを整理して欲しいんよね...

ブルースクリーンの存在が一般的に知られるようになったのは、爆発的に普及したWindows 95から。Windows 9xはWindows NTよりもブルースクリーンが発生しやすく、以下のようなブルースクリーンをたびたび目にすることがありました。

Windowsで表示されるブルースクリーンの生みの親は誰なのか? - GIGAZINE

⇧ 発生しやすく、ってサラッと言ってるけど、要は欠陥品を出荷してるってことになると思うんだが...

Microsoft 側も、何が影響して「ブルースクリーン」が発生するのかよく分かっていないってことなんかね?

ちなみに、2024年7月19日の世界規模の「ブルースクリーン」の大規模障害について、

atmarkit.itmedia.co.jp

ファイルシステムフィルタードライバは一般的に、ファイルの作成や変更などファイル操作に関する通知を受信するために、マルウェア対策エージェントが使用している。

CrowdStrikeが引き起こした大規模障害の根本原因はメモリアクセス違反、Microsoftが確認:セキュリティ製品がカーネルドライバを使用する理由も解説 - @IT

これにより、ディスクに新しいファイル(ブラウザがダウンロードしたファイルなど)が保存されるたびに、セキュリティ製品がそれをスキャンするといったことが可能になる。

CrowdStrikeが引き起こした大規模障害の根本原因はメモリアクセス違反、Microsoftが確認:セキュリティ製品がカーネルドライバを使用する理由も解説 - @IT

⇧ という仕組みが、Windowsにあるらしく、

 ファイルシステムフィルタードライバAPIにより、システム上で名前付きパイプのアクティビティー(名前付きパイプの作成など)が発生したときに、ドライバは呼び出しを受けることができる。このドライバの一般的な機能は、CrowdStrikeが説明した情報と相関している。

CrowdStrikeが引き起こした大規模障害の根本原因はメモリアクセス違反、Microsoftが確認:セキュリティ製品がカーネルドライバを使用する理由も解説 - @IT

⇧ ファイルの作成などを検知して、ドライバーが呼び出されるようで、

 CrowdStrikeは、障害を引き起こしたチャネルファイルを「バージョン291」として特定しており、Microsoftはクラッシュダンプの分析により、このファイルが読み込まれていたことを確認している。

CrowdStrikeが引き起こした大規模障害の根本原因はメモリアクセス違反、Microsoftが確認:セキュリティ製品がカーネルドライバを使用する理由も解説 - @IT

 このファイルがクラッシュダンプにおけるアクセス違反とどのように関連しているかを把握するには、ツールを用いてドライバをデバッグする必要があるが、Microsoftは、その調査はブログ記事の目的から外れるとして、行っていない。

CrowdStrikeが引き起こした大規模障害の根本原因はメモリアクセス違反、Microsoftが確認:セキュリティ製品がカーネルドライバを使用する理由も解説 - @IT

⇧ CrowdStrikeの作成した処理で作成されたファイルが障害を誘発した要因では無いかということですが、一番肝心な部分は調査してないらしい...

え~っと...

上記の記事の記載だと、

  1. ブログで障害の原因の詳細についての調査内容を公開することを行っていない
  2. 障害の原因の詳細についての調査自体を行っていない

のどちらであるかががハッキリしないのだけど、もし、「2. 障害の原因の詳細についての調査自体を行っていない」だとしたら、企業倫理的にアウトな気が...

大企業だから、適当な対応でも許されるってことになるんですかね?

VS CodePythonのコーディングのフォーマッターを利用するには拡張機能のインストールが必要

Javaの開発でよく利用していた「Eclipse」という「統合開発環境IDE:Integrated Development Environment)」だと、デフォルトでフォーマッターが有効になっていたような気がするのだけど、残念ながら、「VS CodeVisual Studio Code)」では、開発の初めに「拡張機能」のインストールが必要らしい...

code.visualstudio.com

⇧ 何と言うか、「事前要件(prerequire)」とかって言葉を記載して、「拡張機能」のインストールが必須である旨を強調しておいてくれると助かるんだが...

というわけで、「Black Formatter」という「拡張機能」をインストール。

「.vscode/settings.json」ファイルに設定を追加しました。

■C:\Users\Toshinobu\Desktop\soft_work\python_work\fastapi\.vscode\settings.json

/**
 * VS Code(Visual Studio Code)の仕様で、
 *  ・「settings.json」
 *  ・「tasks.json」
 *  ・「launch.json」
 * の3つのJSONファイルには「コメントアウト」が利用できるらしい。
 * https://code.visualstudio.com/docs/languages/json#_json-with-comments
 */
// In addition to the default JSON mode following the JSON specification,
// VS Code also has a JSON with Comments (jsonc) mode.
// This mode is used for the VS Code configuration files such as
// ・settings.json,
// ・tasks.json,
// or
// ・launch.json.
// When in the JSON with Comments mode, you can use
// ・single line (//)
// as well as
// ・block comments (/* */)
// as used in JavaScript.
// The mode also accepts trailing commas, but they are discouraged and the editor will display a warning.
//
// The current editor mode is indicated in the editor's Status Bar.
// Select the mode indicator to change the mode and to configure how file extensions are associated to modes.
// You can also directly modify the files.associations setting to associate file names or file name patterns to jsonc.

{
  "python.analysis.extraPaths": [
    // "${workspaceFolder}"
    // ,"${workspaceFolder}/app"
    // ,"${workspaceFolder}/app/src"
    // ,"${workspaceFolder}/app/src/controller"
    // ,"${workspaceFolder}/app/src/entity"
    // ,"${workspaceFolder}/app/src/repository"
    // ,"${workspaceFolder}/app/src/service"
  ],
  // フォーマッターの設定
  "[python]": {
    "editor.defaultFormatter": "ms-python.black-formatter",
    //"editor.defaultFormatter": null,
    "editor.insertSpaces": true,
    "editor.tabSize": 2,
    "editor.formatOnSave": true
  },
  
  // 【Windowsの設定】VS Code(Visual Studio Code)上で、環境模様「PYTHONPATH」に追加
  "terminal.integrated.env.windows": {
    "PYTHONPATH": "${workspaceFolder};${workspaceFolder}/app"
  },
  // 【Linuxの設定】VS Code(Visual Studio Code)上で、環境模様「PYTHONPATH」に追加
  "terminal.integrated.env.linux": {
    "PYTHONPATH": "${workspaceFolder}:${workspaceFolder}/app"
  },
  // VS Code(Visual Studio Code)上で、.envファイルを認識させる
  "python.envFile": "${workspaceFolder}/.env",
  // VS Code(Visual Studio Code)上のExplorerで非表示にしたいファイル、フォルダ
  "files.exclude": {
    "**/*.pyc": { "when": "$(basename).py" },
    "**/__pycache__": true
  },
  // pytestの設定
  "python.testing.unittestEnabled": false,
  "python.testing.pytestEnabled": true,
  "python.testing.pytestArgs": [
    "--cov=.",
    "--cov-report",
    "xml",
    "--capture=no"
  ],
  "coverage-gutters.showGutterCoverage": false,
  "coverage-gutters.showLineCoverage": true
}

⇧ という感じ。

ちなみに、「フォーマッター」を効かせたい「.py」ファイルでエラーが出ている状態だと、「フォーマッター」してくれないので要注意です。

(インデントの崩れでエラーが出る場合とか、「フォーマッター」できないのを目にしてしまうと、「フォーマッター」の存在意味って何なんだろうって思ってしまうけど...)

VS CodeVisual Studio Code)」上の「Explorer」で、適当な「.py」ファイルを開いて、「.py」ファイル上で右クリックして、「Format Document」が表示されていれば、有効になっていると思われる。

ちなみに、

maku.blog

⇧ 上記サイト様によりますと、「VS CodeVisual Studio Code)」で「Black Formatter」を機能させる方法としては、2通りの方法があるようで、「.vscode/settings.json」の設定内容も変わってくるという罠がありますと。

「事前要件(prerequire)」でインストールが必要なものについては、公式のドキュメントで整理して欲しいのよね...

少なくとも、2パターンの導入方法があり、それぞれで必要なものが異なるって話は、公式のドキュメントで目立つようにしておいて欲しい...

VS CodeVisual Studio Code)」は、いつまで経っても「拡張機能」の導入が分かり辛いですな...

ちなみに、「拡張機能」不要で利用できる機能として、

1-notes.com

⇧ 上記サイト様が「VS CodeVisual Studio Code)」のショートカットキーをまとめてくださっていますが、

1-notes.com

Pythonのコーディングだと、複数行のインデントの追加・削除についてが利用頻度が高い気がしますかね。

毎度モヤモヤ感が半端ない…

今回はこのへんで。