プログラミング初心者がアーキテクトっぽく語る

見苦しい記事も多数あるとは思いますが訂正しつつブログと共に成長していければと思います

2025-01-01から1年間の記事一覧

Pythonの単体試験でロガーを出力する

ログって大事ですよね。 でも書くのが面倒ですよね。 単体試験でデバッグするとき、デバッガやprintを使わず、loggerを使うとデバッグができて、本番環境で使えるログも仕込めます。 コスパがよいと思います。 単体試験でなにか問題が発生したら「これはlogg…

子曰く、汝コードを為すときは善く之を為すべし

原文 You don’t have to code 100% of the time. You don’t even have to code 50% of the time. But you do have to code some of the time. And when you code, you should code well. 和訳 100%の時間をコーディングに費やす必要はありません。 50%の時間…

git push origin mainとgit push -u origin mainとgit pushの違い - upstream branchとは

Git

先に結論 最初のPushは-u 2回目以降はgit push git push origin main git pushコマンドの書式は以下の通りです。 git push <Remote Repository名> <ブランチ名> ローカルの<ブランチ名>を、Remote Repositoryにある同名のブランチにPushしてくれます…

nuitka(ニューツカ)でPythonの実行ファイルを作る

前々回、uvを使ったPython開発プロジェクトのセットアップ事例を紹介し、前回はPythonコードをpipインストール可能な配布形式にする方法を紹介しました。 今回は実行ファイルを作成する方法を紹介します。 実行ファイルという選択肢 Pythonスクリプトを配布…

uvでpipインストール可能な配布形式を作成する

前回、uvを使ったPython開発プロジェクトのセットアップ事例を紹介しました。 architecting.hateblo.jp 今回は開発したPythonコードをuvを使ってpipインストール可能な配布形式にします。 ちなみに昔、PyCharmとsetup.pyを使って作成する方法を紹介したこと…

uvを使ったPythonプロジェクトのセットアップ

Pythonのコードの書き方は人それぞれです。 Pythonプロジェクトのフォルダ構成、パッケージ構成にも色々なものがあります。 私自身、今まで色々と変遷してきまきました。 今回は「今はこんな感じで作ってるよ」というのをご紹介したいと思います。 簡単なス…

uvによるPython仮想環境管理

昨今、よく見かけるようになったuv。 「またPython環境管理ツールかよ、、、」という感もあるが、悪くなさそう。 特徴は高速なことと、venv/pip/pyenvを組み合わせたAll In Oneツールなこと。 pipenvの二の舞いとなるか?今後、メインストリームになっていく…

PythonのasyncioライブラリのHigh Level APIで非同期処理する

Pythonで非同期処理がしたい 昨今のLLMブーム、MCPブームでまたREST APIを叩く機会が増えてきました。 そしてREST APIのようなネットワーク処理は非同期処理したくなります。 AIではPythonを使うことが多いので、「Pythonでも非同期処理したい」と感じること…

Google Colabで選択できるGPUのまとめ

AI

今日現在、Goggle Colabで利用できるGPUと、そのスペックは以下の通りです。 GPU システムRAM GPU RAM ディスク 使用率 A100 GPU 83.5 GB 40.0 GB 112.6 GB 6.86 L4 GPU 53.0 GB 22.5 GB 112.6 GB 2.09 T4 GPU 12.7 GB 15.0 GB 112.6 GB 1.43 無課金で利用で…

メモリ不足でLLMが読み込めないときの対処策集

AI

モデルの選び方 パラメータが小さいものを選ぶ パラメータとは強引に言えばLLMの語彙です。 語彙が多いLLMは話のレパートリーも表現も豊かです。 色々な話を聞かせてくれますが、大量のGPU RAMを必要とし、処理が遅いです。 語彙が少ないLLMは話のレパートリ…

FlowiseでノーコードでAIエージェントを作成する

AI

ここまで2回にわたってLLMを動かしてきました。 次はLLMを活用したAIエージェントを作成してみたいです。 でもLangChainとかLangGraphとか難しいことはわかりません。 いずれ学びたいとは思いますが、そういう難しいことは一旦、飛ばして、AIエージェントで…

Ollamaで自分のMac上でLLMを動かしてみた

AI

前回はGoogle Colabを使ってLLMを動かしました。 今回は自分のMacの上でLLMを動かしてみましょう。 当然ですが、私のMacbookにはGPUなんて高価なものは搭載されていません。 CPUはM1、メモリは16GBです。 そんなスペックですが、それでもLLMを動かしてみまし…

AI超初心者がHugging FaceのAIモデルをGoogle Colabで試す

AI

「そうだ、Hugging Face上で公開されているモデルを動かしてみよう」 と、ふと思い立ちました。 Hugging Faceという言葉を知ったのも最近、という超初心者の私が四苦八苦してようやく動かすことができたので記事にまとめたいと思います。 手順 手順1. Huggin…

Dependency Injection vs Abstract Factory - Clean Architectureのオブジェクト生成

Clean ArchitectureではController、UseCase、Presenter、Viewなどのオブジェクトを生成する必要があります。 ControllerはUseCase、Presenter、Viewオブジェクトをフィールドに保持して利用します。 これらオブジェクト群の生成処理をどのようにするべきか…

Clean Architectureのディレクトリ構造

Clean Architectureを念頭に開発すると色々なクラスやインタフェースができる。 これらをどのようなディレクトリ(もしくはパッケージ)に配置すべきなのだろうか。 考えてみる。 なお以降は上図の用語を以下のように読み替えて欲しい。 読者には面倒を強い…

Python pandasとR言語の基本操作チートシート

はじめに 本格的なデータ解析をする場合は専用のシステムを利用することが多いと思う。 ちょっと手元のPCでデータを確認したいときに使うのがPythonのpandasやR言語だ。 ここではpandasとR言語の基本的な使い方を対比するような形で紹介していく。 なお、グ…

Clean ArchitectureにおけるEntityとModel

Clean Architectureで書いているとEntityやModel(InputData/OuputData)について悩むことがあります。 Entityにはどこまでビジネスロジックを書かないといけないのか? フィールドとアクセッサだけのEntityはだめなのか? Modelを使わず、EntityをControlle…

PythonでLogging(複数Pythonファイル対応)

「素人コードにこれをパパッと加えればたちまちお店の味に」というソフトウェア業界の「味の素」がloggingです。 以前、Javaで同じような記事を書きましたが、Pythonでもログ出力をprintからloggingにするだけで雰囲気がぐっと良くなります。 architecting.h…

Clean Architectureで作る流れ

簡単なユースケースをClean Architectureで実装する流れをメモします。 まだポエムの段階です。 勉強目的ですので、「そもそも簡単なユースケースをClean Architectureで作る意味があるのか?」という疑問は忘れてください。 1. お絵かき(簡易設計) 「入力…