**Go Fix を使ってコードをモダナイズする手順**

1. **go‑fix のインストール**  
   ```bash
   go install golang.org/x/tools/cmd/goimports@latest
   ```

2. **プロジェクトディレクトリへ移動**  
   ```bash
   cd /path/to/your/project
   ```

3. **古い構文を自動変換**  
   * 例:`gofmt -w .` でフォーマット。  
   * `goimports -w .` でインポート整理とフォーマット。

4. **非推奨 API の置き換え**  
   * `golang.org/x/tools/go/analysis/passes/...` を利用して自動修正。  
   * 必要に応じて `go vet -fix ./...` で警告を修正。

5. **テスト実行**  
   ```bash
   go test ./...
   ```

6. **CI/CD に組み込む**  
   * GitHub Actions 等で `go fmt`, `goimports`, `golangci-lint run --fix` を走らせる。  

これでコードは最新の Go スタイルに合わせて自動的に整形・修正されます。

2026/02/18 1:42

**Go Fix を使ってコードをモダナイズする手順** 1. **go‑fix のインストール** ```bash go install golang.org/x/tools/cmd/goimports@latest ``` 2. **プロジェクトディレクトリへ移動** ```bash cd /path/to/your/project ``` 3. **古い構文を自動変換** * 例:`gofmt -w .` でフォーマット。 * `goimports -w .` でインポート整理とフォーマット。 4. **非推奨 API の置き換え** * `golang.org/x/tools/go/analysis/passes/...` を利用して自動修正。 * 必要に応じて `go vet -fix ./...` で警告を修正。 5. **テスト実行** ```bash go test ./... ``` 6. **CI/CD に組み込む** * GitHub Actions 等で `go fmt`, `goimports`, `golangci-lint run --fix` を走らせる。 これでコードは最新の Go スタイルに合わせて自動的に整形・修正されます。

RSS: https://news.ycombinator.com/rss

要約

日本語訳

Go 1.26 では、組み込みの「フィッカー」解析器を適用してコードを自動的にモダナイズする新しい analyzer‑based

go fix
サブコマンドが導入されました。
このコマンドはパッケージパターンを受け取り、生成ファイルを除くソースファイルを書き換え、
-diff
フラグで変更内容をプレビューできます。ユーザーは
-any
-forvar=false
などのフラグを使用して特定の解析器を対象または除外でき、異なる
GOOS/GOARCH
の値でツールを複数回実行することですべての場合に対応できます。
組み込み解析器には次のようなものがあります:
any
buildtag
fmtappendf
forvar
(冗長な range‑loop 変数シェーディングを削除し、
-forvar
で有効化)、
hostport
inline
mapsloop
minmax
、および
newexpr
のように
newInt
などのヘルパー関数を新しい Go 1.26 構文(
new(10)
)で置き換えるものがあります。
モダナイザーとしては
minmax
rangeint
stringscut
が古い慣用句を新しい標準ライブラリ呼び出しに置き換え、連鎖的な修正が一般的です:1 つのモダナイズ処理を適用すると別の処理(例:
minmax
の後に
min
)が可能になる場合があります。
go fix
を繰り返し実行すると通常は固定点に到達します。
内部では、
go fix
は独立した修正を適用するために 3‑way マージアルゴリズムを使用します;競合は警告付きで破棄され、最終パスで未使用のインポートが削除されます。セマンティックな競合(未使用変数など)は手動レビューを必要とする場合があります。
基盤となる解析フレームワークは解析ロジックをドライバーから分離し、
go vet
gopls
staticcheck
などのツールで再利用できるようにします。ファクトを介したインタープログラム解析と増分ビルドをサポートし、最近のインフラ改善(例:
inspector.Cursor
を使った効率的な構文木ナビゲーション、シンボル参照インデックス化、Go バージョン認識)から恩恵を受けます。
今後は 2026 年の「セルフサービス」モデルで、開発者が自分自身のモダナイザーやチェッカーを作成し、中央承認なしに適用できるようになります。初期段階ではアノテーション駆動型のソースレベルインライン化とプロジェクト固有解析器の動的ロードが含まれます。

