群馬県でPythonを使ったAIやシステムを開発しているファントム

Navigation
群馬県でPythonを使ったAIやシステムを開発しているファントム

群馬県でPythonを使ったAIやシステムを開発しているファントムです。企業の経営課題を最適なテクノロジーで解決します。テックブログではPythonを中心にプログラミングに役立つ情報を発信しています。

投稿を検索する


  • 株式会社ファントム コーポレートサイト

カテゴリー



  • AWS 16
  • Django 45
  • FastAPI 4
  • Flask 8
  • GCP 1
  • Information 37
  • Other 32
  • PHP 2
  • Python 93
  • Pythonista 3
  • Rust 1

タグ


Alembic API argparse Beautiful Soup black Channels charset CodeCommit datetime Django REST framework Docker enumerate f-string git GitHub glob Google Colaboratory i18n IAM Internship Jupyter Lambda Matplotlib Nginx OpenCV pandas PIL Pillow PostgreSQL PyCharm PyCon pyenv PyTorch Redis Rembg ReportLab requests S3 Sentry slack tqdm uWSGI venv Vue.js youtube
このサイトはreCAPTCHAによって保護されており、Googleのプライバシーポリシーと利用規約が適用されます。

© 2022 Fantom, Inc.

Hydra WordPress Theme by EckoThemes.

Published with WordPress.

Related Articles

Filter by Category

  • Python(93)
  • Django(45)
  • Information(37)
  • Other(32)
  • AWS(16)
  • Flask(8)
  • FastAPI(4)
  • Pythonista(3)
  • PHP(2)
  • GCP(1)
  • Rust(1)

Filter by Author

  • EIGHT (14)
  • hayai017 (2)
  • press (196)
Back to Latest Articles
Rust

PythonからRustへ!スクレイピングツール開発で感じた驚きと苦労

他人の作ったライブラリを効率的に扱うことができました。入力や出力の型が決まっているので定義ジャンプすればそれがどんな型なのか、どんな関数が用意されてるのか見ることができます。ソースコードも非常に読みやすいです。 trai […]

Posted on 28th 2月 2023 by EIGHT

Flask

Vue.jsとFlaskでSPA(Single Page Application)

Vue.jsとFlaskでSPA(Single Page Application) 普段はフロント側を書く機会がほとんど無いのですが、プロジェクトをモダンなフレームワークに順次対応していきたいと思い、勉強を兼ねてVue. […]

Posted on 26th 2月 2023 by press

Other

コマンドラインからPyCharmを起動する

コマンドラインからPyCharmを起動する Pythonで開発する時は必ず使っているJetBrains社のPyCharmですが、全部入りのIDEであるが故に仮想環境やフレームワークの自動設定などのサポートが手厚いことがか […]

Posted on 23rd 2月 2023 by press

FastAPI

tcp 0.0.0.0:5000: bind: address already in use

tcp 0.0.0.0:5000: bind: address already in use FlaskやFastAPIで開発することも増えてきたので5000番のポートを使用する機会が増えました。Djangoで開発する時 […]

Posted on 22nd 2月 2023 by press

Flask

Flaskで発生するsignal only works in main threadの解決方法

Flaskで発生するsignal only works in main threadの解決方法 Flaskで開発中のアプリケーションを起動すると以下のエラーが発生する場合があります。このエラーは、Flaskではmain関 […]

Posted on 16th 2月 2023 by press

AWS

AWS Cloud9にPython3.9をインストール

AWS Cloud9にPython3.9をインストール AWSのCloud9(Ubuntu)にはデフォルトでPython 3.6.9がインストールされています。 openaiに必要なpandasのインストール opena […]

Posted on 15th 2月 2023 by press

Other

PyCharmで.txtファイルで発生するRequirementsTokenTypeというエラー

PyCharmで.txtファイルで発生するRequirementsTokenTypeというエラー PyCharmで拡張子が.txtファイルを開くとエディタに以下のようなエラーが発生します。 PyCharmでは.txtはr […]

Posted on 15th 2月 2023 by press

Other

お名前.comからXserver Domainにドメイン移管

お名前.comからXserver Domainにドメイン移管 年末や年度末になるとサーバーやドメインの新規契約や更新の時期ですよね。その時々で費用や使いやすさを重視してサービスを選んだ結果、別々の会社で管理されているドメ […]

