Haji Papa's Bits & Bytes

Haji Papa's Bits & Bytes

An IT leader, business manager, and anime-loving dad of three, documenting my journey in tech, work, and language learning.

OpenAI Codexで簡単なWebアプリを作成してみる
AI

OpenAI Codexで簡単なWebアプリを作成してみる

概要 今回は ChatGPT5 Codex を使って、コードを書かずに Web アプリを作成してみたいと思います。 テーマは、娘が高校受験を控えているので、英単語クイズアプリにしました。 勉強に役立ててもらえたらうれしいです。 手順 (1) VSCodeに「Codex - OpenAI's coding agent」拡張をインストールします。 (2) Next.jsを使うことにしたので、環境を整えます。 $ nvm install --lts $ nvm use --lts Now using node v22.19.0 (npm v10.9.3) $ node -v v22.19.0 $ npm -v
4 min read
「(それらを)持っていく」を英語で言うと? 〜 them over 【Langaku+】
English

「(それらを)持っていく」を英語で言うと? 〜 them over 【Langaku+】

「(それらを)持っていく」を英語で言うと? ・ ・ ・ ・ ・ "bring ... over" は、相手のいる場所に向かって、何かを持っていく/持ってくるという意味です。 bringには、話し手がいる場所に「持ってくる」という意味で、 overには、場所を超えて相手の場所にやってくるという方向性を加える語です。 したがって、話し手(少年)や聞き手が、その場にいることが前提となります。 「bring over」と「take over」の違い * bring over:話し手や聞き手がいる「こちら側」に持ってくる 例:I'll bring it over to your house.(君の家に持って行ってあげるね) * take over:話し手がいる場所以外の「どこか」に持って行く 例:
1 min read
【SQL】CASE式まとめ 01
IT

【SQL】CASE式まとめ 01

前提 * 「達人に学ぶSQL徹底指南書 第2版 ミック著 翔泳社」を自分用にまとめたものです。 * 使用するデータは、MySQL公式のemployeesのデータを使用しています。 【SQL】MySQL(MariaDB)を使ったSQL学習用のサンプルデータベースの準備 CASE式概要 * CASE式を使いこなせるかが、初級者と中級者の分かれ目 * CASE式はある列の値を別の値に読み替えているだけ * 他のSQLツール(集約関数等)と組み合わせることで威力を発揮する * やっかいなバグを防ぐために、ELSE句を必ず書く(ELSE句を省略するとELSE NULL扱いとなる) CASE式の演習 演習1:単純CASE式と検索CASE式 課題:employeesテーブルを使って下記のデータを表示してください。 * 表示データ * emp_no * first_name * last_name * gender Mは「Mail」、Fは「Femail」とCASE式を使って表示 解答:CASE
4 min read
【SQL】MySQL(MariaDB)を使ったSQL学習用のサンプルデータベースの準備
IT

【SQL】MySQL(MariaDB)を使ったSQL学習用のサンプルデータベースの準備

概要 SQLの学習に際して最初に困るのが、サンプルデータの準備ではないでしょうか。 ここでは、MySQLが公式で準備している「Employees」のサンプルデータベースの導入方法を取り上げます。 「Employees」は6つのテーブルからなり、合計約400万レコードにも及ぶ大きなサンプルです。 従業員、部署、部署所属履歴などを含み、実際の業務構造に近いデータを使って、大規模データの扱いや複雑なJOINの学習も行うことが可能です。 テーブル構造については、下記のサイトを参照してください。 https://www3.ntu.edu.sg/home/ehchua/programming/sql/SampleDatabases.html 導入手順 1. MariaDBの準備 $ sudo apt update $ sudo apt install mariadb-client mariadb-server -y 2. サンプルデータの入手 MySQL公式のGitHubからダウンロードします。 https://github.com/datacharme
2 min read
「(今すぐ)やります!」「任せて!」を英語で言うと?  I'm 〜 【Langaku+】
English

「(今すぐ)やります!」「任せて!」を英語で言うと?  I'm 〜 【Langaku+】

