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
870
0
Share
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
0
260
8万デプロイ
iwamot
PRO
2
300
AIエージェント・マイクロサービス時代。AWSでの手軽な構築法を考えて試してみた
iwamot
PRO
1
73
これがLambdaレス時代のChatOpsだ!実例で学ぶAmazon Q Developerカスタムアクション活用法
iwamot
PRO
10
2.2k
Developer Certificate of Origin、よさそう
iwamot
PRO
0
57
復号できなくなると怖いので、AWS KMSキーの削除を「面倒」にしてみた CODT 2025 クロージングイベント版
iwamot
PRO
1
150
復号できなくなると怖いので、AWS KMSキーの削除を「面倒」にしてみた
iwamot
PRO
3
130
IPA&AWSダブル全冠が明かす、人生を変えた勉強法のすべて
iwamot
PRO
14
12k
2年でここまで成長!AWSで育てたAI Slack botの軌跡
iwamot
PRO
4
1.3k
Other Decks in Technology
See All in Technology
Amazon Qはアマコネで頑張っています〜 Amazon Q in Connectについて〜
yama3133
1
170
「活動」は激変する。「ベース」は変わらない ~ 4つの軸で捉える_AI時代ソフトウェア開発マネジメント
sentokun
0
140
不確実性と戦いながら見積もりを作成するプロセス/mitsumori-process
hirodragon112
1
160
AI時代のIssue駆動開発のススメ
moongift
PRO
0
320
20260326_AIDD事例紹介_ULSC.pdf
findy_eventslides
0
270
Oracle Cloud Infrastructure(OCI):Onboarding Session(はじめてのOCI/Oracle Supportご利⽤ガイド)
oracle4engineer
PRO
2
17k
FlutterでPiP再生を実装した話
s9a17
0
240
AgentCoreとLINEを使った飲食店おすすめアプリを作ってみた
yakumo
2
270
来期の評価で変えようと思っていること 〜AI時代に変わること・変わらないこと〜
estie
0
130
Cursor Subagentsはいいぞ
yug1224
2
130
RGBに陥らないために -プロダクトの価値を届けるまで-
righttouch
PRO
0
130
Podcast配信で広がったアウトプットの輪~70人と音声発信してきた7年間~/outputconf_01
fortegp05
0
140
Featured
See All Featured
How to make the Groovebox
asonas
2
2.1k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4k
Optimizing for Happiness
mojombo
378
71k
Optimising Largest Contentful Paint
csswizardry
37
3.6k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
170
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
1.9k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
96
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
160
WCS-LA-2024
lcolladotor
0
500
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Git: the NoSQL Database
bkeepers
PRO
432
67k
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/