Posted on 8th 2月 2023 by press

AWS

AWSのCloud9を使ってPythonのプログラミング研修を開催

AWSのCloud9を使ってPythonのプログラミング研修を開催 2022年11月から2023年2月までの期間で、群馬県庁職員を対象にしたDXを促進するためのPythonによるプログラミング研修を開催しました。現在、群 […]

Posted on 4th 2月 2023 by press

PHP

ConoHa WINGからロリポップにWordPressを引っ越し

ConoHa WINGからロリポップにWordPressを引っ越し WordPressを運営していくと処理できるアクセス数やコストなど、様々な理由でサーバーの移行を考えるタイミングがあります。今までWordPressの移 […]

Posted on 20th 1月 2023 by press

Python

AttributeError: module ‘numpy’ has no attribute ‘float’

AttributeError: module ‘numpy’ has no attribute ‘float’ numpyを使ったライブラリをコマンド実行した際に以下のエラ […]

Posted on 16th 1月 2023 by press

GCP

YouTube APIキーの取得方法

YouTube APIキーの取得方法 普段はログインフォームにIDとパスワードを入力してログインしていたサービスでもAPIが提供されていれば、Pythonなどのプログラムからコンテンツのアップロードや取得といった操作を行 […]

Posted on 12th 1月 2023 by press

Other

2022年に最も読まれた記事ランキング

2022年に最も読まれた記事ランキング あけましておめでとうございます2023年もどうぞよろしくお願いします ファントムでは「情報技術で人々の暮らしを豊かにする」という企業理念で、2023年も皆様のお役に立てるよう精進し […]

Posted on 6th 1月 2023 by press

Other

Sentryのエラー検知をSlackに通知

Sentryのエラー検知をSlackに通知 前回に引き続き、今回はSentryとSlackの連携方法について説明します。 SentryとSlackの連携機能は導入する決め手となった理由の一つです。デフォルトではメールアド […]

Posted on 24th 11月 2022 by press

FastAPI

コピペでOK! エラー検知・監視でSentryを導入

コピペでOK! エラー検知・監視でSentryを導入 システムを運用していくうえで避けては通れないシステムの監視とエラーの検知ですが、ファントムではSentryというサービスを利用しています。SentryとSlackを連 […]

Posted on 19th 11月 2022 by press

Python

PythonからDeepLのAPIを使って翻訳

PythonからDeepLのAPIを使って翻訳 最先端のAI技術を使った世界最高レベルの機械翻訳のDeepLをAPIで操作します。deeplのライブラリを使うとPythonで書く通常のPOSTのコードよりも記述量を少なく […]

Posted on 11th 11月 2022 by press

Python

rembgで背景を削除した画像を編集して元の画像と再合成

rembgで背景を削除した画像を編集して元の画像と再合成 YouTubeにアップロードしたrembgで背景を削除する説明動画にコメントをいただいたので、rembgを使った画像処理の続編です。rembgで背景を削除した画像 […]

Posted on 1st 11月 2022 by press

Python

Rembgで画像から背景を削除

Rembgで画像から背景を削除 先日、SNSで見た画像の背景を削除して切り抜くPythonのライブラリを見つけたので早速試してみました。普段業務で画像の背景を処理することも多くソフトを使って背景を削除していたので、Pyt […]

Posted on 23rd 10月 2022 by press

Other

競艇で試したこと

競艇で実装した戦略を紹介します。 1着率を正規化 まず試したのはそれぞれの選手の1着率を全試合から計算してそれをその試合ごとに正規化する方法です。 期待値はオッズと確率の積で表せるので、確率を計算することで相対的にどの券 […]

Posted on 3rd 10月 2022 by EIGHT

Python

MacにGoProをウェブカメラとして認識させてOpenCVで使う

MacにGoProをウェブカメラとして認識させてOpenCVで使う MacとGoProを繋ぎ、GoProをウェブカメラとして認識させてOpenCVに映像を入力します。今回は映像を取り込んで画面に表示するだけですが、Pyt […]

Posted on 1st 10月 2022 by press

View Latest Posts
Rust

PythonからRustへ!スクレイピングツール開発で感じた驚きと苦労


