WSL2が動かなくなった。

 私のWindowsパソコンで使用しているWSL2(Windows Subsystem for Linux)が突然動かなくなりました。
 Windows Terminalで「Ubuntu」を選択すると、端末画面が真っ黒のままうんともすんとも言わなくなりました。



 これは困った。何が原因だろう・・・

 そういえばこの間Windows 11の22H2アップデートを適用したっけ。

unyacat.net
 ググってみるとこんな記事がありました。 少し古い記事で20H2を対象した記事でしたが、とりあえず試してみることにしました。
 コマンドが2種類書かれていたので、まずは最初のコマンドから。

 PowerShell管理者モードで起動して、次のコマンドを実行します。

netsh winsock reset 




 するとパソコンの再起動を促されるので、再起動します。
 再起動後に、Windows Terminalを立ち上げてみると・・・



 直りました。

 同様の症状でお悩みの方はお試しあれ。


では、また。

Bose Earbuds II買ったよ~

はじめに


 Boseの完全ワイヤレスイヤホンQuietComfort Earbuds IIを買いました。Earbuds IIは黒(トリプルブラック)と白(ソープストーン)の二色から選べるのですが、Apple製品を使い続けた反動で黒いイヤホンが欲しかったので11/10発売予定の白を待つことなく購入に踏み切りました。


購入に至った経緯

 これまでAppleAirPods pro(第一世代)をメインに使っていたのですが、いくつか不満があり代替機を探していました。

不満1:接続先の切り替えが面倒

 iPhoneiPad x2、Windows PC、Fire Stick 4K等いくつかの機器でイヤホンを切り替えて使いたいのですが、AirPods pro(第一世代)はBluetoothのマルチペアリングに対応していないので切り替えが面倒でした。Apple製品だけであればスムーズに切り替わるのですが、他社製品が混じっていると切り替えがすこし面倒でした。

不満2:音量調整ができない

 umikazeken.hatenablog.com
 以前に紹介したようにAnkerの小型プロジェクタNebula Capsule IIにFire Stick 4K(第一世代)を組み合わせて毎晩書斎プライベートシアターを満喫しています。
 NebulaはAndroid搭載なので単体でNetflixなどの動画サービスに対応しているのですが、操作性が良くないのでHDMI経由でFire Stick 4Kを繋いで使っています。

 Fire Stick 4K(第一世代)はBluetoothによる音声出力に対応しているのですが、AirPods pro(第一世代)では音量調整ができません。Fire Stick 4Kのリモコンの音量ボタンは赤外線でテレビの音量を変える方式なのでBluetooth接続のワイヤレスイヤホンの音量は変えられないのです(最新のFire Stick 4K Maxでは変えられるという話もあるようですが)。やむを得ずこれまでは有線のイヤホンを使っていました。


購入候補

 これら4機種で迷ったのですが、やはり実物を見てみないことには始まらないので家電量販店の店頭で視聴してきました。

・映画を見るにはヘッドホンの方が音が良さそうというイメージを持っていたのですが、実際に聞いてみるとヘッドホンは少し蒸れるので長時間の視聴には不向きと感じました。イヤホンと比較してこのデメリットを補うだけの音質差を感じられませんでした。

ソニーの製品と比べてBoseの方が私の好みの音質でした。他の製品もいくつか聴いてみたのですが私的にはBoseがベストマッチでした。

 ということでEarbuds IIを購入することにしました。普段はネットで購入することが多いのですが、今回はいろいろ視聴させてもらった感謝の意味を込めて家電量販店で購入してきました。

 また、購入前の段階ではEarbuds IIでFire Stick 4K(第一世代)の音量を変えられる確証を得られなかった点が不安要素でしたが、だめもとで買ってみました。


使ってみた感想

・音量調整について

 一番の懸念事項だったEarbuds IIによるFire Stick 4K(第一世代)の音量調整ですが、問題なく動作しました。イヤホンの表面を指でスワイプすることで音量を変えることができます。
 これで有線イヤホンに拘束されることなく真夜中でも大音量でゆったりと映画を見れるようになりました。大満足です。