お母さんが香帆ちゃんにデリバリーを依頼して、それに香帆ちゃんが喜んで注文しているところです。 「了解〜(任せて)!」を英語で言うと? ・ ・ ・ ・ ・ "I'm on it!" はネイティブがよく使う口語表現で、 「(今すぐ)やります!」「任せて!」という意味です。 直訳すると「私はそれの上にいる」ですが、比喩的に「その仕事に取り掛かっている/取り掛かる」というニュアンスです。 ■ I'm on it! を使った他のセリフ There's a problem with the server! I'm on it! (サーバーに問題がある!) (今すぐ対応する!) Can you send this email?
1 min read
「(獲物を)手放す」を英語で言うと? 〜 of 【Langaku+】
English

「(獲物を)手放す」を英語で言うと? 〜 of 【Langaku+】

香帆ちゃんがペンギンの歯を見て、驚いているところです。 「(獲物を)手放す」を英語で言うと? ・ ・ ・ ・ ・ "let go of" は、 「~を放す」「~を手放す」という意味です。 この場合は "never let go of its prey" なので、 「獲物を決して放さない」という意味になります。 ※ prey: 獲物 ■ let go of を使った他のセリフ Never let go of your dreams.(夢を絶対に諦めるな) You need to let go of the past and move on.
1 min read
ChatGPTのエージェントだけでWebアプリを作成する
IT

ChatGPTのエージェントだけでWebアプリを作成する

数日前に、私の環境でもChatGPTのエージェントが使えるようになったので、早速試してみました。 エージェントへの切り替え ChatGPTのテキスト入力欄の[ツール]から「エージェントモード」を選択します。 今回は「情報源」として「ウェブ検索」を選択しました。 プロンプト プロンプトには、下記を入力して実行してみます。 Ubuntu24.04上で下記の要件のアプリケーションを作成したい。 - Git Hub上にあるDockerイメージを利用 - ITセキュリティに関連する書籍の情報を入力・更新・削除できるWebアプリケーションを作成 - プログラミング言語はPythonを使用 - Pythonとデータベースとのやり取りはORMを使用 - フレームワークを使用してもよい。 応答 約4分後に下記が出力されました。 承知しました。Ubuntu 24.04環境で、GitHub上のDockerイメージを利用し、ITセキュリティ関連書籍をCRUD操作できるPython Webアプリケーションを構築します。ORMを使用してデータベースとのやり取り
5 min read
【MCP】Ollama+Open WebUI+MCPO環境でMCPを試す
IT

【MCP】Ollama+Open WebUI+MCPO環境でMCPを試す

1. はじめに 最近のニュースで、MCPに関する記事が増えてきました。 MCPというと、私はMicrosoft Certified Professional のことだと思ってしまいます ^^; が、 ここでのMCPは、Module Context Protocolの略で、LLMが「外部のツール」と安全・柔軟につながるための標準プロトコルのことを指します。 2. MCPの利用例 たとえば、LLMに次のような依頼をしたとします。 「このページの内容を読んで要約して」 普通のLLMはWebにアクセスできないので何もできませんが、MCP対応のモデルなら * 「fetch」ツールを呼び出してWebページを取得 * その結果を元にLLMが要約 というように、ツールを"使って"推論できるようになります。 3. MCPの登場背景 もともとOpenAIやAnthropic、Googleなどは「Tool Use」という仕組みを独自に実装していました。 でも、それぞれやり方
4 min read
【セキュリティ】パスキー(passkey)について
IT

【セキュリティ】パスキー(passkey)について

最近、Googleから「パスワードではなくパスキー(passkey)を利用してください」というメッセージが届きました。 パスキーは近年注目を集めている認証技術の一つです。そこで今回は、パスキーはパスワードと何が違うのか? そして、どのような仕組みで安全性を実現しているのか?について、分かりやすく解説します。 ■ 概要 パスキー(passkey)は、FIDO2標準に基づいた新しいパスワードレス認証方式です。GoogleやApple、Microsoftなどが推進しており、ユーザーがパスワードを覚えずに安全にログインできる仕組みです。 FIDO2標準について FIDO2(ファイド・ツー)標準とは、パスワードの代わりに、より安全で簡単なログイン方法を提供するための国際的な標準です。 FIDO2を構成する技術 技術名 内容 WebAuthn ブラウザやWebサイトがFIDO認証を使うための「仕組み」 CTAP(シータップ) パソコンやスマホがセキュリティキーなどの「認証デバイス」とやりとりするための規格 FIDO2の利用方法 * F
2 min read
【Python】デコレータ(Decorator)って何だろう?
Programming

