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
IntelliJ loves JavaScript #jbnight
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Kazuhiro Karino
November 22, 2016
Technology
1
310
IntelliJ loves JavaScript #jbnight
JetBrains東京Nightで発表した資料です。
(画像の部分は主にGifを使っていたので実際に試すことをお勧めします)
Kazuhiro Karino
November 22, 2016
Tweet
Share
Other Decks in Technology
See All in Technology
スピンアウト講座05_実践活用事例
overflowinc
0
130
The_Evolution_of_Bits_AI_SRE.pdf
nulabinc
PRO
0
250
Phase04_ターミナル基礎
overflowinc
0
230
"作る"から"使われる"へ:Backstage 活用の現在地
sbtechnight
0
220
生成AI活用でQAエンジニアにどのような仕事が生まれるか/Support Required of QA Engineers for Generative AI
goyoki
1
330
今のWordPress の制作手法ってなにがあんねん?(改) / What’s the Deal with WordPress Development These Days?
tbshiki
0
520
プラットフォームエンジニアリングはAI時代の開発者をどう救うのか
jacopen
8
4.1k
実践 Datadog MCP Server
nulabinc
PRO
2
250
Escape from Excel方眼紙 ~マークダウンで繋ぐ、人とAIの架け橋~ /nikkei-tech-talk44
nikkei_engineer_recruiting
0
110
visionOS 開発向けの MCP / Skills をつくり続けることで XR の探究と学習を最大化
karad
1
1.1k
Copilot 宇宙へ 〜生成AIで「専門データの壁」を壊す方法〜
nakasho
0
130
スピンアウト講座04_ルーティン処理
overflowinc
0
130
Featured
See All Featured
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.4k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.3k
The Limits of Empathy - UXLibs8
cassininazir
1
270
Reality Check: Gamification 10 Years Later
codingconduct
0
2.1k
Designing Powerful Visuals for Engaging Learning
tmiket
0
290
Test your architecture with Archunit
thirion
1
2.2k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
120
Designing for Timeless Needs
cassininazir
0
170
Become a Pro
speakerdeck
PRO
31
5.9k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
120
Utilizing Notion as your number one productivity tool
mfonobong
4
260
Transcript
IntelliJ loves JavaScript ヤフー株式会社 狩野 和博
⾃⼰紹介 Kazuhiro Karino (狩野 和博) Tw: @nana4gonta • ヤフー株式会社 CTO室SWAT
• 社内のフロントエンド開発のサポート • その他フロントエンドに関わること 1
今⽇知ってほしいこと 2
IntelliJ(WebStorm)とJavaScriptの関係 • IDEの持つ機能だけで開発に必要なものはほぼ揃う • 様々な拡張機能を⼊れなくて良い • 良いコードを書くためのサポートをしてくれる • 外部ツールの結果を逐次表⽰ •
より良いコードのためにIntelliJの静的解析 3
JavaScript開発のサポート • IDEが基本的な機能を持っている • シンタックスハイライト • 補完 • 静的検査 •
最近の開発環境にも対応 • Babel、TypeScript • React、Angular • ESLint、flow • Mocha、Karma 4
今回話さない内容 • Nodeアプリケーションのデバッグ • テストとの連携 • 端々に出てくるライブラリ・ツールの説明 5
今回話す内容 • ES2016を書き始めるために • 開発をサポートする補完機能の強化 • バグ発⾒のための静的検査 • (若⼲)フレームワークサポート 6
ES2016を書き始めるために • IntelliJで必要な設定変更は2点 • シンタックスの有効化 • 機能の有効化 7
ES2016の有効化 • シンタックスの有効化 • Preferences > Languages & Frameworks >
JavaScript • 機能の有効化 • Preferences > Languages & Frameworks > JavaScript > Libraries 8
ES2016の有効化 • シンタックスの有効化 • ES2016の新規構⽂でエラーを出さないように • 予約語などを補完できるように • 機能の有効化 •
PromiseやWeakMapなどPolyfillが必要な機能で警告を抑制 • 上記機能を補完できるように • ライブラリとしてimportする場合はチェックを⼊れなくて良い • ビルド時にPolyfillを読み込む場合はチェックを⼊れる 9
補完機能の強化 10
補完機能 • 補完はコードを書く上での強⼒なサポーター • typo防⽌ • 脳のバッファを減らす • JavaScriptの補完を強化する⽅法は3つ •
型に基づく補完 • TypeScriptの型定義ファイル • JSDocによる型アノテーション 11
型に基づく補完 • デフォルトでは型と名前をもとに候補の⼀覧が表⽰される • 機能を有効にすることで補完候補を絞ることができる 12
型に基づく補完の有効化 • 設定は以下の場所に • Preferences > Languages & Frameworks >
JavaScript • Only type-based completionにチェック 13
型に基づく組み込み値の補完 • Only type-based completionを有効化 • 組み込みの値、関数に関して補完はほぼ完璧 14
ライブラリの補完 • ライブラリの補完は組み込み値に⽐べて弱い • 補完してほしい内容が出にくい、出てこない 15
型定義による補完機能の強化 • TypeScriptの型定義ファイルをダウンロード • Preferences > Languages & Frameworks >
JavaScript > Libraries • Download... を選択 16
型定義による補完機能の強化 • TypeScriptの型定義ファイルをもとに補完が効くようになる 17
メンバ変数の補完 • メンバ変数も⽂脈から判定できない場合に補完が弱い そもそもこんな雑なコードは書かないというのは置いといて… 18
JSDocによる補完 • 補完を効かせたい変数にJSDocの型アノテーションを書く • @type, @param, @returnといった変数や返り値の型に関わるもの • PHPやRubyなどでもドキュメントコメント補完は有効 •
ただし⽂脈で補完できない ≒ 読みにくいコードの可能性あり 19
静的検査 20
静的検査 • コード品質の確保 • バグになりそうな部分の発⾒ • プロジェクトでのコードスタイルの統⼀化 • IntelliJ上で扱えるのは3つ •
Inspection • ESLint、JSHintなどの外部ツール • flowを利⽤した型検査 21
Inspection • エディタの右端にある⻩⾊や⾚⾊のアレ • バグになりそうな部分を教えてくれる 22
Inspectionの設定 • 設定は以下の場所に • Preferences > Editor > Inspections 23
Inspectionの設定の種類 • 設定は豊富 • Code style issues • Control flow
issues • Probable bugs • etc... • Control flow issuesやProbable bugsは要チェック 24
ESLint • JavaScript向けの構⽂チェッカーの結果を逐次表⽰ 25
ESLintの設定 • 設定は以下の場所に • Preferences > Languages & Frameworks >
JavaScript > Code Quality Tools > ESLint • Enableにチェック • ESLint package: ESLintのあるnode_modulesのパスを⼊⼒ 26
ESLintとReformat Code • IntelliJにはReformat Codeという便利なものがあるが... • IntelliJ内で設定し、IntelliJ内で完結するCode Styleベース • PredefinedにGoogleとかAirBnBとかあると嬉しい…
• スタイルフォーマットは管理しやすいESLintに寄せたい • ESLintを設定しただけでは--fixオプションが使えない • できれば保存時にコードを直してほしい 27
File Watchers • ファイル形式を指定し、コマンドを実⾏するIntelliJプラグイン • gulpやeslint-watch、それらが使っているchokidar-cliもある • 快適にコードを書くためにはFile Watchersのほうが良い •
外部ツールはエディタ画⾯への反映のタイミングが悪い • IntelliJのフォーカスを外してフォーカスし直す必要がある • File Watchersはその場で反映される 28
ESLintとFile Watchers • 以下のように設定 • 必ずImmediate file synchronizationのチェックは外す 29
ESLintとFile Watchers • 保存時に eslint --fix editing_file.js としてコードが修正される • ファイル形式ごとなのでJSXを扱う場合は別途作成すること
• Immediate file synchronization • チェックしたままだとタイプするごとにeslintが⾛る • 鬱陶しくなるので外すこと 30
flow • ES2016のシンタックス有効化と同じところにある • Preferences > Languages & Frameworks >
JavaScript • flow を選択 • IntelliJのStableはESLintのようにツールチップ表⽰できない • 最近リリースされたWebStorm 2016.3では表⽰できる 31
WebStorm 2016.3とflow • 最近StableになったWebStormとflowの組み合わせは良い • IntelliJに来るのはもう少し先のはず... • 型の間違いをエディタ上で指摘してくれる 32
フレームワークサポート 33
React • JSXの構⽂をエラーにしないためにシンタックスの設定 • Preferences > Languages & Frameworks >
JavaScript • JSX または flow を選択 • WebStormにはスタータープロジェクトがある • Create React Appを利⽤したWeb⽤のもの • React Native⽤もある • IntelliJはStatic Webの⼦カテゴリにWeb⽤スターターがある 34
Angular • React同様、WebStormにはスタータープロジェクトがある • Angular 1⽤とAngular 2⽤があるので注意 • Angular 2⽤はTypeScriptで作成されるので注意
• IntelliJは先にAngularJSプラグインを⼊れる • ⼊れたあとStatic Webの⼦カテゴリにスターターが表⽰される • 開発サポート • ng2- で始まるSnippet • angular-cliを利⽤したコードジェネレート 35
まとめ 36
IntelliJのJavaScriptサポートまとめ • ES2016のサポートもOK • 補完機能もOK • 型とドキュメントを利⽤した補完強化 • 静的検査もOK •
組み込みのInspectionでバグ発⾒の可能性アップ • ESLintの結果を表⽰と逐次修正でコードのブラッシュアップ • flowで型チェックして堅牢なコードに • フレームワークもOK • React、Angularの取っ掛かりもある 37
最後に 38
39 Yahoo! JAPANでは⼀緒に活躍したい エンジニアを募集しています ご清聴ありがとうございました
参考資料 40 • IntelliJ IDEA 2016.2 Help • Configuring JavaScript
Libraries • Code Inspection • Using JavaScript Code Quality Tools Using ESLint • Using the Flow Type Checker • Using AngularJS • Using Angular CLI • New Project: React Starter Kit • Using ReactJS in JavaScript and TypeScript
参考資料 • WebStorm 2016.3 Help • Using the Flow Type
Checker • New Project: React Starter Kit • その他 • How can I run eslint --fix on my JavaScript in Intellij-IDEA, Webstorm, other JetBrains IDEs? 41