at backyard

Color my life with the chaos of trouble.

Google日本語入力のサジェストを無効化する方法

忘れた頃に必要になったので、改めてメモ

PCでGoogle日本語入力を利用していて、「画面の挙動を動画収録する必要が出てきた。だけど、変換のサジェストなどはあまり人に見られたくない...」 というケースはあると思う。

(別にやましい単語が出てこなくても、意外とサジェストってその人の普段のライフスタイルが垣間見える部分なので、人に見られるのってちょっと構えてしまうんです)

そんなときはGoogle日本語入力の環境設定からサジェスト周りの設定を無効化すれば解決する。

私はmac環境なので、あくまでmacOSの場合となるが、設定方法を備忘録的にメモしておく

1.Google日本語入力の環境設定を開く

2.サジェストタブ内にある赤枠のチェックボックスをオフにする

これで普段出ていたサジェストが出なくなる。

知っておくと意外と便利

【Reclineの導入方法あり】GitHub Copilot枠でClineが使えるようなので調べてみた(Recline / VSCode Language Model API / AIプログラミング)

※追記などもあり、ページ量も増えてきたので目次を追加しました

GitHub Copilot枠を用いてClineが使える?

ClineというVSCodeのExtensionがあり、これを使うとAIを用いたコーディング(プログラミング)が可能となる。Cline自体、現在かなり注目されているツールであり、既に解説している記事などもたくさん出ているため、ここでは説明は割愛する。

そして、今日Xを見ていたらこのような投稿が目に入った

Cline自体は各種LLMのAPI(ChatGPTやClaude、Geminiなどなど)を用いて、そこでのやりとりを元にコーディングアシストをしてくれるのだが、どうやらVSCode Language Model APIというものを叩くことで、Language Modelを利用したAI を活用した機能と自然言語処理Visual Studio Code 拡張機能に統合できるらしい。

code.visualstudio.com

そして、このVSCode Language Model APIのなかではGitHub Copilotも指定できる。

実際のコードは上のドキュメント内にあるが、以下のような記述で利用が可能なようだ

const [model] = await vscode.lm.selectChatModels({ vendor: 'copilot', family: 'gpt-4o' });

というわけで、結論VSCodeユーザーのGitHub Copilot利用枠を用いた処理が可能となり、最初に上げたXの投稿内ではClineを利用する際にこの VSCode Language Model API を利用するような修正を入れているという形である。

github.com

なお、このポストを書いている現時点ではまだ上のPRはマージされていないが、clineのコミュニティからも好意的に受け取られており、このPRの作者も常に数週間という間、継続的にテストを行いつつ、このPRに取り組んでいるようだ。 (詳細はPR内部を参照)

GitHub Copilot枠を利用してClineを使うことができれば、より気軽にClineが使える?

今までClineを利用する際は別途API提供側で利用枠のクレジットを購入して、そちらを消費しながら使うというのが主流だったと思う。 (他に方法があるかは知らない)

つまり使った分だけクレジットが消費されていき、常に残りクレジットを意識しながらコーディングを行う必要があった。

しかし、今回のようにGitHub Copilotを利用してAIコーディングが使えるのであれば、定額制というCopilotの料金プランもあって、この残りクレジットを意識することはなくなる。
(もちろんGitHub Copilotにはレートリミットはあるので、無制限に使えるわけではない。また制限に達したらCopilot自体が動かなくなるため、VSCodeではCopilotを常時利用している場合は不便を強いられる可能性もあるのでそこは注意したい)

というわけで、これは利用したいと思って今回試してみることにした。

現段階ではClineのフォーク版であるReclineを利用するのが良さそう

ちなみに今回のPRの作者によるClineのフォーク版であるReclineというのがあり、現在こちらの実装を使う際はこのReclineをVSCode上で使うのが一番良さそうである。

というわけで試してみた。以降はReclineの導入方法の備忘録となる。

github.com

Reclineのインストール方法だが、こちらのツールはRoo-Clineなど他のClineフォークのように VSCodeのMarketplaceには出されていないため、自身でビルドしていく必要がある。とはいえ、ビルド方法はとても簡単でREADMEに丁寧にセットアップ方法が書かれている。