・接続機器の切り替えについて

 完ぺきとは言えないものの、比較的スムーズに機器の切り替えが出来るようになりました。切り替わる際に通知音の後に新しい接続先の機器名を音声で読み上げてくれるのですが、Fire Stick 4Kだけは機器名の部分が無音になります。
 また専用のスマホアプリでペアリング先のリストを表示できるので、ここからも接続先を切り替えられることを期待していたのですが、ここには一部のペアリング先しか表示されないようです。少し残念。とは言うものの、AirPods pro(第一世代)よりは断然に快適になりました。

・音質について

 Earbuds IIの方が音に厚みがあります。低音もよく出ています。AirPods proは高音が綺麗で透明感のある音なのですが音の厚みが少ない気がします。音楽を聴く際は気分で使い分け、映画を見るならEarbuds IIというところでしょうか。
 iPhoneiPadよりもPCにつないだ方が良い音がする気がします。使用されるBluetoothのコーデックの差(iPhoneiPadAACWindows PCはaptX)かもしれませんが、部屋で音楽を聴くときはほぼPCを使うようになりました。

・タッチ操作について

 イヤホン本体のタッチ操作で音量調整や再生・停止操作、ノイズキャンセルのON/OFF等ができるのですが、少し誤操作しやすい気がします。音量を変えようとして再生を停止させてしまったりということがときどき発生します。

いろいろ書きましたが、個人的にはほぼ満点です。


その他

・詳細は未確認ですが、最新のAirPods proでは音量調整ができるようです。

www.gizmodo.jp


・こちらも未確認ですが、最新のFire Stick 4K Maxではリモコンでイヤホンの音量調整ができるようです。

www.kimanagu.com


 最新の製品ではいろいろな問題が解決しているようなので、使用機器の縛りが無く一から揃える人は最新のAirPods proやFire Stick 4K Maxというのも選択肢かもしれません。


では、また。

Amazonアソシエイトに登録してみた

 本ブログを始めてから1年が過ぎ、アクセス量も少しずつ増えてきました。

 そこで実証実験シリーズの一環として、以前から気になっていたAmazonアソシエイトに登録してみることにしました。『世の中、知らないことは少なければ少ないほど良い』という知人の教えに従い、試せるものは試してみようかと。

 始めるにあたって。最初の疑問は、

 AmazonアフェリエイトAmazonアソシエイトはどっちが良いのだろう?そもそも何が違う?

 でした。恥ずかしながらこんなことも知らない状況でしたが、早速調べてみました。

アフィリエイトとアソシエイトとの違いですが、意味は同じです。
引用元: アフィリエイトとは?アソシエイトとの違いは?

おいおい、同じ物か~い!!


 ちょっと拍子抜けですが、単にサービス提供元による命名の違いのようです。
・「Amazon」はアソシエイト
・「楽天」や「もしも」はアフィリエイト

 またひとつ賢くなりました。疑問に思ったら何事も調べてみるものですね。
 Amazonアソシエイトについて、もう少し調べてみました。

affiliate.amazon.co.jp
理解したこと
・ホームページに商品紹介リンクを貼っておく。
・訪問者がそのリンクを経由して買い物をすると報酬が支払われる。
・報酬は商品価格×料率で決まる(ただし1商品につき1000円が上限)。
・料率は商品カテゴリーによって異なる。現在の料率表は下記の通り。
 アソシエイト・セントラル
・報酬の支払いは、銀行振り込みかAmazonギフト券を選択。
 銀行振り込みは5000円、ギフト券は500円ごとに支払われる。

 ここまでは何となく知っていたのですが、調べていく中でいくつか新しい発見がありました。

アソシエイトリンク (アフィリエイトリンク)をクリックして、訪問者が Amazon.com. を訪れた後、24 時間以内にショッピングカートに追加された商品が、紹介料の対象となります。<以下略> 引用元: アソシエイト・セントラル

Amazonのページを一旦離れても24時間は有効なのですね。購入した時点でなくカートに追加した時点が判断の基準になるというのも興味深いです。

サインアップ後、一定の適格販売が発生すると、アソシエイト・チームがあなたの申請を確認します (サインアップから 180 日以内に 3 回以上の適格販売の発生が必要です)。 <以下略> 引用元:アソシエイト・セントラル

→ アソシエイトの登録自体は簡単そうに見えますが、180日以内に3回の販売実績が必要というのは少しハードルが高いです。ちなみに自己購入はNGのようです。

 また下記ページに記載されているように「プライバシーポリシー」のページが無いとAmazonの審査を通らないことがあるようです。