読者への主なポイント:

  • go fix
    はモジュラーでフラグ制御された解析器セットを使用してコードモダナイズを自動化します。
  • 連鎖修正と堅牢な競合処理をサポートします。
  • フレームワーク設計は Go エコシステム全体での再利用を促進します。
  • 将来のツールは開発者がカスタムモダナイザーを作成できるようにします。

本文

Go 1.26 のリリースでは、

go fix
サブコマンドが完全に書き直されました。
go fix
は、コードを改善する機会を検出するための一連のアルゴリズムを用いており、しばしば言語やライブラリのよりモダンな機能を活用して修正します。


go fix
の実行

go build
go vet
と同様に、
go fix
はパッケージを示すパターンセットを受け取ります。

# 現在のディレクトリ以下の全てのパッケージを修正する
$ go fix ./...

成功するとソースファイルが静かに更新されます。
生成されたファイルに触れる修正は破棄され、適切な修正は生成器自体のロジックで行うべきです。

ヒント – ビルドツールチェーンを新しい Go バージョンへアップデートするたびに

go fix
を実行してください。
コマンドが数百ファイルに触れることもあるため、Git のクリーンな状態から開始し、変更が
go fix
だけの編集で構成されるようにするとコードレビュアーも喜びます。

変更内容をプレビュー

$ go fix -diff ./...
--- dir/file.go (old)
+++ dir/file.go (new)
-                       eq := strings.IndexByte(pair, '=')
-                       result[pair[:eq]] = pair[1+eq:]
+                       before, after, _ := strings.Cut(pair, "=")
+                       result[before] = after
…

利用可能なフィクサーを一覧表示

$ go tool fix help
…
Registered analyzers:
    any          replace interface{} with any
    buildtag     check //go:build and // +build directives
    fmtappendf   replace []byte(fmt.Sprintf) with fmt.Appendf
    forvar       remove redundant re‑declaration of loop variables
    hostport     check format of addresses passed to net.Dial
    inline       apply fixes based on 'go:fix inline' comment directives
    mapsloop     replace explicit loops over maps with calls to maps package
    minmax       replace if/else statements with calls to min or max
…

特定のアナライザー名を指定すると、完全なドキュメントが表示されます。

$ go tool fix help forvar

forvar: remove redundant re‑declaration of loop variables

The forvar analyzer removes unnecessary shadowing of loop variables.
Before Go 1.22, it was common to write `for _, x := range s { x := x ... }`
to create a fresh variable for each iteration. Go 1.22 changed the semantics
of `for` loops, making this pattern redundant. This analyzer removes the
unnecessary `x := x` statement.

This fix only applies to `range` loops.

特定のアナライザーを有効化

デフォルトでは

go fix
は全てのアナライザーを実行します。
1 つだけを走らせたい場合はフラグで指定します。

$ go fix -any ./...

逆に除外したい場合はフラグを否定します。

$ go fix -any=false ./...

CPU やプラットフォームごとにタグ付けされたファイルがあるプロジェクトでは、

GOARCH
/
GOOS
を変えて複数回実行するとより多くのケースをカバーできます。

$ GOOS=linux   GOARCH=amd64 go fix ./...
$ GOOS=darwin  GOARCH=arm64 go fix ./...
$ GOOS=windows GOARCH=amd64 go fix ./...

複数回実行するとシナジー効果が得られることがあります(以下参照)。


モダニゼーション

Generics(Go 1.18)以降の言語・ライブラリ更新により、多くの単純なループや条件分岐が不要になりました。
モダニゼーターは次のような変換を行います。