【Python】デコレータ(Decorator)って何だろう?

■ 概要 デコレータは、前回の記事で取り上げたクロージャーの応用形です。 関数に機能を追加するための「関数」のことで、元の関数には手を加えずに、前後に処理を追加したり、ログを取ったりできます。 Pythonでは、@記法 を使って簡潔にデコレータを適用できます。 まずは、デコレータの前に高階関数を取り上げます。 ■ 高階関数 高階関数とは? 高階関数は、「関数を引数に取る」または「関数を返す」関数のことを言います。 Pythonは関数もオブジェクトなので、変数と同様に渡したり返したりできます。 高階関数には、下記のいずれか、または両方の特徴を満たします。 条件 例 関数を引数に取る map(), filter(), sorted(..., key=...) 関数を返す クロージャー、デコレータなど 高階関数の具体例1:関数を引数に取る関数 def shout(text): return text.upper() def whisper(text): return text.lower(
3 min read
【Python】クロージャーって何だろう?
Programming

【Python】クロージャーって何だろう?

■ 概要 クロージャーとは、関数の中で定義された関数が、外側の関数の変数を「記憶」して使う仕組みで、デコレータやコールバック関数の基礎として重要です。 ■ 具体例1 def make_multiplier(factor): def multiplier(x): return x * factor return multiplier times3 = make_multiplier(3) times5 = make_multiplier(5) print(times3(10)) # 30 print(times5(10)) # 50 ■ 解説 * make_multiplier関数の中で、multiplier関数を定義し、それをreturnで返しています。 * multiplier関数は、factorという外側の変数を使っています。 * factorはmake_multiplier関数の実行時に値が決定し、その値を覚えたままmultiplier関数が実行されています。つまり、times3は、make_multiplie
1 min read
【Python】非同期処理(asyncio, aiohttp)を理解する
Programming

【Python】非同期処理(asyncio, aiohttp)を理解する

1. Pythonの非同期処理とは Pythonの非同期処理とは、時間のかかる処理を待っている間に、他の処理を先に進めるプログラミングの方法です。待ち時間がある処理を効率よく進めるときに特に効果を発揮します。 たとえば、次のような場合に、非同期処理を使うと効果を発揮します。 (1) Web APIの並列呼び出し 例:天気情報APIや路線情報API等に同時にリクエストを送りたいとき。 ・APIの応答を待っている間は、CPUをほとんど使わないので、他のリクエスト処理ができる。 ・非同期でリクエストするときは、requestsの代わりにaiohttpを使う。 (2) チャットアプリやWebSocket通信(リアルタイム処理) 例:Webチャット、オンラインゲームなどで、常時接続しながらメッセージの送受信を行う。 ・接続は維持しつつ、メッセージが来るのを「待つ」必要があり、同期処理だと待っている間、他のことができなくなる。 (3) ファイルやデータベースへの非同期アクセス 例:数千件のログファイルを読み込みながら、バックグラウンドで解析・保存する。
4 min read
【Oracle Linux】GhostのDockerへの移行
IT

【Oracle Linux】GhostのDockerへの移行

■概要 Ghostをアップデートしたところ、Oracle Linux 8に入っている画像処理のライブラリが、Armベースに対応していないとエラー表示されてしまいました。 そこで、DockerhubにARM対応のGhostイメージがあったので、そちらに移行することにしました。 ■環境 Armベースのインスタンス Oracle Linux 8 nginx MariaDB ■作業手順 1. 現在のGhostのバックアップ Ubuntu環境ではないため、ghost backupが正常に終了しないので、手動でバックアップします。 # ($…の部分は自分の環境に合わせてください) # DBのバックアップ $ mysqldump -u "$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" > "$BACKUP_DIR/db-$DATE.sql" # Ghostのコンテンツフォルダ(/var/
2 min read
【LoRA】少ないデータで、AIモデルをチューニングする
IT

【LoRA】少ないデータで、AIモデルをチューニングする

概要 今回は、画像生成モデルStable Diffusionを使って、当ブログの英語の記事で登場するEmiさんのイラストが簡単に生成できるようにしたいと思います。 そのために、LoRAという技術を使います。 LoRA(Low-Rank Adaptation)とは、AIモデルのファインチューニングを効率的に行うための技術です。特に大規模言語モデル(LLM)や画像生成AIの微調整に用いられ、少ない計算資源で高品質なカスタマイズを可能にします。 LoRAは、モデルの重みを直接変更するのではなく、低ランクの行列を挿入して学習することで、従来のファインチューニングよりも少ない計算コストで高い性能を維持できます。 🧠 LoRAの数学的な挿入位置 元の重み W を以下のように拡張します: W' = W + α * (BA) A:低ランクの行列(学習する) B:低ランクの行列(学習する) α:スケーリング係数(学習時や推論時に設定) この BA 部分だけが学習され、元の W は固定のままです。     📌 実行時(推論時)の仕組み LoRAで生成
7 min read
【Python】英会話トレーニングアプリを作ってみよう
Programming

【Python】英会話トレーニングアプリを作ってみよう

AIが発達したおかげで、比較的簡単に英会話の練習ができるアプリを自分で作ることができるようになりました。 今回は、 (1) 日本語で話すと、自然なアメリカ英会話に翻訳して英語で話し、 (2) 英語で話すと、アメリカ英会話として不自然だったり誤っていた場合は、英語を訂正してくれて、さらに、話の続きを英会話として返答してくれる アプリを作ってみました。 1. システム構成 1. 音声入力(ASR) * Enterキーを押した後に、マイクから音声をキャプチャ。 Enterキーを再度押すまで音声を記録。 * OpenAI Whisper(API / ローカルモデル)で文字起こし 2. 言語判定 & 処理 * 文字起こし結果の言語を判定(Whisper が返す language を使用) * 日本語 → ChatGPT API に「自然なアメリカ英会話に翻訳して」もらう * 英 語 → ChatGPT API に「不自然なら訂正し、流れに合う英会話として返答して」もらう 3.
6 min read
DockerでOpen WebUI+Ollama環境を簡単構築!
IT

DockerでOpen WebUI+Ollama環境を簡単構築!

LLMを手軽に使う方法とGPUトラブル対処法 1. はじめに ローカル環境で大規模言語モデル(LLM)を試したいけれど、難しそう…と思っていませんか? 今回は、Docker を使って、話題の Open WebUI と Ollama を簡単に構築し、手軽にLLMを使える環境を作る方法をご紹介します。 さらに、私が実際にハマった「GPUが認識されない問題」とその対処法も【補足】としてまとめました! 2. Open WebUI+Ollamaとは? * Ollama:ローカルでLLMを動かせるエンジン。各種モデル(例:Gemma、Llama3など)を簡単に利用可能。 * Open WebUI:Ollamaをブラウザから操作できる便利なフロントエンド。 この2つを組み合わせることで、まるでChatGPTのようにローカル環境でLLMが扱えるようになります! 3. Dockerを使った構築手順 ① 必要環境 * Docker & Docker Compose v2 がインストール済みであること ② docker-compose.
3 min read
【セキュリティ】プレースホルダでSQLインジェクションを防ぐ
IT

【セキュリティ】プレースホルダでSQLインジェクションを防ぐ

前回までで、SQLインジェクションとOSコマンドインジェクションの実験を行いました。 今回は、プレースホルダという機能を使って、PHPコードをSQLインジェクションができない安全なコードにしていきたいと思います。 次のコードは、前回まで使用していたsectest.phpの内容です。 <?php $servername = "localhost"; $username = "sectest"; // DB sectestにアクセスするユーザー $password = "sectestpass"; $dbname = "sectest"; $conn = new mysqli($servername, $username, $password, $dbname); // エラー確認 if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error)
3 min read
【セキュリティ】SQLインジェクションを通じてOSコマンドインジェクションをしてみる
IT

【セキュリティ】SQLインジェクションを通じてOSコマンドインジェクションをしてみる

前回の【セキュリティ】SQLインジェクションを実験してみるで作成したWebサイトを使って、OSコマンドインジェクションを試みたいと思います。 1. 脆弱性の設定 まずは、脆弱性を作ります。 DBの脆弱性の設定 DBのユーザーsectestにFILE権限を付与しておきます。 DBの管理者権限で下記を実行します。 MariaDB [(none)]> GRANT FILE ON . TO 'sectest'@'localhost'; Query OK, 0 rows affected (0.007 sec) MariaDB [(none)]> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.001 sec) ディレクトリの脆弱性の設定 MariaDBからファイルの作成が可能な/var/www/html/
2 min read
【セキュリティ】SQLインジェクションを実験してみる
IT

