강의

멘토링

로드맵

Inflearn brand logo image
NEW
Programming

/

Web Development

Vanilla JavaScriptで直接実装するNotion

この講義は、Vanilla JavaScriptでNotionを最初から最後まで直接実装し、単純なUIクローンを超えて内部動作原理を深く理解することに焦点を当てたフルスタックレベルのフロントエンドプロジェクト課程です。 サイドバーツリー、ネスト文書生成、自動保存、ルーティング、ゴミ箱、お気に入り、検索モーダル、設定モーダル、テーマ切り替え、Export/Import、キーボードショートカット、レスポンシブレイアウト、ドラッグリサイズなど、実際のノートアプリの核心機能をすべてバニラJSで直接実装します。 React、Vueのようなフレームワーク以前に必ず知っておくべきブラウザ標準動作(イベントバブリング、DOMツリー、ローカルストレージ、Blob、FileReader、ハッシュルーティングなど)をしっかりと学習し、「なぜこのように動作するのか」を完全に理解してデバッグできる実力を身につけることが目標です。

19名 が受講中です。

  • nhcodingstudio
실습 중심
토이프로젝트
프론트엔드
클론코딩
웹개발
JavaScript
React
Web Application
DOM
frontend

こんなことが学べます

  • Vanilla JS 基盤大規模アプリアーキテクチャ設計

  • 単方向データフローと画面同期

  • ハッシュルーティングとアドレス同期

  • サイドバーツリー & ネスト文書モデリング

  • ネストされたドキュメント生成UX(生成→可視性→編集)

  • エディター入力・書式・ツールバー連結

  • 自動保存とデバウンス戦略(負荷・安全・即時性のバランス)

  • ローカルストレージスナップショット・スキーマガード

  • ゴミ箱(ソフト削除)・復元・完全削除

  • お気に入りと派生リストのレンダリング

  • 絵文字選択器・外側クリック閉じ・位置計算

  • 検索モーダル: リアルタイムフィルター & キーボードナビゲーション

  • 設定モーダルとテーマ切り替え: <html data-theme> + CSS変数

  • サイドバー幅制御・アニメーション・レスポンシブ対応

  • Export/Import・ショートカット・エラーハンドリング

📒 Vanilla JSでNotionアプリを作る

この講義はVanilla JavaScriptだけでNotionスタイルの文書管理アプリを最初から最後まで直接実装する過程です。React、Vueのようなフレームワークを使わずに純粋なJS、HTML、CSSだけで完成させるため、フロントエンドの根本原理をしっかりと理解することができます。

最近のクローンコーディング講座は、フレームワークでUIを真似する場合が多いです。もちろん役に立ちますが、結局ReactやVueも内部ではDOM操作と状態管理、イベントシステムVanilla JSで処理します。
したがって、フレームワークを正しく理解し、デバッグまでうまくやるには、
根本的なJSの動作原理とブラウザレンダリング構造を知る必要があります。この講座は、まさにその基礎を実務で使える完成プロジェクトを作りながら自然に身につけられるよう設計されています。

🚀 なぜVanilla JSでNotionなのか?

私たちが毎日のように使うNotion、その内部はどのような原理で動いているのでしょうか?
ReactVueのようなフレームワークでクローンする講座は多いですが、結局その底辺にはVanilla JSとDOMがあります。この講座では、フレームワークなしに、HTML・CSS・JavaScriptだけで実際のNotionスタイルアプリを最初から最後まで実装しながら、その原理をしっかりと学ぶことができます。

単純にUIを真似するのではなく、文書データ層、UIレンダリング、イベント・ルーティング相互作用という3つの軸でアーキテクチャを設計し、実際に動作するアプリを完成させます。

講義紹介

アプリは大きく3つの層で動作します。

第一にデータ層として、文書リスト、お気に入り、ゴミ箱、現在アクティブな文書、サイドバーの状態などを一つのstateオブジェクトで管理します。このデータはlocalStorageと連携し、リフレッシュ後も同じ状態をそのまま復元します。

二つ目はレンダリング層です。サイドバーツリー、本文エリア、ゴミ箱リスト、お気に入りモーダルなどは、すべて状態に基づいてDOMを再描画する構造になっています。原則は常に「状態 → 画面」であり、この単方向フローのおかげで複雑な部分更新なしでもデータと画面が一貫して保たれます。

三つ目はインタラクション層です。クリック、入力、ショートカット、ルーティング、モーダルの開閉、サイドバーのドラッグなどの動作は、すべてイベントリスナーを通じて発生します。イベントが状態を変更し、再びレンダリング層が反応する循環構造の中で、アプリが安定的に動作します。