変更前変更後
go<br>x := f()<br>if x < 0 {<br>    x = 0<br>}<br>if x > 100 {<br>    x = 100<br>}
go<br>x := min(max(f(), 0), 100)
go<br>for i := 0; i < n; i++ {<br>    f()<br>}
go<br>for range n {<br>    f()<br>}
go<br>i := strings.Index(s, ":")<br>if i >= 0 {<br>     return s[:i]<br>}
go<br>before, _, ok := strings.Cut(s, ":")<br>if ok {<br>    return before<br>}

これらのモダニゼーションは

gopls
(即時フィードバック)と
go fix
(一括更新)の両方で利用できます。

例:Go 1.26 の
new(expr)
機能

Go 1.26 では

new
が任意の値を受け取り、その値で初期化された変数を生成します。

ptr := new("go1.26")

newexpr
フィクサーは
newInt
のようなヘルパー関数を直接
new(expr)
呼び出しに置き換えます。
ソースツリーで実行してください。

$ go fix -newexpr ./...

その後、未使用のヘルパー関数は安全に削除できます。


シナジー効果

1 つのモダニゼーションを適用すると、別のモダニゼーションが可能になる場合があります。
例えば

minmax
の修正後に再度走らせると、更なる簡略化が実行されます。
アナライザー間でもシナジーが発生します(例:文字列連結ループは
stringsbuilder
モダニゼーションを呼び出し、さらに
fmt.Fprintf
の最適化へつながります)。

ヒント

go fix
を 2 回走らせるだけでほぼ固定点に到達します。


フィクスの統合と衝突処理

各実行で

go fix
は複数の独立した編集を適用し、概念上は Git コミットの連続として扱われます。
3‑way マージアルゴリズムがそれらを調整し、衝突する変更は警告付きで破棄されます。

  • 構文的衝突 は重複編集によって自動検出されます。
  • 意味的衝突(例:変数を削除して未使用になる)は実行後にコンパイルエラーとして表れます。

ツールは最終段階で未使用インポートの自動削除も行います。


Go の分析フレームワーク

go vet
go fix
は共通の基盤を共有しています。

ドライバー目的
unitchecker
インクリメンタルビルドシステムでアナライザーを実行(
go fix
/
go vet
の根幹)。
nogo
Bazel、Blaze 等の代替ビルドシステム用。
singlechecker
単一アナライザーのテストや実験向け。
multichecker
複数アナライザーをまとめて CLI で走らせるため。
gopls
言語サーバーとして診断情報を提供。
Staticcheck のドライバー大規模なアナライザースイート。
TricorderGoogle 内部のモノレポパイプラインで使用。

アナライザーは ファクト をシンボルに添付でき、プロシージャ間解析(例:

log.Printf
のラッパー検出)が可能です。
フレームワークは以下もサポートしています。

  • 効率的な構文木トラバース(
    inspector
    とカーソル)。
  • シンボル参照の事前インデックス化により高速呼び出し列挙。
  • 標準ライブラリの依存グラフを利用した循環 import の回避。
  • go.mod
    やビルドタグから有効な Go バージョンを照会。

今後の展望:自律型分析

新しいパラダイムにより、開発者は自身の API 用モダニゼーターを定義し、中央承認なしでユーザーが自動的に適用できるようになります。

  • 動的ロード – パッケージがチェッカー(例:SQL インジェクション検出)を提供し、
    gopls
    go fix
    で実行可能。
  • 汎化された制御フロー チェッカー – 「ファイル開封後は必ず閉じる」などのドメイン横断的な不変条件をコードにアノテーションし、検証できるように。

これらは急速に拡大する Go エコシステムでスケーラビリティと分析者貢献時のボトルネック軽減を目指します。


行動計画

プロジェクトで

go fix
を試してみてください。
遭遇した問題や、新しいモダニゼーター、フィクサー、チェッカー、自律型ツールのアイデアを共有してください。

Happy coding!

同じ日のほかのニュース

一覧に戻る →

2026/02/18 2:48

**Claude Sonnet 4.6**(クロード・ソネット 4.6)