【セキュリティ】SQLインジェクションを実験してみる

今回は、IPA(情報処理推進機構)の「安全なウェブサイトの作り方」のはじめに登場するSQLインジェクションについて、実際にWEBサイトを構築して実験してみたいと思います。 1. DBの作成 まずは、Webページからアクセス可能なデータベースsectestを作成します。 今回はMariaDBを使用しています。 MariaDB [(none)]> create database if not exists sectest; //DB sectestを作成 Query OK, 1 row affected (0.000 sec) MariaDB [(none)]> use sectest; //DB sectestを選択 Database changed MariaDB [sectest]> create table users ( -> id int
3 min read
PythonからOllama APIを使って、文章を要約する
Programming

PythonからOllama APIを使って、文章を要約する

前回「Ollama APIを使用してみる」で、Ollama APIを試してみました。 今回は、PythonとOllama APIを使って、PDFファイルの要約をGemma3にしてもらおうと思います。 春期の情報処理試験も近いですので、それに関連するPDFの要約を作成してみましょう。 必要なライブラリのインストール pip install aiohttp PyMuPDF import fitzとあるのでpip install fitzとしがちですが、pip install PyMuPDFです。 Pythonコード(ファイル名: summarize_pdf_ollama.py) import asyncio import aiohttp import fitz # pip install fitzではなく、pip install PyMuPDF import sys import os import time import json
5 min read
Ollama APIを使用してみる
IT

