# 🗞️Topics ## CodeCompanionでNeovimでもAIチャット 以前に[[Neovim]]で[[avante.nvim]]を使ってみたことがありました。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/favicon-64.png" /> <span class="link-card-v2-site-name">Minerva</span> </div> <div class="link-card-v2-title"> 📜2025-01-13 avante.nvimを使ってみる </div> <div class="link-card-v2-content">近年エディタのAI化が進む中、Neovimで話題のavante.nvimを導入し、OpenAI APIのGPT-4oモデルを用いて実用性や料金、導入手順、APIキー作成やエラー対応、実際のコード生成・編集体験を検証した。トークン消費やコストも具体的に試算し、Neovim環境でのAI活用の可能性を探った。</div> <img class="link-card-v2-image" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/Notes/attachments/activity.webp" /> <a data-href="📜2025-01-13 avante.nvimを使ってみる" class="internal-link"></a> </div> %%[[📜2025-01-13 avante.nvimを使ってみる]]%% ただ、[[Cursor]]をターゲットにしているこのプラグインは相性があまり良くなく、ここ最近は全く利用していませんでした。[[avante.nvim]]の動作が思うようにいかず[[Neovim]]を再起動することのデメリットが、[[avante.nvim]]から得られるメリットを上回っていたからです。 『[[ChatGPT]] ぽい使い勝手の[[Neovimプラグイン]]はないものか...』と思っていたところ、[[CodeCompanion]]を見つけました。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://github.githubassets.com/favicons/favicon.svg" /> <span class="link-card-v2-site-name">GitHub</span> </div> <div class="link-card-v2-title"> GitHub - olimorris/codecompanion.nvim: ✨ AI Coding, Vim Style </div> <div class="link-card-v2-content"> ✨ AI Coding, Vim Style. Contribute to olimorris/codecompanion.nvim development by creating an account on GitHub. ... </div> <img class="link-card-v2-image" src="https://repository-images.githubusercontent.com/736363011/41e28b3c-3e8b-404e-a268-c87785cc5c19" /> <a href="https://github.com/olimorris/codecompanion.nvim"></a> </div> 試しに使ってみたところ、個人的な用途にフィットしました。任意のファイルや[[バッファ (Vim)|バッファ]]を読み取り対象に追加できるので、[[ChatGPT]]と[[avante.nvim]]の中間的位置づけといった感触です。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/favicon-64.png" /> <span class="link-card-v2-site-name">Minerva</span> </div> <div class="link-card-v2-title"> 📜2025-02-04 CodeCompanionを使ってみる </div> <div class="link-card-v2-content">NeovimプラグインのCodeCompanionを使ってみる。avante.nvimだとchat目的としてはオーバーキルなのと、CodeCompanionの方がシンプルで良さそう & 更新もされてそうなので。</div> <img class="link-card-v2-image" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/Notes/attachments/activity.webp" /> <a data-href="📜2025-02-04 CodeCompanionを使ってみる" class="internal-link"></a> </div> %%[[📜2025-02-04 CodeCompanionを使ってみる]]%% ただ、[[CodeCompanion]]はWeb検索機能が使えない(API経由なので)ので、そこは[[ChatGPT]]との大きな差となっています。また、返答される内容も同じモデルを使っていても[[ChatGPT]]の方が優れていると感じます。そのため、[[ChatGPT]]の代替として使うよりは、**場合によっては[[CodeCompanion]]の方が楽なケースもある** というレベルに留められるかなと感じました。 一方、職場では[[ChatGPT]]の有料版が利用できないため、[[o1]]モデルを利用する術がありません。そのような縛り環境下では、[[CodeCompanion]]を使うシーンも増えるだろうと思っています。 ## Neovimの括弧に関する長年の課題を解決 [[Neovim]]の括弧に関する挙動について、1年近く解決方法が分からず画面していたものを解消しました。 ### nvim-cmpでなぜか表示されるスニペット 1つ目が[[LuaSnip]]でなぜか表示されてしまう[[nvim-cmp]]の候補です。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/favicon-64.png" /> <span class="link-card-v2-site-name">Minerva</span> </div> <div class="link-card-v2-title"> 📝括弧のペアを挿入して素早く左にカーソルを移動するとnvim-cmpの候補としてLuaSnipのスニペットが表示されてしまう </div> <div class="link-card-v2-content">enabledで暴発する括弧のパターンでは補完を表示しないようにする。</div> <img class="link-card-v2-image" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/Notes/attachments/troubleshooting.webp" /> <a data-href="📝括弧のペアを挿入して素早く左にカーソルを移動するとnvim-cmpの候補としてLuaSnipのスニペットが表示されてしまう" class="internal-link"></a> </div> %%[[📝括弧のペアを挿入して素早く左にカーソルを移動するとnvim-cmpの候補としてLuaSnipのスニペットが表示されてしまう]]%% 問題の解決だけでなく、[[nvim-cmp]]で補完表示を制御する方法まで学べたことは有意義でした。[[🦉Various Complements]]の開発でこの辺はいくらか経験あるのもあり、今後、[[Neovimプラグイン]]で似たようなモノを作りたくなったときは参考になりそうです。 ### nvim-autopairsでインデントの恩恵だけ受けたい [[nvim-autopairs]]は括弧内でEnterを押したときのインデントが直感的なので利用していますが、自動で括弧は閉じてほしくなかったため、そこを妥協して利用していました。(本来、そちらがメインの機能ですけどね) [[ChatGPT]]から[[nvim-autopairs]]で[[特定の括弧は自動で閉じないように設定 (nvim-autopairs)|特定の括弧は自動で閉じないように設定]]を教えてもらえたので、それを設定して無事解決です。[[o1]]様様🙏 ## 今週のTDQ 今週も先週に同じく4本のクエストを追加しています。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/favicon-64.png" /> <span class="link-card-v2-site-name">Minerva</span> </div> <div class="link-card-v2-title"> 📒TDQ </div> <div class="link-card-v2-content">TypeScriptで開発ができるようになるための知識を詰め込んだ問題集。プログラミング経験はあるけどWeb開発経験がほとんどない読者を想定しています。</div> <img class="link-card-v2-image" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/%F0%9F%93%97TDQ/attachments/tdq.webp" /> <a data-href="📒TDQ" class="internal-link"></a> </div> %%[[📒TDQ]]%% - [[📗TDQ-009 条件分岐と三項演算子]] - [[📗TDQ-010 Denoのテスト]] - [[📗TDQ-011 for文はfor of]] - [[📗TDQ-012 オブジェクトの基本]] # 👀Reading ## Google Chromeデベロッパーツールの基本的な使い方をわかりやすく解説 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://willcloud.jp/wp-content/themes/willmail/ico/favicon.ico" /> <span class="link-card-v2-site-name">willcloud.jp</span> </div> <div class="link-card-v2-title"> Google Chromeデベロッパーツールの基本的な使い方をわかりやすく解説 </div> <div class="link-card-v2-content"> Google Chromeのデベロッパーツールの中でも利用頻度の高い、HTMLとCSSのテスト検証方法と、スマートフォン表示の検証方法について、初心者向けに詳しく解説しています。 ... </div> <img class="link-card-v2-image" src="https://willcloud.jp/wp-content/uploads/2021/03/eye-devtools-06.png" /> <a href="https://willcloud.jp/knowhow/dev-tools-01/"></a> </div> ~~~ いい。レスポンシブモードは知らなかったので試してみたい。 ~~~ ## リファクタリングについての彼此(あれこれ) - 電通総研 テックブログ <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://tech.dentsusoken.com/icon/favicon" /> <span class="link-card-v2-site-name">電通総研 テックブログ</span> </div> <div class="link-card-v2-title"> リファクタリングについての彼此(あれこれ) - 電通総研 テックブログ </div> <div class="link-card-v2-content"> こんにちは、グループ経営ソリューション事業部の米久保です。 はじめに リファクタリングとは リファクタリングの定義 振る舞いのサイズ 振る舞いと自動テストとの対応 リファクタリングテクニック リファクタリングサイズ 技術的負 ... </div> <img class="link-card-v2-image" src="https://cdn.image.st-hatena.com/image/scale/04e7ab7ad897a4b9f39fe3f6ac66380ed4e49873/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fmedia.shodousercontents.com%2Ftask_images%2F983%2F60df4855-a4b5-4755-8ada-8d72f4f28248.png" /> <a href="https://tech.dentsusoken.com/entry/refactoring"></a> </div> ~~~ 無駄がなく必要な情報が詰まった秀逸な文章。テストを入れるタイミングにも同じことが言えるなぁと。 ~~~ ## Cookieを用いたセッションベースの認証に関する技術的な詳細と認証フロー <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://static.zenn.studio/images/logo-transparent.png" /> <span class="link-card-v2-site-name">Zenn</span> </div> <div class="link-card-v2-title"> Cookieを用いたセッションベースの認証に関する技術的な詳細と認証フロー </div> <img class="link-card-v2-image" src="https://res.cloudinary.com/zenn/image/upload/s--jxkHK852--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:Cookie%25E3%2582%2592%25E7%2594%25A8%25E3%2581%2584%25E3%2581%259F%25E3%2582%25BB%25E3%2583%2583%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%25B3%25E3%2583%2599%25E3%2583%25BC%25E3%2582%25B9%25E3%2581%25AE%25E8%25AA%258D%25E8%25A8%25BC%25E3%2581%25AB%25E9%2596%25A2%25E3%2581%2599%25E3%2582%258B%25E6%258A%2580%25E8%25A1%2593%25E7%259A%2584%25E3%2581%25AA%25E8%25A9%25B3%25E7%25B4%25B0%25E3%2581%25A8%25E8%25AA%258D%25E8%25A8%25BC%25E3%2583%2595%25E3%2583%25AD%25E3%2583%25BC%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_37:T-unity%2Cx_203%2Cy_121/g_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyLzFiN2Q1YzZiMGUuanBlZw==%2Cr_max%2Cw_90%2Cx_87%2Cy_95/v1627283836/default/og-base-w1200-v2.png" /> <a href="https://zenn.dev/t_unity/articles/0a02f581808612"></a> </div> ~~~ どうにも苦手意識のあるクッキー ~~~ ## Vim の abbrev を使いこなしてみる <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://static.zenn.studio/images/logo-transparent.png" /> <span class="link-card-v2-site-name">Zenn</span> </div> <div class="link-card-v2-title"> Vim の abbrev を使いこなしてみる </div> <img class="link-card-v2-image" src="https://res.cloudinary.com/zenn/image/upload/s--CfYEZluU--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:Vim%2520%25E3%2581%25AE%2520abbrev%2520%25E3%2582%2592%25E4%25BD%25BF%25E3%2581%2584%25E3%2581%2593%25E3%2581%25AA%25E3%2581%2597%25E3%2581%25A6%25E3%2581%25BF%25E3%2582%258B%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_37:monaqa%2Cx_203%2Cy_121/g_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyLzE3OTQ0OWFlNjYuanBlZw==%2Cr_max%2Cw_90%2Cx_87%2Cy_95/v1627283836/default/og-base-w1200-v2.png" /> <a href="https://zenn.dev/monaqa/articles/2020-12-22-vim-abbrev"></a> </div> ~~~ いつか使う機会があるかもなので頭の片隅に留めておく。 ~~~ ## 新規事業は社内ドキュメント戦略が大事な話|細見 優太 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://assets.st-note.com/poc-image/manual/note-common-images/production/icons/android-chrome-192x192.png" /> <span class="link-card-v2-site-name">note(ノート)</span> </div> <div class="link-card-v2-title"> 新規事業は社内ドキュメント戦略が大事な話|細見 優太 </div> <div class="link-card-v2-content"> みなさんこんにちは、こんばんは、カミナシの細見(@yuta_hosomi)です。 カミナシはマルチプロダクト戦略構想のもと、複数のProduct開発と提供を進めている真っ只中です! そのなかで、ビジネス側のチームも新規事業 ... </div> <img class="link-card-v2-image" src="https://assets.st-note.com/production/uploads/images/173274870/rectangle_large_type_2_45e3ab3fde150032658d9e073a71eb71.png?fit=bounds&quality=85&width=1280" /> <a href="https://note.com/y_homi/n/n35eff0c97be4"></a> </div> ~~~ 非常に同感。昔はこの辺をしっかり追いかけてたけど、最終的には人に依存する部分も多く、他人は簡単に変えられないからほどほどに肩の力を抜いて65点をキープする現実に戻りつつある。 ~~~ ## DevinとCursorを比較してみてわかった、マルチタスクエンジニアにはDevinこそが救世主である理由 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://static.zenn.studio/images/logo-transparent.png" /> <span class="link-card-v2-site-name">Zenn</span> </div> <div class="link-card-v2-title"> DevinとCursorを比較してみてわかった、マルチタスクエンジニアにはDevinこそが救世主である理由 </div> <img class="link-card-v2-image" src="https://res.cloudinary.com/zenn/image/upload/s--AIQadMuY--/c_fit%2Cg_north_west%2Cl_text:notosansjp-medium.otf_55:Devin%25E3%2581%25A8Cursor%25E3%2582%2592%25E6%25AF%2594%25E8%25BC%2583%25E3%2581%2597%25E3%2581%25A6%25E3%2581%25BF%25E3%2581%25A6%25E3%2582%258F%25E3%2581%258B%25E3%2581%25A3%25E3%2581%259F%25E3%2580%2581%25E3%2583%259E%25E3%2583%25AB%25E3%2583%2581%25E3%2582%25BF%25E3%2582%25B9%25E3%2582%25AF%25E3%2582%25A8%25E3%2583%25B3%25E3%2582%25B8%25E3%2583%258B%25E3%2582%25A2%25E3%2581%25AB%25E3%2581%25AFDevin%25E3%2581%2593%25E3%2581%259D%25E3%2581%258C%25E6%2595%2591%25E4%25B8%2596%25E4%25B8%25BB%25E3%2581%25A7%25E3%2581%2582%25E3%2582%258B%25E7%2590%2586%25E7%2594%25B1%2Cw_1010%2Cx_90%2Cy_100/g_south_west%2Cl_text:notosansjp-medium.otf_34:empitsu88%2Cx_220%2Cy_108/bo_3px_solid_rgb:d6e3ed%2Cg_south_west%2Ch_90%2Cl_fetch:aHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyL2VlOWMzMWRhODMuanBlZw==%2Cr_20%2Cw_90%2Cx_92%2Cy_102/co_rgb:6e7b85%2Cg_south_west%2Cl_text:notosansjp-medium.otf_30:Ubie%2520%25E3%2583%2586%25E3%2583%2583%25E3%2582%25AF%25E3%2583%2596%25E3%2583%25AD%25E3%2582%25B0%2Cx_220%2Cy_160/bo_4px_solid_white%2Cg_south_west%2Ch_50%2Cl_fetch:aHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL3plbm4tdXNlci11cGxvYWQvYXZhdGFyLzUwNDA4YTIwYzIuanBlZw==%2Cr_max%2Cw_50%2Cx_139%2Cy_84/v1627283836/default/og-base-w1200-v2.png" /> <a href="https://zenn.dev/ubie_dev/articles/e9682c9c6487c8"></a> </div> ~~~ リアルな感想だなと。こういうマイクロマネジメントかできる人なら、AIに頼んだ方がいいのかもしれない。自分の劣化コピーとして面倒なことをお願いするのはアリかも。コスパ考えた上でだけど。 ~~~ # 📚New Notes - [[CodeCompanion]] - [[InsertEnter (Neovim)]] - [[TypeScript 5.8]] - [[autocmd (Neovim)]] - [[enabled (nvim-cmp)]] - [[for...in (JavaScript)]] - [[リファクタリング]] - [[拡張オブジェクトリテラル (JavaScript)]] - [[特定の括弧は自動で閉じないように設定 (nvim-autopairs)]] - [[置換モード (Vim)]] - [[📗TDQ-009 条件分岐と三項演算子]] - [[📗TDQ-010 Denoのテスト]] - [[📗TDQ-011 for文はfor of]] - [[📗TDQ-012 オブジェクトの基本]] - [[📜2025-02-03 TypeScript 5.8 BetaでChecked Returns for Conditional and Indexed Access Typesを試してみた]] - [[📜2025-02-04 CodeCompanionを使ってみる]] - [[📜2025-02-05 CodeCompanionの実行中にローディングスピナーを表示する]] - [[📝括弧のペアを挿入して素早く左にカーソルを移動するとnvim-cmpの候補としてLuaSnipのスニペットが表示されてしまう]] - [[📰2025年5週 Weekly Report]]