www.haurin-zatunenlife.com
 そこで、ひとまずプライバシーポリシーのページを作ってみました。上記のページを参考に作ろうとしてみたのですが、はてなブログの固定ページを作るところで躓きました。
 調べてみたところ、固定ページは有料プランのはてなブログPro限定の機能でした。どうしようかと思いましたが、下記ページの方法で無事プライバシーポリシーのページを作ることができました。

sa2ru.hatenablog.com


 プライバシーポリシーのページを作ったし、アソシエイトの概要も理解できたので早速登録してみました。 登録時に参考にしたのは次のページです。

www.monoist.work
 この手順に従って問題なく登録まではできました。まだ審査待ち中ですが・・・

 このページではAmazonアソシエイトの登録後にはてなブログに設定する方法も掲載されていました。
 はてなブログAmazonアソシエイトに対応しており、設定ページでアソシエイトIDを入力するだけで済みました。 これまで作ったページをひとつづつ修正していく作業を想像していたので一発で設定できたのはうれしい誤算でした。
 22.10.30訂正:設定ページでアソシエイトIDを変更しても、昔のページにそれが反映されていない箇所が散見されたので、ひとつずつ修正しました(反映されているページもありました)。

 また、登録作業の途中でマイナンバーの入力が必要ではと危惧していましたが、報酬が50万円を超えなければ不要っぽいです。 参考リンク:アソシエイト・セントラル

あとはしばらく様子見です。どうなることやら。。

では、また。

XtuServiceを退治する

 いつの間にか、普段使っているWindowsパソコンのCPU負荷がアイドル時でも10%程度で高止まりして推移するようになってしまった(泣)。
 先日Windows11にアップデートしてからはすこぶる調子が良くて、アイドル時のCPU負荷はおおむね1%前後だったのに何が起こったのか。

 タスクマネージャーを見てみると、XtuServiceという見慣れないプロセスが2~15%程度の間で変動しながらCPUを使い続けているようだ。

 タスクマネージャーの「パフォーマンス」タブでCPU負荷の時間変化を見てみると、周期的にCPUコアを使い込んでいるプロセスがいるようだ。



 ますますXtuServiceが怪しい。Windowsツールの中にあるイベントビューアーで直近のエラー発生情報を見てみると・・・



 これはひどい!!

 おおむね、5秒おきにXtuServiceがSystem.ArgumentNullExceptionでエラーを発生させている。これがCPU負荷増加の原因か。
 このXtuServiceを止めるべくタスクマネージャーの「サービス」タブで該当するサービスを探ってみると・・・



 一番下の行の「XTU3SERVICE」というサービスが「開始中」と「停止」を交互に繰り返している。どうやら、何者かがXTU3SERVICEを起動させようとするがエラーで止まってしまい、また起動させる、というループに入っているようだ。
 このような状況なので、タスクマネージャーからXTU3SERVICEの停止を試みても、すぐにループに戻ってしまい状況は改善せず。

 どうやら、XTU3SERVICEを起動させている親玉を退治しないと現象は治まらないようだ。XtuServiceをネットで調べてみると・・・

www.intel.co.jp
 インテルのExtreme Tuning UtilityというツールがXTU3SERVICEを起動しているようだ。Extreme Tuning Utilityの略でxtuということか。なるほどなるほど。

 このページにExtreme Tuning Utilityのアンインストールおよび再インストール手順が書かれているのでやってみた。
 まずは最初の選択肢である以下の手順をトライ。

 Windows11ではアプリと機能の一覧にExtreme Tuning Utilityが出てこないようなので断念。もう一つの方法をトライ。

 最初に手順の1に従い、

C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe

が存在することを確認。これは問題なし。次に、手順2のXtuService.exeだが、これは上記のページに記載されている場所とは少し違う以下の場所で発見。

C:\Program Files\Intel\Intel(R) Extreme Tuning Utility\Drivers\XtuService.exe


 あとは管理者でコマンドプロンプトを開いて、これらを組み合わせたコマンドを実行。パスにスペースが含まれているのでダブルクォーテーションで囲むのと、忘れずに「/u」を付けておく。

C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe /u "C:\Program Files\Intel\Intel(R) Extreme Tuning Utility\Drivers\XtuService.exe"