私はこのドキュメント内の記述をさらっていただけであるが、実際に実行したコマンドを以下に記載していく。

# プロジェクトをclone
git clone https://github.com/julesmons/recline.git

# reclineのルートに移動
cd ./recline

ちなみにReclineでは pnpm を用いているため、PCに入っていない場合は以下のコマンドでインストールしておく必要がある。
(他のインストール方法もあるので気になる方はpnpmの公式ドキュメントにて)

また他にはVisual Studio Code 拡張機能のパッケージングと公開などを支援するnpmライブラリである @vscode/vsce もグローバルにインストールしておく必要があるらしい

# pnpmをグローバルにインストール
npm install -g pnpm@latest-10

# vsceをグローバルにインストール
npm install -g @vscode/vsce

そしてRecline側で依存関係のインストールを実施する。

# 依存関係のインストール
pnpm install

#VSIXとしてパッケージング
pnpm run package

ここまで実施すると現在のフォルダ内に recline-0.2.11.vsix というファイルができている。これがパッケージングされたVSCode拡張機能となる。
(実行時期によってバージョン番号は変わると思う)

こちらをVSCode側にインストールするためには以下のコマンドをターミナル上で実施する。

code --install-extension ./recline-0.2.11.vsix

# 以下のような記述が出ればインストール成功
# Extension 'recline-0.2.11.vsix' was successfully installed.

ここまで実行してVSCodeの画面を見ると、Reclineがインストールされている状態になっている。

試しに以下のようにGitHub Copilot枠のClaude 3.5 Sonnetを試して実行してみる。

GitHub Copilot枠のClaude 3.5 Sonnetを選択しているところ

これで実行してみる。最初にこのような確認ダイアログが出てくるので、Allow を選択

これであとは利用するだけ。

実際に簡単なコードで試してみたところ、問題なく動いている。このまま色々と試していってみようと思う。

一応Copilotのレートリミットは気になるので、事前に調べておこうとは思う。

(ドキュメントを見るとGPT-4oで64kという理解で良いのかな?)

Reclineでは日本語が使えない問題が発生している場合の対応方法

これはXで教えていただいたのだが、Reclineで日本語でのやり取りができない問題が発生しているようだ。

もしこの問題が発生した方は以下のポストを参照していただくのが良さそう

ちなみに私自身はカスタムインストラクションにチャットは日本でやり取りしてほしい旨を伝えるだけで問題なく使えていた。

カスタムインストラクションは上に張った画像内のとおりだが、テキストとしても以下に載せておく。

Please use Japanese in chat conversations.
Please make sure that comments on the code are in English.

チャット開始後、2回目以降の日本語の返答が抜け落ちている

と、ここまで書いたところで、実は私の環境でもこの問題が起きていることが判明した。
単に再現する作業をRecline上で行っていなかっただけで気づいていなかった模様...
(こちらもXにて教えていただいた。ありがとうございます)

実はReclineで最初の指示の日本語は問題なく通るが、やり取りの中でこちらから返答を返す場合(2度目以降の送信時)、日本語が抜け落ちるようだ。

これはReclineの表示でもそうだし、ログ内でも実際に抜け落ちているのが確認できる。

(おそらくログ上ではタグやタグが該当しているが、ここが日本語の場合空欄になっている)

ちなみに2回目以降も英語でのやり取りは問題なく送信される。

というわけで、日本語でお困りの方は上に貼らせていただいたポスト内の記事を確認していただくのが良さそう。
(というか下にも改めて貼らせていただく)

sitochablog.pages.dev

私も後ほど設定してみて、また実施した内容は追記すると思う。

実際の対応ログ

上の問題に対応した際のログを残しておく

ちなみにReclineの日本語問題については対応するPRを出してくれている方がいたので、それがマージされればそのバージョン以降は今回のような対応は不要になる

github.com

で、実際の対応方法だが、まずはコードを最新化しておく。

git pull origin main

