Python

A collection of 11 posts
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
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
【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
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
【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
【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