すると上記のようなエラーが出てNG。



 やむを得ないので、手順3は飛ばしてExtreme Tuning Utilityをダウンロードして上書きインストールしてみることに。

www.intel.co.jp
 上記のサイトからXTUsetup.exeをダウンロードして実行。


 チェックボックスにチェックを入れてInstallを押す。アプリのインストールの許可を求められるので、許可するとインストールが始まる。


Restartをクリックして再起動・・・



 XtuServiceが見事に消えているではないですか。
 これでXtuServiceを退治するミッションは無事終了。
 私のパソコンに平和が戻ったようです。めでたしめでたし。


では、また

ハンディトラックボール(Relacon)のお勧め設定

 以前紹介したハンディトラックボール(Relacon)ですが、最近はもっぱらWindowsパソコンでのWebブラウジングに使っています。椅子の背もたれを倒して王様のようにくつろぎながら指先で指令を発して、32inch大型モニタでWebの世界を歩きまわってます。


 このような使い方をしている人がどの程度いるか定かではありませんが、いろいろ試行錯誤して導き出したRelaconの設定を紹介します。なお、以下の内容はgoogle Chromeの使用を前提にしています。他のブラウザを使用している方は、適宜キーアサインを変更してください。

 まずは、エレコムのページに行ってマウスアシスタント5をインストールします。

www.elecom.co.jp

 あとは、マウスアシスタント5の設定画面で次のように設定するだけです。



 「任意キー[***]」となっている個所は、ドロップダウンメニューで「任意キー」を選択してから次の画面で[ ]内に記載しているキーを設定します。

 この設定により、次のような操作体系になります。

Relacon操作 動 作
トラックボール マウスカーソルの移動
トリガーボタン(2個) 左クリック、右クリック
ジョグダイヤル スクロール
ジョグダイヤルの左右にあるボタン タブの移動
十字キーの中央ボタン フルスクリーン表示ON/OFF
十字キーの上ボタン 表示の拡大
十字キーの下ボタン 表示を100%に戻す
十字キーの左右ボタン ページの進む/ 戻る


 椅子をリクライニングさせると、32インチモニタでも文字が小さく感じられることがあるので、通常操作以外に全画面表示や画面拡大を十字キー周りにアサインしています。

 あとは、Chromeを立ち上げて椅子をリクライニングさせるだけで、Webの世界をゆったりと探訪できます。ぜひお試しあれ。


では、また

Stable DiffusionをWSL2で動かしてみる

何度か挑戦しては失敗しているStable DiffusionとWSL2の組み合わせ。鬼門じゃ~
今回はStable Diffusion WebUI Dockerで試してみました。
参考にしたのはこのページ。

note.com


実行環境は以下の通り。

項目 スペック
PC ASUS ROG Zephyrus M16
CPU Core i7-11800H, memory:16GB
GPU Nvidia RTX3070 Laptop, memory:8GB
OS Windows 11 Home 21H2

Ubuntu 20.04 LTS

参考ページの指示に従って、gitとDockerの環境を整えてから下記コマンドを実行。

$ git clone https://github.com/AbdBarho/stable-diffusion-webui-docker.git
$ cd stable-diffusion-webui-docker
$ docker compose --profile download up --build
$ docker compose --profile auto up --build

すると・・・

[+] Running 1/1
 ⠿ Container webui-docker-auto-1  Created                                                                                                                                            0.1s