この講義の核心は、単に「ボタンが動作する」ということではなく、その動作がどのような原理で可能になるのかをコード単位で理解することにあります。

  • サイドバーの幅調整はmousedown → mousemove → mouseupの流れとCSSカスタムプロパティがどのように連携するかを、

  • 検索モーダルは入力イベントとキーボードナビゲーション、ESC・背景クリック処理まで、UX全体がどのように完成されるのか、

  • テーマ切り替えは、チェックボックス1つとdata-theme属性、localStorage保存がどのように組み合わされるか、

この全ての過程を目で確認しながら進めていくことになります。

🔑 実装機能

この講義で直接実装してみる機能たちはすべて実務アプリの骨格を成す要素たちです。

📂 ドキュメントツリー構造&ネスト文書生成: 親子関係を持つ階層的サイドバーの実装


インライン名前変更: ダブルクリック/F2でタイトルを即座に修正

🗑 ゴミ箱管理: 文書削除 → ゴミ箱移動 → 復元/完全削除 全体フロー実装

お気に入りモーダル: 重要な文書を素早く固定してアクセス


🔍 検索モーダル: 入力即時フィルタリングキーボード矢印/エンターナビゲーション対応

設定モーダル: ライト・ダークテーマ切り替えlocalStorage永続保存

キーボードショートカット: Ctrl/Command+K 検索, Ctrl/Command+Shift+N 新規文書,
F2 名前変更

📏 サイドバー幅制御: ボタン折りたたみ/展開ドラッグリサイズモバイル自動折りたたみ


🔄 ルーティング & 状態復元: ハッシュベースナビゲーションリフレッシュ時の同一状態維持

💾 データ保存・読み込み: localStorage自動保存Export/Import対応

🧭 ルーティング初期化: アプリ初回起動時に「Welcome」ドキュメントへ移動またはハッシュ同期


📅 メタ情報表示: 「最終編集日」自動更新


🛠 Confirmモーダル: 永久削除など元に戻せない操作の確認手順

🎨 エディター領域連動: タイトル・本文入力と同時にstateと同期

🔗 状態-レンダリング-イベント循環構造: アプリアーキテクチャの核心原理を直接体得

🔑 実装機能

この講義で直接実装してみる機能は、すべて実務アプリの骨格を成す核心要素です。

  • 📂 ドキュメントツリー構造&ネストドキュメント生成: 親子関係を持つ階層的サイドバーの実装

  • インライン名前変更:ダブルクリック/F2でタイトルを即座に修正

  • 🗑 ゴミ箱管理: 文書削除 → ゴミ箱移動 → 復元/完全削除

  • お気に入りモーダル: 重要な文書を素早く固定してアクセス

  • 🔍 検索モーダル: 入力と同時にフィルタリング、キーボードの矢印キー/エンターで操作

  • 設定モーダル: ライト・ダークテーマ切り替え、localStorage永続保存

  • キーボードショートカット: Ctrl/Command+K 検索、Ctrl/Command+Shift+N 新しいドキュメント、F2 名前の変更

  • 📏 サイドバー幅制御: ボタン折りたたみ/展開、ドラッグリサイズ、モバイル自動折りたたみ

  • 🔄 ルーティング & 状態復元: ハッシュベースナビゲーション、リフレッシュ時の同一状態維持

  • 💾 データ保存・読み込み: localStorage基盤の自動保存とexport/import

  • 🧭 ルーティング初期化: アプリ初回進入時に「Welcome」ドキュメントに移動またはハッシュ同期

  • 📅 メタ情報表示: 「最終編集日」自動更新

  • 🛠 Confirmモーダル: 永久削除など元に戻せない操作にユーザー確認手順を追加

  • 🎨 エディター領域連動: タイトルと本文入力が即座にstateと同期

  • 🔗 状態-レンダリング-イベント循環構造: 全体的なアプリアーキテクチャ学習

🎯 この講義を通して学ぶこと

  1. ネストされたドキュメントツリー構造を直接設計してレンダリングする

  2. ルーティング原理とURLハッシュによるページ遷移の理解

  3. 状態管理と永続化: localStorageを利用してアプリデータの保存・復元

  4. モーダルパターン: オーバーレイ、ESC閉じる、背景クリック処理、アクセシビリティ考慮

  5. 検索機能: 入力と同時にフィルタリング、キーボードナビゲーションロジックの実装

  6. テーマシステム: ライト・ダークテーマの切り替えとグローバルCSS変数管理

  7. ショートカットキーロジック: キーボードイベントとプラットフォーム別ctrl/metaKey処理

  8. ファイルAPI: BlobとFileReaderを活用してJSONデータのエクスポート/インポート

  9. ゴミ箱復元/削除フロー: データ整合性を守る安全パターン

  10. Confirmモーダル: 取り消しできない操作の前に確認を取るUXパターン

  11. サイドバードラッグリサイズ:実務でよく使われるレイアウト制御技法

  12. 状態ベースレンダリング:「状態 → 画面」の単方向フローで予測可能なUI保証

  13. 初期化ロジック設計: init()関数でアプリ実行前プロセスの自動化

  14. デバッグ方法論: 状態 → レンダリングフローを追いながらバグの原因を素早く見つける

  15. フレームワーク理解度向上: React/VueのVirtual DOMと状態管理がなぜ必要なのかを実感

