$30 off During Our Annual Pro Sale. View Details »
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
0
14
TypeSciprt + Express + Prisma + Node.js API開発
TypeSciprt + Express + Prisma + Node.js API開発
N Akita
March 18, 2023
Tweet
Share
More Decks by N Akita
See All by N Akita
npmライブラリを自作して、感じたこと
nakita628
0
45
スキーマ駆動で、Zod OpenAPI Honoによる、API開発するために、Hono Takibiというライブラリを作っている
nakita628
0
460
Other Decks in Technology
See All in Technology
バグハンター視点によるサプライチェーンの脆弱性
scgajge12
2
470
小さな判断で育つ、大きな意思決定力 / 20251204 Takahiro Kinjo
shift_evolve
PRO
1
300
Multimodal AI Driving Solutions to Societal Challenges
keio_smilab
PRO
1
120
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
2.9k
GitLab Duo Agent Platformで実現する“AI駆動・継続的サービス開発”と最新情報のアップデート
jeffi7
0
160
生成AI時代の自動E2Eテスト運用とPlaywright実践知_引持力哉
legalontechnologies
PRO
0
100
手動から自動へ、そしてその先へ
moritamasami
0
180
Master Dataグループ紹介資料
sansan33
PRO
1
4k
A Compass of Thought: Guiding the Future of Test Automation ( #jassttokai25 , #jassttokai )
teyamagu
PRO
1
190
Data Hubグループ 紹介資料
sansan33
PRO
0
2.3k
セキュリティAIエージェントの現在と未来 / PSS #2 Takumi Session
flatt_security
3
1.4k
“決まらない”NSM設計への処方箋 〜ビットキーにおける現実的な指標デザイン事例〜 / A Prescription for "Stuck" NSM Design: Bitkey’s Practical Case Study
bitkey
PRO
1
350
Featured
See All Featured
A Tale of Four Properties
chriscoyier
162
23k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.3k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
31
2.7k
Music & Morning Musume
bryan
46
7k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
How to Ace a Technical Interview
jacobian
280
24k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
69k
Bash Introduction
62gerente
615
210k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.8k
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などの登場により、コー ディング技術よりも、設計や効率的な処理可能なアルゴリズムを作成できるエンジニアの需要 が伸びるのではないか。
• 共同開発である以上、難しいことをより簡単にし、開発速度を上げるためにどうしたら良いかを 考えるべき。