Attaching to webui-docker-auto-1
webui-docker-auto-1  | + /docker/mount.sh
webui-docker-auto-1  | Mounted .cache
webui-docker-auto-1  | Mounted LDSR
webui-docker-auto-1  | Mounted GFPGAN
webui-docker-auto-1  | Mounted RealESRGAN
webui-docker-auto-1  | Mounted ScuNET
webui-docker-auto-1  | Mounted .cache
webui-docker-auto-1  | Mounted StableDiffusion
webui-docker-auto-1  | Mounted embeddings
webui-docker-auto-1  | Mounted ESRGAN
webui-docker-auto-1  | Mounted SwinIR
webui-docker-auto-1  | Mounted BSRGAN
webui-docker-auto-1  | Mounted Codeformer
webui-docker-auto-1  | + python3 -u ../../webui.py --listen --port 7860 --hide-ui-dir-config --ckpt-dir /stable-diffusion-webui/models/Stable-diffusion --allow-code --medvram
webui-docker-auto-1  | LatentDiffusion: Running in eps-prediction mode
webui-docker-auto-1  | DiffusionWrapper has 859.52 M params.
webui-docker-auto-1  | making attention of type 'vanilla' with 512 in_channels
webui-docker-auto-1  | Working with z of shape (1, 4, 32, 32) = 4096 dimensions.
webui-docker-auto-1  | making attention of type 'vanilla' with 512 in_channels
Downloading: 100%|██████████| 939k/939k [00:01<00:00, 901kB/s]
Downloading: 100%|██████████| 512k/512k [00:00<00:00, 565kB/s]
Downloading: 100%|██████████| 389/389 [00:00<00:00, 342kB/s]
Downloading: 100%|██████████| 905/905 [00:00<00:00, 743kB/s]
Downloading: 100%|██████████| 4.41k/4.41k [00:00<00:00, 4.27MB/s]
Downloading: 100%|██████████| 1.59G/1.59G [01:42<00:00, 16.7MB/s]
webui-docker-auto-1 exited with code 137

 3行目のdocker compose実行中にエラーコード137で落ちました(泣)。
原因を探ってみると、どうやらWSL2のメモリ不足のようです。
参考にしたのはこのページ

zenn.dev

 初期設定のままだと搭載メモリ(16GB)の半分の8GB が WSL2 に割り当てられるようですが、足りなかったようです。ユーザフォルダ(c:\User\ユーザ名)の直下に「.wslconfig」という名称のテキストファイルを作成して、メモリ割り当て量を12GBに増量しました。

[wsl2]
memory=12GB


これで動かしてみると、

中略
webui-docker-download-1  | Status Legend:
webui-docker-download-1  | (OK):download completed.
webui-docker-download-1  | Checking SHAs...
webui-docker-download-1  | /data/LDSR/project.yaml: OK
webui-docker-download-1  | /data/RealESRGAN/RealESRGAN_x4plus_anime_6B.pth: OK
webui-docker-download-1  | /data/RealESRGAN/RealESRGAN_x4plus.pth: OK
webui-docker-download-1  | /data/GFPGAN/GFPGANv1.4.pth: OK
webui-docker-download-1  | /data/LDSR/model.ckpt: OK
webui-docker-download-1  | /data/StableDiffusion/model.ckpt: OK
webui-docker-download-1 exited with code 0
ここまでが3行目の結果
webui-docker-auto-1  | LatentDiffusion: Running in eps-prediction mode
webui-docker-auto-1  | DiffusionWrapper has 859.52 M params.
webui-docker-auto-1  | making attention of type 'vanilla' with 512 in_channels
webui-docker-auto-1  | Working with z of shape (1, 4, 32, 32) = 4096 dimensions.
webui-docker-auto-1  | making attention of type 'vanilla' with 512 in_channels
webui-docker-auto-1  | Loading weights [7460a6fa] from /stable-diffusion-webui/models/Stable-diffusion/model.ckpt
webui-docker-auto-1  | Global Step: 470000
webui-docker-auto-1  | Model loaded.
webui-docker-auto-1  | Loaded a total of 0 textual inversion embeddings.
webui-docker-auto-1  | Running on local URL:  http://0.0.0.0:7860
webui-docker-auto-1  |
webui-docker-auto-1  | To create a public link, set `share=True` in `launch()`.


動きました!!

ブラウザで「http://localhost:7860/」を開けば、Stable Diffusion WebUIが表示されます。 私の場合「http://0.0.0.0:7860」ではアクセスできませんでした。


これで、Dockerを使えばWSL2でstable diffusionが動くようになりました。
次はDocker無しでも動かせるようになりたいものです。

では、また


Stable Diffusionでプロフィール画像を作る

Stable Diffusion web UIを設定する

 Stable Diffusionの周囲の流れは速いですね~。本当に速すぎます。
流れてくる情報についていくだけで一苦労です。
 そんな中、先日発表された「Stable Diffusion web UI」。本当にすごいです。

