- 1. Looker Studioでのアンケートデータ可視化手法
- 2. RaspberryPi PicoをUSB接続の温度センサーにして定期的に温度を測定するプログラムをつくる
- 3. LINE Messaging API の利用におけるチャネルアクセストークンv2.1を発行
- 4. pythonのモジュールを必要な物だけに保つ
- 5. LLMで時間表現の解析
- 6. 【Pythonのデータ読み込み】Excelのすゝめ
- 7. pythonのarcadeでhexmapを作成してみた!
- 8. Python FastAPIのデコレータ: API開発を加速する仕組み
- 9. Python:Reflex:VSCodeのDevContainer内でリモートデバッグを設定
- 10. web-ui用のreal-esrganをReal-ESRGANで動かす
- 11. request.post(json=)で沼った話
- 12. 【Python】match/case文について。シーケンスとマッピングオブジェクト、およびインスタンスのマッチの違い
- 13. 【Django REST Framework】swaggerにPageNumberPaginationのレスポンスが表示させる(力技)
- 14. Phidata入門ガイド:エージェント構築からUI活用まで徹底解説(📒 GoogleColabノート付)
- 15. 曜日の時間表現の解析
- 16. TensorFlow Liteでの「Created TensorFlow Lite XNNPACK delegate for CPU.」メッセージを理解する【備忘録】
- 17. ファインチューニング用データセット作成エディタを作ってみた
- 18. Geminiで日記を小説風にしてもらう
- 19. pytest の基本
- 20. 【Python】Sleep処理の活用とブロッキングの落とし穴
Looker Studioでのアンケートデータ可視化手法
## はじめに
弊社(VENECT株式会社)では、毎年SNSやECに関するアンケートを実施し、その集計結果をもとにスライド資料をPowerPointで作成してきました。今年度、そのCSVファイル形式のアンケートデータをLooker Studioでグラフ化するプロジェクトをインターンメンバーで実施しましたので、3回の記事に分けてトピックを紹介します。今回の記事では、CSVファイル形式のアンケートデータをLooker Studioでグラフ化するまでの流れを紹介します。
## 背景
前述の通り、昨年まではアンケート結果をPowerPointを使用してスライド資料として作成してきました。この方法は、特定の年のデータを分析する上では便利ですが、**年度ごとの比較**や**異なるアンケート項目間の比較**が必要な場合に限界がありました。従来の方法では、過去のアンケート結果と最新のデータを比較するために、異なる年度のスライドを開いて手動で並べて比較する必要があり、効率的ではありませんでした。
そこで、**BigQuery**を利用してアンケートデータを一元管理し、**Looker Stu
RaspberryPi PicoをUSB接続の温度センサーにして定期的に温度を測定するプログラムをつくる
# あらすじ
[以前作ったコード](https://qiita.com/pinkych24/items/6761255531ddd089560b)をchatGPT o1-previewに書き直してもらったらずいぶんよくなったので改めて記事を作成した。どうもinput()ではなく sys.stdin.readline()でコマンドを読み取ると良いらしい。素人にはinput関数がどうやってserialのバッファを取得してるのかが分からなかったので、こういう大して難しくなさそうなのに地味でマイナーすぎてぐぐっても解決策がみつからない類の問題をサクッと解決してくれるchatGPT様には足を向けて寝られない。あと4oよりo1-preの方が明らかに頭がいい。## RaspberryPiPico側のコード
今回は基板に内臓されている温度センサーの値を取得してるけどGPIOピンからセンサーの値を取得したりモーター等を動かしたりすることもできる。1分に1回程度動作する環境制御機器を想定しているのでレスポンスの速さは確かめていない。
“`main.py
import machine
import u
LINE Messaging API の利用におけるチャネルアクセストークンv2.1を発行
# Messaging API の利用におけるチャネルアクセストークンv2.1を発行
– 概要
– Line のボット開発を行なっていく中で Messaging API を使用すると思います。その中で「チャネルアクセストークンv2.1」なるトークンの発行方法が割と手順が多めだったので、公式に沿って作成した手順をスクリプトなどでまとめました。– 前提条件
– PC:Macを使っています
– スクリプトの実行言語としてPythonを使用しています
– トークンの発行には専用のライブラリを使用すると楽と公式に記載があった物を使用しています## 手順
– [公式の手順](https://developers.line.biz/ja/docs/messaging-api/generate-json-web-token/#page-title)に沿ってやっていきます。
– [リポジトリ](https://github.com/Kyohei-takiyama/line-messaging-api)を用意しています。リポジトリ内にMakefileなどのスクリプトがあるので
pythonのモジュールを必要な物だけに保つ
# pythonのモジュールを必要な物だけに保つ
ローカルじゃ動くのに、サーバ(クラウド)上でモジュールが見つからないとか有りますよね
また、不要になったモジュールが残っていたり
## フォルダー階層
“`
.
├── app
│ ├── main.py # pythonのソース
├── requirements
│ ├── base.in # 実行に必要なもの
│ ├── base.txt
│ ├── dev.in # テストや開発に必要なもの
│ └── dev.txt
└── scripts
└── pip.sh
“`## requirements/base.in の例
“`requirements/base.in
aiosmtplib
alembic
asyncpg
azure-communication-email
azure-functions
azure-identity
azure-storage-blob
chardet
fastapi
fastapi-healthchecks
Jinja2
msgraph-sdk
LLMで時間表現の解析
# 概要
文中の時間表現を文脈を考慮して正規化したいです。例えば「2021年4月1日の1日前の午後10時」を「2021-3-31 22:00:00」にする、みたいなことです。応用先としては、対話形式でのスケジュール設定などがあります。これまでルールベースでやる方法を試してきましたがエッジケースを考えるとルールの実装が大変です。
– [文脈を考慮した時間表現の正規化(ja-timex)](https://qiita.com/shimajiroxyz/items/035f5a7edec5e73add7a)
– [曜日の時間表現の解析](https://qiita.com/shimajiroxyz/items/7441aa4a7772c7596f7b)そこで、今更ですが、LLMでどのくらいできるのか試してみました。
試みとしては、ちゃんと調べていませんが、ありふれた課題設定なので、たくさんやられていると思います。
結果としてはテストデータにおいて、gpt-4o-miniは少しミスがありましたが高精度、gpt-4oは全問正解でした。# テストデータと評価システム実装
過去の取り組
【Pythonのデータ読み込み】Excelのすゝめ
## 目次
– [はじめに](#はじめに)
– [なぜExcelか](#なぜexcelか)
– [モジュール紹介](#モジュール紹介)
– [Excelを読み込もう!](#excelを読み込もう)
– [実際の活用](#実際の活用)
– [各行を取り出す](#各行を取り出す)
– [各列を取り出す](#各列を取り出す)
– [まとめ](#まとめ)
– [最後に](#最後に)## はじめに
Pythonのソースコード内に、リストでデータを書き込むのをやめたくらいの初心者は、次にテキストファイルから読み込むことを行うのではないでしょうか?もちろんこれは良いアプローチです。ソースコード内に、万里の長城のようなリストを鎮座させるよりも、遥かに優れています。しかし、単語帳ツールなどを制作している方は、現在進行形で実感しているかもしれませんが、英語用、日本語用など複数ファイルに跨る場合には、少し扱いづらいです。これを解決するために、一つのファイル内で区切り文字を増やす等している方も、いらっしゃるかも知れませんね(要はCSVファイルですが)。いずれにせよ、Excelを用いることで
pythonのarcadeでhexmapを作成してみた!
# コードの実行結果
– ヘックスマップの描画
![スクリーンショット 2024-10-31 12.58.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3769985/88a5e72d-1735-0648-4610-440cf6f7a87a.png)– そのヘックスを押すと、周囲3hex分が薄い赤色で表示される
![スクリーンショット 2024-10-31 12.58.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3769985/2f9ee88b-7b17-efcf-9f29-fab16bbeefe9.png)“`python
import arcade
import mathimport arcade.key
WIDTH = 800
HEIGHT = 600
RADIUS = 30 # 半径
GRID_SIZE = 10 # hexの個数
TITLE = “test_hexmap”
Python FastAPIのデコレータ: API開発を加速する仕組み
## FastAPIのデコレータとは
FastAPIのデコレータは、Pythonの関数やクラスに対して追加の動作を与えるための仕組みです。特にFastAPIでは、APIエンドポイントの定義やリクエストの処理にデコレータが頻繁に活用されており、これにより効率的な開発が可能になります。
デコレータは`@シンボル`で始まります。@の後にデコレータ名(関数やクラス)が続き、その下の関数やメソッド、クラスに装飾的な動作を付加します。“`python
@decorator_name
def function_name():
# 関数の処理
pass
“`## デコレータの動作と役割
デコレータの基本的な動作は、関数やクラスをラップし、追加の処理をその関数に組み込むことです。
Pythonでのデコレータは、実行時に関数やクラスに付加される装飾的な関数といえますが、FastAPIにおいてはこの仕組みを活用して、APIリクエストの管理やデータのバリデーション、セキュリティチェックといった機能を提供します。基本的なデコレータとして`@app.get`, `@app.pos
Python:Reflex:VSCodeのDevContainer内でリモートデバッグを設定
# Refexについて
Reflexは、Pythonだけでフロントエンドも作れるWebアプリ作成ライブラリです。
フロントエンドやバックエンドの実行環境がオールインワンなので開発準備がとても簡単です。https://github.com/reflex-dev/reflex
アメリカの大手企業でも使われているようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/15972/b5896987-5d6b-009c-28af-f47d1fad1802.png)
# 1.前提条件
– Poetryを利用してReflexなどのライブラリはインストール済み
– VSCodeのDevContainerは設定済み
– Reflexのプロジェクトは作成済み# 2.デバッガの起動設定ファイルlaunch.jsonを作成
VSCodeでコンテナを起動し、コンテナ内で以下の操作を行う。
①左のデバッグメニューをクリックし、launch.jsonを作成する。
![image.png]
web-ui用のreal-esrganをReal-ESRGANで動かす
Real-ESRGANを動かす際に色々とトラブリましたのでメモも兼ねて残します。
今回使わせて頂いたライブラリは[xinntao/Real-ESRGAN](https://github.com/xinntao/Real-ESRGAN)
モデルは[4x_fatal_Anime_50000_G](https://huggingface.co/Akumetsu971/SD_Anime_Futuristic_Armor/blob/main/4x_fatal_Anime_500000_G.pth)をお借りしました
動作環境はGoogle Colaboratory,Python 3.10.12、
アクセレータはT4 gpuですこの記事を見られている方はReal-ESRGANについて既にご存知かと思いますのでこちらの説明は省きます。
まずはpackageのインストールから
“` python:install dependency
%pip install basicsr
%pip install git+https://github.com/xinntao/Real-ESRGAN.git
request.post(json=)で沼った話
## はじめに
どうも。@Kai-Rosyです。
日頃、pythonでRestfulAPIの開発なんかをやってるんですが、今回、業務で単純なAPIリクエストに詰まったので記事にしました。
## 問題
requests.post()で json= を使用すると、デフォルトで空白を含む形式のJSONが生成されます。
しかし、API仕様によっては 空白なしのコンパクトなJSONを要求されることがあります。この場合、json= をそのまま使うと200レスポンスを得られない可能性があります。というか200レスポンスになりません。
(今回、対向システムへのAPIリクエストで401が返却されて詰まりました。。。)“`python
import requestspayload = {“request_id”: “0001”, “amount”: 1000}
response = requests.post(
url=”https://example.com/api”,
json=payload
)
print(response.request.body)`
【Python】match/case文について。シーケンスとマッピングオブジェクト、およびインスタンスのマッチの違い
# 前書き
Pythonには3.10でmatch/case文が追加されました。他の言語でいうところのswitch/case文に相当する文章です。
なんとなく聞き覚えはあったのですが、今までは、「あぁ、if文を使った条件分岐をすっきり書けるswitch/case的なやつね。そういえば今まで無かったね。」くらいの認識でした。
しかしFluent Pythonにおいて登場したmatch/case文は、想像よりずっと強力で複雑でした。そのため、これを機会に学び直そうと思った次第です。
要点は以下の通りになります。
– リテラルによるマッチングではswitch/caseと同じような動作をするが、フォールスルーは実装されていない。型によるマッチングも利用可能
– シーケンスオブジェクトのマッチングでは、要素数と値の組み合わせでマッチングする。リテラル同様に型によるマッチングを併用することも可能
– マッピングオブジェクトのマッチングでは、要素(部分?)
– シーケンス、およびマッピングオブジェクトのマッチングでは、条件分岐とバインドが同時に行われる# match/case文とは
【Django REST Framework】swaggerにPageNumberPaginationのレスポンスが表示させる(力技)
# 前置き
初学者なりの知らなかったというお話なので、多くの方には関係のない内容です。# 問題
実際に返却されるレスポンスは問題ないけど、swaggerにページネーション形式のレスポンスが表示されない
“`python
@extend_schema(responses=SongListSerializer, tags=[“song”])
class SongListView(views.APIView):
pagination_class = CustomPaginatordef get(self: Self, request: Request, *args: Any, **kwargs: Any) -> Response:
“””曲一覧情報の取得”””
songs = Song.objects.alive().select_related(“album”, “artist”).all()
paginator = CustomPaginator()
result_page = paginator.
Phidata入門ガイド:エージェント構築からUI活用まで徹底解説(📒 GoogleColabノート付)
## はじめに
Phidataは、AIエージェントの構築と管理に最適なフレームワークで、知識、ツール、記憶機能を備えたエージェントの作成をサポートします。本記事では、Phidataを使ったエージェント構築方法や、主要な機能について解説します。## Phidataの特徴
Phidataの注目すべき機能は以下の通りです:– **エージェントの作成**:ツールと知識を持ったAIエージェントを作成可能
– **エージェントチームの構築**:複数のエージェントを連携させて一括管理
– **エージェントUI**:直感的なUIでエージェントと対話
– **モニタリングと最適化**:エージェントのパフォーマンスをリアルタイムで監視・評価## Phidataのインストール
以下のコマンドで、Phidataをインストールします。“`bash
pip install -U phidata
“`必要なAPIキー(`OPENAI_API_KEY`)も事前に設定しておく必要があります。
## エージェントの構築方法
### Web検索エージェント
Web検索を担当するエージェントのサン
曜日の時間表現の解析
# はじめに
文中の時間表現を文脈を考慮して正規化したいです。例えば「2021年4月1日の1日前の午後10時」を「2021-3-31 22:00:00」にする、みたいなことです。応用先としては、対話形式でのスケジュール設定などがあります。今回はその中でも曜日の時間表現の解析方法を検討します。
具体的には「次の日曜日」「今週の日曜日」「来週の日曜日」などの表現から具体的な日時を特定できるようになりたいです。# 難しいところ
週の始まりを月曜日とします。「次の日曜日」は基準時刻によって「今週の日曜日」か「来週の日曜日」かが異なります。具体的には基準時刻の曜日が日曜日より前なら今週になり、そうでないなら来週になります。「次」と「今週」「来週」の処理をうまく分ける必要があります。# ja-timex
ja-timexが使えそうです。
ja-timexは日本語の時間表現をルールベースで解析するライブラリです。
試しに課題となる文章を解析してみます。“`
pip install ja-timex
“`“`Python
from ja_timex import Time
TensorFlow Liteでの「Created TensorFlow Lite XNNPACK delegate for CPU.」メッセージを理解する【備忘録】
PythonでTensorFlow Liteを使用する際に、特にXNNPACKを利用したモデルの最適化が行われる場合に「Created TensorFlow Lite XNNPACK delegate for CPU.」というメッセージが表示されることがあります。本記事では、このメッセージが意味する内容や、XNNPACKの役割について詳しく解説します。
## 1. TensorFlow Liteとは
TensorFlow Liteは、Googleが開発した軽量ニューラルネットワークライブラリで、モバイルデバイスや組み込みデバイスのようなリソースが限られた環境でも高速かつ効率的に機械学習モデルを実行するために設計されています。多くの組み込みアプリケーションでTensorFlow Liteは利用されており、特に画像処理や音声認識などのリアルタイムアプリケーションに適しています。
## 2. XNNPACKとは
XNNPACK(eXtended NN PACK)は、Googleが開発したニューラルネットワークの演算処理を高速化するための最適化ライブラリです。TensorFlow Li
ファインチューニング用データセット作成エディタを作ってみた
LLMのファインチューニング用のデータセット作成に特化したエディタを作ってみました。
## 0:はじめに
この記事を読んだ後思っても絶対に書いてはいけないコメントがあります。
**わざわざ作らなくても既にあるくね**です。
なんとなく既にありそうな気がしながら作ってみたら案の定既にありました。
でもfletでのGUI開発の勉強になったのでヨシとします。## 1:ほしい機能と心の声
– なるべくマウスを触らずにキーボードだけで基本機能を使えるようにしたい
– ショートカットキーを作って特殊トークンみたいなのを簡単に入力できるようにしたい
– エディタを起動したときにシステムプロンプトを打ち直すのがめんどい
– ファイルを毎回選択するのがめんどい![完成図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3921462/95f6eb64-7e37-392c-7b53-ae41077a8a1c.png)
こんな感じになればいいな## 2:作業の流れ
①内部の処理の確立
②画面の構成
③なぜか
Geminiで日記を小説風にしてもらう
お疲れさまです、みやもとです。
久しぶりにLINEBOTいじりたいなーと思って日記BOTを作りました。
少し前にGASで作った日記BOTがありましたが、結局あんまり続かなかったのでPythonでやり直そうというのが今回の試みです。
## 日記が続かない
[このへんの記事に](https://qiita.com/Mymt_aggw2208/items/09992425735e4c62b8ef)[書きました](https://qiita.com/Mymt_aggw2208/items/2d5961d2f4d36b71adfb)が、前回作ったLINEBOTは* 日本語と英語で書いてAIに添削してもらう
* 内容をスプレッドシートに保存する
* 毎日決まった時間にリマインドするという機能にしていました。
機能自体は悪くなかったのですが、* 数日に1回ぐらいのペースでGAS実行のための権限を付け直さなくてはいけない
* そんなに毎日特筆するようなこともないので似たようなことばっかり書き続けるのに飽きるという感じで、結局1か月を超えたぐらいで削除してしまいました。
そもそも
pytest の基本
# pytest の基本
– [pytest の基本](#pytest-の基本)
– [Python 仮想環境の用意](#python-仮想環境の用意)
– [基本的な pytest コードの作成](#基本的な-pytest-コードの作成)
– [テストコードの例](#テストコードの例)
– [pytest の実行](#pytest-の実行)
– [ディレクトリ内のすべての対象テストコードをテスト](#ディレクトリ内のすべての対象テストコードをテスト)
– [実行結果](#実行結果)
– [特定のファイルのみテスト](#特定のファイルのみテスト)
– [実行結果](#実行結果-1)
– [テストをパスしない場合の traceback を非表示](#テストをパスしない場合の-traceback-を非表示)
– [実行結果](#実行結果-2)
– [テスト実行に関する詳細情報を出力](#テスト実行に関する詳細情報を出力)
– [実行結果](#実行結果-3)## Python 仮想環境の
【Python】Sleep処理の活用とブロッキングの落とし穴
## はじめに
業務で`time.sleep()`を使った待機処理を学ぶ中で、非同期処理への興味から個人的に`asyncio.sleep()`についても学びました。`time.sleep()`は同期的にプログラムを停止する一方で、`asyncio.sleep()`は非同期プログラムに適しており、待機中も他の処理が並行して進行します。
この記事では、非同期処理における`asyncio.sleep()`の使い方と、同期的な`time.sleep()`が引き起こす問題を備忘録として整理します。
## 1. `time.sleep()`と`asyncio.sleep()`の違い
### 1-1. `time.sleep()`の基本
– `time.sleep()`はプログラム全体の実行を停止し、指定した秒数だけ待機します。
– シンプルな待機処理では便利ですが、非同期プログラムには不向きです。“`python
import timeprint(“処理開始”)
time.sleep(2) # 2秒待機
print(“2秒後に処理再開”)“`
実行結果:
“`
処理開