YAPC::Fukuoka 2025 https://fortee.jp/yapc-fukuoka-2025/proposal/4dd02c14-92fc-4fd2-b93f-5b38463ec32a
yfinaceデータを用いた軽量データセット(個人用)の構築 はじめに これまでテクニカルスクリーニングのバックテストを行う中で、 処理速度の遅さに課題を感じていました。 特に、複数銘柄に対してループ処理を行う際、 毎回 yfinance を通じて株価データを取得していたため、 同じ銘柄でも都度ダウンロードが発生し、非効率でした。 →今のスクリーニング系の問題について書いたのがこちらの記事です。よければ参考に。 例えば以下のようなコードが問題でした。 # ----------------------------- # スクリーニング条件別ループ # ----------------------------- summary = [] for cond in screening_conditions: result = [] chart_dir = お好きなディレクトリ os.makedir
AWS LambdaでWebアプリケーションを開発する場合、コールドスタートが課題になる事が多いです。特にpandasやboto3のような重いライブラリを利用する場合は、その影響は無視出来ないものになります。 このコールドスタートについては、ユーザー側で対策出来る事があまりなく、いつも悩みの種になるのですが、つい最近、コンテナ形式のLambdaのコールドスタートについて検証されている記事を読み、pandasやboto3をimportする場合はコンテナ形式のLambdaの方がzip形式のLambdaよりもコールドスタートが短いと言う結論になっているのを見て、とても興味を持ちました。 何故かと言うと、その記事で比較しているのがinit durationである事を考えると、差がついているのはライブラリのimport時間ぐらいしか思い当たるものがなく、ライブラリのimport時間がzip形式とコン
Pythonコードのパフォーマンス最適化の総合ガイド Pythonは動的型付けのインタープリタ言語として、Cのような静的型付けのコンパイル言語と比較すると、実行速度が遅い場合があります。しかし、特定の技術と戦略を通じて、Pythonコードのパフォーマンスを大幅に向上させることができます。 この記事では、Pythonコードを最適化して、より高速かつ効率的に実行させる方法を探ります。Pythonのtimeitモジュールを利用して、コードの実行時間を正確に測定します。 注意: デフォルトでは、timeitモジュールはコードの実行を100万回繰り返して、測定結果の精度と安定性を確保します。 def print_hi(name): print(f'Hi, {name}') if __name__ == '__main__': # print_hi('leapcell')メソッドを実行する t = t
はじめに MLエンジニアのふるです。今日は珍しく、MLエンジニアらしいAPI化の技術選定(笑)について話していこうと思います。 今回はLanggraphの説明の詳細は省き、LanggraphアプリをAPI提供する場合の技術選定について、困ったことを書いていこうと思います。 背景 Langgraphでは、LLMのマルチエージェントもしくはマルチワークフローを構築する際に、forループで出力する箇所があります。 for s in graph.stream( { "user_input": user_input, "messages": input_messages, "user_profile": user_profile, "question": question, "image_url": image_url }, { "recursion_limit": 30, } ): # (エージェ
はじめに 今年こそはダイエットを心に決めた、ノベルワークスのりょうちん(ryotech34)です。 cursorを使用してpytestでテストを書かせた際に、知らないデコレータなど知識不足が目についたので改めてpytestについてまとめてみました。 対象読者 pytestにあまり触れたことがない方 cursorで初めてpytestを使うよっていう方 今回話さないこと セットアップと基本的な実行方法 unittestなどの別ライブラリとの比較 pytestとは pythonでテストコードを書く際に用いられる外部ライブラリです。 簡単なコードサンプル集は寺田さんの記事に詳しくまとめられていました。 今回は、 よく使う便利な機能 cursorに改めて指示しないと別のやり方で実行してしまう機能 をピックアップしました。 fixture fixtureとは、テストの前処理や後処理など「テストに必要な
2024年10月7日にリリースされたPython 3.13の概要を紹介します。 Python 3.13ではPythonのプログラミング言語としての仕様に大きな変更はありませんでしたが、将来のPythonの実行環境に大きな影響を与える、大きな変更が導入されました。 PEP 703: フリースレッドモード¶Python 3.13では、実験的な機能として、フリースレッドモードが導入されました。従来のPythonには、グローバルインタプリタロック(GIL)があり、マルチスレッドでのパフォーマンスが向上しないという問題がありました。フリースレッドモードは、この制約を解消し、マルチスレッドでのパフォーマンスを向上させることを目的としています。 フリースレッドモードについては、PEP 703 グローバル・インタプリタ・ロックをオプション化 で詳しく解説していますので、参照してください。 フリースレッド版
はじめまして、株式会社 neoAI というところでソフトウェアエンジニアをしている Moriyasu といいます。 今回は弊社として初めてのソフトウェアのブログを担当させていただくことになりました。 さて、年末年始はみなさんいかがお過ごしでしたか? 僕は暇だったので、自社プロダクトを Flask から FastAPI に移行するコーディングをずっとやっていました。FastAPI を"完全に理解"したので、今回は FastAPI での Dependency Injection (依存性の注入) について解説します。 前提 今回出てくる技術について先にさらっておきます。 FastAPI: 高速でモダンな API を構築するための Python フレームワーク SQLAlchemy: Python の ORM ライブラリ Injector: Python の Dependency Injecti
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Pythonコルーチンの開発プロセスと新旧コルーチンの深層分析 1. Pythonコルーチンの歴史的進化 Pythonの長い開発の歴史を通じて、コルーチンの実装はいくつかの大きな変更を経てきました。これらの変更を理解することは、Pythonの非同期プログラミングの本質をよりよく把握するのに役立ちます。 1.1 初期の探索と基本機能の導入 Python 2.5:このバージョンでは、ジェネレータに.send()、.throw()、.close()メソッドが導入されました。これらのメソッドの登場により、ジェネレータは単なるイテレータ以上のもの
はじめに この記事では、PythonのデータバリデーションライブラリであるPydanticを使って、簡単にかつ強力にデータのバリデーションを行う方法を解説します。 今回はGoogle Colab上でハンズオン形式で進めていきますので、ブラウザさえあれば実行環境を整えるのも簡単です。 1. Pydanticとは? データのバリデーションや型の宣言を簡単に行えるPythonライブラリ Pythonの型ヒント(type hints)を活用して、データ構造の定義と検証を同時に実現 FastAPIなどの人気フレームワークでも広く採用されており、API開発・プロジェクト構成などで非常に便利 Pydanticを使うと、辞書やJSONで受け取ったデータが正しい形式になっているかどうかをPythonicに検証できるようになります。データの整合性を保つために煩雑なチェックを書かなくてよくなるので、とてもおすす
はじめに Streamlit は UI 操作の度にコードの再実行が走ることを特徴としています。これによりセッション状態の管理などが大幅に軽減されるのですが、重い処理がある場合に UX の低下を招きかねません。 実際私も下図のように、重い処理を含む際のセレクトボックス操作でよく重たい印象を与える処理を記述してしまいがちです。 上図の Playground そこで Streamlit は、キャッシュやセッション状態管理、フォーム、特定の関数のみの再実行など多様な機能を提供しています。 というわけで個人的に長年の悩みだったので、いくつかのパターンで検証してみます。 結論 個人的には比較的新しい機能であり特定の関数のみ再実行できる st.fragment が実装も簡単で、理解もしやすかったです。 上図の Playground 検証 検証コード(ベース)😑 それでは最初に示した重い実装からみていき
Pythonは歴史が長いので、色々な方がその理由を解説されていますが、私も自分の言葉で説明したくなったので一本書きます。 その理由は、生みの親(かつての慈悲深き終身独裁者)Guido氏の意向です。 Guido氏の考えを覗きに行きましょう。 目次 目次 デザインと歴史 FAQ Guido氏のメール 1つ目:Human Computer Interaction(HCI)から 2つ目:特殊メソッドの命名規約から 参考文献(先人に感謝) Guido氏の意向の理解まとめ P.S. Pythonに飼い慣らされたnikkieは デザインと歴史 FAQ 公式ドキュメントの中にはFAQのページがあります。 その中に表題の疑問にズバリな項があります! Python にメソッドを使う機能 (list.index() 等) と関数を使う機能 (len(list) 等) があるのはなぜですか? なんでlist.in
dbt アドベントカレンダー 2024 11日目の記事です。 前置き 普段はdbt Cloudを使っていて、Google Cloud に BigQueryとLookerStudio な技術スタックで社内のデータ基盤を構築・運用しています。 データ基盤で扱うSourceの拡充をするため、ETL/ELT ツールをいくつも試してたどり着いたのが、dltというツールです。 世間では非エンジニアでも画面上でポチポチ設定をしていくだけで、簡単にELT パイプラインが構築できるサービスを使われている話をよく聞きます。エンジニアのいない組織でも、すぐに各種データを収集して分析を始められる点では重宝されるのでしょう。しかしながら、チームメンバーがエンジニア主体の我々にとって、コスト感覚がマッチしなかった、というのが正直なところです。(私だけ?) 各種SaaSのAPIやDB接続をイチから用意してELTパイプラ
はじめに browser-use を使う上で詳しいドキュメントがなかったので、自分で使ってみたことをまとめてみました。 browser-use の基礎的なところは以下にまとめてあります。 ブラウザを起動させず、ヘッドレスモードで実行したい BrowserConfigのheadlessをTrueにすることで、ブラウザを起動させず、ヘッドレスモードで実行することができます。 from browser_use.browser.browser import Browser, BrowserConfig browser = Browser( config=BrowserConfig( headless=True, ) ) async def main(): model = ChatOpenAI(model='gpt-4o') agent = Agent( task='東京の天気をGoogleで調べて
データがSQL対応のDB(データベース)に格納されている場合、SQLを使いデータを取得し操作することが多いことでしょう。 Python上ではPandasやPolarを使うかもしれませんが、SQLを利用したほうが便利な場面も少なくありません。 そこで登場するのがDuckDBです。 DuckDBは、インプロセス(例えば、Python内駆動)で動作するRDBMS(リレーショナルデータベース管理システム) で、指示を送信するクライアントもそれらを読み取って処理するサーバーも必要ありません。 そこが、PostgreSQLやMySQLなどの通常のRDBMSとの大きな違いです。 また、オンライン分析処理 (OLAP) 系のRDBMSのため、データ分析に適しています。 要するに、DuckDBは「組み込み用途のOLAP系のRDBMS」ということです。 似たようなものに、SQLiteというものがありますが遅速
はじめに 最近話題になっている browser-use について自己理解のために基本的なところをまとめてみます。 公式リポジトリはこちら browser-use とは? browser-use は、Python で作られた「AI エージェントがウェブブラウザを操作できるようにする」ためのライブラリです。具体的には、下記のような機能を提供しています。 ビジョン機能や HTML 抽出 ブラウザで読み込んだページの DOM(要素構造)を解析、スクリーンショットやテキスト情報を取得できます。 マルチタブ管理 自動で複数タブを開き、それぞれのタブを並行して操作できます。 カスタムアクション機能 たとえば「特定のファイルを保存」「データベースへ登録」「社内チャットに通知する」など、ユーザー独自のアクションを定義できます。 自己修正機能 操作が失敗したり、要素を見つけられなかったりした場合に、自分で修正
はじめに こちらはABEJAアドベントカレンダー2024 12日目の記事です。 こんにちは、ABEJAでデータサイエンティストをしている坂元です。最近はLLMでアプローチしようとしていたことがよくよく検証してみるとLLMでは難しいことが分かり急遽CVのあらゆるモデルとレガシーな画像処理をこれでもかというくらい詰め込んだパイプラインを実装することになった案件を経験して、LLMでは難しそうなことをLLM以外のアプローチでこなせるだけの引き出しとスキルはDSとしてやはり身に付けておくべきだなと思うなどしています(LLMにやらせようとしていることは大抵難しいことなので切り替えはそこそこ大変)。 とはいうものの、Agentの普及によってより複雑かつ高度な推論も出来るようになってきています。弊社の社内外のプロジェクト状況を見ていても最近では単純なRAG案件は減りつつあり、計画からアクションの実行、結果
どうもHPかわさきです。Pythonistaなら使いたいですよね、内包表記。と思っていたのですが、どうもそうでもないこともあるようです。 先日の編集会議で、普段はRubyをメインに使っていて、たまにはPythonも使うよって人から「え? 内包表記? そんなによく使うの?」みたいなコメントをもらったんですよね。彼は筆者よりもプログラミングのスキルは高いし、使っている言語もたくさん、アイデアもあふれているしと、そりゃーもう素晴らしいプログラマー。そんな彼からそんな言葉を聞くとはちょっと意外だったのです。 でもよく考えてみると、他の言語でたくさんの経験があるプログラマーがちょこっとしたことをやりたいときに、(便利そうなフレームワークがたくさんあるという理由で)Pythonを手にしたらどうなんでしょう。Pythonに特有の内包表記なんて使わないで、これまでに自分が身に付けてきた知識と経験を基にした
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く