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
OpenAPI を守るのは難しい
ohmori_yusuke
2
770
コミュニティに参加したことで起きた変化
ohmori_yusuke
3
150
Laravel を学ぶ前に書いていた require と Laravel 使い始めてから躓いた use 宣言と namespace
ohmori_yusuke
1
260
未来を拓く若手エンジニアの興味関心と目指すキャリア
ohmori_yusuke
1
240
PHPカンファレンス関西2024でLTとスタッフした
ohmori_yusuke
2
420
技書博に参加したら執筆できた
ohmori_yusuke
1
390
PHPを勉強してからプログラミングが好きになった話
ohmori_yusuke
1
590
「石蒜模拟器」にコントリビュートしてみた
ohmori_yusuke
1
420
新卒研修で取り組んだスクラム開発で苦戦したところと学んだこと
ohmori_yusuke
4
1.9k
Other Decks in Technology
See All in Technology
Next'24 事例セッションの紹介とクラウド資格を活用したキャリア形成について語りMuscle
yasumuusan
0
190
オブザーバビリティの Primary Signals
onk
PRO
0
530
社内勉強会運営のコツ
senoo
6
1.1k
長期運用プロジェクトでのMySQLからTiDB移行の検証
colopl
1
190
PHPカンファレンス小田原2024
ysknsid25
2
650
少数チームで挑む: SwiftUI, TCA, KMPを用いた 新規動画配信アプリ 「ABEMA Live」の開発について
tomu28
0
490
Autonomous Database Cloud 技術詳細 / adb-s_technical_detail_jp
oracle4engineer
PRO
13
35k
Databricksを活用してDELISH KITCHENのレシピレコメンドを開発した話
furu8
0
240
長期間TiDBを使ってきた話 @ 私たちはなぜNewSQLを使うのかTiDB選定5社が語る選定理由と活用LT / Experiences with TiDB Over Time
chibiegg
2
160
スタートアップの技術顧問を3年間続けて発生した事と気付き
biwakonbu
0
150
o11y入門_外形監視を利用したWebアプリケーションへの最適なモニタリング_TechBrew
k5k
2
100
カオナビの利用実績をアウトカムへつなげる旅 / example-of-data-management-startup-in-kaonavi
kaonavi
0
110
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
24
2.3k
Gamification - CAS2011
davidbonilla
76
4.6k
Design by the Numbers
sachag
274
18k
Typedesign – Prime Four
hannesfritz
36
2k
Reflections from 52 weeks, 52 projects
jeffersonlam
343
19k
Clear Off the Table
cherdarchuk
82
310k
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
GraphQLの誤解/rethinking-graphql
sonatard
49
9.2k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3k
Fashionably flexible responsive web design (full day workshop)
malarkey
397
65k
Docker and Python
trallard
33
2.7k
Web Components: a chance to create the future
zenorocha
304
41k
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トップ
ご清聴ありがとう ございました!!