Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Blueskyのプラグインを作ってみた
Search
Hakkadaikon
May 31, 2025
Programming
900
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Blueskyのプラグインを作ってみた
ゴリラ.vim #36 ~ Vim x SNS ~ で登壇した内容
https://gorillavim.connpass.com/event/353161/
Hakkadaikon
May 31, 2025
More Decks by Hakkadaikon
See All by Hakkadaikon
高橋メソッドでCVE解説シリーズ 〜CVE-2026-99999〜
hakkadaikon
0
30
高橋メソッドでCVE解説シリーズ 〜CVE-2026-98432〜
hakkadaikon
0
29
高橋メソッドでCVE解説シリーズ 〜CVE-2026-112816〜
hakkadaikon
0
220
MoQTフルスクラッチ実装
hakkadaikon
1
120
Just do it ! で 走り抜けてきたけど ちょっと立ち止まってみた
hakkadaikon
0
950
自作WebSocket (RFC6455)
hakkadaikon
0
170
routstrについて
hakkadaikon
0
190
Nostr x BTC
hakkadaikon
0
82
PHP x Nostr
hakkadaikon
0
200
Other Decks in Programming
See All in Programming
作れるエンジニアから、価値を届けるエンジニアへ
ryunakayama
1
230
SODA - FACT BOOK(JP)
sodainc
1
40k
S3 TablesのIcebergデータに、AIエージェントからアクセスしてみた / 20261016developersio2026joetsu-accessing-iceberg-in-s3tables-via-agent
kasacchiful
PRO
0
280
Lambda durable functionsでHuman in the Loopを楽に…楽に……
har1101
2
290
AI時代のシニアエンジニアとは
yosuke_furukawa
PRO
14
11k
あなたの await、OS まで届いてる? strace で覗く JavaScript の非同期
hasutosasaki
1
2.2k
AI-Powered Domain-Driven Design
ziobrando
0
400
ActionController meets Protocol Buffers
sorah
1
780
Apple Intelligenceとオンデバイス時代の到来
yahir0
0
220
AI時代のTerminal環境を UNIX哲学で設計・運用する
yasunori0418
1
340
Rails初心者がパスキーを実装してみて大変だったこと
ktombow
0
150
Getting Started with Vibe Coding
miccheng
0
180
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
371
20k
Making the Leap to Tech Lead
cromwellryan
135
10k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
810
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
4
4.4k
Unsuck your backbone
ammeep
672
58k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
550
Why Our Code Smells
bkeepers
PRO
340
58k
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.8k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
330
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.4k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Transcript
Blueskyの Vimプラグインを つくってみた ゴリラ.vim #36 発火大根
と…その前に
開催決定おめでとう ぼくもちょっとスポンサーしました
自己 紹介
名前 : 発火大根 Bluesky歴 : 2年ちょい(2023/5/1開始) 本業 : SRE (転職してちょうど3ヶ
月目) 趣味 - SNSで穀潰し (主にNostr/vim-jp/…) - 卓球 (月1) - 誘われて謎解きをやったりとか
色んなとこでLTやったりオフ会やったり お世話になったりしてます
2024.09.23 Nostrasia 2024 - 海外の方に登壇いただいたり - マグロ解体ショーやったり - 配信されてるのでみてね
Blueskyでやった 私の活動紹介
2023/9/2 NGワードチェックつき 投稿専用クライアント
2024/2/21 Vim script + Indigo Blueskyクライアント PoC
最近つくったやつ
WebSocket プロトコルスタック - C言語製 - libc不使用 (Linuxの場合)
さて
目次 1.以前作ったBlueskyプラグインPoCの問題 2.今回作ったプラグイン
2024/02/21 Bluesky勉強会で こんな話をしました
VimからSNSがやれたら、 なんだかよさそうだぞ。 Vimは思考の速度で編集できる 開発<->SNSのシームレスな移行が可能 検索やスクラップがやりやすくなる!
しかし この時作ったPoCは 問題を抱えていた
①Neovim依存
NeovimのVim scriptで 書いてる →拡張性に難あり
②ツール依存
CLIツール Indigoに 依存 https://github.com/bluesky-social/indigo
もうちょっと なんかないものか…
目次 1.以前作ったBlueskyプラグインPoCの問題 2.今回作ったプラグイン
Vimmer大好き denops https://github.com/vim-denops/denops.vim - denoでぃの(での)でプラグインかける - 速い - Vim/Neovim共通のプラグインが書ける -
Vimmerの間では、オリンピックより denopsのリリースが話題になっていた ことも
Firehose API - ATProtocolの仕様のひとつ - WebSocket経由でイベントがとれる - いろんなエンドポイントがある - app.bsky.feed.post
- app.bsky.feed.repost - app.bsky.feed.like – etc…
Firehose API - Firesky - John Spurlockさん作成 - Firehose APIで出来ている
- めっちゃ速く投稿流れてく - GIGAZINEでニュースにも - ちょっとみてみよう https://firesky.tv/
Denops + Firehose
wss://bsky.network/xrpc/com.atproto.sync.subscribeRepos WebSocketサーバーが用意されてる なら、denops依存だけで つくれるのでは!? (denoは標準でWebSocketがつかえる)
websocatコマンドで ためしにsubscribe してみよう
なにこれ
RFC8949: Concise Binary Object Representation (CBOR)で エンコードされている
atproto/api Blueskyの公式リファレンス実装 を使うことにした https://github.com/bluesky-social/atproto
それなりには動いた…が
2025/5/31 便利なものをみつける
Jetstream
Jetstreamの特徴 - ATProtoのイベントを シンプルなJSON形式で配信 - CBORがデコード不要
こっちのが便利じゃん! 依存も減らせる!
こっちに乗り換えよう! (発表当日だけど)
乗り換えた&動いた!
- denopsはいいぞ - ATProtocolはいいぞ - jetstreamはいいぞ まとめ
Demo (でも)
function! s:start() abort command! BskyStart call denops#request('denops-bsky', 'start', []) endfunction
function! s:stop() abort command! BskyStop call denops#request('denops-bsky', 'stop', []) endfunction augroup denops_bsky autocmd! autocmd User DenopsPluginPost:denops-bsky call s:start() autocmd User DenopsPluginPost:denops-bsky call s:stop() augroup END BskyStart : subscribe開始 BskyStop: 停止
Thank you for your attention!