# 🏆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]]