ブログをHugoで作り替えたので記事追加をテストしてみる

はじめに Geminiに聞きながらこのブログをHugoで作り替えました。 デザインも整えてもらって綺麗になりました。 今回は新しく記事を追加するテストを行います。 見出しテスト1 この見出しが1です。 見出し2.1 この見出しは2です。 見出し2.2 この見出しは2です。 見出し3.1 この見出しは3です。 見出し3.2 この見出しは3です。 見出し4.1 この見出しは4です。 見出し4.2 この見出しは4です。 箇条書きテスト テスト1 テスト2 テスト2 テスト1 テスト2 テスト3 テスト4 URLテスト YusukeKatoBlog 画像テスト おわりに 運用しやすくなってありがたいですね。 それでは、また。

作成日: 2026年3月5日 · Yusuke Kato

Meta Quest 2でVRChatをプレイしてみる

はじめに 友達からMetaのQuest 2を借りました。 VRChatはずっとデスクトップモードで遊んでいたので、 VRモードでも遊んでみたいと思います。 プレイ環境 使用するVR機器はMeta Quest 2です。 PCのスペックは下記の通りです。 OS:Windows 11 Home CPU:Intel i5-11400H メモリ:16GB グラボ:GeForce RTX 3050 Laptop GPU PCは有線LANで接続しているのでネットワークはそれなりに安定しています。 PCとQuest 2はUSBケーブル(純正ではない)で接続します。 ※先に書いておくと、このPCのスペックではグラフィック設定を最低にしてようやく遊べるくらいの性能のようです。 これからPCを購入する場合は参考にしないようにお気をつけください。 必要なもの 必要なソフトウェアは下記の通りです。 Meta Horizon Link:Quest 2をPCと接続するためのソフトです SteamVR:SteamのゲームをVR機器で遊ぶためのソフトです VRChat:Steam版VRChatを使用します 必要なアカウントは下記の通りです。 Metaアカウント:Quest 2とMeta Horizon Linkでログインするために使用します Steamアカウント:SteamでStemVRとVRChatをインストールするために使用します VRChatアカウント:VRChatをプレイするために使用します Meta Horizon Linkのインストール Meta公式サイトからMeta Horizon Linkをインストールします。 インストールできたらMetaアカウントでログインします。 アカウントがない場合は新規作成します。 Meta公式サイト SteamでSteamVRとVRChatをインストール SteamでSteamVRとVRChatをインストールします。 Steamをインストールしていない場合は公式サイトからインストールします。 Steamアカウントが無い場合は新規作成します。 Steam公式サイト Quest 2のセットアップ Quest 2を起動してMetaアカウントでログインします。 初回起動時はネットワーク設定をしたり、周囲環境を認識したりなど、セットアップが必要です。 PCとQuest 2の接続 PCとQuest 2の接続します。 まず、PC側でMeta Horizon Linkを起動しておきます。 一つ目の接続方法はUSBケーブルでPCとQuest 2を接続する方法です。 USBケーブルを接続するとMeta Horizon Linkで自動的に接続設定が始まると思います。 注意点としてUSB 3.0以上に対応しているケーブルを使わないと通信速度が足りないことがあるっぽいです。 ...

作成日: 2026年2月15日 · Yusuke Kato

シェル芸オンラインジャッジ:シェル芸実行用コンテナを常に待機させておく