gigazine.net
 これまでの苦労は何だったの、というほどあっさりと簡単にインストールできます。
 私は、GoogleColabではなくローカルのPC(RTX3070搭載)で動かしたかったので、上記ページの「3.Windowsで動かす」を参考にインストールしました。
 pythonやCUDAのインストール作業は必要ですが、「conda 何とか」のようなコマンドをほとんど打つことなくセットアップできます。

 パラメータも、呪文のようなオプションを入力することなくGUIで設定できるなんて、夢のような環境です。ソースコードを読みながら内部をいろいろ触ってみたいという人でなければ一押しです。

プロフィール画像を作ってみる

 さて、今回は「Stable Diffusion web UI」のimg2imgを使って本ホームページのプロフィール画像を作ってみました。「個人を特定されることなく、あまり盛りすぎずに、見栄えの良いプロフィール画像」を目指してみます。

 上記ページ記載の手順でセットアップが完了すると、ブラウザにGUI画面が表示されます。今回は自分の顔写真を下絵として使用するので、画面最上部のタブから「img2img」を選びます。



 次に用意した顔写真を「ここに画像をドロップ」と書かれている部分にドラッグ&ドロップします。この画像をベースにStable Diffusionが絵心を加えてプロフィール画像を仕上げてくれることになります。

 画像を設定したら、この画像に加える絵心の内容を指定します。これは画面上部のprompt欄に英文で指定します。英文をすらすらと書ければよいのですが、今回もDeepL翻訳のお世話になりました。

www.deepl.com
 このページで日本語で絵心に相当する文章を入力して英訳します。ここでは、いろいろ試行錯誤が必要です。私は最終的には次のような文にしました

SNSのプロファイル画像に使用する輪郭線がはっきりと縁どられた近未来的でクールな男性の似顔絵のイラスト、おしゃれなメガネをかけている、サイバーパンク

英訳すると、

Illustration of a cool, futuristic male portrait with clearly framed outlines for use in social networking profile images, wearing fashionable glasses, cyberpunk

 prompt欄に入力する絵心に相当する文章は、この業界(?)では「呪文」と呼ばれています。「呪文」の書き方は深津さんをはじめいろいろな方が言及しているので調べてみると面白いかもしれません。

note.com
 なお、「男性」とか「メガネ」などの要素は写真を見ればわかるはずなのですが、ここで指定しないと女性やメガネ無しの顔も候補に出てきてしまうので、ここで念押ししてます。

 prompt欄に作成した英文をコピペしたら、あとはGUIで少しパラメータをいじっておきます。

Batch count
 一回の実行で生成する画像枚数。多くの候補を比較したかったので16にしました。枚数に比例して実行時間が伸びるので、遅い場合は小さめに。
Batch size
 並行して生成する画像枚数。GPUメモリが少ない環境でこれを増やすと動かないこともあるらしいので1のままにしました。
Denoising strength
 どれだけ元画像に手を加えるかを設定。大きいほど元画像に対して大きく手を加えます。いろいろ試した結果0.6にしました(盛り過ぎか?)。
WidthHeight
 生成する画像サイズ、Stable Diffusionは512x512に最適化されているという話もあるので、初期値のまま。
Seed
 乱数の種を指定。-1を設定するとランダムに設定。実際に使用された種の値は実行後に画面に右下に表示されます。気に入った画像が出来たら、その時の値を控えておくと便利です。基本的に同じ種の値を使用すればその時の画像に近い画像を再現できるはずです。

 設定が終わったら、右上のGenerateを押すと実行が開始されます。私のパソコン(RTX3070搭載)では、1分強/16画像程度でした。
 Seedを-1に設定した状態でpromptや設定を変えつつ何度か実行してみて、気に入った画像が出てきたらSeedを固定して微調整するのがよさそうです。
 また、画面右下にprompt等、画像の生成に使用された情報が表示されているので、気に入った絵が出来たら控えておくのがお勧めです。

Illustration of a cool, futuristic male portrait with clearly framed outlines for use in social networking profile images, wearing fashionable glasses, cyberpunk
Steps: 20, Sampler: Euler a, CFG scale: 7, Seed: 1336104913, Size: 512x512, Denoising strength: 0.6

 この情報が控えてあれば、あとから追加のパラメータ調整などをすることができます。

プロフィール画像完成!!

 画像が完成したので(上記のGUI画面の右側の画像です)、本ページのプロフィール画像に設定してみました。なかなか良い感じです。どれだけ盛られているかは、ご想像にお任せします。

 こんな絵を簡単に描けるようになるなんて、すごい世の中になったものですね。


では、また。