- 1. covid19-hyogo向けのデータを取得して生成するまで完全自動化したお話
- 2. Click(Python) のサブコマンドをファイルを分割して実装する
- 3. Chalice を使って AWS Lambda 上に LINE Bot 用の Webhook を作成する
- 4. [Python]台風の経路をfoliumを使って地図上に書いてみた
- 5. AWS Lambda と連携するマイクロフレームワーク Chalice を使ってみる
- 6. [Python]Classの第一引数はなぜselfなの?
- 7. Pythonの文字列から時間計算
- 8. IBM Watson Speech to Text API を使ってみた (Python)
- 9. トラブったときに参照した記事一覧:Pytnon編
- 10. Macの仮想環境上でaws-cliが実行できない時の解決方法(Python3.8インストール後)
- 11. Kaggle Titanic data set – Top 2% guide (Part 05) – Final
- 12. フィボナッチ数列(今更聞けない)
- 13. pythonのlambda式って・・・
- 14. scipy.optimize.minimize を使ったGPS測位計算みたいな最適化計算の動作確認
- 15. PySimpleGUIで画像処理ビューアーを作る
- 16. Python初心者がエナジードリンクあるあるをコード化してみた
- 17. Mcomixの画像キャシュ効率化
- 18. AWS Amazon Linux2 で Django 2.2以降の環境を構築する
- 19. Pythonを使ったDigest認証の設定@Lambda
- 20. (Django) django-extra-viewsのUpdateWithInlinesViewで、条件によってInline Formを変える
covid19-hyogo向けのデータを取得して生成するまで完全自動化したお話
#もくじ
[1.はじまり](#はじまり)
[2.私が作ったスクリプト](#私が作ったスクリプト)
[3.兵庫県のデータ公開状況](#兵庫県のデータ公開状況)
[4.データ形式について](#データ形式について)
[5.データ生成の自動化](データ生成の自動化)
[6.苦労した点等](#苦労した点等)
[7.最後に](#最後に)##兵庫県 新型コロナウイルスまとめサイト
兵庫県にお住まいの方は、ぜひこれから参考にしていただければ幸いです。(これからもUIの改善等アップデートをしていく所存です。)
https://stop-covid19-hyogo.org#はじまり
東京都が[新型コロナウイルス対策サイト](https://stopcovid19.metro.tokyo.lg.jp/)をオープンソースで立ち上げた話は有名です。そして、Twitterを見ていると、三重県の高専生が4人でサイトを立ち上げたという話を見て、私も自分の住む兵庫県向けにサイトを立ち上げてみよう…と思っていたら既に他の方が作成を開始していたので、コントリビュートを始めたのがきっかけです。そして、Web開発経
Click(Python) のサブコマンドをファイルを分割して実装する
Python の Click、結構便利で簡単に CLI ツールが作れて LGTM ですね(← 使い方あってる?)。
その Click を使ってサブコマンドを実装するときに、ファイルを分割して実装するのに少々苦戦したので、そのことについて適当な例を使って実装の流れを書いてみようと思う。
間違いの指摘や、ここもっとこうした方がいいよ等の助言がありましたら、コメント頂けると幸いです。ちなみに、サブコマンドを複数ファイルに分割して実装しようと思ったのは、「関心事は分離してそれぞれのファイルに分けた方が良いかなぁ」と思ったからである。
## TL;DR
“`py:subcmd.py
@click.command()
def cmd():
pass
“`“`py:cmd.py
from subcmd import cmd as subcmd@click.group()
def cmd():
passcmd.add_command(subcmd)
“`## バージョン
* Python: 3.8.0
* Click: 7.0## サンプルとして実
Chalice を使って AWS Lambda 上に LINE Bot 用の Webhook を作成する
# はじめに
掲題通りです。
多くの記事では LINE Bot の応答を返すサーバーは Heroku の上に構築されていますが、API Gateway + AWS Lambda を利用してサンプルを構築してみたのでそのメモになります。## コンテンツ
以下の方法で作成した Chalice の line-bot プロジェクト内で動作を確認。
LINEの設定などで分からない点は、末尾の参考URLなどを参照ください。“`bash
$ pipenv install –python 3.7
$ pipenv install chalice line-bot-api
$ pipenv run chalice new-project line-api
“`ここで作成された `app.py` , `requirements.txt` , `.chalice/config.json` を以下の通り修正します。
なお、ソースコードは [line-bot-apiのGithub](https://github.com/line/line-bot-sdk-python) から持ってきた「
[Python]台風の経路をfoliumを使って地図上に書いてみた
# 記事の内容
子供の頃に台風ってこんなに頻繁に発生してたっけ?とか10月ぐらいに台風って日本に来てたっけ?という漠然とした疑問がありました。
気象庁が公開している台風に関するデータを使ってこのあたりの疑問を解決出来たらないいなと思い、色々やってみました。# データ取得元
政府が運営しているデータカタログサイトから取得しました。[データカタログサイト](https://www.data.go.jp/)
[気象予報_天気予報・台風の資料](https://www.data.go.jp/data/dataset/mlit_20140919_0747)
このページの「台風位置表のCSVデータ」を使用します。この記事ではリンク先に掲載されている2001年から2019年までのCSVデータを使用しました。
# foliumを使って台風の経路を地図上に書いてみる
## 準備
CSVデータのヘッダーが日本語だったので英語に変えました。だいぶ適当です~~~
year,month,day,hour(UTC),typhoon_no,typhoon_name,rank,latitude,l
AWS Lambda と連携するマイクロフレームワーク Chalice を使ってみる
# はじめに
Serverless アプリケーションのフレームワークとしては [Serverless Framework](https://serverless.com/) が有名だが、以下の点で個人的なユースケースにちょっと合わないところを感じていた。
– Python で開発したい!
– Serverless Framework 自体は様々な言語の開発にも対応しているが、Node.js/npm ベースであり、これらの知識が多少要求される
– たくさんの言語で対応できているので、悪く言うと情報が散らかっていて情報収集結果の読み替えが少し大変
– JSの場合の解決策は提示されているが、これのPythonの場合は…と考える時間がそこそこあるという経験談から
– マルチプラットフォーム対応は必要ない
– AWS 特化さえしてくれてれば今回は問題ないそこで改めて情報を調べていると [Chalice](https://github.com/aws/chalice) というマイクロフレームワークがAWS公式のGithubリポジトリから出ているこ
[Python]Classの第一引数はなぜselfなの?
## はじめに
Pythonでクラスを定義する際,第一引数の命名が “`self“` なのはなぜだろうとずっと疑問に思ったので,調べて書き残しときます.## 第一引数self以外ではダメ?
結論からするとダメです.[PEP8](https://pep8-ja.readthedocs.io/ja/latest/index.html#id36)(1)に “`インスタンスメソッドのはじめの引数の名前は常に self を使ってください。“`
と定義されています.ただし,動作上なら “`self“` 以外でもきちんと動きます.例は[ここ](https://www.geeksforgeeks.org/self-in-python-class/)(2)を参考にしてます.“`python
class Hoge():
def __init__(self_inplace_hoge, string):
self_inplace_hoge.string = string
print(‘self_inplace_hoge: ‘, self_inpla
Pythonの文字列から時間計算
## 2時刻(HH:MM:SS)の差分を計算するメソッド
“`python
# 時間計測関数
def time2second(timestr):
timelist = timestr.split(“:”)
timelist = [int(i) for i in timelist]
second = timelist[0]*3600 + timelist[1]*60 + timelist[2]
return seconddef calc_timediff(t1, t2):
# 秒数算出
t1second = time2second(t1)
t2second = time2second(t2)
# 秒数差算出
timediff = abs(t2second – t1second)
return timedifft1 = ’11:27:48′ # 11時間27分48秒
t2 = ’11:37:04′ # 11時間37分4秒diffsecond = calc_timediff(t1, t2)
tp
IBM Watson Speech to Text API を使ってみた (Python)
## 経緯
PythonからIBMのAI、Watsonに音声データを送信して音声認識( Speech to Text )をしていきます。
API 初心者向けです。## 環境
Macbook: MacOS Mojave
Python: Python 3.8.0## 前提
Python インストール済
IBM Cloud アカウントを取得済 (アカウント作成は[こちら](https://www.ibm.com/watson)から。)## インストール
ターミナル上、または python notebook 上で以下のコマンドを実行。“`
$ pip install “watson-developer-cloud>=1.4.0”
“`## 資格情報の確認
[IBM Cloud のサイト]((https://cloud.ibm.com/login))で Speech To Text を選択すると、マイアカウントから資格情報を確認出来るようになります。
API 鍵と URL をコピーし、以下のコード([こちらのコード](https://qiita.com/white0221
トラブったときに参照した記事一覧:Pytnon編
# この記事の目的
開発時にトラブってググったけど、再発時に忘れてるということが多いのでトラブルごとに解決に役立った記事をまとめておく
## DB接続
**カーソル処理をWith句でまとめる**
参照先:[Python+MySQL でコネクションやカーソルと with 文](https://qiita.com/umezawatakeshi/items/6c3483ea0e082f2d8926)“`python
from contextlib import closing
with closing(conn.cursor()) as cursor:
cursor.execute(“SELECT * FROM table”)
rows = cursor.fetchall()
…
“`
Macの仮想環境上でaws-cliが実行できない時の解決方法(Python3.8インストール後)
## 経緯
pythonの仮想環境上で、aws-cliを使用しようと公式のコマンドを実行しようとしても上手くできなかったので、その解決方法の備忘録。
設定を色々いじってもダメだったので全部消してから再インストールしてみました。(2020/03)## 仕様
Macbook: MacOS Mojave
Python: Python 3.8.0## aws-cliをインストール
公式に従い、以下を実行“`
curl “https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip” -o “awscliv2.zip”
unzip awscliv2.zip
sudo ./aws/install
“`しかし、“`$ aws –version“` でバージョン確認したところエラー発生
> cannot execute binary file## デバッグ
色々試したものの、どれもうまくいかなかったので一度仕様してないファイルはきっちり消すため
“`$ rm ‘/usr/local/bin/aws’“`
“`$ r
Kaggle Titanic data set – Top 2% guide (Part 05) – Final
*本記事は @qualitia_cdevの中の一人、@nuwanさんに作成して頂きました。
*This article is written by @nuwan a member of @qualitia_cdev.## Table of contents
1. [Kaggle Titanic data set – Top 2% guide (Part 01)](https://qiita.com/qualitia_cdev/items/c36f3cefe55501ae3122)
2. [Kaggle Titanic data set – Top 2% guide (Part 02)](https://qiita.com/qualitia_cdev/items/093ec0bba76f2a1ad2ab)
3. [Kaggle Titanic data set – Top 2% guide (Part 03)](https://qiita.com/qualitia_cdev/items/b5cf360c7c46b05b8343)
4. [Kaggle Titanic data set
フィボナッチ数列(今更聞けない)
#はじめに
学部二年の時に動的計画法を学びました。
ただ、その知識も使わないとどんどん忘れていきます。
そんな基本的なところを踏まえているフィボナッチ数列に触れ、思い出すためにこちらの記事を書かせていただきます。# フィボナッチ数列
フィボナッチ数列とは“`math
\begin{align}
F_0 = 0 \quad \quad \quad \quad \quad \quad \quad \\
F_1 = 1 \quad \quad \quad \quad \quad \quad \quad \\
F_n = F_{n-1} + F_{n-2} \quad (n > 2)\\
\end{align}
“`
で表される数式です。こちらプログラミングで特にはどのようにすればよろしいのでしょうか。
##愚直に考える
“`fib.py
import timedef fib_stupid(n):
if(n == 0):
return 0
elif(n == 1):
return 1
else:
pythonのlambda式って・・・
デコレータとしても使えるのかよ
“`python
b = lambda func: lambda *args, **kwargs: (print(“a”), func(*args, **kwargs), print(“c”))@b
def a():
print(“b”)“`
おもろ
scipy.optimize.minimize を使ったGPS測位計算みたいな最適化計算の動作確認
ここでは、GPSなどの測位計算の基礎となっている計算を、scipy のOptimizer(最適化の計算を行うライブラリ) を使って計算してみます。
### 背景
おじさんは今まで、自分で目的関数を設定すると、それを解くための計算式は紙と鉛筆でしこしこ計算して導出していました。しかし昨今は、深層学習もそうであるように、計算式を自分で設定しなくても、データを与えたり、目的関数を与えるだけで最適化の計算をしてくれるライブラリが多く利用できます。ここでは、目的関数(誤差の関数)がわかっている場合の最適化を扱います。
実際に、ここでは目的関数“`objective“` を定義して、
“`python
def objective(x):
…
return val
“`
これを最小化する計算は、初期条件“`x0“`を与えれば、以下の一行で行えます。“`python
from scipy.optimize import minimize
result = minimize(objective, x0=x0, constraints=())
“`#
PySimpleGUIで画像処理ビューアーを作る
この記事を読んでできるものは以下の通りです
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11002/bb62d6cd-a5f2-c66a-4f9f-a8b596587e37.png)
– 画像を選択して表示するビューアー
– パラメータを渡して画像処理を行う
– 画像処理した画像を表示するPySimPleGUIの基本的な説明に関しては、[Tkinterを使うのであればPySimpleGUIを使ってみたらという話](https://qiita.com/dario_okazaki/items/656de21cab5c81cabe59)を参考にしてください
# 検証環境
– windows10
– macOS(catalina)
– Python3.7
– ライブラリー
– tkinter
– PySimpleGUI
– Pillow# きっかけ
![image.png](https://qiita-image-store.s3.ap-northeas
Python初心者がエナジードリンクあるあるをコード化してみた
エナジードリンクは体への負担が大きいという事を伝えたい…
それだけのためにお題にしました。(クラスと呼び出しをファイル分けて書いていないのは許してください)“`python
import sysclass Monena:
def __init__(self):
self.physical = 50
self.mental = 50
self.destruction = False
self.physical_recovery = 0
self.mental_recovery = 0def status_check(self):
print(‘体力は’ + str(self.physical))
print(‘気力は’ + str(self.mental))if self.physical < 0 or self.mental < 0: self.destruction = True
Mcomixの画像キャシュ効率化
#はじめに
mcomixは漫画等が非常に読みやすいもののpython2であること、そして画像一時ファイルが/tmp以下に作られてしまいHDDアクセスが著しい。
そこで、python3ベースでforkしているmcomixに手を加えて画像キャシュの効率化を計った。#環境
Linux Mint 19.3(おそらく他のものでディストリビューションでも問題ない)
git
python 3以上
memory-tempfile2.3.2以上(公式web: https://pypi.org/project/memory-tempfile/)
他はgitのREADME.rst参照#ソースの取得
gitにてソースを自分の作業ディレクトリに移行する。https://github.com/mimaburao/mcomix3.git“`
$git clone https://github.com/mimaburao/mcomix3.git
“`#ライブラリのインストール
README.rstを参照して必要なライブラリをインストール後、memory-tempfileをインストールする。`
AWS Amazon Linux2 で Django 2.2以降の環境を構築する
# 概要
この記事は初心者の自分がRESTful なAPIとswiftでiPhone向けのクーポン配信サービスを開発した手順を順番に記事にしています。技術要素を1つずつ調べながら実装したため、とても遠回りな実装となっています。
前回の [Djangoで画像を配信できるwebAPIを作る](https://qiita.com/Ajyarimochi/items/b7278c357b2ffca183b5) で実装したAPIを外部のサーバへデプロイし、パグリックな環境からAPIを利用できる状態にします。
作業は
1. クラウドのインスタンスを立てて必要なソフトやパッケージをインストール
2. RestAPIのアプリをデプロイになります。この記事では「1. クラウドのインスタンスを立てて必要なソフトやパッケージをインストール」を纏めます。
### 構成
今回はAmazonのEC2を使うことにしました。OSはAmazon Linux 2 を選びました。構築に失敗したり環境が合わなかったらインスタンスごと作り直せば良いと考えたので、docker等のコンテナは使わず、OSに直接イ
Pythonを使ったDigest認証の設定@Lambda
# はじめに
Digest認証について検索してもほとんど情報がなかったので [Pythonを使ったBasic認証の設定@Lambda](https://qiita.com/ijufumi/items/7a141a6528a28f180fb1) の続編として書いてみた。
Digest認証自体ほとんど触ったことがなく、その仕組みを勉強するのも兼ねて。# コード
“`python
import os
import ctypes
import json
import base64
import time
import hashlib
import copy
from Crypto.Cipher import AESaccounts = [
{
“user”: “user1”,
“pass”: “pass1”
},
{
“user”: “user2”,
“pass”: “pass2”
}
]realm = “sample@test.com”
qop = “auth”
# Basi
(Django) django-extra-viewsのUpdateWithInlinesViewで、条件によってInline Formを変える
Djangoでインラインフォームを簡単に実装できる[django-extra-views](https://django-extra-views.readthedocs.io/en/latest/index.html)。
ただたインラインフォームを使うだけだったら、view.pyに
“`python
from extra_views import UpdateWithInlinesView, InlineFormSetFactoryclass PostUpdateInlineFormSet(InlineFormSetFactory):
model = Author
fields = (‘name’,)
factory_kwargs = {‘extra’: 0,’can_order’: False, ‘can_delete’: False}class PostUpdate(UpdateWithInlinesView):
model = Post
fields = (‘title’,)
template_name = ‘post/post_detail.html’