## Japanese Translation: **Claude Sonnet 4.6** は Anthropic の最新かつ最も優れた Sonnet モデルで、現在すべての Claude プラン(Free と Pro)でデフォルトとなっています。価格は Sonnet 4.5 と同じままで、1 兆トークンあたり $3 / $15 です。このモデルは 1,000,000 トークンのコンテキストウィンドウ(ベータ版)、適応/拡張思考、コンテキスト圧縮、自動ウェブ検索フィルタリング、拡張ツール例、および Excel の MCP コネクタサポートを導入しています。 初期ユーザーは、Sonnet 4.5 に対してコードの正確性、一貫性、指示追従、全体的なパフォーマンスで大幅に優れていると報告しています。特に Opus 4.5 を約 70%(59%)上回る性能を発揮しています。OSWorld、Vending‑Bench Arena、OfficeQA、Financial Services Benchmark、保険ワークフローなどのベンチマークでは、複雑なスプレッドシートや多段階ウェブフォームでほぼ人間レベルの結果が得られ、Sonnet 4.6 は Opus 4.6 と同等またはそれに近い性能を示しつつ、コストも低く抑えられています。安全性評価では大きな不整合問題は確認されず、プロンプトインジェクション耐性は Opus 4.6 と同等です。 製品アップデートには、フロントエンド設計とコード修正の改善(例:楽天 AI 用の最高 iOS コード)や保険ベンチマークで 94% の精度率が含まれます。Claude Code、API、および主要クラウドプラットフォーム全体で拡張された可用性により、Sonnet 4.6 はスプレッドシート自動化、保険ワークフロー、複雑なウェブ操作などのタスクにおいて、コード精度の向上、安全な対話、および低い導入コストを提供し、多くの産業で生産性ツールを再構築する可能性があります。

2026/02/18 2:06

ありがとうございます、HNさん。おかげさまで約3万3千人もの命を救うことができました。

## Japanese Translation: ## Summary: Watsi.org は Show HN の立ち上げから始まり、Hacker News からの大量トラフィックに急速に引き寄せられ、寄付が急増し、世界中で手術ケアのために 2,000 万ドル以上を調達しました。このプラットフォームは、Hacker News の “pg” が Watsi を Y Combinator 最初の非営利団体として指摘したことで早期の信頼性を獲得し、創設者がユーザーと深く関わり、自らサイトをコーディングし、効率・透明性・継続的改善に注力するようになりました。消費財とは異なり、非営利団体は寄付への熱意曲線が弱く、ケア要請は爆発的に増加した一方で寄付額は線形にしか成長せず、バーンアウトと取締役会主導の持続可能な成長への転換を招きました。結果として Watsi の戦略は今や積極的拡大ではなく、安定した段階的スケーリングを重視し、長期的な実現可能性を目指しています。このモデルはテックコミュニティが非営利団体を持続可能に支援できる方法を示しており、将来の YC 非営利プロジェクトや広範なチャリティ・テック分野への影響力を持つ設計図となります。 ## Summary Skeleton **What the text is mainly trying to say (main message)** Watsi.org は Show HN で始まり、Hacker News のトラフィックにより急速に成長し、現在は手術のために 2,000 万ドル以上を調達した持続可能な非営利団体として運営されています。 **Evidence / reasoning (why this is said)** - Show HN を通じて立ち上げ → 大量トラフィックが発生。 - Hacker News の “pg” が最初の大きなチェックを行い、Watsi を YC 最初の非営利団体として認識。 - 創設者はユーザーと時間を共有し、自らコードを書き、効率・透明性・革新を優先。 **Related cases / background (context, past events, surrounding info)** - 非営利団体のプロダクト‑マーケットフィットは消費財とは異なり、寄付への熱意が弱い。 - 寄付額は線形に成長した一方でケア要請は爆発的に増加し、バーンアウトと取締役会による持続可能な成長への転換を招く。 **What may happen next (future developments / projections written in the text)** 戦略は急速な拡大ではなく、ゆっくりとした安定的で持続可能な軌道へシフトしており、継続的に段階的スケーリングと長期的実現性への焦点が期待される。 **What impacts this could have (users / companies / industry)** ユーザーは手術のための信頼できる資金調達を享受し、寄付者は資金の透明な使用を見ることができます。このモデルはテックコミュニティが非営利団体を持続可能に支援する方法を示しており、将来の YC 非営利プロジェクトや広範なチャリティ・テック分野への影響力を高める。