次に src/extension/utils/sanitize.ts内のコードを以下のリンク先のように書き換えればOK。
(最初は自身のコードを記載しようと思ったが、そもそも既にPRに出ているコードを参考にすれば確実だと思ったので省略)

https://github.com/julesmons/recline/pull/1/files

コードを変更したら、

# 依存関係が更新されているかもしれないので念のためインストール
pnpm install

#VSIXとしてパッケージング
pnpm run package

すると本日2025/1/14の夜時点で、 recline-0.2.2.vsix というのがパッケージングされるのでこれを適用する。

ちなみにローカルの拡張機能ってそのまま適用できるのかよく分からなかったので、もとの拡張機能は一旦uninstallしておいた。必須かは分からない。

Extensionsタブで検索してuninstallを実施

あとは前回同様インストール

code --install-extension ./recline-0.2.2.vsix

# 以下のような記述が出ればインストール成功
# Extension 'recline-0.2.2.vsix' was successfully installed.

ちなみにインストール後は以前設定したカスタムインストラクションなどの設定は復元されていました。たぶんVSCode側で設定情報は持っているのかな?

あとReclineのバージョン番号が減っていない?と思ったら、どうやらtypoしているようで、以下のようなPRが出されていた。
typo、あるある。

github.com

Reclineでフォルダ構造読めない問題の対応方法

こちらについても上にリンクを貼らせていただいた、しとちゃ!さんのブログを参考にさせていただいた。

どうやらReclineではフォルダ構造を読む際にfdを利用しているらしい。 (fdはRust製のfindコマンドで、一時期に話題になっていた気がする)

github.com

この fdmacの場合、brew でインストールできるので、以下のコマンドを実行すればOK。自動的にパスも通せるので、このコマンドを実行するだけでフォルダ構造読めない問題は対応完了となる。

brew install fd

Windows環境の場合、しとちゃ!さんのブログが参考になると思うのでそちらを読んでみてください。

ちなみにRecline的には今は別途 fd を入れる必要があるが、後々はバンドルすることを目指しているらしい。

ReclineのREADMEをブラウザ翻訳で表示したもののスクリーンショットとなります

東京ディズニーシー・ファンタジースプリングスホテルのファンタジーシャトーの予約を取る方法

ファンタジースプリングスホテルのファンタジーシャトーに泊まりたい!

最近家族でディズニーホテルに行きたいと考え始めました

実は以前ディズニーアンバサダーホテルには泊まっていましたが、子供のディズニー熱は引き続き高いですし、アナ雪も大好きなのでファンタジースプリングスホテルのファンタジーシャトーはやはり気になるところです。

ですが、このファンタジースプリングスホテルの予約は現時点でほぼ埋まっています。
ディズニーホテルの予約は4ヶ月先までとれ、これを書いている7月時点だと11月まで予約が取れる形となります。

しかしその11月まで既に埋まっている形となります。

人気がすごいですね!

ファンタジースプリングスホテルの人気が伺えますね。

ディズニーホテル予約チェッカーというChrome拡張機能を作成しました

今回どうやったらファンタジースプリングスホテルのファンタジーシャトーの予約が取れるだろうか?と考えた結果、以下のようなChrome拡張機能を作成しました。

chromewebstore.google.com

これはディズニーホテルの予約状況を簡単にチェックするのに役立つChrome拡張機能となっており、Chromeに追加して以下のページを開くだけで、各ディズニーホテルの現在の空き状況が一度にチェックできるという機能となっています。

www.tokyodisneyresort.jp

Chrome拡張機能を追加したうえで開くと、下の画像のように画面右側に独自のUIが表示され、一覧状況がチェックできます。

Chrome拡張機能を追加したうえでページを開いたスクリーンショットとなります

※この赤枠で囲んだ箇所がChrome拡張機能で表示させた独自の画面となります。

この拡張機能自体は、表示させているディズニーホテルのページ内にある空き部屋の状況を見やすく整形させるためのアプリであり、新たに情報を取得して機能を提供するということはしていません。

ただ、対象ページの各ホテルの予約状況はホテルを切り替えつつ確認するしかないため、現在ディズニーではどのホテルがいつ空いているか?を確認するうえでは非常に役立つChrome拡張機能となります。

