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
TypeSciprt + Express + Prisma + Node.js API開発
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
N Akita
March 18, 2023
Technology
35
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
TypeSciprt + Express + Prisma + Node.js API開発
TypeSciprt + Express + Prisma + Node.js API開発
N Akita
March 18, 2023
More Decks by N Akita
See All by N Akita
npmライブラリを自作して、感じたこと
nakita628
0
96
スキーマ駆動で、Zod OpenAPI Honoによる、API開発するために、Hono Takibiというライブラリを作っている
nakita628
0
720
Other Decks in Technology
See All in Technology
発表と総括 / Presentations and Summary
ks91
PRO
0
190
データと地図で読む 大井町の「かわるもの、かわらないもの」
yoshiyama_hana
0
140
41歳でAWSが好きすぎてITエンジニアになったおっさんの話
yama3133
1
740
“それは自分の仕事じゃない"を越えて行け
yuukiyo
1
520
第67回コンピュータビジョン勉強会CVPR2026読会前編
tsukamotokenji
0
160
クラウドを使う側から、作る側へ / 大吉祥寺.pm 2026前夜祭
fujiwara3
4
1.2k
AIエージェントがあれば技術書なんてすぐ書けるでしょ→無理でした
watany
2
230
_NIKKEI_Tech_Talk__勉強会は熱量では続かない___17回続いた輪読会の設計術.pdf
_awache
1
100
「顧客の声を聞かなければ何も始まらない」 ── 顧客の声から生まれた『AI返信補助機能』の開発プロセス / AICon2026_shikata_imai
rakus_dev
1
270
ファミコンでPHPを動かす / PHP on the Famicom
tomzoh
2
600
SRENEXT_2026_Chairs__Talks_in_Tamachi.sre.pdf
srenext
1
140
伝票作成AIエージェントを支える、LLMOpsとインフラの選択肢 / AICon2026_takeda
rakus_dev
0
260
Featured
See All Featured
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
Odyssey Design
rkendrick25
PRO
2
730
Measuring & Analyzing Core Web Vitals
bluesmoon
9
900
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
470
Writing Fast Ruby
sferik
630
63k
Site-Speed That Sticks
csswizardry
13
1.3k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
320
Large-scale JavaScript Application Architecture
addyosmani
515
110k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
220
My Coaching Mixtape
mlcsv
0
170
Evolving SEO for Evolving Search Engines
ryanjones
0
240
Optimizing for Happiness
mojombo
378
71k
Transcript
TypeSciprt + Express + Prisma + Node.js API開発 Y.pm N
Akita
発表者:N Akita • 法学部法律学科卒業。 • 2022年8月に合同会社Y.pm入社。 • 最初に学んだプログラミング言語は、Java。 • 現在、Docker、Linuxを重点的に学習中。
• システム設計できるエンジニアを目指しています。 • 正規表現やテキスト処理に強い、Perlの知識も身につけたい。
アジェンダ • Perlについて、思うこと • TypeScriptとは • PrismaとSQL • Expressとは •
TypeSciprt + ExpressJS + Prisma + Node.js API開発 • まとめ
Perlについて思うこと • 正規表現やテキスト処理に強い Perlですが、プログ ラミング初学者が、ソースコードを見た時、記号だら けで、頭が混乱すると思いました。 • PythonやJavaScriptなどのような、シンプルな構文 は、多くの人が見てもわかりやすい点から、 Perlの
人気は、落ちているのかなと考えられます。 • オブジェクト指向、型の概念など、プログラミング言 語の文法知識を深く理解している人に向いている言 語であると、感じました。 • どのプログラミング言語を使おうが、最終的には、生 産的な処理を行える、アルコリズムを考えることが重 要だと思います。 2017年の最も嫌いなプログラミング言語ランキング
TypeScriptとは
JavaScriptに静的型付けやクラス、 インタフェースなどの機能を追加した言語 JavaScriptの例 TypeScriptとJavaScriptの比較 TypeScriptの例 静的型付けにより、意図しない値を代入することを防ぐことができる。 実行結果は、3を期待しているが、12と表 示されてしまう。 TypeScript
PrismaとSQL
Prisma Node.jsやTypeScriptなどのプログラミング言語で使用できる、オープンソースのORM データベースのクエリを直接書く代わりに、高レベルなAPIを使ってデータベースにアクセス可能 ※ORMとは、データの操作をオブジェクト指向言語のやり方で扱える手法 Prisma Prismaにより、作成されたSQL PrismaによるUserテーブル作成の例 Prismaにより、SQLを使用せずにTABLE作成することが可能になる。
PrismaによるQuery実行 INSERT INTO User (name, email, age) VALUES ('yamada', '
[email protected]
',
20); prisma.user.create({ data: { name: 'yamada', email: '
[email protected]
', age: 20, }, }); Prismaによるレコード挿入 SQLによるレコード挿入 SQLを意識せずに、データ操作が可能! 普段SQLやデータベースに触れる機会が少ない、フロントエンドエンジニアや SQLやデータベースの知識がない人でも、何をしているのか理解しやすい。
Prisma以外のORM TypeORM MySQL、PostgreSQL、MariaDB、SQLite、MS SQL Server、Oracle、MongoDB、CockroachDBなど、多くの異なる種類のデータ ベースをサポート Prisma Prismaは、TypeORMほどサポートしていない。 Prismaは、TypeORMほど、選択肢が少ないが、 少ない選択肢は、学習コストが低く、メンテナンスが容易になる。
Expressとは
Express Node.js用の軽量かつ柔軟なWebアプリケーションフレームワーク HTTPリクエストとレスポンスを処理し、ルーティング、ミドルウェア、テンプレートエンジン、 データベース接続などの機能を提供している Expressの使用例 Expressを使うことで、シンプルに、 API開発が可能になる!
TypeScript + Express + Prisma + Node.js API開発
TypeScript + Express + Prisma + Node.js API開発の業務 • TypeScript
+ Express + Prisma + Node.jsの組み合わせにより、シンプルなコー ディングが可能になり、高速に開発に取り組めました。 • レイヤードアーキテクチャを参考にした構成を使い、複数の層に分けて、API開発を 行いました。 • 各層を独立して開発できるため、変更点を見つけるのに苦労せず、何の処理をして いるのか、明確に理解しながら開発できました。
レイヤードアーキテクチャ を参考にした構成 ソフトウェアを複数の層に分割し、それぞれの層を独立して設計・実装する ことで、可読性、保守性、拡張性を向上させることができる。 app アプリケーション層。 ハンドラー層に処理を受け渡す受け渡す役目。 handler ハンドラー層 パスルーティングを行い、サービス層に処理を引き渡す役目。
service サービス層。 副作用のある関数を含む処理を担当。インフラ層やドメイン層に処理を引き渡す。 ※副作用とは、関数の呼び出しによって関数自体の出力以外の変更が行われることを指します。 infra インフラ層。 外部システム(データベースや外部のAPIなど)とのやりとりを担当。どこにも依存しない。 domain ドメイン層。 副作用のない関数と定数だけで構成される。どこにも依存しない。
これから必要であると感じたこと • 初めての業務でしたが、シンプルな実装のできる組み合わせのため、ストレスなく 開発を進めることができました。 • JavaScriptとの互換性が高く、JavaScriptの知識がある程度あれば、TypeScriptを 扱うことが可能だと感じました。 • プログラミング言語のコーディング技術も重要だが、何よりも設計者の意図を理解 して、開発を行うことが必要だと感じました。
• より少ないコードで、アルゴリズムを組むことが重要であると感じました。
まとめ • TypeScript+Express+Prisma+Node.jsを使用することにより、シンプルに開発を行うことがで き、生産性を上げることができる。 • プログラミング言語の文法も重要ですが、 ChatGPTやGitHub Copilotなどの登場により、コー ディング技術よりも、設計や効率的な処理可能なアルゴリズムを作成できるエンジニアの需要 が伸びるのではないか。
• 共同開発である以上、難しいことをより簡単にし、開発速度を上げるためにどうしたら良いかを 考えるべき。