📈 この講義で得られるもの

  • 状態、DOM、イベントを一つのシステムとして連結する感覚

  • ブラウザストレージ(localStorage)と状態同期の原理理解

  • サイドバー/モーダル/検索窓などのUIパターンを最初から最後まで実装する経験

  • イベントバブリング、stopPropagationpreventDefaultを適材適所に活用する能力

  • CSS変数とカスタムプロパティを通じてレイアウトとテーマを制御する方法

  • レスポンシブUIとメディアクエリをJSと結合して制御する技法

  • 実際のNotionアプリで見ることができるUXフローをVanilla JSで復元する体験

  • フレームワークの抽象化の背後にある「本来の動作」を目で確認する力

  • 問題状況でDOMとイベントフローを追跡してデバッグする方法

  • 小さな機能単位からアプリ全体のアーキテクチャへと拡張していく設計経験

  • ショートカット、ポップオーバー、オーバーレイなどの実務インタラクション実装能力

  • 新しい文書の作成から削除まで続く文書全体のライフサイクル管理感覚

  • 単純なコードの真似ではなく、「なぜこのように動作するのか」を説明できる力

👩‍💻 このような方におすすめします

  • 単純な機能の真似ではなく、アプリの構造を深く理解したい方

  • フレームワークの前にVanilla JSの基礎体力を身につけたい方

  • React/Vueを学ぶ前に「なぜそのように動作するのか」原理を知りたい方

  • クローンコーディングを超えて自分のポートフォリオアプリを直接作りたい方

  • ウェブブラウザのDOM、イベント、ストレージの動作を実務的に理解したい方

  • サイドバー、モーダル、検索窓など実務UIパターンの実装方法を学びたい方

  • 小さなプロジェクトを直接完成させながらフロントエンドの自信を得たい方

  • サービス運営環境で発生するUI問題をデバッグして説明できる能力を身につけたい方

  • Vanilla JSをベースに今後TypeScript、React、Vueへ自然に拡張したい方

  • 「コードがなぜこのように動作するのか」を明確に説明できる開発者になりたい方

📌 受講前の参考事項

  • HTML/CSSの基本構造とJavaScriptの基礎文法をご存知でしたら、スムーズについてこられます。

  • 特にaddEventListenerif/elseforEach、オブジェクトアクセス方式程度は知っておくと良いでしょう。

  • Mac/Windows環境どちらでも受講可能で、別途インストール不要で最新のChromeブラウザさえあればすぐに実習できます。

まとめ

この講義は単純なクローンコーディングを超えて、フロントエンドアーキテクチャの原理と実務パターンを同時に身につけられるよう設計されています。49講をすべて修了すると、Notionスタイルのアプリが手の中に完成するだけでなく、React/Vueのようなフレームワークの内部動作をより深く理解し、デバッグできる目が養われます。

今度は皆さんが直接Vanilla JSでNotionを作る体験を通じて、フロントエンド開発者として一歩成長する番です。講義でお会いしましょう。🚀

こんな方に
おすすめです

学習対象は
誰でしょう?

  • フレームワークに先立って、ウェブの基本動作原理をしっかりと理解したい方

  • ReactやVueで開発したことはあるけれど、デバッグの際に行き詰まることが多い方

  • 実務でよく使われる機能を最初から最後まで実装してみたい方

  • インターネット接続なしでも動作するローカル優先アプリ構造に興味がある方

  • 就職活動やポートフォリオ準備中で、実装過程を説明できるプロジェクトが必要な方

  • バックエンドやフルスタック開発者としてフロントエンド構造の理解が必要な方

  • チームで共通して使えるUI/UXパターンを確立したい方

  • ブラウザが持つ限界と可能性を理解したいデザイナーや企画者

  • 既存のjQueryや古いコードベースを現代的なJSに改善する必要がある方

  • QAやテスト業務をしながらSPAの状態変化を理解したい方

  • React、Vueなどのフレームワークを単純に使うことから脱却し、内部原理を理解したい方

  • アクセシビリティとキーボード中心のUXに関心のある方

  • 安定したユーザー体験を提供したい方

  • 教育用デモや社内スタディで基礎からフレームワークまで繋げて説明したいメンター

  • フロントエンド面接を準備しながらシステム設計とトレードオフを説明する言語が必要な方

