Programming

A collection of 13 posts
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
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
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
【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
【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
【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
【セキュリティ】プレースホルダで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
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
【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
【Termux+Python】AndroidでPythonを動かす
Programming

【Termux+Python】AndroidでPythonを動かす

Androidの環境でPythonを動かす方法は、いくつかありますが、ここではLinux環境に近い操作が可能なTermux上でPythonを動かす方法をご紹介します。 Termuxは、Android端末上で動作するLinux端末エミュレータ兼パッケージ管理システムです。 1. F-Droidをインストールする PlayストアからもTermuxはダウンロードできますが、バージョンが古いようですので、F-DroidまたはGitHubから最新版をインストールすることが推奨されています。ここでは、F-Droid経由でインストールしていきます。 * F-Droid公式サイト(https://f-droid.org/ja/ ) サイトに表示されているQRコードから、F-Droidのインストールを行います。 QRコードを読み込むとF-Droid.apkがダウンロードされるので、「パッケージ インストーラで開く」で開きインストールを行います。 2. F-DroidからTermuxをインストールする 2-1. F-Droidを起動したら虫眼鏡のボタンを押し
2 min read