EIGHT
PythonからRustへ!スクレイピングツール開発で感じた驚きと苦労
Posted on 28th 2月 2023 by EIGHT
2024年度 インターンシップ 募集開始

はじめに

PythonからRustへ!スクレイピングツール開発で感じた驚きと苦労

今回は、スクレイピングツールをPythonからRustに書き換えた経験と感想をお伝えしたいと思います。 スクレイピングとは、Webサイトから自動的にデータを取得することです。私は最近Rustというプログラミング言語に興味を持ちました。そこで、以前Pythonで作ったスクレイピングツールをRustに書き換えてみることにしました。 この記事では、私が実装したスクレイピングツールの機能や仕組み、PythonとRustの比較や開発体験、書き換えて変わった点などを紹介します。スクレイピングやプログラミングに興味がある方はぜひ読んでみてください。

実装したこと

私が実装したスクレイピングツールは以下の4つの機能を持っています。

  • 特定のサイト(例:ニュースサイトやブログなど)をスクレイピングする
  • openAI(人工知能が文章を生成するサービス)で結果を要約する
  • サムネ画像(記事の内容を表す画像)を生成する
  • ツイートする

書き換えて感じたこと

PythonからRustへ書き換える過程で感じたことは大きく分けて2つあります。一つはPythonとRustそれぞれの強みや弱みです。もう一つはどんな場面でどちらが有利かです。

Pythonに関して

Pythonは非常に使いやすい言語です。情報が多くて殆どライブラリが用意されているので、小規模な場合はPythonで書く方が楽で速いです。また、動的型付け言語なので型宣言やコンパイルが不要です。 しかし、Pythonにも欠点があります。コードリーディングが困難です。自分で書いたコードでも引数や返り値が何か分からなくなったりします。そのためdocstring(関数や変数などにコメント付ける機能)を拡充させる必要があります。

Rustに関して

Rustは静的型付け言語です。コンパイル時に型チェックやメモリ管理など厳密なチェックが行われます。そのおかげで安全性やパフォーマンスが高いです。

  • 他人の作ったライブラリを効率的に扱うことができました。入力や出力の型が決まっているので定義ジャンプすればそれがどんな型なのか、どんな関数が用意されてるのか見ることができます。ソースコードも非常に読みやすいです。
  • trait(型に特定の機能を付与する仕組み)のデフォルト関数の設定により、個別サイトごとのスクレイピングを実装するときに追加で何を定義すればいいのかはっきりと分かります。
  • ライブラリを作る場合はPythonよりも柔軟で優れたシステムが備わっています。例えば、crate(パッケージ管理システム)やdoc(ドキュメント生成システム)などです。

しかし、Rustにも欠点があります。情報の少なさです。日本語記事は殆どありません。ライブラリの使い方自体はソースコードを読めば良いですが、特にRustをAWS lambda(サーバーレスコンピューティングサービス)に載せる時などは情報がなく非常に苦労しました。 また、ライブラリも未完成のものだったり、そもそも存在しなかったりすることもあります。その場合は自分で書く必要があります。

どんな場面でどちらが有利か

私はPythonとRust両方使ってみて得られた知見は以下のようなものです。

  • Pythonは小規模なプロジェクトやプロトタイプ開発に向いています。開発速度や手軽さを重視する場合はPythonを選ぶべきです。
  • Rustは大規模なプロジェクトやパフォーマンス重視の開発に向いています。安全性や効率性を重視する場合はRustを選ぶべきです。

まとめ

以上、スクレイピングツールをPythonからRustへ書き換えた経験と感想をお伝えしました。 私はRustの高速さや安全さ、読みやすさや使いやすさに感動しました。しかし、情報の少なさやライブラリの不足などもありました。 私は今後もRustで開発することを考えていますが、プロジェクトの規模や目的に応じてPythonも使っていきたいと思います。 最後まで読んでくださりありがとうございました。

ファントムYouTubeチャンネル

株式会社ファントムへのお問い合わせ

群馬県でPythonを使ったAIやソフトウェアを開発している株式会社ファントムが運営しています。




    EIGHT
    • Share Article:
    • Twitter
    • Facebook
    • Pinterest
    • LinkedIn
    • Reddit