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
今年やったこと_20年以上続くWebサービスのリプレイス_書いたコード_私がモダンかもと思うPerl
Search
Masashi-Sutou
November 22, 2022
Technology
0
1.5k
今年やったこと_20年以上続くWebサービスのリプレイス_書いたコード_私がモダンかもと思うPerl
今回のテーマは「来年に向けて、今年やったこと、書いたコード」でお願いします at 吉祥寺.pm31 on 2022/11/22
Masashi-Sutou
November 22, 2022
Tweet
Share
More Decks by Masashi-Sutou
See All by Masashi-Sutou
売上と開発環境を同時に改善するためにPerl Webアプリケーションをどのようにリプレイスするか
masashi_sutou
0
1.1k
リッチなポップアップ画面にはshowGeneralDialogが便利だった
masashi_sutou
4
3.4k
iOSでグラフを描くために必要な知識
masashi_sutou
5
3.2k
UITableViewControllerの利点を最大限に活かす使い方 - コードでAutoLayoutを記述する場合 -
masashi_sutou
3
3.1k
制約の優先度 - UITableViewCellのレイアウトを例に考える
masashi_sutou
0
980
「文化を調和させる」 をやってみる Try “Blending Culture”
masashi_sutou
3
470
初めてのiOSアプリ開発 ースマホアプリ開発未経験のSEが1人でiOSアプリを開発するまでー
masashi_sutou
0
380
GitHubで社内学習環境を作る!!
masashi_sutou
2
2.7k
Git, GitHubのチュートリアル
masashi_sutou
0
1.1k
Other Decks in Technology
See All in Technology
LINE Developersプロダクト(LIFF/LINE Login)におけるフロントエンド開発
lycorptech_jp
PRO
0
120
ずっと昔に Star をつけたはずの思い出せない GitHub リポジトリを見つけたい!
rokuosan
0
150
小学3年生夏休みの自由研究「夏休みに Copilot で遊んでみた」
taichinakamura
0
150
多領域インシデントマネジメントへの挑戦:ハードウェアとソフトウェアの融合が生む課題/Challenge to multidisciplinary incident management: Issues created by the fusion of hardware and software
bitkey
PRO
2
100
NW-JAWS #14 re:Invent 2024(予選落ち含)で 発表された推しアップデートについて
nagisa53
0
250
宇宙ベンチャーにおける最近の情シス取り組みについて
axelmizu
0
110
AWS re:Invent 2024で発表された コードを書く開発者向け機能について
maruto
0
180
Amazon VPC Lattice 最新アップデート紹介 - PrivateLink も似たようなアップデートあったけど違いとは
bigmuramura
0
190
AIのコンプラは何故しんどい?
shujisado
1
190
5分でわかるDuckDB
chanyou0311
10
3.2k
生成AIをより賢く エンジニアのための RAG入門 - Oracle AI Jam Session #20
kutsushitaneko
4
220
2024年にチャレンジしたことを振り返るぞ
mitchan
0
130
Featured
See All Featured
Code Review Best Practice
trishagee
65
17k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
95
17k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
Become a Pro
speakerdeck
PRO
26
5k
RailsConf 2023
tenderlove
29
940
Producing Creativity
orderedlist
PRO
341
39k
Designing for Performance
lara
604
68k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
810
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
28
4.4k
Building a Scalable Design System with Sketch
lauravandoore
460
33k
Speed Design
sergeychernyshev
25
670
Transcript
今年やったこと 20年以上続くWebサービスのリプレイス 書いたコード 私がモダンかもと思うPerl 吉祥寺.pm31 on 2022/11/22
自己紹介 masashi-sutou @kurotyann9696 CTO at diverse-inc.co.jp Perl歴は半年 / 以前はSwift,Dart,TypeScriptが多め
Diverseの をリプレイス
来年(これから)に向けて目指したのは? 画面とAPIを疎結合にして開発できること モダンなPerlとモジュールでAPIを開発できること 段階的にv2にリプレイスできる仕組みをつくること つまり、売上と開発環境を同時に改善できるようにしたい
といった目標を 今年の4月ごろに決めて モダンなPerlを書き始めることに
しかし、私はPerlを書いたことがない
モダンなPerlてどこにあるのか?
とにかく調べる、試してみる 1. 現状のv1のPerlはどういう背景と負債をもつのか 2. 他社のPerlの移行事例や活用事例 1と2は時間の関係でスキップ 3. v2に改善するなら、何が足りない、何が必要? 先人(Perl Monger)の記事やコードを読み漁る日々
結果、こんな感じのPerlになった
実装例:その1
モダンPerl = 型定義を付与して堅牢に use strictures 2; で必要なものだけ警告に Types::Common -types で型を使う
Function::Parameters で fun と引数の型を定義 明示的に $self か $class を書く( method は禁止) Function::Return は見送りに 返値型のメリットが少なく、引数の型とテストでOK 高速な書き方、より良い書き方に置き換える
実装例:その2 - 1
実装例:その2 - 2
モダンPerl = OOPとPerlの新機能を使う Moo で実装の意図を集約したりコメントできる aliased で冗長なアーキテクチャ名を最小限に クラス名ぽく大文字で定義 Variable interfaceだとIntellijで定義ジャンプ可
能に IntellijのPerlプラグインがそこそこ優秀 5.34.0から可能な try-catch で例外処理
Test2でDomainとControllerをテストする is ok like dies ok lives でだいたい書けて楽 Test::Mojo も
Test2::V0 と併用して大丈夫だった
ORM(DBIx::Mint, Moo, Sub::HandlesVia)の実装で苦戦 苦戦した。一応期待する振る舞いは実装した でも、関数の呼び方が複数あり、良くない実装が残る 15分では時間が足りない どこかで全部アウトプットしてアドバイスがほしい
苦戦した例
例えば、話せる言語を記録するとして...
MySQLのSET型を扱いやすくしたい MySQLのSET型をPerlでは配列で参照する型変換 保存時は別処理で配列からcsv文字列に変換
型制約(coerce)が効かないときがある
.perlcriticrcと.perltidyrcに合わせる git commit時にlintとformatを実行する privateな関数の先頭に _ をつけてルールに合わせる Subroutines::ProtectPrivateSubs Subroutines::ProhibitUnusedPrivateSubroutines
cpanfileをメンテできる状態にする
cpan-outdatedをGitHub Actionsで実行
Perlを半年書いてみて -> 学びがある 世の中がWeb3.0!て言ってるなか、Web2.0にいた Perlを通して、Web2.0の技術を復習できて良い 良い記事を書いてるPerl Mongerたち今も活躍してる 普段書かない言語を書くと学びが多くて楽しいが他にも 仕事が...
最後に もっといい方法があるなら、教えてください そもそも、なぜバックエンドをPerlのままに? 続きは来年3月のYAPC Kyoto オンラインで! と言いたいけど、来年2月は第一子が産まれる可能性 オフライン発表とかできるんかな?
続きに興味ある方はカジュアル面談で!