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
N Akita
March 18, 2023
Technology
26
0
Share
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
74
スキーマ駆動で、Zod OpenAPI Honoによる、API開発するために、Hono Takibiというライブラリを作っている
nakita628
0
660
Other Decks in Technology
See All in Technology
Eight Engineering Unit 紹介資料
sansan33
PRO
3
7.2k
BIツール「Omni」の紹介 @Snowflake中部UG
sagara
0
270
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
5
14k
Kubernetes基盤における開発者体験 とセキュリティの両⽴ / Balancing developer experience and security in a Kubernetes-based environment
chmikata
0
240
ストライクウィッチーズ2期6話のエイラの行動が許せないのでPjMの観点から何をすべきだったのかを考える
ichimichi
1
320
NgRx SignalStore: The Power of Extensibility
rainerhahnekamp
0
190
Azure Lifecycle with Copilot CLI
torumakabe
0
150
幾億の壁を超えて/Beyond Countless Walls(JP)
ikuodanaka
0
100
20260410 - CNTUG meetup #72 - DiskImage Builder 介紹:以 Kubespray CI 打造 RockyLinux 10 Cloud Image 為例
tico88612
0
120
本番環境でPHPコードに触れずに「使われていないコード」を調べるにはどうしたらよいか?
egmc
1
270
DIPS2.0データに基づく森林管理における無人航空機の利用状況
naokimuroki
0
190
Databricksで構築するログ検索基盤とアーキテクチャ設計
cscengineer
0
150
Featured
See All Featured
Exploring anti-patterns in Rails
aemeredith
3
310
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
150
How to build a perfect <img>
jonoalderson
1
5.4k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
64
53k
Google's AI Overviews - The New Search
badams
0
960
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
260
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.3k
Become a Pro
speakerdeck
PRO
31
5.9k
Navigating Team Friction
lara
192
16k
Optimizing for Happiness
mojombo
378
71k
GraphQLとの向き合い方2022年版
quramy
50
14k
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などの登場により、コー ディング技術よりも、設計や効率的な処理可能なアルゴリズムを作成できるエンジニアの需要 が伸びるのではないか。
• 共同開発である以上、難しいことをより簡単にし、開発速度を上げるためにどうしたら良いかを 考えるべき。