前提知識、
必要でしょうか?

  • HTML & CSS

  • JavaScript

こんにちは
です。

183

受講生

8

受講レビュー

4.1

講座評価

10

講座

안녕하세요, 우리동네코딩 스튜디오에 오신 것을 환영합니다!

우리동네코딩 스튜디오는 카네기 멜론, 워싱턴, 토론토, 워터루 등 북미의 주요 대학에서 컴퓨터공학을 전공하고, Google, Microsoft, Meta 등 글로벌 IT 기업에서 실무 경험을 쌓은 개발자들이 함께 만든 교육 그룹입니다.

처음에는 미국과 캐나다의 컴퓨터공학 전공자들끼리 함께 공부하며 성장하고자 만든 스터디 모임에서 시작되었습니다. 각기 다른 대학, 다른 시간대에 있었지만 함께 문제를 해결하고 서로에게 배운 그 시간은 매우 특별했고, 자연스럽게 이런 생각이 들었습니다.

“우리가 공부하던 이 방식, 그대로 다른 사람에게도 전하면 어떨까?”

그 물음이 바로 우리동네코딩 스튜디오의 출발점이었습니다.

현재는 약 30명의 현직 개발자와 컴퓨터공학 전공 대학생들이 각자의 전문 분야를 맡아, 입문부터 실전까지 아우르는 커리큘럼을 직접 설계하고 강의합니다. 단순한 지식 전달을 넘어, 진짜 개발자의 시선으로 배우고 함께 성장할 수 있는 환경을 제공합니다.

“진짜 개발자는, 진짜 개발자에게 배워야 합니다.”

저희는 웹 개발의 전 과정을 처음부터 끝까지 체계적으로 다루되, 이론에 머무르지 않고 실습과 실전 중심의 피드백을 통해 실력을 키워드립니다.
수강생 한 사람, 한 사람의 성장을 함께 고민하고 이끌어가는 것이 우리의 철학입니다.

🎯 우리의 철학은 분명합니다.
"진정한 배움은 실천에서 오고, 성장은 함께할 때 완성된다."

개발을 처음 시작하는 입문자부터, 실무 능력을 키우고 싶은 취업 준비생, 진로를 탐색 중인 청소년까지.
우리동네코딩 스튜디오는 모두의 출발점이자, 함께 걷는 든든한 동반자가 되고자 합니다.

이제, 혼자 고민하지 마세요.
우리동네코딩 스튜디오가 여러분의 성장을 함께하겠습니다.


Welcome to Neighborhood Coding Studio!

Neighborhood Coding Studio was founded by a team of developers who studied computer science at top North American universities such as Carnegie Mellon, the University of Washington, the University of Toronto, and the University of Waterloo, and went on to gain hands-on experience at global tech companies like Google, Microsoft, and Meta.

It all began as a study group formed by computer science students across the U.S. and Canada, created to grow together by sharing knowledge, solving problems, and learning from one another.
Though we were attending different schools in different time zones, the experience was so meaningful that it led us to one simple thought:

“What if we shared this way of learning with others?”

That thought became the foundation of Neighborhood Coding Studio.

Today, we are a team of around 30 active developers and computer science students, each taking responsibility for their area of expertise—designing and delivering a curriculum that spans from foundational knowledge to real-world development.
We’re not just here to teach—we’re here to help you see through the lens of real developers and grow together.

“To become a real developer, you must learn from real developers.”

Our courses take you through the entire web development journey—from start to finish—focused on hands-on practice, real-world projects, and practical feedback.
We care deeply about each learner’s growth and are committed to supporting your path every step of the way.

🎯 Our philosophy is simple but powerful:
"True learning comes from doing, and true growth happens together."

Whether you're just getting started, preparing for your first job, or exploring your future in tech,
Neighborhood Coding Studio is here to be your launchpad—and your trusted companion on the journey.

You don’t have to do it alone.
Let Neighborhood Coding Studio walk with you toward your future in development.

カリキュラム

全体

51件 ∙ (4時間 49分)

講座資料(こうぎしりょう):

授業資料
講座掲載日: 
最終更新日: 

受講レビュー

まだ十分な評価を受けていない講座です。
みんなの役に立つ受講レビューを書いてください!

期間限定セール

¥19

39%

¥4,685

nhcodingstudioの他の講座

知識共有者の他の講座を見てみましょう!

似ている講座

同じ分野の他の講座を見てみましょう!