こんにちは、GMOインターネット株式会社の斉藤です。
本エントリーでは、Goを書くときに便利な”err”という文字列をハイライトする方法について紹介します。
目次
はじめに
僕は普段EmacsでGoを書いているのですが、最近他の言語を書くときはVisual Studio Code(以下VS Code)を利用することが増えてきています。Emacsは最近は老害などと言われがちではありますが、長く使っていてカスタマイズも完全に馴染んでいるのでなかなか乗り換えが難しいんですよね。
そんなEmacsでGoを書くときに私が便利に使っている設定が、”err”という文字列をハイライトするというものです。
go-modeでerrをハイライトしておくと捗る – Qiita
もともとは下記のブログを参考にしたものです。
“err”という文字列をHighlightしておくとGolangのコードリーディングが捗る
Goは例外などの機構が存在せず、エラーはerrやerrをプレフィックスとした名前の変数で受けて処理するのが慣例となっています。そして、以下のようなコードブロックが頻繁に登場します。
if err != nil {
return err
}なのでerrをハイライトしておくとエラーの箇所が明確になりコードリーディングが便利になるんですね。私はこれを入れないとよくエラーを見落とすので、生産性に直結する大事な設定だったりします。
VS Codeのシンタックスハイライト
この設定、残念ながらVS Codeでは設定できません。VS Code正規表現などを使ったコードハイライトをする仕組みを持たないからです。ただVS Codeは拡張機能を簡単に作れるので、それを利用して自前で作りました。
Go err highlighting – Visual Studio Marketplace
https://marketplace.visualstudio.com/items?itemName=hiro.go-err-highlighting。

