Python関連のことを調べてみた2022年06月22日

Python関連のことを調べてみた2022年06月22日

pythonnetでPythonからDLLを呼び出す

今回は以前に業務でPythonファイルからC#DLLを使用しないといけない場面があったのでその時の備忘録です。

# DLL
今回は例として以下のようなコードのDLLを使用します。
“`test.cs
public class Test
{
public static int Addiction(int a, int b)
{
int num;
num = a + b;

return num;
}

}
“`
簡単な足し算をするプログラムです。
今回はインスタンス化しなくても呼び出せるように静的メソッドを定義しています。

# Python
Python 3.7.8

使用するDLLが32bitの時はPythonも32bitを使用するようにしてください。64bitのPythonでは32bitのDLLを使用することはできません。
## ライブラリ
題にも書いた通り、pythonnetを使用します
“`bash
pip in

元記事を表示

Atcoder ABC256A-EをPythonで解く

# A – 2^N
解説にも書いてある通り。いくつか解き方があります。`2^n`が`1<

元記事を表示

【Pandas】DataFrameを結合する方法 | concat / merge / join

## 【はじめに】

Pythonライブラリの「Pandas」の中で、DataFrameを結合する方法はいくつかあります。
今回はその中でも「concat」、「merge」、「join」について、それぞれの違いに触れながら紹介していきます。

### 本記事の内容

– pandasのインポート
– csvファイルの読み込み
– 列を取得する
– DataFrameを結合する | concat()
– DataFrameを結合する | merge()
– DataFrameを結合する | join()

## 【pandasのインポート】

“`Python
import pandas as pd
“`

## 【csvファイルの読み込み】

「1920年から2015年までの全国の人口推移のデータ」を使用します。

“`Python
df = pd.read_csv(‘data.csv’, encoding=’shift-jis’)
df
“`

| | 都道府県コード | 都道府県名 | 元号 | 和暦(年) | 西暦(年) | 人

元記事を表示

知識ゼロから始める具体的なプログラミング入門

試しに「プログラミング入門」「プログラミング 始め方」で検索したところ、どうやってプログラミングを(無料で)勉強できるか具体的に書いてるページがなかったので(2022年現在)書いてみることにします。

# プログラミング言語とは
プログラミングを始めるにはまずプログラミング言語を選ばなければいけません。プログラミング言語とはコンピュータ(スマホや家電内蔵のものも含む)にどんな動作を行うべきかを記述するためのものです。なぜそんなものが必要なのかというと、コンピュータというのは0と1(より正確には電流のオン・オフ)しか判別できないため、指示するためには「0100001011…」というように書かなければいけないからです。プログラミング言語を使うと人間でも理解できる形でコンピュータに対する命令が書けます。

# 最初に学ぶべきプログラミング言語
一口にプログラミング言語と言ってもJava、Python、C#、Goなどたくさんあります。なぜかというと「複数の処理を並列して高速で動かしたい」「複雑なプログラムを書くために機能ごとにまとめられるようにしたい」「既存の言語は記述量が多くエラーも発見

元記事を表示

Python学習サイトメモ

模擬試験
https://python-basic.com/
https://study.prime-strategy.co.jp/

元記事を表示

Masoniteで登録フォーム(Laravelとの比較)

今回Masoniteで、よくありそうな登録フォームを作成してみました。
Laravelと比較しながら少しだけ見ていきたいと思います。
※controllerとviewだけ。

今回はアイテム(item)を登録・編集するイメージのものになります。
また、登録も編集も同一のviewを使用するようにしています。

