概要
JavaScriptは、Webページに動き・処理・ロジックを与えるためのプログラミング言語です。
現在ではブラウザだけでなく、サーバー・アプリ・デスクトップ・モバイル・IoTまで動かせる、非常に汎用性の高い言語になっています。
JavaScriptでできること
Webページに動きをつける
- ボタンを押したら表示が変わる
- フォーム入力チェック
- モーダル表示
- タブ切り替え
- スライダーやアニメーション
サーバーサイド開発(Node.js)
JavaScriptはブラウザだけでなく、サーバーでも動くようになりました。
- APIサーバー構築
- DB接続
- 認証処理
- バッチ処理
例
// Node.js (Express)
app.get("/api/users", (req, res) => {
res.json([{ name: "Taro" }]);
});
JavaScriptの特徴
| 特徴 | 内容 | メリット | デメリット / 注意点 | 簡単な例 |
|---|---|---|---|---|
| インタプリタ言語 | コンパイル不要ですぐ実行できる | 開発スピードが速い | 実行時エラーが起きやすい | console.log("hi") |
| 動的型付け | 型宣言が不要 | 記述量が少ない・柔軟 | 型ミスによるバグ | let x = 10; x = "text" |
| イベント駆動 | ユーザー操作やイベントを起点に処理 | Webと相性抜群 | ||
| 処理の流れが追いにくい | button.addEventListener(...) | |||
| 非同期処理が得意 | 通信や待ち処理を止めずに実行 | UXが良い・高速 | 理解が難しい(Promise/async) | await fetch() |
| プロトタイプベース | オブジェクトの仕組みが独特 | 柔軟な拡張性 | OOP理解に時間がかかる | Object.create() |
| 関数が第一級オブジェクト | 関数を値として扱える | 高度な抽象化が可能 | コードが読みにくくなることも | const fn = () => {} |
| ブラウザ標準 | すべてのブラウザで動く | 環境構築不要 | ブラウザ差異の考慮 | |
| サーバーでも動く | Node.jsでバックエンド可能 | フロントと同一言語 | パフォーマンス設計が必要 | app.get() |
| エコシステムが巨大 | npmパッケージが豊富 | ほぼ何でも揃う | 依存関係が複雑になりがち | npm install |
| 進化が早い | ECMAScriptで継続進化 | |||
| 新機能が豊富 | 書き方が多様化しすぎる | |||
| ?. ?? | ||||
| TypeScriptと相性良い | 型安全に書ける | 大規模開発に強い | 学習コスト増 | type User = {} |