# 🏆MVP
## Go言語の本気開発環境ととのう
今まで[[Go]]の開発環境は、標準の機能で最低限のことができる環境を[[Neovim]]で整えただけだった。[[Neovim]]で[[nvim-lspconfig]]と[[none-ls.nvim]]を使い、[[gopls]]、[[goimports]]、[[gofumpt]]を使っていただけだ。
しかし、仕事で本格的に[[Go]]のプロダクトを1からつくることになったので、有識者に相談した結果、[[golangci-lint]]を使っていくつかの[[リンター]]を入れた方がよさそうなことを知った。
<div class="link-card">
<div class="link-card-header">
<img src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/favicon-64.png" class="link-card-site-icon"/>
<span class="link-card-site-name">minerva.mamansoft.net</span>
</div>
<div class="link-card-body">
<div class="link-card-content">
<p class="link-card-title">📜2024-06-01 golangci-lintを使ってみる</p>
<p class="link-card-description">golangci-lintを使ってみる。目的はgo-exhaustructをNeovimで使うこと。</p>
</div>
<img src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/Notes/attachments/activity.webp" class="link-card-image" />
</div>
<a class="internal-link" data-href="Notes/📜2024-06-01 golangci-lintを使ってみる.md"></a>
</div>
%%[[📜2024-06-01 golangci-lintを使ってみる]]%%
今までは[[Go]]標準に従っているだけでよかったところ、サードバーティー製の[[リンター]]や[[フォーマッター]]を取り込むことになったので、それらの歴史や相互干渉性、[[Neovim]]で動かすための設定調整など、検討事項は多かった。これらの複雑さはまるでWebのそれに近かったが、インターフェースが[[golangci-lint]]やその[[LSP]]である[[golangci-lint-langserver]]に統一されているのは唯一の救いだったのかもしれない。
# ✨Highlights
- [[📜2024-06-01 golangci-lintを使ってみる]]
- [[Go]]の[[構造体]]初期化で[[ポインタ]]ではない[[フィールド (Go)|フィールド]]の初期化忘れが拾えない問題から、[[go-exhaustruct]]を教えてもらったついでに[[golangci-lint]]も教えてもらったのがキッカケ
- 調べてみたら、Webみたいにとても複雑だったけど、ちゃんと理解して使えばとても便利なことがわかった
- [[Neovim]]で動くように[[nvim-lspconfig]]や[[none-ls.nvim]]の設定も調整し、快適な開発ができるようになった
- 最終系は [[📕golangci-lintのマイ設定]]
# 🚀Releases
- [[🦉Fenice]]
- [Fenice v0.22.0リリース](https://github.com/tadashi-aikawa/fenice/releases/tag/v0.22.0)
- 禅times画面とスレッドのレイアウト変更
- [Fenice v0.22.1リリース](https://github.com/tadashi-aikawa/fenice/releases/tag/v0.22.1)
# 👑Page Ranking
| 位 | ノート | 閲覧数 | 前週 |
| ------- | ----------------------------------------------------------------------- | --- | --- |
| ↗️**1** | [[📘3ヶ月使ったHHKB StudioからHHKB Professional HYBRID Type-Sへ戻すことを本気で検討してみた]] | 82 | 2 |
| ↘️**2** | [[📝pip installするとexternally-managed-environmentエラーが出る]] | 67 | 1 |
| ️**3** | [[📘あまり紹介されていないけど かけがえのないNeovimプラグインたち]] | 61 | 3 |
| ↗️4 | [[HTMLのscriptタグで指定したスクリプトが読み込めない]] | 51 | 7 |
| ↗️5 | [[📘果てなきデイリーノートの旅路 with Obsidian]] | 48 | 6 |
# 👀Reading
## Rust言語のための統合開発環境「RustRover」正式リリース、JetBrains。個人の非商用利用は無料
<div class="link-card">
<div class="link-card-header">
<img src="https://www.publickey1.jp/favicon.ico" class="link-card-site-icon"/>
<span class="link-card-site-name">www.publickey1.jp</span>
</div>
<div class="link-card-body">
<div class="link-card-content">
<p class="link-card-title">Rust言語のための統合開発環境「RustRover」正式リリース、JetBrains。個人の非商用利用は無料</p>
<p class="link-card-description">Kotlin言語や統合開発ツールIntelliJ IDEAなどの開発を行っているJetBrainsは、Rust言語用の統合開発環境「RustRove ... </p>
</div>
<img src="https://www.publickey1.jp/2024/GOHHOieXAAAUilN.jpg" class="link-card-image" />
</div>
<a href="https://www.publickey1.jp/blog/24/rustrustroverjetbrains.html"></a>
</div>
~~~
今まで機能制限だった気がするけど、個人の非商用利用なら無料のモデルになったのね。
https://www.publickey1.jp/blog/24/rustrustroverjetbrains.html
~~~
## 明示的な型注釈によって推論コストを下げるというアプローチ
<div class="link-card">
<div class="link-card-header">
<img src="https://static.zenn.studio/images/logo-transparent.png" class="link-card-site-icon"/>
<span class="link-card-site-name">Zenn</span>
</div>
<div class="link-card-body">
<div class="link-card-content">
<p class="link-card-title">明示的な型注釈によって推論コストを下げるというアプローチ</p>
</div>
<img src="https://res.cloudinary.com/zenn/image/upload/s--sEr7nA0c--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:%25E6%2598%258E%25E7%25A4%25BA%25E7%259A%2584%25E3%2581%25AA%25E5%259E%258B%25E6%25B3%25A8%25E9%2587%2588%25E3%2581%25AB%25E3%2582%2588%25E3%2581%25A3%25E3%2581%25A6%25E6%258E%25A8%25E8%25AB%2596%25E3%2582%25B3%25E3%2582%25B9%25E3%2583%2588%25E3%2582%2592%25E4%25B8%258B%25E3%2581%2592%25E3%2582%258B%25E3%2581%25A8%25E3%2581%2584%25E3%2581%2586%25E3%2582%25A2%25E3%2583%2597%25E3%2583%25AD%25E3%2583%25BC%25E3%2583%2581%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_34:Saji%2Cx_220%2Cy_108/bo_3px_solid_rgb:d6e3ed%2Cg_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyL2VjOTA1OThlNjEuanBlZw==%2Cr_20%2Cw_90%2Cx_92%2Cy_102/co_rgb:6e7b85%2Cg_south_west%2Cl_text:notosansjp-medium.otf_30:%25E3%2582%25B5%25E3%2582%25A4%25E3%2583%259C%25E3%2582%25A6%25E3%2582%25BA%2520%25E3%2583%2595%25E3%2583%25AD%25E3%2583%25B3%25E3%2583%2588%25E3%2582%25A8%25E3%2583%25B3%25E3%2583%2589%2Cx_220%2Cy_160/bo_4px_solid_white%2Cg_south_west%2Ch_50%2Cl_fetch:aHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyL2RhZGQ0NmY0YTQuanBlZw==%2Cr_max%2Cw_50%2Cx_139%2Cy_84/v1627283836/default/og-base-w1200-v2.png" class="link-card-image" />
</div>
<a href="https://zenn.dev/cybozu_frontend/articles/ts-explicit-type-annotation"></a>
</div>
~~~
めっちゃいい記事。tsc重くなると補完も遅くなるのでかなり開発効率下がるしなぁ。
https://zenn.dev/cybozu_frontend/articles/ts-explicit-type-annotation
~~~
## Vue.js最新動向 by @kazupon — TechFeed Experts Night#27 〜 フロントエンドフレームワーク最前線
<div class="link-card">
<div class="link-card-header">
<img src="https://techfeed.io/images/logo/logo-192x192.png" class="link-card-site-icon"/>
<span class="link-card-site-name">TechFeed (テックフィード)</span>
</div>
<div class="link-card-body">
<div class="link-card-content">
<p class="link-card-title">Vue.js最新動向 by @kazupon — TechFeed Experts Night#27 〜 フロントエンドフレームワーク最前線</p>
<p class="link-card-description">この1年にVue.jsで行われたアップデートやリリース状況と、Vue.jsの今後について話します。 ... </p>
</div>
<img src="https://res.cloudinary.com/techfeed/image/upload/w_1200,h_630,c_fill/entries/bli4ct6qdi5bl4p01zmj.png" class="link-card-image" />
</div>
<a href="https://techfeed.io/entries/6649f3fafa8369255e522dee"></a>
</div>
~~~
Vaporモードはしばらく様子見かな。
https://techfeed.io/entries/6649f3fafa8369255e522dee
~~~
## HeadlessなUIライブラリを利用する価値
<div class="link-card">
<div class="link-card-header">
<img src="https://d1eu30co0ohy4w.cloudfront.net/assets/favicon-bdd5839d46040a50edf189174e6f7aacc8abb3aaecd56a4711cf00d820883f47.png" class="link-card-site-icon"/>
<span class="link-card-site-name">Speaker Deck</span>
</div>
<div class="link-card-body">
<div class="link-card-content">
<p class="link-card-title">HeadlessなUIライブラリを利用する価値</p>
<p class="link-card-description">Speaker : Yuito Kawashima ( https://github.com/yuitokawashima )at 「Vue.js v-tokyo Meetup #20」https://vuejs-meetup.connpass.com/event/318066/</p>
</div>
<img src="https://files.speakerdeck.com/presentations/c20134bc6143477ebc1115bcdd3ec555/slide_0.jpg?30392079" class="link-card-image" />
</div>
<a href="https://speakerdeck.com/plaidtech/the-value-of-using-a-headless-ui-library"></a>
</div>
~~~
デザイナーが入る場合はとても有益よね。後から入る場合はshadcn-uiで繋ぐとなおよい。
https://speakerdeck.com/plaidtech/the-value-of-using-a-headless-ui-library
~~~
# 📚New Notes
- [[Naked return]]
- [[Named return value]]
- [[Neovimでgofumpt]]
- [[Neovimでgoimports]]
- [[RapiDoc]]
- [[Staticcheckを有効 (gopls)]]
- [[Staticcheckを有効 (nvim-lspconfig)]]
- [[errcheck]]
- [[exhaustive]]
- [[go-errorlint]]
- [[go-exhaustruct]]
- [[gofmt]]
- [[gofmtやgofumptがあればgoimportsは必要ないか?]]
- [[gofumptを使用 (gopls)]]
- [[golangci-lint-langserver]]
- [[golangci-lint]]
- [[goplsのimport整理機能はgoimportsを使っている]]
- [[govet]]
- [[ineffassign]]
- [[nakedret]]
- [[none-lsでgofumptを使用]]
- [[none-lsでgoimportsを使用]]
- [[nvim-lspconfigでgoplsのフォーマッターをgofumptにする]]
- [[unparam]]
- [[フィールド (Go)]]
- [[構造体タグ]]
- [[📕golangci-lintのマイ設定]]
- [[📜2024-06-01 golangci-lintを使ってみる]]
- [[📰2024年21週 Weekly Report]]