これを使うと上の画像のようになります。いかにも見やすそうでしょう。VS CodeでGoを書いている方はぜひ使ってみてください。
自分で拡張機能を作る
さて以下はVS Codeのシンタックスハイライトをカスタマイズしたい人向けの情報です。
Language Extensions Overview
https://code.visualstudio.com/api/language-extensions/overview
VS Codeのシンタックスハイライトは、実際にはLanguage Extensionと言う名前の拡張機能の一種として実現されています。これにはシンタックスハイライト以外にもインテリセンスによる補完、括弧の対応、コメントの扱いなどが含まれています。
このLanguage Extensionは予約語の管理もしていて、VS Codeがそれに応じて色を付けるようになっています。たとえばifやforなどですね。逆に言うと予約されていない語に色づけするのは無理です。今回の”err”はGoのLanguage Extensionでは予約されていないので、自前で拡張を作る必要があります。
今回は追加したいキーワードがerrでしたので、既存のGoのLanguage Extensionに設定をInjectionするアプローチを取ります。これはオフィシャルガイドにやり方が書いてあります。
Injection grammars
https://code.visualstudio.com/api/language-extensions/syntax-highlight-guide#injection-grammars
実際の手順は、まずガイドにあるとおり拡張機能のスケルトンを作成します。
Your First Extension | Visual Studio Code Extension API
https://code.visualstudio.com/api/get-started/your-first-extension
あとはInjection grammarsにあるとおりにハイライトしたい設定を書くだけです。Go err highlightingの場合は以下になります。
vscode-go-err-highlight/injection.json at main · hironobu-s/vscode-go-err-highlight
https://github.com/hironobu-s/vscode-go-err-highlight/blob/main/syntaxes/injection.json
おわりに
ちょうどMTGが延期になったりタスクが延期になったりで業務時間の空きができ、これはブログネタにもなりそうだと言うことでエイヤで一気に作り上げてしまいました。
ともかく、これでGoを書くのにもVS Codeを使っていくことができます。EmacsはCUI環境でも使えるのでまだまだ捨てることありませんが、しばらくはVS Codeも併用で開発を進めていくことになりそうです。
それではまた次回お目にかかりましょう。
ブログの著者欄
採用情報
関連記事
KEYWORD
CATEGORY
-
技術情報(601)
-
イベント(239)
-
カルチャー(60)
-
デザイン(75)
TAG
- 5G
- AI
- AI TALK
- AI 機械学習強化学習
- AI/機械学習
- AIエージェント
- AIコーディング
- AI人財
- AI駆動
- Behind the Scenes
- BIT VALLEY
- blockchain
- ChatGPT
- ChatGPT Team
- Claude Team
- cloudflare
- cloudnative
- CNDO
- CNDT
- CODE BLUE
- ConoHa
- ConoHa VPS
- CSS
- CTF
- Designship
- developer
- DevRel
- DevSecOpsThon
- Docker
- DTF
- Engineering Journey
- expert
- EXPERT CROSS
- GMO AI&ロボティクス商事
- GMO AIR
- GMO DESIGN AWARD
- GMO Developers Day
- GMO Developers Night
- GMO Flatt Security
- GMO GPUクラウド
- GMO Hacking Night
- GMO kitaQ
- GMO SONIC
- GMOアドパートナーズ
- GMOアドマーケティング
- GMOインターネット
- GMOインターネットグループ
- GMOインターネットグループ陸上部
- GMOグローバルサイン
- GMOコネクト
- GMOサイバーセキュリティ byイエラエ
- GMOデジキッズ
- GMOブランドセキュリティ
- GMOペイメントゲートウェイ
- GMOペパボ
- GMOメイクショップ
- GMOメディア
- GMOロボッツ
- GMO大会議
- GMO天秤AI
- Go
- GPUクラウド
- GTB
- Hack-1グランプリ
- IETF
- iOS
- IoT
- ISUCON
- Japan Drone
- JapanDrone
- Java
- JJUG
- JSAI2026
- K8s
- Kaigi on Rails
- Kids VALLEY
- LLM
- MCP
- MetaMask
- MySQL
- NFT
- OpenStack
- Perl
- PHP
- PHPcon
- PHPerKaigi
- Python
- RFC
- RPA
- Ruby
- SECCON
- Selenium
- Spectrum Tokyo Meetup
- splunk
- SRE
- Takumi byGMO
- Terraform
- TypeScript
- UI/UX
- vibe
- VLA
- VPN
- VS Code
- XSS
- ZTNA
- アドベントカレンダー
- イベントレポート
- インターンシップ
- インハウス
- お名前.com
- クリエイターインタビュー
- クリエイティブ
- コンテナ
- コンピュータビジョン
- サイバーセキュリティ
- サマーインターン
- スクラム
- スパム対策
- スペシャリスト
- セキュリティ
- ソフトウェアサプライチェーン
- チームビルディング
- デザイン
- ネットのセキュリティもGMO
- ハーネスエンジニアリング
- バックエンド
- ヒューマノイド
- ヒューマノイドロボット
- フィジカルAI
- プログラミング教育
- ブロックチェーン
- フロントエンド
- ペアリング暗号
- ゆめみらいワーク
- リモートワーク
- レンタルサーバー
- ロボット
- ロボティクス
- 京大ミートアップ
- 京都大学
- 人型ロボット
- 人工知能
- 人工知能学会
- 国際ロボット展
- 国際標準化
- 基礎
- 多拠点開発
- 大阪公立大学
- 宮崎オフィス
- 強化学習
- 応用
- 技育プロジェクト
- 技術広報
- 技術書典
- 拡張知能
- 新卒
- 新卒研修
- 映像
- 映像クリエイター
- 暗号
- 業務効率化
- 機械学習
- 決済
- 生成AI
- 産学連携
- 研究開発
- 耐量子暗号
- 脆弱性診断
- 開発者
PICKUP
-
【後編】受賞作品はこうして生まれた—GMO DESIGN AWARD 2025受賞者が語る、アイデアと制作の裏側
デザイン
-
【前編】受賞作品はこうして生まれた—GMO DESIGN AWARD 2025受賞者が語る、アイデアと制作の裏側
デザイン
-
【後編】「ショップ様のためになる」が判断の軸―インハウスデザイナーの役割と「売れるデザイン」
デザイン
-
【前編】決済画面のリニューアルでCVR35%→50%に改善 「最短ワンステップ」を実現したUI設計の舞台裏
デザイン
-
【Expert cross #3・後編】組織と業界を動かすエキスパートへ GMOサイバーセキュリティ byイエラエ・三村聡志が描く、「安全なロボット」を実現する世界
技術情報
-
【Expert Cross #3・前編】ソフト・ハードの両面から「話せる」エンジニアの流儀 GMOサイバーセキュリティ byイエラエ・三村聡志が語る、「伝えることで世界を良くする」エキスパートの在り方
技術情報