Ollama APIを使用してみる

前回掲載した「Ollamaを使ってGemma3を動かしてみる」の続きで、今回はOllamaをAPI経由で使ってみたいと思います。 下記のサイトに従って、さっそくAPI経由でGemma3を使ってみましょう。 ollama/docs/api.md at main · ollama/ollamaGet up and running with Llama 3.3, DeepSeek-R1, Phi-4, Gemma 3, and other large language models. - ollama/ollamaGitHubollama 「なぜ空は青いの?」というプロンプトを投げてみます。 $ curl http://localhost:11434/api/generate -d '{"model": "gemma3:4b"
2 min read
Let's use Ollama
IT

Ollamaを使ってGemma3を動かしてみる

Ollamaとは Ollama は、ローカル環境で大規模言語モデル(LLM)を簡単に実行できるようにするオープンソースのソフトウェアです。 いま話題のDeepSeek、Phi-4、Gemma3 などの人気のある LLM を手軽にダウンロードして、実行できます。 Ollamaのインストール 下記のサイト(https://ollama.com)にアクセスし、Downloadボタンをクリックします。 OllamaGet up and running with large language models. リンク先の画面に、OSごとにインストールの仕方が表示されているので、その支持に従ってください。 curl -fsSL https://ollama.com/install.sh | sh $ curl -fsSL https://ollama.com/install.sh | sh >>>
3 min read
【Termux+Python】Pydanticを導入してみた
Programming

【Termux+Python】Pydanticを導入してみた

Pydantic は、Python用のデータバリデーションおよびデータモデルライブラリです。Pythonの型ヒント (type hints) を活用して、データのバリデーションや変換を自動で行います。 Pydanticを導入することにより、下記の利点があります。 * バリデーションの自動化型ヒントを使うだけで、詳細なバリデーション処理を簡単に定義できる。 * 可読性の向上データモデルが明確になり、コードの可読性が高まる。 * エラー対応が楽になるバリデーションエラーが詳細に表示され、デバッグしやすい。 * API開発が効率化FastAPIなどと組み合わせると、エンドポイントのパラメータバリデーションやスキーマ生成が簡単。 * 型変換が便利データベースや外部APIから取得したデータの変換が容易。 Pydanticの導入方法 1. Rustをインストールする pydantic v2は高速化のために一部をRustで実装しており、デフォルトでビルド時にRustコンパイラを要求します。したがって、Pydanticをインストールする前にRustを導入します。 $ pkg u
2 min read