また日付単位でのフィルターや宿泊料金におけるソート機能なども搭載しているため、泊まりたいホテルをなるべく安く探したい、という方にも役に立つツールとなっています。

是非利用してみてください。

ファンタジースプリングスホテルのファンタジーシャトーの予約を取る方法

ここからが本題です。

今回、このChrome拡張機能を活用して、ファンタジーシャトーの予約を取る方法について考えてみたので共有します。

『日付にはこだわらないのでファタジーシャトーの空きを探している』という人にはマッチするかと思います。

まずブラウザ上から、以下の2つのページをそれぞれ開いておきます

【公式】ディズニーホテル | 東京ディズニーリゾート

オンライン予約・購入サイト

この2つのうち、1つ目はChrome拡張機能で部屋の空き状況が瞬時にわかるページ

そして2つ目は実際に予約を取るためのページ(予約サイト)となります。

そしてこの2つ目のページは常に膨大なアクセスがあり、なかなかアクセスができません

時間帯によってはページを表示するだけで膨大な待ち時間が発生する可能性もあります

しかしこちらの予約サイトについては待ち時間を経た状態であれば、ページ内で検索をしても都度待たされるようなことはなく、すぐに空いた部屋にアクセスが可能となります。
(ただしあまりに時間が経った場合は、再度待ち時間が発生します)

手順

それでは具体的な手順に移ります。

  • まずはブラウザを2つ開き、Chrome拡張機能を追加した状態で1つ目のサイトを開き、さらに2つめのサイトも待ち時間を経たうえで開いておきます。
  • 次に1つ目のサイトを開き、だいたい XX: 00XX: 30 の時間になったらリロードします。これは1つ目のサイトは各ホテルの予約状況を集計するタイミングがだいたい 14:0014:30 など 30分おきであることが多いからです。
  • つまりこの更新される時間帯にリロードすることで、ファンタジーシャトーが空いている状況に遭遇することが可能です。

「本当にファンタジーシャトーが空いていることなんてあるの?」と思われる方もいるかも知れませんが、実際に私はディズニーホテル予約チェッカーの開発中に何度かこういうことに遭遇していますし、これを書いている本日もファンタジーシャトーの空いている場面に遭遇しました

今日も実際にファンタジーシャトーの空きに遭遇しました

というわけで、意外とキャンセルなどにより?ファンタジーシャトーの空きというのは日々生まれているようです。

そして空きが生まれたかどうかは、ディズニーホテル予約チェッカー上の画面ですぐに分かります

実際に空いた場合『東京ディズニーシー・ファンタジースプリングスホテル ファンタジーシャトー: ◯日空きあり』と表示されます

そこで空きがあるのを見つけたら、Chrome拡張機能画面の下の方にあるこのような赤くなっている場所を右クリックし、リンクをコピーしてください

これは実際にファンタジーシャトーの空き部屋ある状況に遭遇した際に撮った画像です

そして取得したURLを2つ目の予約サイトのURL欄にペーストして読み込ませることで、いち早くファタジーシャトーの予約を取れると想定しています

(ただしファンタジーシャトーの予約が埋まる時間は本当に短いです。そのためすぐにやったつもりが既に埋まってしまっているということもありました...ここは根気・やる気で粘るしかないとも思っています)

私は利用したことはないですが、現在だと他にも空きが生まれたら通知してくれるサービスもあるようです。しかし有料という話も聞きます。

無料で、かつ外部サービスに頼らないで独自にファンタジーシャトーの空きを見つけるには、このやり方はオススメかと思っています。
(まあChrome拡張機能をいれる必要はありますが、こちらは無料なので気軽に使ってください。)

またファンタジーシャトー以外にも、ディズニーホテルの各空き状況をチェックできるので、ディズニーホテルにお泊りしてみたいという方は是非チェックしてみていただけると嬉しいです。

この方法で泊まれたという方がいましたらXなどで教えていただけると嬉しいので、差し支えなければ教えて下さいね。

私もファタジーシャトーの予約を取れるよう頑張ります!

DensePoseでモーションを自作して、MagicAniamteで遊んでみた

