Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Pythonで書かれたマイクロサービスを2to3した
Search
iwamot
PRO
April 14, 2022
Technology
880
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Pythonで書かれたマイクロサービスを2to3した
2022-04-14
みんなのPython勉強会 #80 懇親会
https://startpython.connpass.com/event/242556/
iwamot
PRO
April 14, 2022
More Decks by iwamot
See All by iwamot
MCP Appsを作ってみよう
iwamot
PRO
4
230
自己紹介
iwamot
PRO
1
69
パワポ作るマンをMCP Apps化してみた
iwamot
PRO
0
480
8万デプロイ
iwamot
PRO
2
360
AIエージェント・マイクロサービス時代。AWSでの手軽な構築法を考えて試してみた
iwamot
PRO
1
100
これがLambdaレス時代のChatOpsだ!実例で学ぶAmazon Q Developerカスタムアクション活用法
iwamot
PRO
10
2.7k
Developer Certificate of Origin、よさそう
iwamot
PRO
0
94
復号できなくなると怖いので、AWS KMSキーの削除を「面倒」にしてみた CODT 2025 クロージングイベント版
iwamot
PRO
1
200
復号できなくなると怖いので、AWS KMSキーの削除を「面倒」にしてみた
iwamot
PRO
3
160
Other Decks in Technology
See All in Technology
[モダンアプリ勉強会]今更聞けないGit/GitHub入門
tsukuboshi
0
310
ITエンジニアを取り巻く環境とキャリアパス / A career path for Japanese IT engineers
takatama
4
1.8k
サプライチェーンセキュリティの空白地帯 - 信頼できる”依存性”の未来を考える
rung
PRO
2
790
ABEMA の Datadog × OTel 基盤、 中から見るか? 外から見るか?
tetsuya28
0
110
Agentic Defenseとともにセキュリティエンジニアが輝き続けるには / How Security Engineers Can Keep Excelling with Agentic Defense
yuj1osm
0
130
Platform Engineering as a Product: Criteria for Improvement and Multi-Tenant Design
kumorn5s
0
530
AI活用を推進するために ファインディが下した、一つの小さな決断
starfish719
0
280
protovalidate-es を導入してみた
bengo4com
0
160
Chart.js が簡単に使えるようになっていたので OGP 画像生成に使った話
kamekyame
0
170
データ基盤をDataformで整えた話 〜 開発環境を添えて 〜
takapy
0
130
Claude Code×Terraform IaC テンプレート駆動開発
itouhi
1
450
「エンジニア進化論」2028年の開発完全自動化、エンジニアはどう進化するか
cyberagentdevelopers
PRO
1
160
Featured
See All Featured
Paper Plane
katiecoart
PRO
1
51k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.8k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
190
Statistics for Hackers
jakevdp
799
230k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
160
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
71
40k
The Language of Interfaces
destraynor
162
27k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
330
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
410
Transcript
Pythonで書かれたマイクロサービスを 2to3した 2022-04-14 みんなのPython勉強会 #80 懇親会 https://startpython.connpass.com/event/242556/ Takashi Iwamoto (@iwamot)
技術的負債を解消したくて転職した 昨夏、AWS Japanを辞めてENECHANGE株式会社に転職した 面接時に「技術的負債の解消に取り組みたい」と明言した 内定をもらえ、負債の解消がミッションのひとつとなった
Python 2のコードがあった Elastic BeanstalkのDockerコンテナで動いているFlaskアプリ Lambdaに移行すればコストを減らせる LambdaではPython2のサポートが終わっている
Python 3に上げることにした 「移行に取り組みたい」と手を挙げ、OKをもらった
テストを走らせたらfailした 9%のテストケースがfailした パフォーマンス向上のためのコード改善が原因だった
passするように直した テストケースとソースコードを修正した カバレッジは80%と高めだった
2to3というツールがあることを知った 2to3 - Python 2 から 3 への自動コード変換 https://docs.python.org/ja/3/library/2to3.html Python
3の公式Dockerイメージにも2to3が含まれている $ docker run -it --rm python:3 2to3 --help | head -1 Usage: 2to3 [options] file|dir ...
2to3を実行したら、色々変換された (1) dict - dict.values() + list(dict.values()) - dict.iteritems() +
dict.items() except - except Exception, e: + except Exception as e:
2to3を実行したら、色々変換された (2) has_key - dict.has_key(key) + key in dict import
- import weather + from . import weather
2to3を実行したら、色々変換された (3) imports - import ConfigParser + import configparser print
- print 'foo' + print('foo')
2to3を実行したら、色々変換された (4) unicode - u'foo' + 'foo' xrange - range(1,
13) + list(range(1, 13))
必要ない変換は元に戻した たとえばdictによる変換は不要だった - list(dict.values()) + dict.values() Python 2では dict.values() はリストを返す
Python 3では dict.values() はビューオブジェクトを返す ビューオブジェクトのまま処理できるなら、そのままでよい
あとは手作業で進めた 依存パッケージのアップグレード テストがfailする部分の修正 Lambda対応
2to3があってよかった 初見から数日で移行できた こういう移行ツールが用意されていると助かる
負債に困ったらご相談ください Spot Resourceという屋号で副業しています https://iwamot.github.io/