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
Princess APIのAPIクライアントをTypeScriptで作ってnpmで公開してみた
Search
uutan1108
June 03, 2023
Technology
1
1.2k
Princess APIのAPIクライアントをTypeScriptで作ってnpmで公開してみた
IM@S Engineer MeetUp REBURNでLTした時のスライドです。
https://imas.connpass.com/event/256931/
uutan1108
June 03, 2023
Tweet
Share
More Decks by uutan1108
See All by uutan1108
社外向け勉強会とプライベートの勉強会を開催してみて
ohmori_yusuke
0
1
勉強会に楽しさワクワクは重要
ohmori_yusuke
2
50
OpenAPI を守るのは難しい
ohmori_yusuke
2
970
コミュニティに参加したことで起きた変化
ohmori_yusuke
3
150
Laravel を学ぶ前に書いていた require と Laravel 使い始めてから躓いた use 宣言と namespace
ohmori_yusuke
1
300
未来を拓く若手エンジニアの興味関心と目指すキャリア
ohmori_yusuke
1
260
PHPカンファレンス関西2024でLTとスタッフした
ohmori_yusuke
2
470
技書博に参加したら執筆できた
ohmori_yusuke
1
430
PHPを勉強してからプログラミングが好きになった話
ohmori_yusuke
1
630
Other Decks in Technology
See All in Technology
AWS CLIの起動が重くてつらいので aws-sdk-client-go を書いた / kamakura.go#6
fujiwara3
6
3.4k
試作とデモンストレーション / Prototyping and Demonstrations
ks91
PRO
0
170
Google Cloud Next '24 Recap in ZOZO AIにより変わる開発 運用/Development and operation changed by AI
gachimuchiengineer
0
210
RailsConf 2024 Keynote "Startups on Rails in 2024"
irinanazarova
0
830
日本が誇るイタリアのダンスミュージック!? ユーロビートって何??
minorun365
PRO
2
230
5分で分かる(かもしれない) Vector engine for OpenSearch Serverless
tsukuboshi
1
430
AI JIMY - 登壇(インストール編)
hanacchi
0
150
Prisma ORMを2年運用して培ったノウハウを共有する
tockn
19
5.1k
生成AIと産業向けソフトウェアの自動生成 〜 ハノーバーメッセ2024より〜
kioto
2
440
iThome2024 Wailing Wall of Enterprise Security
notsurprised
0
300
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
5
38k
Dungeons and Dragons and Rails
joelq
0
250
Featured
See All Featured
Practical Orchestrator
shlominoach
183
9.8k
A Philosophy of Restraint
colly
197
16k
Learning to Love Humans: Emotional Interface Design
aarron
268
39k
A better future with KSS
kneath
231
16k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
126
32k
Making Projects Easy
brettharned
109
5.5k
GraphQLの誤解/rethinking-graphql
sonatard
56
9.3k
Writing Fast Ruby
sferik
622
60k
Making the Leap to Tech Lead
cromwellryan
125
8.6k
Facilitating Awesome Meetings
lara
43
5.6k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
26
2.3k
Typedesign – Prime Four
hannesfritz
36
2.1k
Transcript
Princess APIのAPIクライアントを TypeScriptで作ってnpmで公開し てみた IM@S Engineer MeetUp REBURN うーたん
自己紹介
うーたんです • 名前 ◦ うーたん ◦ 大森裕介 • 副業は新卒サーバーサイドエンジニア •
矢吹 可奈を担当
SNS • Twitter ◦ @uutan1108 • GitHub ◦ OHMORIYUSUKE
参加したきかけ
今回、初参加です! 大学2年のころのイベントに参加したかったが参加でき なかった。今回は、3年前よりレベルアップしたのでオフ ラインで参加!!
作ったもの
TypeScriptでAPIクライアントを作っ た • Princess — Public REST APIの TypeScriptのAPIクライアント •
ひたすら型定義をしてテストをたく さん書いた • Princess — Public REST APIは アイドルの情報が取得できる WEB API https://github.com/OHMORIYUSUKE/princess-api -sdk/tree/main
Princess — Public REST API • アイドルの情報やゲームの イベント情報が取得できる • 20個以上のエンドポイント
モチベーション 1. イベントをconpassで発見する 2. 何か作って発表したい!! 3. 前に使ったことがあるアイマス関連のAPIクライアントを作ろ う! 4. どうせならnpmに公開したい(公開するのムズそう)
5. テストも書きたいし、ドキュメントも書きたい 6. そして、自分で作ったnpmパッケージを使って満足感を感じた い!
実装
これだけでnpmにリリースできた • semantic-release ◦ パッケージ公開 ◦ バージョン管理 ◦ リリースノートの作成を自動化
テストをChatGPTに教わりな がら書いた • GPTに構造体を教えて、テ ストを書いてと頼んだら書い てくれる。 • 勝手に謎のパッケージを定 義してくるので注意してあげ た
• JSONから構造体も作ってく れる
おしゃれなドキュメント(typedoc) • READMEをおしゃれに表示してくれる • コードに書き込んだ メソッドのコメントを ドキュメントに変換
感想
感想 • 意外と簡単にnpmに公開できた • ひたすら型を定義するのは辛い • エンドポイントが多くて実装が間に合わなかった • ChatGPTにJSONを教えて型を作ってもらうとサボれる •
TestもChatGPTに質問しながら書いた(Testを書いたの初めて かも)
package.jsonに名前が入るのがいい • Node.jsのパッケージ(ライブラリ)管理ファイルに自分のパッ ケージ名が書き込まれる嬉しさ • importするたびに感じる 「npmからインストール したパッケージだぁ」感
完成させられなかったけ ど、npmにも公開できた し、テストも書けた、ド キュメントも書けたし、よ し!
次にやりたいこと
色々なところに表示してるアイドルの誕生日を自分のパッケージに変更 する • 今回、公開したパッケージでアイドルの情報を取得して 各ページに誕生日を表示したい! ホームページ GitHubトップ
ご清聴ありがとう ございました!!