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.

Javaのラムダ式をやさしく理解する
IT

Javaのラムダ式をやさしく理解する

Javaのラムダ式は、1つのメソッドだけを持つインターフェース を短く書くための構文です。 とくに Stream API、Comparator、Runnable、イベント処理などで頻繁に使われます。 この記事では、Javaのラムダ式について次の流れで整理します。 1. ラムダ式とは何か 2. 実務でよく使うパターン 3. Runnable の意味と使いどころ 4. compare(a.length(), b.length()) が昇順になる理由 5. 身についたか確認するためのテスト ラムダ式とは まずは、無名クラスとの違いを見るとイメージしやすいです。 無名クラスで Runnable を書くと次のようになります。 Runnable r = new Runnable() { @Override public void run() { System.out.println("Hello"); } }; これをラムダ式で書くと、次のように短くできます。 Runnable
6 min read
AI利用で注意すべき3つの問題を「問題形式」で理解する
IT

AI利用で注意すべき3つの問題を「問題形式」で理解する

近年、生成AIをはじめとするAIの利用が急速に広がっています。 一方で、便利だからといって無条件に活用すると、思わぬリスクを招くことがあります。 応用情報処理試験でも、AIそのものの仕組みだけでなく、AI利用に伴う問題点や統制の考え方が問われやすくなっています。 この記事では、AI利用に関する代表的な問題として次の3つを取り上げます。 * ハルシネーション * 情報漏えい・プライバシー侵害 * バイアスと公平性 それぞれについて、問題 → 解答 → 解説の流れで確認していきましょう。 1. ハルシネーション 生成AIに関する代表的な問題の一つが、ハルシネーションです。 これは、AIが事実ではない内容を、もっともらしく出力してしまう現象を指します。 たとえば、存在しない規程や誤った手続を、あたかも正しい情報であるかのように回答してしまうことがあります。 問題1 ある企業では、生成AIを利用して社内FAQの回答案を自動作成している。 運用開始後、AIが実在しない社内規程や誤った手続を回答に含める事例が発生した。 この問題に関する記述として、最も適切なものを選べ
4 min read
ngrokとは? 役割とUbuntu 24.04でのインストール・使い方を解説
IT

ngrokとは? 役割とUbuntu 24.04でのインストール・使い方を解説

ローカルで動かしているWebアプリやAPIを、外部から一時的に見られるようにしたいことがあります。 たとえば、Ubuntu上で開発中のアプリをスマホから確認したい場合や、Webhookの受信テストをしたい場合です。 そのようなときに便利なのが ngrok です。 この記事では、ngrokの役割、Ubuntu 24.04でのインストール方法、基本的な使い方を、初心者にもわかりやすいように整理して解説します。 ngrokとは何か ngrokは、ローカルPCやサーバーで動いているサービスを、インターネット越しに一時公開するためのツールです。 たとえば、Ubuntuで localhost:8000 で動かしているアプリがあるとします。 通常、このアプリはそのマシン自身からしかアクセスできません。 しかし、ngrokを使うと、次のような公開URLが発行されます。 https://xxxxxxx.ngrok-free.dev .devの部分は、アカウント登録時の使用用途の設定によって、.appとなることもあります。 このURLへアクセスすると、ngro
4 min read
Nextcloudを高速化するOPcacheとAPCuの違いをわかりやすく解説
IT

Nextcloudを高速化するOPcacheとAPCuの違いをわかりやすく解説

Nextcloud の管理画面を見ていると、PHP の OPcache や APCu に関する警告が表示されることがあります。 たとえば次のような内容です。 * OPcache の interned_strings_buffer が不足している * メモリキャッシュが設定されていない * APCu が有効ではない このあたりは「名前は聞いたことがあるけれど、何が違うのかわかりにくい」と感じやすいポイントです。 この記事では、Nextcloud を快適に動かすうえで重要な OPcache と APCu の違いを、初心者にもわかりやすく整理します。 OPcacheとは? OPcache は、PHPコードそのものを高速化する仕組みです。 通常 PHP は、アクセスのたびに以下を繰り返します。 ① PHPファイルを読み込む ② コードを解析する ③ 実行用バイトコードに変換する ④ 実行する この「②と③」が毎回発生すると、CPU に負荷がかかります。 そこで OPcache を使うと、
2 min read
TrivyでNextcloudの脆弱性を可視化してみた(Ubuntu 24.04環境)
IT

TrivyでNextcloudの脆弱性を可視化してみた(Ubuntu 24.04環境)

