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
31
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
84
スキーマ駆動で、Zod OpenAPI Honoによる、API開発するために、Hono Takibiというライブラリを作っている
nakita628
0
680
Other Decks in Technology
See All in Technology
AI飲み会幹事エージェントを作っただけなのに
ykimi
0
240
Swift Sequence の便利 API 再発見
treastrain
1
290
React Compiler導入の効果と運用の工夫
kakehashi
PRO
3
300
Geek Woman の育ち方 〜コミュニティとAIと〜
chicaco
0
120
AI時代に求められる思考のパラダイムシフト
nrinetcom
PRO
0
110
【2026年版】プロジェクトマネジメント実践論|現役エンジニアが語る!~チームでモノづくりをする時のコツとは?~
mixi_engineers
PRO
1
120
[続・営業向け 誰でも話せるOCI セールストーク] セールストーク総集編(2026年5月15日開催)
oracle4engineer
PRO
1
110
ラズパイ & Picoで入門:Zephyr(RTOS)の環境構築からビルドまでの紹介
iotengineer22
0
150
Terragrunt x Snowflake + dbt で作るマルチテナントなデータ基盤構築プラットフォーム
gak_t12
0
510
ルール・ロール・ツールを創る / Creating Rules, Roles and Tools
ks91
PRO
0
140
10サービス以上のメール到達率改善を地道に継続的に進めている話 / Continue to improve email delivery rates across multiple services
yamaguchitk333
6
2.3k
"うちにはまだ早い"は本当? ─ 小さく始めるPlatform Engineering入門
harukasakihara
7
650
Featured
See All Featured
How to build a perfect <img>
jonoalderson
1
5.5k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.1k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4k
What does AI have to do with Human Rights?
axbom
PRO
1
2.1k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Abbi's Birthday
coloredviolet
2
7.6k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
WCS-LA-2024
lcolladotor
0
590
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
210
Heart Work Chapter 1 - Part 1
lfama
PRO
7
36k
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などの登場により、コー ディング技術よりも、設計や効率的な処理可能なアルゴリズムを作成できるエンジニアの需要 が伸びるのではないか。
• 共同開発である以上、難しいことをより簡単にし、開発速度を上げるためにどうしたら良いかを 考えるべき。