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
インデントの崩れる音がする
Search
enkatsu
December 01, 2020
Programming
290
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
インデントの崩れる音がする
第65回スタジオ・アルカナ社内勉強会
インデントの崩れる音を聴く試み
enkatsu
December 01, 2020
More Decks by enkatsu
See All by enkatsu
NICOGRAPH 2022 で発表してきました
enkatsu
0
360
住所正規化 API をLambda + Redis で動くようにしたお話
enkatsu
0
500
Open Street Map の歩き方
enkatsu
0
480
Other Decks in Programming
See All in Programming
AIエージェントで 変わるAndroid開発環境
takahirom
2
460
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
350
Developing with AI Agents — Codex, Claude Code & Cowork Practical Guide
x5gtrn
PRO
0
1.3k
AIキャラアプリkaiwaの低遅延音声通話基盤をどう作ったか - AWS Gravitonで支える低遅延・低コストAI Agent基盤
mogamit
0
160
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
4
1.6k
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
0
1.6k
自作OSでスライド発表する
uyuki234
1
3.7k
はてなアカウント基盤 State of the Union
cockscomb
1
1.3k
霧の中の代数的エフェクト
funnyycat
1
280
act1-costs.pdf
sumedhbala
0
180
OS アップデート対応の取り組み方がもっと共有されてほしい
andpad
0
110
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
0
140
Featured
See All Featured
Site-Speed That Sticks
csswizardry
13
1.2k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
420
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
230
The Pragmatic Product Professional
lauravandoore
37
7.4k
Building Adaptive Systems
keathley
44
3.1k
Abbi's Birthday
coloredviolet
3
8.5k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
340
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
330
What's in a price? How to price your products and services
michaelherold
247
13k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
200
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Marketing to machines
jonoalderson
1
5.6k
Transcript
インデントの崩れる⾳がする 2020/10/30 スタジオ・アルカナ社内勉強会 #65 株式会社スタジオ・アルカナ 遠藤勝也
背景 PRのレビューをしていると、頻繁にインデントが崩れていることがあった EditorConfigは設定されてる ⌘ + Opt + l で整形している 崩れるファイルは
.blade
原因 <div> <div> {{ $name }} </div> </div> 中の <div>
を削除して、 ⌘ + Opt + l で整形 <div> {{ $name }} </div> bladeの構⽂は無視してHTMLのみ整形される
そんなことはどうでもよくて
インデントの崩れる⾳が鳴ったら⾯⽩そうだと思った
デモ
⼿法 エディタのプラグインを開発する インデント崩れを検知する ※ 今回は「インデントが崩れた」というより 「インデントが削除されて⾏頭がスペース以外になった」という場合に絞る
エディタのプラグインを開発する エディタの選定 Visual Studio Code Atom Sublime Text Jetbrains IDE
エディタのプラグインを開発する Visual Studio Code CodeよりAtom派 Atom プラグイン開発の⼿順が結構更新されている印象なのでドキュメントを探すのが⼤ 変そう Sublime Text
最近使ってないからなー Jetbrains IDE Javaだし⾳を鳴らすことも簡単に出来そう
IntelliJ IDEAで開発する テンプレートリポジトリから https://jetbrains.org/intellij/sdk/docs/basics/getting_started.html https://github.com/JetBrains/intellij-platform-plugin-template IntelliJ IDEAのプロジェクト作成から https://qiita.com/Vexus2/items/e04a21f00e467b7ac8ad
⾳が鳴るまでの流れ . IDEを起動する . プラグインを有効化する . ファイルを編集してインデントを崩す . 保存する .
⾳が鳴る!
プラグイン有効化ショートカットの設定 resources/META-INF/plugin.xml で設定できる <keyboard-shortcut keymap="$default" first-keystroke="shift meta F12"/> これで shift
meta F12 を押すと、 com.intellij.openapi.actionSystem.AnActionEvent を継承したクラスの public void actionPerformed(AnActionEvent e) が実⾏される
ファイルの変更時に処理を実⾏する public void actionPerformed(AnActionEvent e) で com.intellij.openapi.vfs.newvfs.BulkFileListener を 実装したクラスを設定する。 //
this.createIndentPatrolListener() はBulkFileListener を実装したクラスを返すメソッド BulkFileListener listener = this.createIndentPatrolListener(project); this.connection = project.getMessageBus().connect(); this.connection.subscribe(VirtualFileManager.VFS_CHANGES, listener);
インデント崩れを検知する diff diff-match-patch diff4j ⾃前でパーサを書く
diff-match-patchを採⽤
class Main { public static void main(String[] args) { -
System.out.println("Hello, World!!"); +System.out.println("Hello, World!!"); } } 差分を取って改⾏の後にスペースが削除されていることを検出する
⾳を鳴らす javax.sound.sampled で鳴らせる
結果 エディタから⾳がなって嬉しい いまさらだけどJavaのStream APIかっこいい 崩れ⽅によって⾳の迫⼒を変えたい インデント崩れの検出⼿法を再検討したい
参考⽂献 https://jetbrains.org/intellij/sdk/docs/intro/welcome.html https://github.com/JetBrains/intellij-platform-plugin-template#sample-code