はじめに シェル芸オンラインジャッジというウェブサイトを開発しています。 今回は実行結果が返ってくるまでに10秒程度かかっている問題に対応しました。 元々はシェル芸を受け付けてからDockerコンテナを起動していたのですが、 コンテナ起動に時間がかかっているようだったので、 シェル芸実行用コンテナを常に待機させておくことで応答速度の向上を目指しました。 シェル芸オンラインジャッジ 修正方法について シェル芸オンラインジャッジのソースコードを丸ごとGeminiに渡して、 具体的に修正方法を教えてもらっています。 コンテナ管理スクリプトを作成 GeminiにDockerコンテナを管理するスクリプトを書いてもらいました。 少し修正していますが、基本的にはGeminiの出力そのままです。 行数がそこそこあるのでリンクだけ貼ります。 backend/scripts/container_manager.py このスクリプトでは常にN個(現状N=3)のDockerコンテナを待機させる処理が書いてあります。 シェル芸実行用コンテナは使い捨てなので、 一度シェル芸を実行したコンテナは破棄して、 その分を補充します。 シェル芸実行スクリプトの修正 元々はシェル芸実行スクリプトでコンテナを作成していましたが、 container_manager.pyから起動中のコンテナを受け取って、 そのコンテナでユーザのシェル芸を実行するように修正しました。 backend/scripts/run_shellgei.py 応答速度が向上した ちゃんと計測はしていませんが、 元々はシェル芸の実行結果が返ってくるまで10秒程度かかっていました。 シェル芸実行用コンテナを常に待機させておくことで、 すぐに結果が返ってくるようになりました。 やはりコンテナの起動に時間がかかっていたようです。 おわりに 今回はシェル芸オンラインジャッジのパフォーマンス向上を目指して、 シェル芸実行用コンテナを常に待機させておくように変更しました。 すぐに実行結果が返ってくるようになってよかったです。 それでは、また。

作成日: 2026年2月2日 · Yusuke Kato

シェル芸オンラインジャッジ:システム全体をDockerコンテナ内で動かす

はじめに シェル芸オンラインジャッジというウェブサイトを開発しています。 今回はフロントエンドとバックエンドをDockerコンテナ内で動かすように変更しました。 nginxもコンテナ内で動かしています。 シェル芸オンラインジャッジ 修正方法について シェル芸オンラインジャッジのソースコードを丸ごとGeminiに渡して、 具体的に修正方法を聞いて修正しました。 今回はDockerfileやdocker-compose.yml、nginxのconfファイルなどについて教えてもらいました。 シェル芸オンラインジャッジのシステム構成図 Nano Banana Proに生成してもらった現状のシステム構成図です。 システム構成 Dockerfile Frontend 下記がフロントエンドのDockerfileです。 主にフロントエンド側のビルドとnginxの設定・起動を行っています。 問題データのファイルもコンテナ内にコピーしています。 # --- Build Stage --- FROM node:22 AS builder WORKDIR /app COPY frontend/package.json frontend/yarn.lock* ./ RUN yarn install --frozen-lockfile COPY frontend/ ./ RUN yarn build # --- Serve Stage --- FROM nginx:alpine # ビルド成果物をNginxの公開ディレクトリにコピー COPY --from=builder /app/build /usr/share/nginx/html # 問題データを公開ディレクトリにコピー COPY problems/ /usr/share/nginx/html/ # Nginx設定ファイルをコピー COPY frontend/nginx/default.conf /etc/nginx/conf.d/default.conf EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] nginxの設定ファイルはあらかじめ用意しておいてコンテナ内へコピーします。 一応80番ポートの設定を書いていますが、実際は443ポートだけ受け付けます。 ...

作成日: 2026年2月1日 · Yusuke Kato

Dockerコンテナのリソースの制限を設定【シェル芸オンラインジャッジ】