はじめに 自宅サーバーで運用しているNextcloudについて、 「最新版にしているけど本当に安全なのか?」 という疑問から、SBOMツールを使った脆弱性チェックを行ってみました。 今回は以下の構成を対象としています。 * OS:Ubuntu 24.04 * アプリ:Nextcloud Hub 26(33.0.0) * 対象範囲:/var/www/nextcloud なぜTrivyを使うのか 脆弱性スキャンツールはいくつかありますが、今回は Trivyを選択しました。 理由は以下の通りです。 * SBOM生成と脆弱性スキャンを1ツールで実現できる * OS / アプリ / コンテナまで幅広く対応 * CLIベースで自動化しやすい Trivyのインストール(Ubuntu 24.04) 以下の手順でインストールできます。 $ sudo apt update $ sudo apt install -y wget gnupg lsb-release $ wget -qO - https:
3 min read
ITの世界は「グラフ」でできている
IT

ITの世界は「グラフ」でできている

― インターネット・Google・SNS・サイバー攻撃を支える数学 ― ITの世界では、多くのシステムが「グラフ」という数学的なモデルで説明できます。 実は次のようなものはすべて グラフ構造です。 * インターネット * Google検索 * SNS * サイバー攻撃の経路 * AIの分析 本記事では、IT分野でグラフ理論がどのように使われているのかをわかりやすく解説します。 グラフ理論とは何か まず、グラフ理論とは何かを簡単に説明します。 グラフとは ノード(点) + エッジ(線) で構成される構造です。 例: A ─ B \ / C ここでは * A, B, C → ノード * 線 → エッジ になります。 この構造は 「もの同士の関係」 を表すのに非常に便利です。 インターネットは巨大なグラフ インターネットの構造は、まさに巨大なグラフです。 要素 グラフ ルータ ノード 通信リンク エッジ
3 min read
🔐 次世代AAAプロトコル「Diameter」とは
IT

🔐 次世代AAAプロトコル「Diameter」とは

