福岡未踏 PDFプロトコル開発における開発計画
目次 • 1. 開発課題 • 2. 解決方法 • 3. 開発目標 • 4. 開発手法 • 5. 開発メンバー
開発課題 • 今までに感じたことはありませんか?? • 出先でPDFを開きたいけど通信量がかかってしまう… • 大学など人が多いところでは回線を圧迫して、PDFの表示に時間が かかる…
開発メンバー • 土佐悠斗 • 九州工業大学 4回生(21歳) • 技術スタック • TypeScript • Go言語 • プログラミング経験 • 2年半ほど
開発目的 • PDF転送における転送速度の効率化を図る • 課題 • PDFファイルはドキュメントのフォーマットとして優れているが、画像やフォント によりファイルサイズが肥大化してしまう。これによりファイル転送に時間がかか る • 解決策 • 画像やフォントサイズなどのサイズが大きい媒体を遅延転送することでテキスト データの転送の効率化を図る • 画像を圧縮転送することでデータの転送量削減を図る • 画像をプログレッシブ転送することで画像の初期表示を早める • PDFをページを一括転送せずに小さい塊にして転送することで単位転送量を小さく する
開発におけるゴール • PDF転送にかかる時間を短縮することを目標とする • 高速回線時の初期表示時間を80%に短縮する • 低速回線時の初期表示時間を50%に短縮する • これは高速回線時におけるPDF分解の効果が低速回線時に比べが小さいためである。 • 検証では152KBの画像が1枚入ったPDF(207KB)を使用し、測定を行った • 低速回線時通常のファイル転送の場合初期表示に1.75sを要したが、画像を遅延転送した 場合初期表示は585msであった • しかしこれはプロトコルレベルまで落としておらず、PDFファイルも1ページしかなかっ たため、これらのことを考慮し、上記の目標とした。 ※ 高速回線・低速回線: chromeの開発者モードのスロットリング機能(高速4G 低速4G)
開発内容 • PDF転送プロトコルに関する設計 • メタデータ設計 • サーバーサイドパッケージの作成 • Go言語を用いたプロトコルを扱えるパッケージの作成 • アプリケーションにパッケージとして導入することで利用可能 • 開発段階ではGo言語でのアプリケーションのみ利用可能とする • クライアントサイドパッケージの作成 • TypeScriptを用いたプロトコルを扱えるパッケージの作成 • アプリケーションにパッケージとして導入することで利用可能 • 開発段階ではReactアプリケーションのみ利用可能とする • 最低限のビュワー実装
開発内容 クライアント
相違点・利点 • PDFにおいて情報量を多く占めるのはテキストであるが、ファイルサイズを多く 占めるのは画像やフォントである。 • ファイルサイズの大きい画像を遅延転送することで、小さいファイルサイズで多 くの情報を高速に転送することができる • 利点としてはテキストデータの初期表示時間の短縮や画像圧縮によるデータ転送 量の削減である。 • またPDFのうちページを分割し転送することで単位転送量を削減することができ る • 不利点としては画像表示の遅延である。
開発計画 7,8月 9月 10月 11,12月 1月 • QUICおよびHTTP/3の仕様を理解し、概念実証を行う • PDF専用プロトコルの基本設計を完了する • クライアントサイドおよびサーバーサイドのパッケージを実装 • プロトコルの初期評価 • クライアントサイドPDFビュワーの作成 • パフォーマンス測定とチューニングを行い、最終的なプロトコルとパッケージを完成させる • デモ用のサーバー クライアントページの作成