一枚の画像とモーション動画で動画を生成できるMagicAniamteが今週は盛り上がっていた

showlab.github.io

MagicAnimateを私はGoogle Colab経由で試していた。
プリセットなども用意されているので、それだけでも楽しめるのだが、せっかくモーションと一枚の静止画を読み込ませることで作りたいものが作れるので、カスタムモーションを作る方法を探っていた

人物が写っている動画からのモーション抽出だが、これはMetaが以前発表していたDensePoseというもので抽出できるらしい

github.com

で、こちらについてもGoogle Colab上で実行できる仕組みを作っている方がいたので、そのプロジェクトをforkしてGoogle Colab上でGradioのWeb UI経由から操作できるようにした
(この修正はPRを送っているが残念ながら反応はもらえていない)

github.com

オリジナルのモーションを作成してMagicAnimateで動画を作成する方法

以上のようなことを調べた結果、オリジナルのモーションを利用してMagicAnimateで動画生成を行うためには

  • 動画をDensePoseを用いてモーション抽出を行う
  • そのモーションを用いてMagicAnimateで実際に動画生成を行う

という手順を踏む必要があるとわかったので、それらの手順を実行するColabノートブックを作成した

github.com

Google Colabのランタイム設定について

ランタイムの設定だが推奨は v100 + ハイメモリ となる。
ハイメモリにしていない場合、うまく動画が生成できなくなることがあるようだ。
(こちらについてはコメントでご報告いただき判明しました。ありがとうございます)

動画制作のための手順

上のリポジトリ内にあるColabノートブックを実行するだけで良い。

https://github.com/shinshin86/magic-animate-craft-with-colab/blob/main/colab.ipynb

1つ目のコードセルを起動すると、フォーク版の Vid2DensePose が起動する
画面はシンプルなのでスクリーンショットなどは載せないが、モーション抽出したい動画をアップロードして処理を実行すれば、それでモーション動画ができあがる。

現状MagicAnimate側に渡すモーション動画はサイズが 512x512FPS25 であることが最適であるようだったので(誤っていたらコメントください)、生成されるモーション動画は強制的にそのような値になるようにした。

次に2つ目のコードセルを実行すると、これまたフォーク版の magicanimate-hf が起動する。
(オリジナル版にあったエラーの修正と、機能追加もしている。エラーの方はPRを送っているが、こちらも残念ながらコメントはもらえていない...)

github.com

アプリが起動したら、画像とモーション動画をアップロードして処理を実行すれば良い。

画像がなければモナリザなど、プリセットの素材もあるので、そちらで試しても良い

自撮りした動画でモーションを作って、モナリザにピースさせてみた

というわけで、遊んでみてください。

SDXL TurboをmacOS上のComfyUIで動かす方法

Stable Diffusionの開発元として知られているStability AIが最近発表した、わずか1ステップでの画像生成を可能とするSDXL Turboをmac上のComfyUIで動かしてみたので、その時のセットアップ方法を備忘録として残しておく。

ja.stability.ai

セットアップ手順(Minicondaやpytorchなど)

基本的に ComfyUIのREADMEに記載されているmacのセットアップ手順を見れば問題なくセットアップはできる

github.com

ComfyUIのドキュメントを見ると、mac上にconda環境を導入してそちらでセットアップするようだったので、それに習うことにした

なお、私の環境はM2のMacBook Airで試している。

# conda導入
curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh
sh Miniconda3-latest-MacOSX-arm64.sh

# conda経由でpytorchなどをインストール
conda install pytorch torchvision torchaudio -c pytorch-nightly

# pipでインストール
# このときに別途仮想環境を構築しても良いかもしれない(conda create ~)
pip3 install --pre torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/nightly/cpu

ここまで実行したら、以下のPythonスクリプトを実行してみる

# 仮にファイル名をmain.pyとする

import torch
if torch.backends.mps.is_available():
    mps_device = torch.device("mps")
    x = torch.ones(1, device=mps_device)
    print (x)
else:
    print ("MPS device not found.")

このスクリプトpython main.py で実行して、実行結果が以下となれば導入に成功している