2026/02/18 4:24

**HN ストーリー:AsteroidOS 2.0 – みんなが聞かなくても、私たちはリリースしました**

## 日本語訳: **改訂概要** AsteroidOS 2.0は2026年2月17日にリリースされ、ファームウェアの機能セットとデバイスサポートを拡張し、将来の開発計画を概説しています。主要な新機能にはAlways‑on‑Displayモード、滑らかなUIアニメーション、電池寿命の向上、およびAndroid用に更新されたAsteroidOS Syncクライアントを動力付けるモジュラーBluetoothライブラリが含まれます。Gadgetbridge(v0.73.0)は同じライブラリをサポートし、Amazfish(SailfishOS/Linux)とTelescope(Ubuntu Touch)が同期エコシステムに追加されました。このリリースはウォッチの互換性を30デバイスに拡大し、Fossil Gen 4–6、Huawei Watch/Watch 2、LG Watch W7、Moto 360 2015、OPPO Watch、Polar M600、さまざまなTicwatchモデルをカバーします。また、Casio WSD‑F10/F20、LG Watch Urbane 2、Moto 360 1st gen、Samsung Gear 2/Liveの5つの実験的ウォッチが追加され、Sony Smartwatch 3は降格されました。 新しいUI改良にはランチャースタイルオプションとカスタマイズ可能なクイック設定が含まれます。コミュニティへの貢献も強調されており、Weblateを通じて20以上の言語に翻訳され、ウォッチフェイス作成ガイドが公開されました。また、moWerk、MagneFire、Dodoradio、Berosetなどの顕著な貢献者が認められています。インフラストラクチャーの更新には、FAQやウォッチギャラリーを備えた拡張ウェブサイト、MediaWikiへのドキュメント移行、公式サブレディットの立ち上げ、およびコミュニティ通信をMatrixとLibera.chatへシフトすることが含まれます。新しいコミュニティリポジトリは事前コンパイルされたパッケージ、ウォッチフェイス、ゲーム、およびエミュレーターをホストし、毎晩のリリースはより頻繁になりましたが、すべてのイメージを再構築するには約1週間かかります。 将来の計画には、統合フィットネスアプリ、設定経由でのWi‑Fiセットアップ、ウォッチフェイス作成とファームウェアフラッシュ用のWebベースツール、アプリストア、および1.0リリースサイクルから安定した頻繁なリリースを目指すクォーシー1.1ナイトリー型モデルへの移行が含まれます。ユーザーは公式ウェブサイトからAsteroidOS 2.0をダウンロードし、提供された手順でインストールし、GitHubのIssueやWeblate翻訳を通じて貢献するよう奨励されています

**Go Fix を使ってコードをモダナイズする手順** 1. **go‑fix のインストール** ```bash go install golang.org/x/tools/cmd/goimports@latest ``` 2. **プロジェクトディレクトリへ移動** ```bash cd /path/to/your/project ``` 3. **古い構文を自動変換** * 例:`gofmt -w .` でフォーマット。 * `goimports -w .` でインポート整理とフォーマット。 4. **非推奨 API の置き換え** * `golang.org/x/tools/go/analysis/passes/...` を利用して自動修正。 * 必要に応じて `go vet -fix ./...` で警告を修正。 5. **テスト実行** ```bash go test ./... ``` 6. **CI/CD に組み込む** * GitHub Actions 等で `go fmt`, `goimports`, `golangci-lint run --fix` を走らせる。 これでコードは最新の Go スタイルに合わせて自動的に整形・修正されます。 | そっか~ニュース