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
1k
リッチなポップアップ画面にはshowGeneralDialogが便利だった
masashi_sutou
4
3.4k
iOSでグラフを描くために必要な知識
masashi_sutou
5
3.1k
UITableViewControllerの利点を最大限に活かす使い方 - コードでAutoLayoutを記述する場合 -
masashi_sutou
3
3.1k
制約の優先度 - UITableViewCellのレイアウトを例に考える
masashi_sutou
0
970
「文化を調和させる」 をやってみる 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
B2B SaaSから見た最近のC#/.NETの進化
sansantech
PRO
0
860
AIチャットボット開発への生成AI活用
ryomrt
0
170
インフラとバックエンドとフロントエンドをくまなく調べて遅いアプリを早くした件
tubone24
1
430
Lambdaと地方とコミュニティ
miu_crescent
2
370
安心してください、日本語使えますよ―Ubuntu日本語Remix提供休止に寄せて― 2024-11-17
nobutomurata
1
1k
EventHub Startup CTO of the year 2024 ピッチ資料
eventhub
0
120
[CV勉強会@関東 ECCV2024 読み会] オンラインマッピング x トラッキング MapTracker: Tracking with Strided Memory Fusion for Consistent Vector HD Mapping (Chen+, ECCV24)
abemii
0
220
プロダクト活用度で見えた真実 ホリゾンタルSaaSでの顧客解像度の高め方
tadaken3
0
130
Incident Response Practices: Waroom's Features and Future Challenges
rrreeeyyy
0
160
AWS Lambda のトラブルシュートをしていて思うこと
kazzpapa3
2
180
開発生産性を上げながらビジネスも30倍成長させてきたチームの姿
kamina_zzz
2
1.7k
Making your applications cross-environment - OSCG 2024 NA
salaboy
0
190
Featured
See All Featured
Unsuck your backbone
ammeep
668
57k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
The Invisible Side of Design
smashingmag
298
50k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.2k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
109
49k
Building a Scalable Design System with Sketch
lauravandoore
459
33k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Art, The Web, and Tiny UX
lynnandtonic
297
20k
Building Applications with DynamoDB
mza
90
6.1k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
Building Adaptive Systems
keathley
38
2.3k
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月は第一子が産まれる可能性 オフライン発表とかできるんかな?
続きに興味ある方はカジュアル面談で!