Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Electronで作るおれおれ マークダウンエディタ 0yu@yud0uhu
Slide 2
Slide 2 text
自己紹介 0yu(ゼロユー)です。 よくおゆさんといわれます。 リアルでもよくおおともさんといわれます。 アイコンが安定しない人で知られています(?)
Slide 3
Slide 3 text
テキストエディタ、何つかってますか?
Slide 4
Slide 4 text
入門!Electron
Slide 5
Slide 5 text
Electronって? - GitHub社製のクロスプラットフォームアプリ開発フレームワー ク - Webの技術(JS,HTML,CSS)でデスクトップアプリを開発できる ↓Electronで作られてるよ!↓
Slide 6
Slide 6 text
Electronの特徴 - Chromiumエンジンを利用して、WEBページをネイティブアプリ として動かす - OSネイティブのAPIを扱うメインプロセス と、ブラウザで表示さ れる画面(htmlファイル)の数だけレンダリングを行うレンダラー プロセスが存在する - プロセス間通信はIPC通信(基本的には非同期)で行う
Slide 7
Slide 7 text
- レンダラプロセス間は通 信できない ⇒プロセス間通信(IPC)が 必要 Electronの特徴
Slide 8
Slide 8 text
ざっくりいうと メインプロセスではNode.jsが使えて、レンダラプロセスでは通常 のJSが使える!
Slide 9
Slide 9 text
入門! Vue3・Compotion API
Slide 10
Slide 10 text
このコンポーネントの持つ責務 🤔 1. 適当な外部APIからユー ザー名に対応したリポジトリ を取得して、ユーザーが変 化するたびにそれを更新す る 2. searchQuery 文字列を使用 してリポジトリを検索する 3. filters オブジェクトを使用し てリポジトリを絞り込む
Slide 11
Slide 11 text
このコンポーネントの持つ責務 🤔 1. 適当な外部APIからユー ザー名に対応したリポジトリ を取得して、ユーザーが変 化するたびにそれを更新す る 2. searchQuery 文字列を使用 してリポジトリを検索する 3. filters オブジェクトを使用し てリポジトリを絞り込む
Slide 12
Slide 12 text
このコンポーネントの持つ責務 🤔 1. 適当な外部APIからユー ザー名に対応したリポジトリ を取得して、ユーザーが変 化するたびにそれを更新す る 2. searchQuery 文字列を使用 してリポジトリを検索する 3. filters オブジェクトを使用し てリポジトリを絞り込む
Slide 13
Slide 13 text
なぜCompotionAPIなの? 論理的な関心事は単一なのに対し、 コンポーネントのオプション (data, computed, methods, watch)は 分離されていて、背景にある論理的な関心事がわかりにくい このようなOptionsAPIのロジックの再利用性の欠如 が、コードの 可読性の低下 に繋がると公式ドキュメントでは指摘されている
Slide 14
Slide 14 text
なぜCompotionAPIなの? 同じ論理的な関心事に関連するコードを並べたい ⇒CompotisionAPIでは、論理的な関心事をまとめてsetup()関数 内に記述する
Slide 15
Slide 15 text
OptionsAPIとの比較 - propsはref/reactiveに書く - this依存がなくなった(すべて同一関数内のスコープで使用さ れるため、変数や関数の参照にthisを使わなくてよい)
Slide 16
Slide 16 text
OptionsAPIとの比較 ✅ref/reactive ✅computed ✅watch ✅methods ✅ライフサイクルフック これらすべてが同一のスコープ内に記述できる!
Slide 17
Slide 17 text
使ってわかった!Compotision APIのここがよ い - TypeScriptと相性がよい - Vue2はJavaScriptを標準言語として設計・開発されている ため、TypeScriptの型推論のサポートが不完全 - コンポーネント内のthisの参照先の決め方がプレーンなJS のルールと異なるため、そもそも型推論と相性が悪かった
Slide 18
Slide 18 text
Vue3のデメリット - まだ未対応のライブラリが多い(Vuetifyは非対応) - よくもわるくも自由なので、設計のベストプラクティスがない
Slide 19
Slide 19 text
作ったもの(デモ)
Slide 20
Slide 20 text
使用したライブラリ - vue3-markdown-it - highlight.js - TailWindCSS
Slide 21
Slide 21 text
感想 - Electronの進化のスピードが早く、ドキュメントが追い付いてい ないところもしばしば(dialog moduleを使うためのremote moduleがv14から抹消されていたなど(現行の安定版はv16)) - TS+CompotisonAPIの書き心地が想像以上によき - Webの言語でGUI作るのも楽しい!