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
Portapad紹介プレゼンテーション
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Povo43
August 15, 2025
Programming
170
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Portapad紹介プレゼンテーション
u22プログラミングコンテスト一次審査用の動画に使用するプレゼンテーションです。
出来がいいのでアップロードします。
Povo43
August 15, 2025
More Decks by Povo43
See All by Povo43
人はなぜ愚かであるのか。
gotoumakakeru
0
16
Other Decks in Programming
See All in Programming
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
1
3k
php-fpmのプロセスが枯渇した日-調査・対処・そして本当にやるべきだったこと-
shibuchaaaan
0
140
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
410
AIエージェントで 変わるAndroid開発環境
takahirom
2
720
地域 SRE コミュニティ最前線 - ホンマでっかSRE勉強会
tk3fftk
0
270
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
240
Built Our Own Background Agent at LayerX #aidevex_findy
layerx
PRO
8
3.4k
ITヒヤリハットを整理してみた ~ライフサイクルと原因から考える再発防止策~
koukimiura
1
110
GitHubCopilotCLIのスラッシュコマンドを自作してみる
htkym
0
110
作るコストが小さくなった時代 幸せに働くために改めて考えたいこと 〜エンジニアとして価値を出し続けるために注視している二分野〜
yuppeeng
0
130
Laravel Boostに学ぶ、AIにPHPを書かせる技術 〜OSSの実装から蒸留するエージェント制御の王道〜
kentaroutakeda
3
530
なぜ関数型プログラミングで「型」と「証明」が語られるのか #fp_matsuri
kajitack
3
1k
Featured
See All Featured
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
Code Reviewing Like a Champion
maltzj
528
40k
エンジニアに許された特別な時間の終わり
watany
108
250k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
WCS-LA-2024
lcolladotor
0
760
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
For a Future-Friendly Web
brad_frost
183
10k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
470
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
190
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Transcript
ニッチで便利なインプット。
Portapadとは? Portapadは、スマホのブラウザからPCを操作すること ができる「手軽に」をコンセプトとした遠隔操作用の ソフトウェアです。
制作背景
制作背景 ①ガジェットの代用 「ペンタブレットは高価で買いにくい」という問題を解決するた めに、手持ちの機器で代用できないかと考えました。
制作背景 ②めんどくさい ①の問題を解決するために、ほかの団体や個人が作ったソフトも 使用してみましたが、インストール操作や認証処理が複雑で、め んどくさがり屋の僕には使うことが億劫だったので「簡単な操 作」を求めてPortapadを制作しました。
制作背景 ③自由度が低い 僕が試した既存のソフトは自由度が低かったです。 自由度はそのまま操作性に直結すると考えているので、webアプ リという形をとることで、リアルタイムでの機能追加が容易であ ると考え、この形式にしました。
液晶画面で代用 様々なUIを制作できる より「面白い」操作方法や、「欲しい」と思った機能が実装可能に
システム構成
システム構成 ホストとクライアントのWebRTC接続をする ためのSDPやIDEを仲介するサーバー シグナリングサーバー クライアントからのWebRTC経由での操作指 示に基づき、マウス・キーボードを操作する ホストPC タッチ操作を解析し、PCへ操作指示を出す。 クライアント WebSocket
WebRTC 全体の概要
システム構成 ホスト 設定画面 本体 接続とWebRTC通信 主にクライアントとの通信、それの制御を行います。 一時的なコードと永続的なコードを分けることで、セキュリティ性能 やユーザーの操作性が向上しました。 また、自動再起動などのエラー処理を確実に行うことにより高信頼性 を保っています。
Enigoによるデバイス操作 クライアントから受信したコードを識別し、操作を読み取り実際に操 作します。 低レベル処理は、安定性・安全性を考え、外部ライブラリに依存しま した。 遅延を最小限に抑えるため、可能な限り処理を軽量化しています。例 えば、通信にJSONを使わず、「mm1923,1002」のようなシンプルな 文字列形式で送受信し、それを分解して操作を行うことで、変換時の 遅延を抑える工夫をしています。 高速化 安定性 & 設定画面は、クライアント側のほうが操作の比重が大きいため、PCサ イドでしか設定できない内容のみに絞って配置しています。 &アピールポイント
システム構成 クライアント 接続処理 WebSocketでホストの一覧を取得し、 リスト表示にしています。 又、設定画面はここに統合されています。 認証処理 後述するed25595を使用した認証処理で す。 カメラを使用することで人為的なミスを
減らし、接続処理の簡略化に努めていま す。 操作画面 操作性に直結するためUIは作りこまれて います。 現在はトラックパッドとテンキーのみで すが将来的にキーボードやその他のニッ チなUIを実装する予定
システム構成 クライアント FetchAPI JavaScript modules × シンプルで高速な ページ移動 &アピールポイント
システム構成 セキュリティ ed25519 P2P接続 × Ed25519は、楕円曲線デジタル署名アルゴリズムの一種で、高い安全性と効率性があります。 P2P接続は、中央集権的なサーバーを介さず直接通信するため、 特定のサーバーにデータが収集されることはありません。 なりすまし耐性 耐障害性
通信の秘密 プライバシー保護 機密性 通信の秘密 &アピールポイント