― RADIUSの限界と、Diameterが求められる理由 ― ネットワーク認証の世界では、長らく RADIUS が AAA(Authentication / Authorization / Accounting)の中心的役割を果たしてきました。しかし近年、モバイルネットワーク(4G/5G)、大規模 ISP、キャリアグレードの網では、RADIUS では対応しきれない要求が増えています。 そこで登場したのが Diameter(ダイアメータ)。 その名の通り「RADIUS(半径)を2倍にした=より強力にした」ことを暗に示しており、将来を見据えた AAA プロトコルとして IETF によって策定されました。 この記事では、RADIUSの課題 → Diameterの優位性 → 関連技術(AAA/SCTP/IPSec/TLS) の流れで、情報処理安全確保支援士として理解しておきたいポイントを詳しく解説します。 1. RADIUSの限界と課題点 RADIUS(Remote Authentication Dial-In
4 min read
PandasユーザーのためのPolars入門 ― 合成データで体感するLazy実行・最適化・SQLサポート
IT

PandasユーザーのためのPolars入門 ― 合成データで体感するLazy実行・最適化・SQLサポート

近年、データ処理の高速化や大規模データ対応を目的として、Polars へ移行を検討するケースが増えています。 Polarsは単なる「速いPandas」ではありません。 設計思想そのものが異なり、クエリエンジン型のデータフレームライブラリといえます。 本記事では、Pandas経験者を対象に: * PandasとPolarsの設計思想の違い * Lazy実行と最適化の仕組み * Streamingによるメモリ効率 * SQLサポート * 実際に動かせるサンプルコード を、サンプルデータを作成し、そのデータを使って解説します。 外部データのダウンロードは不要です。 すべてこの記事内のコードだけで再現できます。 環境準備 python -m venv .venv source .venv/bin/activate pip install -U polars pandas pyarrow numpy デモ用データを生成する 今回は架空のEC購買ログを生成します。 * 実在企業・実在人物のデータは含みません * ランダム生成なので著作権の問題はありません
6 min read
【Polars】Parquet(パーケット)形式とは?
IT

【Polars】Parquet(パーケット)形式とは?

Parquet(Apache Parquet)は、 列指向(columnar)で保存されるデータファイル形式 です。 主にビッグデータ処理の世界で広く使われています。 * Apache Arrow系 * Spark * DuckDB * Polars * BigQuery * Snowflake など、多くのデータ基盤で採用されています。 CSVとの違い CSV(行指向) id,name,age 1,Alice,30 2,Bob,25 CSVは「行」単位で保存されています。 * 1行ずつ並んでいる * 人間が読める * シンプル * でも大規模処理には不向き Parquet(列指向) イメージ: id列: 1,2,3,4,... name列: Alice,Bob,... age列: 30,
1 min read
DockerとVS Codeで作るJava開発環境(JDK11)— ローカルを汚さずに学習・実行まで
IT

DockerとVS Codeで作るJava開発環境(JDK11)— ローカルを汚さずに学習・実行まで

Dockerで「ローカルを汚さない」Java開発をする Javaの学習やちょっとした検証を始めるとき、地味に困るのが開発環境です。 * PCにJDKを入れると、バージョン違いでハマる * 既存の開発環境と競合する * 別PCへ移したときに再構築が面倒 そこでおすすめなのが Dockerコンテナ内にJDKを用意して、VS Codeで編集するやり方です。 この方法なら「PC側はほぼ手を入れず」、コンテナを起動するだけで 同じJDK11環境をいつでも再現できます。 この記事では、VS Codeの Dev Containers を使って、JDK11(Temurin)でJavaをコンパイル・実行する最小構成を作ります。 ゴール * ローカルにJDKを入れずにJavaを実行できる * VS Codeで編集し、コンテナ内のJDK11で javac / java が使える * ディレクトリを丸ごとコピーしても同じ環境で動く 前提 * Docker(Docker Engine / Docker Desktop のどちらでもOK) * VS Code * VS Cod
3 min read
Kubernetes で Jakarta EE(Payara)業務システムを動かすときの考慮点と注意点
IT

Kubernetes で Jakarta EE(Payara)業務システムを動かすときの考慮点と注意点

近年、業務システムでも「コンテナ化して Kubernetes で可用性と運用性を上げたい」という要望が増えています。しかし、Jakarta EE(特に Payara Server)を単純にコンテナへ入れるだけでは、Kubernetes の恩恵を最大化できません。 この記事では、業務システムを Payara Server で構築している場合に Kubernetes 化する際、必ず押さえるべきポイントをまとめます。クラウド環境としては Oracle Cloud(OKE)を前提にしていますが、考え方自体はどのK8sにも共通します。 1. 「Payara Server をそのままクラスタリング」は原則しない GlassFish 系の標準的なクラスタリング(DAS を中心としたドメイン管理)は、**「ノードが固定される前提」**の設計です。一方 Kubernetes では Pod は“消えるもの”であり、再スケジュールされ、IP
3 min read
Kubernetes(K8s)の勉強方法
IT

Kubernetes(K8s)の勉強方法

KubernetesはGoogleが開発し、2014年にオープンソース化されました。 Kubernetes とは | Google CloudKubernetes(K8s)は、コンテナ化されたアプリをどこにでもデプロイ、スケール、管理できるオープンソースのシステムです。Google Cloud が Kubernetes を簡素化する仕組みをご覧ください。Google Cloud Kubernetesを勉強しようとすると、最初のハードルが意外と高いですよね。 そんな中、Google には Kubernetes を学習するための教育コンテンツとハンズオンラボが用意されています。 しかもラボ環境は 無料で利用可能。 「Kubernetes に興味はあるけれど、なかなか踏み出せなかった」という方にも、ぜひ挑戦していただきたい内容です。 クラウド環境に不慣れな方でも大丈夫です。 コンピュートインスタンスの作成、ストレージバケットの操作、IAM の設定、ファイアウォールの設定、Web サーバーの導入といった、Kubernetes を学ぶ前段階の基礎知識もしっかり学べるため、安心
2 min read
Stable Diffusion (AUTOMATIC1111)のパラメータをいろいろ変えて実験してみた
AI

Stable Diffusion (AUTOMATIC1111)のパラメータをいろいろ変えて実験してみた

CFG Scaleとは 以前、「【LoRA】少ないデータで、AIモデルをチューニングする」という記事で AUTOMATIC1111 を使用しましたが、パラメータについてはあまり触れていませんでした。 そこで今回は、Stable Diffusion で重要なパラメータのひとつである CFG Scale について解説していきたいと思います。 本当は Nova Anime XL のような最近のモデルを使いたかったのですが、 RTX 2070(8GB)では VRAM 不足で、まともに動かすことができませんでした (T_T) そのため、LoRA の記事でも使用した abyssorangemix33WhiteMildCat をモデルとして使っています。 なお、画像生成で使用したプロンプトは下記の通りです。 anime style, mature and graceful young woman with long brown hair, modern
4 min read
スマホからOCI経由で自宅サーバーにSSH接続(Agent Forward)
IT

スマホからOCI経由で自宅サーバーにSSH接続(Agent Forward)

1. 概要 前回、OCIと自宅サーバーをWireguard VPNで接続をしました。 GhostGhost 今回は、このWireguard VPNを通して、外出先でスマホからOCI経由で自宅サーバーにSSH接続をさせていきます。 ただし、OCI上に自宅サーバーの秘密鍵を置いておきたくはないので、スマホに自宅サーバーの秘密鍵を置きつつ、SSH Agent Forwardingを使ってSSH接続を試みます。 SSH Agent Forwardingを使うと下記のことが可能になります。 * 携帯の SSH クライアントが秘密鍵を保持(外に出さない) * OCI にログインしたあと、OCI 上の SSH クライアントから自宅へ接続する時も、 鍵の署名だけを携帯に問い合わせて実行する(鍵そのものは転送されない) * つまり OCI に秘密鍵を置かずに、自宅サーバーへ SSH が可能 2. 構成 * OCIと自宅サーバーの構成は、上記のブログ「IPv6のみのサーバーへIPv4からでもアクセスする方法」のとおりです。自宅サーバーは公開鍵認証でのアク
2 min read
IPv6のみのサーバーへIPv4からでもアクセスする方法(OCI経由)
IT

IPv6のみのサーバーへIPv4からでもアクセスする方法(OCI経由)

概要 自宅はドコモ光10Gbのインターネットを使用しているので、IPv6アドレスからしかアクセスできません。 これだと、自宅のサーバー上にNextcloudを稼働させていますが、非常に不便なのでオラクルクラウド経由でIPv4からでもアクセスできるように設定しました。 構成 IPv4網 → Oracle Cloud【nginx(リバースプロキシ) → WireGuard VPN】 → IPv6網 → 自宅サーバー【WireGuard VPN → Nextcloud】 WireGuard経由でのアクセスを採用した理由 * 速い(カーネル実装 / UDP ベース) * 設定がとてもシンプル * IPv4 ↔ IPv6 のブリッジングに強い * セキュリティが強固(最新暗号) * Oracle Linux 8 でも標準対応 私のOracle Clound では、下記の構成のインスタンスを使っています。 項目 内容 OS Oracle Linux 8.1 Shape VM.Standard.A1.Flex
5 min read
【SQL】3値論理(True/False/Unknown?)
IT

【SQL】3値論理(True/False/Unknown?)

SQLには、ture, false だけでなく、unknownを含む3つの真理値があります。 なぜ、unknownが含まれるかという理由については、リレーショナルデータベースにNULLが存在するからです。NULLは、そこに値がないことを意味する記号であり、値ではありません。 値ではないので、下記の条件式は比較ができず、すべてunknownとなります。 1 = NULL 1 <> NULL 1 > NULL 1 < NULL NULL = NULL ... 次に、true、false、unkownの力関係は下記のとおりです。 【ANDの場合】 false > unknown > true 【 ORの場合】 true > unknown > false したがって、真理表は下記のとおりになります。 ANDtureunknownfalse truetrueunknownfalse unknownunknownunknownfalse falsefalsefalsefalse
1 min read
【SQL】Dockerを使ったSQL学習環境の構築
IT

【SQL】Dockerを使ったSQL学習環境の構築

以前、MySQL(MariaDB)を使ったSQL学習用のサンプルデータベースの準備をご紹介しましたが、今回はDockerを使って、もっと手軽に前回の学習環境を準備してみたいと思います。 また、HeidiSQLのUbuntu版は日本語対応がいまいちだったので、学習しづらかったため、今回はphpMyAdminを導入してWebブラウザ上でSQLの学習ができるようにもしてみました。 1. 手順 大まかな手順は下記の通りです。 (1) mariadb-employees というカスタムイメージを作る (2) build 時に GitHub から employees.sql等の必要なファイルをダウンロードして、 MariaDB の/opt/employees-db に配置 (3) コンテナ初回起動時に シェルスクリプト が自動実行され、employees DB にサンプルデータが入る (4) phpMyAdmin から中身を触って学習できる 2️. ディレクトリ構成 まずは、専用ディレクトリを作ります: mkdir mariadb-employees cd
2 min read
【Python】Streamlitを使ってデータを簡単に可視化してみる
Programming

【Python】Streamlitを使ってデータを簡単に可視化してみる

1.概要 Streamlit は、Pythonで書かれたスクリプトをそのままインタラクティブなWebアプリとして表示できるオープンソースフレームワークです。 「データ分析をWebアプリ化したいけれど、HTMLやJavaScriptを書くのは面倒」というデータサイエンティストやエンジニアに最適です。 * 開発元:Streamlit Inc.(現在は Snowflake 社に買収済み) * 対象:データ分析・機械学習・可視化・社内ツールなど 2.特徴 項目説明簡単な記述普通のPythonスクリプトにst.write()などを追加するだけでアプリ化可能。即時反映コードを変更するとブラウザが自動で更新される(ホットリロード機能)。豊富なウィジェットスライダー・セレクトボックス・ファイルアップロードなどのUI要素が標準装備。データ可視化連携matplotlib、plotly、pandasなどのグラフをそのまま表示可能。軽量なサーバー内蔵FlaskやFastAPIなどの設定不要で、ローカルサーバーが自動で起動。デプロイ容易streamlit cloud や Docker、または任
6 min read
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