Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Mercari Summer Intern 2022
Search
funera1
November 30, 2022
38
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Mercari Summer Intern 2022
funera1
November 30, 2022
More Decks by funera1
See All by funera1
Unikernelの話
funera1
0
130
Featured
See All Featured
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
340
Design in an AI World
tapps
1
350
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Visualization
eitanlees
153
17k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
460
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
1k
Deep Space Network (abreviated)
tonyrice
0
370
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
310
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
2
360
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
Transcript
1 Confidential サマーインターンシップ成果発表 @daigof Merpay Experts Team
2 Confidential @daigof Name: 藤井大悟(daigo fujii) Team: Merpay Experts Team
GitHub: funera1 Twitter: fun_7776
3 Confidential Goのフォーマットツールを作成した https://github.com/funera1/gofmtal やったこと
4 Confidential Go1.19が最近リリースされて、そこでgo/doc/commentというコメントについて扱え るpackageが出た 背景
5 Confidential gofmt使用した場合 package main /* func main(){ print( "Hello,
World") } */ func main(){ print( "Hello, World") } package main /* func main(){ print( "Hello, World") } */ func main(){ print("Hello, World") } フォーマット前 フォーマット後 format gofmt: Goの公式フォーマットツール
6 Confidential フォーマット前 今回作成したツールを使用した場合 package main /* func main(){ print(
"Hello, World") } */ func main(){ print( "Hello, World") } package main /* func main(){ print("Hello, World") } */ func main(){ print("Hello, World") } format フォーマット後
7 Confidential コメントのパース Parse (*go/doc/comment.Parser).Parseメソッドによってコメントを構造化でき るようになった /* comment func main(){
var a int; } [example]http://exampl e.com */ /* comment func main(){ var a int; } [example]http://exampl e.com */
8 Confidential 実装 /* comment func main(){ var a int;
} http://example.com */ /* comment func main(){ var a int } http://example.com */ func main(){ var a int; } form at 取 り出 す formatされた
9 Confidential 問題点 フォーマットした後コメントの位置がずれてし まう可能性がある package main /* comment func
main(){ var a int } */ func main(){ var a int } 元のソースコード
10 Confidential 問題点 package main /* comment func main(){ var
a int } */ func main(){ var a int } package main /* comment func main(){ var a int } */func main(){ var a int } 想定する挙動 実際の挙動
11 Confidential Goでコードをパースするときに、「コードの構造と中身」と「コードがファイルのどの位 置(何行、何列目)にあったか」に分かれる。 原因
12 Confidential formatによって改行が増えたり、ソースコードの長さが変わってしまう 原因 /* func main(){ var a int}
*/ format /* func main(){ var a int } */
13 Confidential • とにかくどういう条件でうまく行かないのかを確かめるために実験した • 詰まってる問題に対して、詰まってる問題をより簡単な問題にして実験を行った • 具体例: • なんで:関係ないところ
解決するために行ったこと
14 Confidential 解決するために行ったこと • 実験を行った • 実際のツールの中で実験する のではなく、より簡単な問題に 落とし込んでから実験を行っ た
• 実際のツールの中で実験して しまうと、発生した事実が実験 によって確かめたいことによっ て起きたのか、それ以外で起 きたことなのかわからかない
15 Confidential コーディングするときに考えることの引き出しが増えた。 • エラー処理 • ディレクトリ構成 学んだこと
16 Confidential エラー処理 エラー処理としてgo/pkgsiteのderrors.goというファイルを参考にした 学んだこと
17 Confidential ディレクトリ構成 https://github.com/golan g-standards/project-layo ut/issues/117 学んだこと
18 Confidential 今まではコードをきれいに書くことについて、意識していたことはわかりやすい名前を つけるとか、適度に処理を関数で分割するぐらいしかなかった。 インターンでコードレビューやペアプロをしてもらって、コードを書くときに考えることの 手数が増えた 例えば、エラー処理について、ディレクトリ構成など 最初と最後のコミットを比べる 学んだこと
19 Confidential 技術面以外の学び • 問題をシンプルにする • すべての学びを繋げる 学んだこと
20 Confidential • ツールの完成度を高める • 抽象構文木の中身を書き換えるときに、コメントがずれる問題について解決し て、それをブログなどで記事にしたい。 今後やりたいこと