はじめに シェル芸オンラインジャッジというウェブサイトを開発しています。 今回はユーザが入力したコマンドを実行するDockerコンテナにメモリやCPUなどのリソースの制限を設定しました。 シェル芸オンラインジャッジ 設定内容 設定前 Pythonスクリプトからコンテナを実行しています。 元々はネットワークの制限だけ設定していました。 container = self.client.containers.run( self.image_id, detach=True, command="sleep 60", ipc_mode="none", network_mode="none", ) 設定後 メモリ、CPU、プロセス数、権限、データサイズの制限を設定しました。 container = self.client.containers.run( self.image_id, detach=True, command="sleep 60", ipc_mode="none", network_mode="none", mem_limit="512m", # メモリ制限 memswap_limit="512m", # スワップ制限 nano_cpus=500000000, # CPU使用率制限 (0.5 CPU) pids_limit=50, # 最大プロセス数制限 cap_drop=["ALL"], # 権限制限 tmpfs={"/media": "size=100M"}, ulimits=[ # fsize (file size): 1プロセスが作成できる最大ファイルサイズ(バイト単位) docker.types.Ulimit(name="fsize", soft=50000000, hard=50000000) ], ) 設定の動作確認 設定が正しく行われているか確認してみます。 ...

作成日: 2026年1月31日 · Yusuke Kato

Google AI Studioで自作のウェブサイトの改善点を教えてもらった

はじめに 私が運営しているシェル芸オンラインジャッジというウェブサイトはまだまだ改善点があります。自分で一つ一つ改善していくのももちろん良いですが、最近の生成AIは私よりもはるかに優秀なので改善してもらえるところはしてもらおうと思い立ちました。 シェル芸オンラインジャッジ 使ったもの Google AI Studio Geminiにリポジトリ丸ごと読み込んで改善点を教えてほしいとお願いしたら、Google AI Studioを使うといいよと教えてくれました。ということで使ってみます。 Google AI Studio Gitingest Google AI Studioにリポジトリを丸ごと渡そうと思ったのですが、 ファイル一つずつしか渡せなさそうだったので、 GitingestというサービスにGitHubリポジトリURLを入力することで、 一つのファイルにまとめてもらいました。 とても便利です。 Gitingest プロンプト Google AI Studioに下記のように入力しました。 プロンプトのセオリーはよく分かっておらず、 かなり雑なお願いの仕方ですが、 Google AI Studioはいい感じに改善案を列挙してくれました。 アップロードしたファイルは私が開発しているシェル芸オンラインジャッジというウェブサービスのソースコードです。react,fastapi,docker,nginxなどを使っています。ユーザがブラウザから入力したシェルのコマンドをサーバのdockerコンテナ上で実行して、実行結果をユーザへ返すサービスです。改善案を考えてほしいです。候補として、セキュリティ、システム構成、パフォーマンス向上、問題データの形式と扱い方(現状テキストファイルで保持、テキストファイルをそのまま取得している)、リファクタリングなどです。その他にも改善案があれば教えてほしいです。 改善案 Google AI Studioの出力をそのまま載せるととても長くなるので箇条書きしておきます。 セキュリティ コンテナ起動時にCPUやメモリなどのリソースの制限を設定したほうがよい コンテナ内でコマンドを実行するユーザ権限を変更したほうがよい コンテナ内でネットワーク遮断の設定をさらに強化したほうがよい パフォーマンス向上 ユーザからのリクエストをキューに入れて順番に実行したほうがよい コンテナの起動に時間がかかるのであらかじめ起動しておいて待機させておくとよい データベースを導入してログを管理したほうがよい 問題データの管理 JSON形式で問題データを管理してAPI経由で取得するとよい リファクタリング 本番環境とローカル環境でURLを手動で書き換えているが設定ファイルを別で用意したほうがよい App.tsxでStateを使い過ぎているので対応が必要 判定処理 画像比較は完全一致だと安定しないのでcompareコマンドなどで類似度を基準にしたほうがよい 文字列末尾の空白や改行の削除はrstrip()を使ったほうがよい その他 docker-composeでローカルの開発環境を起動できるとよい GitHub Actionsから直接デプロイできるとよい SNSへのシェア機能があるとユーザ同士の交流が増えてよい この後 さらに詳しく修正案を聞いて修正していこうと思います。 おわりに 今回はシェル芸オンラインジャッジの改善案をGoogle AI Studioに聞いてみました。 たくさん改善案を出してもらえたので対応していきたいと思います。 便利な世の中になりましたね。 それでは、また。

作成日: 2026年1月30日 · Yusuke Kato

読書日記:山崎ナオコーラ『人のセックスを笑うな』(河出文庫)

はじめに 山崎ナオコーラの『人のセックスを笑うな』を読みました。 2004年に文藝賞を受賞してデビュー作となった作品とのことです。 久しぶりにちゃんと小説を読んだのですが、 「やっぱり小説っておもしろいな」と実感できました。 感想を記録として残しておきます。 人のセックスを笑うな 下記リンクが公式サイトです。 河出書房新社 - 人のセックスを笑うな 感想 本作品は、美術の専門学校に通う19歳の主人公・磯貝と、 その学校で講師をやっている39歳のユリとの恋愛を描いた小説です。 主人公の視点を通してリアルな恋愛が淡々と描かれていて、 一つの人生を体験できたような感覚があります。 磯貝とユリの関係性は世間的に歪んでいるわけですが、 本作品ではそこを主題にしているわけでなく、 あくまで磯貝とユリの関係を一つの恋愛の形として、その始まりから終わりまでを語っています。 解説でも説明されていますが、 本作品では主人公が何か大きな葛藤を抱えていてそれを乗り越えるところを描いているわけでもなく、 作品全体を通して恋愛についてのテーマに対して答えを示そうとしているわけでもなく、 ただひたすらに二人の人間のリアルな恋愛を描こうとしていると思います。 そして、ハッピーエンドやバッドエンドなどの明確な終わり方をするわけではないところや、 聖人のような良い人や地獄のような嫌な人が出てくるわけでもないところもリアルさがあります(友人の堂本はかなりいい奴です)。 リアルさがあればあるほどおもしろいということではないですが、 フィクションの中にリアルさを詰め込むというのはとても難しいことで、 そもそもやろうとしてできることではないと思います。 フィクションだけどもしそういう世界があったらこういうことが起きるとか、 人間はこういう考えをしてこういう行動をとるとかを具体的に描けるのかどうかが作品を作る上での一つ重要なところになって、おもしろさに繋がると思っています。 主人公の心の動きやユリの言動などがフィクションでありながらリアルさも併せ持っているところが本作品のおもしろさなのかと思いました。 良い作品でした。 おわりに 今回は山崎ナオコーラの『人のセックスを笑うな』を読みました。 久しぶりに小説を読んでとても楽しめたので良かったです。 小説に限らずですが本はたくさん読んでいきたいですね。 それでは、また。

作成日: 2026年1月27日 · Yusuke Kato

【VRChat】UnityとBlenderでアバターのパーツを作る

はじめに 今回はVRChatのアバターの手を既存モデルをベースに自作してみようと思います。 使用ソフトはもちろんBlenderです。 モデリングは、Blenderをほんの少し触ったことがあるのと、 あとはCADソフトを少し触ったことがあるくらいの初心者です。 分からないことがたくさんあるのでインターネットで調べたりGeminiに聞いたりしながら作業を進めました。 結果としてひとまずVRChat上で動く状態までできました。 この記事では作成手順を記録していきます。 GIF画像↓ 手の動作確認 YouTube↓ ## 開発環境 開発環境は下記の通りです。 バージョンが異なると同じように動かない場合があります。 Windows 11 Blender 5.0 Unity 2022.3.22f1 VRChat SDK 3.10.1 使用アバター アバターはニコニコのアリシア・ソリッドの3Dモデルを使用しています。 アリシア・ソリッド公式サイト VRChatで使用する方法は下記の記事にまとめています。 公開されているVRMモデルをVRChatで動かす Blenderをインストール オープンソースの3DモデリングソフトであるBlenderをインストールします。 Blenderの公式サイト Blenderにアバターのモデルデータをインポート 追記:最初はFBX形式のモデルをインポートしましたが、ボーン(アーマチュア)が正しく読み込めなかったので、VRM形式のモデルをインポートしました。 VRM形式のモデルは後述するアドオンを入れることでインポートできます。 アリシア・ソリッドの3DモデルはFBX形式(本当はVRM形式)のファイルで取得できたので、 Blenderを開いてからファイル > インポート > FBXを選択して読み込みます。 インポート インポートに成功するとBlender画面上にアバターのモデルが表示されます。 モデルをインポート 手のパーツだけモデルから切り分ける アリシア・ソリッドの3Dモデルは身体全体が一つのオブジェクトになっているので、自作する手の部分だけ切り分けます。 まず体の部分をクリックして選択してTABキーを押して編集モードに切り替えます。 すると下記の画像のようにメッシュ(三角形の網目)が確認できます。 メッシュ 次に手のメッシュの頂点をどれか一つクリックして選択してからLキーを押すと手の部分全体を選択できます。 オブジェクトとしては身体全体がひとまとまりになっていますが、 メッシュとしては各パーツでちゃんと分かれているようです。 手全体を選択 次にPキーを押すと「分離」ウィンドウが表示されるので「選択」をクリックして選択した手のパーツを体全体から分離します。 分離 分離が成功すると画面右上のオブジェクトの一覧に元々あった体全体の「body」から手のパーツが「body.001」という名前で分離していることが確認できます。 ...

作成日: 2026年1月11日 · Yusuke Kato

ELDEN RING BLOG 10: DLCをクリアしました!

はじめに 概要 2022年2月25日に発売されたフロムソフトウェアの『ELDEN RING』(以下、エルデンリング)を今更ながら初見でプレイしています。 今回でようやくDLCのラスボス、ラダーンとミケラを倒せました。 これでひとまずエルデンリングのブログも最終回です。 ELDEN RING 公式サイト 下記が今作の公式サイトのリンクです。 ELDEN RINGの公式サイト 前回の記事 2025年9月28日の日記です。 ELDEN RING BLOG 9: DLCに挑戦した 注意事項 まだELDEN RINGをプレイしていない方は、ネタバレになってしまうのでご注意ください。 本日の冒険の記録 ラダーンとミケラ 一年ぶりくらいにラダーンとミケラに再開しました。 ラダーンとミケラ 約束の王ラダーンを倒した ようやくラダーンとミケラを倒しました。 本当はずっと愛用していた巨人砕きで倒したかったのですが、 そのままずっと倒せず放置してしまっていたので、 今回は攻略サイトを見て血の蟻棘のレイピアと指紋石の盾で倒しました。 下記の攻略サイトを参考にさせていただきました。 GameWith - 【エルデンリング】約束の王ラダーンの攻略とNPC召喚方法|ラスボス【DLC】 出血や腐敗ダメージを狙っていくとよいとのことでしたが、 単純に盾構えながらチクチク攻撃できるので、 ラダーンの攻撃を避ける必要もなくあっさり倒せました。 ちなみに私は180レベルまで上げていて、 筋力と技量を50~60まで上げられて(レラナのところでステータスを振り直しました)、 ダメージの通りがかなりよかったです。 ラダーン倒した ダークソウルの頃から筋力上げてデカい武器で戦ってきましたが、 もっといろいろな戦い方で遊んでも楽しそうだなと思ってきています。 ミケラの回想 ラダーンを倒した後、光に触れるとミケラの回想が見れました。 ミケラはラダーンこそが王だと信じていたという感じですよね。 久しぶり過ぎてストーリーがあまり記憶にないですが、 ミケラとラダーン、あとはマレニアは複雑な関係そうです。 ミケラの回想1 ミケラは男性だと思っていましたが、見た目はかなり女性です。 そもそも神的な存在なので性別は関係ないのかもしれません。 マリカとラダゴンも見た目は女性と男性になっていたのでそうなのだと思います。 ミケラの回想2 最後の写真 ということで本編とDLCをクリアした姿です。 ラダーンの防具がお気に入りです。 クリア ...

作成日: 2026年1月10日 · Yusuke Kato

我が家のインコ「れもん&ぽぽ&ぐぐ&さん」の日記24 : 2026年もよろしくお願いします

新年のご挨拶 2026年もよろしくお願いいたします。 短いですが挨拶だけ書かせていただきます(ブログのテストも兼ねて)。 れもんのごはん中の写真↓ ごはんを食べるれもん

作成日: 2026年1月4日 · Yusuke Kato