tensor([1.], device='mps:0')

セットアップ手順(ComfyUI導入)

次にComfyUIをダウンロードする。

github.com

私はGitHubからクローンしてダウンロードした。ComfyUIのルートに移動したところから、実行したコマンドのログを記載する。

pip install -r requirements.txt
python main.py --force-fp16

これでComfyUIが起動するので、ブラウザからComfyUIにアクセスする。

※たぶん、ComfhUI環境を既に作成している方の場合、依存関係のアップグレードが必要になるかと思われる。

次にComfyUIの以下のドキュメントから画像ファイルをダウンロードする。

comfyanonymous.github.io

この画像ファイル内に、workflowの設定が格納されているため、これをComfyUIの画面上にドラッグ・アンド・ドロップで移動させれば、SDXL Turbo用の設定は完了する。

また、上のドキュメント内にSDXL Turbo用のモデルのリンク(Hugging Face)もあるので、そこからモデルをダウンロードして所定の位置に格納してから生成処理をすることをお忘れなく。

Windows環境でgo-sqlite3を使うための備忘録

Windows環境でgo-sqlite3を使い始める際に少し迷ったことがあったので書き残しておく

Windows環境でgo-sqlite3が組み込まれたプログラムを実行しようとしたところ、

Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub

というエラーが出た

どうやら cgo が必要らしい

ここのセットアップについてはgo-sqlite3のGitHubページのREADMEを参考にした

github.com

上のページ内に記載されている tdm-gcc のダウンロードページに移動する

jmeubank.github.io

一番上の tdm-gcc-webdl.exe をダウンロードする

セットアップウィザード内で64bit版を指定して、あとはそのままインストールを完了させる

この状態で go-sqlite3 が組み込まれたプログラムを実行すると、正常に実行できることを確認した

はてなブログでのステマ規制対応に関する備忘録

先日2023年10月から始まるステマ規制対応を行っていた

ステマ規制については以下が分かりやすい

webtan.impress.co.jp

はてなブログにもアフィリエイトのリンクは貼っていたので対応したのだが、以下のような形となった。
(スレッド内に結果含めて記載しています)

私ははてなブログは無料プランで使っているが、はてなブログ無料版だとスマフォのヘッダーなどはいじれず、上の投稿に書いているやり方だとPC版のみとなってしまい、スマファ表示での対応が完了できなかった

一応、スマフォ表示でもPC版のHTMLを表示、というオプションがはてなブログ自体に用意されていたが、これをチェックしても機能していないように思えた...

オプションを有効にしたのだが、追加したヘッダーテキストは表示されず...

一応伝えておくと、上のXの投稿で紹介させていただいた記事自体は非常にわかりやすく書かれており、とても有益なので同じようにステマ規制対応をする必要があるはてなブログユーザーの方はチェックしてみてください。

私が実践したやり方

※注意:この設定は失敗するとブログ自体の表示や動作がおかしくなる可能性があります。不具合が生じても責任は取れません。自己責任でお願いします。あと今後、はてなブログの内容が更新された際に意図通りに動かなくなる可能性もあります。

ページを読み込んだあとにJavaScript経由でテキストを挿入することにした。これであればPCとスマフォ表示、どちらでも意図したテキスト表示が行えた。

やり方は、

  1. SettingsAdvancedを開く
  2. <head>要素にメタデータを追加の中に以下のスクリプトを記述する

追加するスクリプトは以下

<script>
  // PR text
  function setPRText () {
    const prText = document.createElement('p');
    prText.textContent = "当ブログではアフィリエイト広告を利用しています";
    prText.style.textAlign = "center";
    prText.style.color = "#333";
    prText.style.fontSize = "100%";
    const targetArea = document.querySelector('.entry-header');
    if (targetArea?.firstChild) {
      targetArea.insertBefore(prText, targetArea.firstChild);
    } else {
      targetArea.appendChild(prText);
    }
  }
  
  document.addEventListener('DOMContentLoaded', function() {
    setPRText();
  })
</script>

これで意図したテキストをブログ上に表示できるようになった。

めでたし