[Laravel Documentation](https://laravel.com/docs/9.x)
[Laravel ReaDouble](https://readouble.com/laravel/9.x/ja/)
[Masonite Documentation](https://docs.masoniteproject.com/)

# Controller
### Laravel
“`php:app/Http/Controllers/ItemController.php
use App\Http\Controllers\Controller;
use App\Http\Requests\ItemRequest;
use App\Models\Item;

class

元記事を表示

GOFデザインパターンをPythonで理解する ~ Creational Design Patterns編 ~

# GOFとは?
GOFとはGang of Fourの略でオブジェクト指向プログラミングにおける再利用性の高いコーディングのパターン、デザインパターンをまとめた4人のプログラマー(Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides)のことを指します。
彼らは「Design Patterns: Elements of Reusable Object-Oriented Software(オブジェクト指向における再利用のためのデザインパターン)」の著者であり、今回はその本の中でまとめられているCreational Design Patterns(生成に関するデザインパターン)についてまとめていこうと思います!

Creational Design Patterns(生成に関するデザインパターン)は以下の通りです。

– Abstract Factory
– Builder
– Factory Method
– Prototype
– Singleton

これらのパターンはその名の通り、クラスの生成に関するデザインパターン

元記事を表示

queueを用いた幅優先探索を今更実装・比較してみた

少しずつアルゴリズムとデータ構造の勉強をしていきます。
以前もやっていたのですが、割とテキトーに勉強していたので理解したところをきちんとアウトプットしていきます。
学問的にきちんと学んだわけではないので、雑なところもあるとは思いますがそこはご了承ください。

## 幅優先探索(BFS)
#### 幅優先探索とは
**[wiki](https://ja.wikipedia.org/wiki/%E5%B9%85%E5%84%AA%E5%85%88%E6%8E%A2%E7%B4%A2)** より引用
> 幅優先探索(はばゆうせんたんさく、英: breadth first search)はグラフ理論(Graph theory)において木構造(tree structure)やグラフ(graph)の探索に用いられるアルゴリズム。アルゴリズムは根ノードで始まり隣接した全てのノードを探索する。それからこれらの最も近いノードのそれぞれに対して同様のことを繰り返して探索対象ノードをみつける。「横型探索」とも言われる。

> 幅優先探索は解を探すために、グラフの全てのノードを網羅的に展開・検査する。最良優先

元記事を表示

Youtube Data APIを使ってカスタムURLを元にチャンネルIDを取得出来るか試してみた

[Youtube Data API](https://developers.google.com/youtube/v3/getting-started)で特定のチャンネルからアップロードされた動画の情報を取得する場合、対象チャンネルのIDが必要になります。
自分のチャンネルであれば、Youtubeにログインして設定画面からチャンネルIDを確認することが可能ですが、
他人のチャンネルの場合は、対象のチャンネルのURLの末尾を確認するのが一般的だと思います
※YoutubeのチャンネルURLについては、[こちら](https://support.google.com/youtube/answer/6180214?hl=ja&ref_topic=9257109)をご参照ください

https://support.google.com/youtube/answer/6180214?hl=ja&ref_topic=9257109

ただし、人によっては「カスタムURL」を設定することで独自のURLを使用している方もいることが分かりました
※カスタムURLの詳細は、[こちら](https://su

元記事を表示

motoによるSQSキュー(FIFO)のモック作成

# はじめに
– boto3で実装したSQSメッセージ送信処理のテストコードを書くために、AWSサービスをモックするmotoを使うことにしました。
– テストフレームワークは、pytestを使います。
– その時にはまったポイントをご紹介します。

# プロダクトコード
– テスト対象となるプロダクトコードは、以下のようにクラスで実装しました。
“`python:sqs.py
# -*- coding: utf-8 -*-

import os
import uuid
import logging
import boto3

logger = logging.getLogger()

class Sqs():
def __init__(self):
self.__queue_url = os.environ.get(‘QUEUE_URL’)
self.__sqs_client = boto3.client(‘sqs’)
self.__msg_group_id = “group_id_1”

def send

元記事を表示

【LINE WORKS】Pythonでオウム返しBotを作る【API 2.0】

# はじめに
LINE WORKS APIの新しいバージョン「[API2.0](https://line.worksmobile.com/jp/pr/20220404/)」がリリースされ、従来のAPI (API1.0) は非推奨化および提供終了が予定されている ([参考](https://jp1-notice.worksmobile.com/view/#/detail-view/571?usess=1&serviceType=12&serviceLanguage=ja_JP))。

今回は、PythonによるAPI2.0に対応したBot実装例を、シンプルなオウム返しBotをベースにまとめる。

# ソースコード
具体的な実装については以下を参照。[FastAPI](https://fastapi.tiangolo.com/) をサーバーとして使った。

https://github.com/mmclsntr/lw-api-2_0-echo-bot-python-fastapi

以下、実装内容について一部抜粋して解説する。

# 実装解説
– 環境: Python 3.9

##

元記事を表示

Python で Amazon Rekognition を動かしてみた

# 背景
「家に不在時でも〇〇が家に来たら〇〇を行う」
こんな事ができたらなぁと考える事がありました。

例えば
 ・ヤクルトレディが来たらオートロック解除
 ・宅配業者ならオートロック解除
 ・N〇Kならブラックリスト登録
でもどうやって判断するんだ?画像分析ってなんか難しそうやなぁ

と言うことで今回は、やりたい事の一端に活用できそうな **Amazon Rekognition** を動かしてみます。
また、今後応用できるように **Python** で動作できる様にします。

# 流れ
①**Python** 実行
②**Amazon S3** にImageを格納
③**Amazon Rekognition** で要素を分析
こんな流れでいきます。

# 環境
Windows 10 Enterprise 上でWSL2を

元記事を表示

Meraki MV Sense MQTT を使ってみた

# 背景
Meraki MVのAPIの中に”MQTT”と記載があった。
何のことか分からなかったので調べると、面白そうなので動かしてみた。

# 環境
Windows 10 Enterprise 上でWSL2を動かしています。
Ubuntu、Pythonを利用しています。

### Version
“`
$cat /etc/os-release
NAME=”Ubuntu”
VERSION=”20.04 LTS (Focal Fossa)”

$python3 -V
Python 3.8.10

>wsl -l -v
NAME STATE VERSION
* Ubuntu Running 2
“`
# 構成
今回動作確認をした構成図はこちら。
毎度わかりずらいのはすいません☺

tkinterを使用して画像変換器を作成した。

# 目的
pythonを用いてGUIを操作し、画像変換器を作成します。

# イメージ
完成したGUIをキャプチャしてます。画像を選択します。左には、加工前の画像(Base)と右には加工後の画像を(Effect)を表示するようにしています。タブを選択すると、設定してあるいくつかの加工ができるようにしています。

![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176158/dfaa44d8-b2e4-f626-158b-57635aba6eba.png)

## ライブラリ
GUI表示、画像処理ライブラリを選んだ背景です。また、モジュールを3つに分けてプログラムを作成しており、その背景について簡単に説明します。

### GUI
以前の記事では、PySimpleGUIを使用していたのですが、違うGUIを使用してみたかったので、今回は、tkinterを使用することにしました。
GUIは、tkinterを使用してます。

### 画像処理
画像処理は、Pillow, NumPy, OpenCV

元記事を表示

CDKでCloudFront Functionが見つからないエラーの対処

## 問題

CDKでCloudFront Functionを作成した状態で、別のリソースを変更した際に下記のエラーが出た。

“`sh
12:02:49 | UPDATE_FAILED | AWS::CloudFront::Function | mycloudfrontfunction911B181C
Resource handler returned message: “Resource of type ‘AWS::CloudFront::Function’ with identifier ‘ap-northeast-1MyCloudFrontFunction6AA8AF07’ was not found.” (RequestToken: 74d6dbad-01af-c5ca-985b-4091c1eddd4a, HandlerErrorCode: NotFound)
“`

NotFound?CloudFront Functionの変更は行っていないのに何故だろうと思って調べると下記のissueを見つけた。

[(a

元記事を表示

PythonのPyMuPDFでPDFのContentを編集する

## はじめに

とあるフリーソフトで図形を作成し、PDF出力したらWatermarkががっつり入っていて、そのままでは使い物になりませんでした。
とはいえ、PDFの内容がvector形式で記述されていれば、Inkscape(Illustratorの互換ソフト)で個別に編集することで、きれいに取り除くことができます。

しかし、何か不備があって複数の図形を作り直した際、すべてのPDFを個別にInkscapeで編集するのが億劫だったので、PythonによるPDF編集を試みました。

## install PyMuPDF

ライブラリとしては、PyMuPDFを利用します。importの際は`import fitz`とします。

“`bash
pip install PyMuPDF
“`

他にもPDF関係のライブラリはいくつかあるのですが、特に有名なPyPDF2は日本語がMetadataを含めて入っているとエラーを出して読み込めないのでなしです。
PyMuPDFは中華系ライブラリのおかげか、マルチバイト言語にも優しい設計ですね。

## PDFの構造

今回、PythonでPDFを取り

元記事を表示

0 にごく近い値の数値表現 “非正規化数” とその計算時間について

# 0 にごく近い値の数値表現 “非正規化数” とその計算時間について

※本記事は, [デノーマルフラッシュの速度改善効果](http://www.katsuster.net/index.php?arg_act=cmd_show_diary&arg_date=20210211) からきっかけを得て執筆しています.

## 浮動小数点数について

コンピュータで小数を扱うとき, 小さな値から大きな値まで幅広く扱えるよう, 浮動小数点方式がよく使われる.

小さな値では, 小さな “ずれ” が相対的に大きな誤差になってしまうため, 高い分解能で表現し,
大きな値では, 小さな “ずれ” は相対的に小さな誤差のため, おおまかに表現している.

浮動小数点数の丸め誤差を視覚化したグラフが分かりやすいので引用する.[^1]
![](https://www.researchgate.net/profile/Gael-Deest/publication/321993979/figure/fig2/AS:574194211868672@1513909976420/Maximum-represent

元記事を表示

太鼓WebをWindowsで動かす。

## 太鼓ウェブって何だ?

私はプログラムを教えています。生徒が太鼓の達人が大好きで勉強の合間に時間を決めてやっているらしい。聞いてみると自作の曲を作れるらしく超絶技巧を要する曲もあるらしい。なんじゃそれは?自作曲なんて入れてもらえるのかいな?商用ゲームだろ?なになに?太鼓ウェブなるものがある?そりゃナムコがやってんのかいな?何?違う?

よくわかりませんね???

というわけで生徒からカルチャーショックを受けたところで、先生としては若干反撃したくなり太鼓ウェブについて調べる。なるほど、有志が作って運営してるんかいな。ライセンスは?少し揉めそうになったが、一応線引きができている(これも生徒から明確な説明を受けた。彼は優秀だ。)。なるほど、あ、githubにソース公開されてるやんけ。ざっと見たところLinuxなら簡単に構築できそうだな。

「構築してみるかい?」
「やるやる」

ということで先生としての面目躍如(?)で生徒も興味を示したんですが、Linuxは彼にとって障壁が高く家にも環境が無いので構築法を覚えても家でやることもできません。何とかWindowsでやれんかな?Pythonや

元記事を表示

grpc + Python + Authentication で 複数パーティで異なるアクセスコントロールを実装する

**@kenmaro**です。
普段は主に**秘密計算、準同型暗号などの記事について投稿しています**。
秘密計算に関連するまとめの記事に関しては以下をご覧ください。

> – [秘密計算エンジニアを始めて2年半が経った。](https://qiita.com/kenmaro/items/48059dd60f79e80f5ef8)
> – [秘密計算エンジニアを始めて3年が経った。](https://qiita.com/kenmaro/items/a1d90a074d552b7bf886)

## 概要

今回の記事は、

https://qiita.com/kenmaro/items/90b601be08256b17ff45

の続編となります。前回は、

**grpc をPython で使う際**の

– **SSL/TLS をgrpcに実装する**
– **SSL/TLS + token によるAPIへのアクセスコントロールを実装する**

というシナリオでチュートリアルを行いました。

今回は、前回の2つ目の

– **SSL/TLS + token によるAPIへのアクセス

元記事を表示

Anaconda環境下にインストールしたPyMOL(Open Source) 起動時にエラー「could not find or load the Qt platform plugin “windows”」

## 環境
– Windows 11
– Anaconda
– Python 3.9.12
– Anaconda-Navigator 2.1.4
– conda 4.13.0

## やったこと
すでにconda-forgeがチャンネルに入っている場合は省略
~~~
conda config –add channels conda-forge
~~~
ここから本題
~~~
conda install pymol-open-source
## Solving environment後 Pythonなどのバージョンに合ったものが選ばれる
> Proceed? ([y]/n) ## yと答えるか何も打たずにEnter
> done
~~~

PyMOLの起動
~~~
pymol
> could not find or load the Qt platform plugin “windows” in “”
~~~
というエラーが出た
どうやらPyQt5がプラグインを探せないエラーっぽい

## 試したけどダメだったこと
Anacondaをインストールした際にデフォルトで付いてくる

元記事を表示

OTHERカテゴリの最新記事