webブラウザで動くossオフィスソフト、libreoffice onlineの中身に迫る /...

20
1 オープンソースカンファレンス2016 Gunma Web ブラウザで動く OSS オフィスソフト、 LibreOffice Online の中身に迫る 小笠原 徳彦 (Ogasawara, Naruhiko) LibreOffice 日本語チーム

Upload: naruhiko-ogasawara

Post on 12-Jan-2017

1.656 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementation quick look

1オープンソースカンファレンス2016 Gunma

Web ブラウザで動く OSS オフィスソフト、LibreOffice Online の中身に迫る

小笠原 徳彦 (Ogasawara, Naruhiko)LibreOffice 日本語チーム

Page 2: Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementation quick look

2オープンソースカンファレンス2016 Gunma

LibreOffice とはフル機能のオープンソースオフィスソフト諸君らの愛した OpenOffice.org の正当な後継者Mozilla Public License v2+C++11 ~700 万行

auto も decltype も lambda も使えるよ!Windows / OS X / Linux (GTK+)Viewer for Android, Impress Remote

Page 3: Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementation quick look

3オープンソースカンファレンス2016 Gunma

LibreOffice Online現在鋭意開発中のオンライン版 LibreOffice通称 LOOL (ろーる)Google Drive や MS Office Online に似てる違いは、 LOOL はよりオンプレ寄り

サーバーは各組織でそれぞれ立てるGoogle や MS みたいにデカイデータセンターを保守しない

Page 4: Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementation quick look

4オープンソースカンファレンス2016 Gunma

LOOL を手元で動かすLOOL はバイナリ配布のみ

Page 5: Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementation quick look

5オープンソースカンファレンス2016 Gunma

LOOL を手元で動かす (1)LOOL はバイナリ配布のみ ←誤解です!LOOL のソースコードは完全に公開されてます

https://gerrit.libreoffice.org/gitweb?p=online.git;a=summaryhttps://github.com/LibreOffice/online (read-only mirror)

LOOL は「 LibreOffice の文書を Web ブラウザとサーバーでエディットする仕組み」だけを提供

文書をどうやってアップロード・ダウンロード・管理するかはまた別(好きに作っていいよ)というスタンスこのバイナリディストリビューションが複数あるって話

Page 6: Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementation quick look

6オープンソースカンファレンス2016 Gunma

LOOL を手元で動かす (2)カンタンなのは CODE を使う手

https://www.collaboraoffice.com/code/Virtualbox のディスクイメージが配布

*.vmdk中身は openSUSE 上に構築されたイメージこれを Bridged Network で設定した仮想マシンにアタッチして起動

カンタンに動くけどちょっとつまんない

Page 7: Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementation quick look

7オープンソースカンファレンス2016 Gunma

LOOL を自分でビルドしよう!オープンソースだしねUbuntu 16.04 LTS (Xenial Xerus) で挑戦材料

LibreOffice ソース一式LOOL ソース一式libpoco ソース一式

Page 8: Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementation quick look

8オープンソースカンファレンス2016 Gunma

LOOL のソースってどんな構成?ざっくりこんなふう

loolwsd がサーバーC++ でだいたい 1 万行ぐらい

loleaflet がクライアントJavaScript でだいたい 1.6 万行ぐらい

$ ls -l 合計 16

-rw-rw-r-- 1 naruhiko naruhiko 304 12 月 11 00:53 READMEdrwxrwxr-x 12 naruhiko naruhiko 4096 5 月 10 23:46 loleafletdrwxrwxr-x 12 naruhiko naruhiko 4096 5 月 14 04:30 loolwsddrwxrwxr-x 2 naruhiko naruhiko 4096 5 月 10 23:46 scripts

Page 9: Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementation quick look

9オープンソースカンファレンス2016 Gunma

LOOL サーバーのビルド (1)LOOL サーバーは LibreOffice をまんま使ってるのでまずは LibreOffice をビルドしよう

ビルド大変とかいわれてるけど Linux なら基本カンタン

autogen はちょっと時間がかかるのでお風呂でもmake は数時間かかるので寝てる間にどぞInstdir/program/soffice & とかで起動確認

$ sudo apt-get build-dep libreoffice$ cd LibreOffice$ /autogen.sh --with-lang="ja" $ make

Page 10: Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementation quick look

10オープンソースカンファレンス2016 Gunma

LOOL サーバーのビルド (2)libpoco

C++ の軽量多機能ライブラリWebSocket の実装に使ってるけど、 Ubuntu のはバージョンが古くて WebSocket未対応ので自前でビルドBasic と Complete があるけど後者を選ぼう

$ curl -O http://pocoproject.org/releases/poco-1.7.3/poco-1.7.3-all.tar.gz$ tar xf poco-1.7.3-all.tar.gz$ cd poco-1.7.3-all$ ./configure –prefix=/opt/poco$ make$ sudo make install

Page 11: Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementation quick look

11オープンソースカンファレンス2016 Gunma

LOOL サーバーのビルド (3)やっと本体!ドキュメントのとおりにコマンドびしびし叩く

$ cd LOOL/loolwsd$ libtoolize$ aclocal$ automake --add-missing$ autoreconf$ autoheader$ ./configure --enable-silent-rules \ --with-lokit-path=${HOME}/LibreOffice/include \ --with-lo-path=${HOME}/LibreOffice/include/instdir \ --with-poco-includes=/opt/poco/include \ --with-poco-libs=/opt/poco/lib \ --enable-debug$ make

Page 12: Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementation quick look

12オープンソースカンファレンス2016 Gunma

LOOL クライアントのビルドこっちはカンタンUbuntu 公式パッケージの Node.js を使う場合はNode周りのいくつかを apt で入れる必要あり$ sudo apt install nodejs node-jake node-uglify$ cd LOOL/loleaflet$ jake build$ cd plugins/draw-0.2.4$ jake build

Page 13: Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementation quick look

13オープンソースカンファレンス2016 Gunma

LOOL を動かす(サーバー)予め証明証をコピっておいて(ホントはちゃんとしたの用意するべきなんだろうけど)

えいっと起動

$ cd LOOL/loolwsd$ sudo mkdir /etc/loolwsd$ sudo cp etc/*.pem /etc/loolwsd

$ make run

Page 14: Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementation quick look

14オープンソースカンファレンス2016 Gunma

LOOL を動かす(クライアント)適当に開きたいファイルを配置してWeb ブラウザーで以下の URL にアクセスhttps://localhost:9980/loleaflet/dist/loleaflet.html?file_path=file:///PATH/TO_DOC&host=wss://localhost:9980

Page 15: Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementation quick look

15オープンソースカンファレンス2016 Gunma

中見てみる (1)クライアントを上げるとサーバー側のプロセスがにょきにょき

loolwsd─┬─loolforkit─┬─2*[loolkit─┬─lo_startmain] │ │ └─{lo_startmain}] │ └─{rtl_cache_wsupd} ├─9*[{loolwsd}] └─3*[{prison_ws}]

loolwsd─┬─loolforkit─┬─loolkit─┬─lo_startmain │ │ └─{lo_startmain} │ ├─loolkit─┬─{kit_callback} │ │ ├─{kit_queue_0001} │ │ ├─{kit_ws_0001} │ │ └─{lo_startmain} │ └─{rtl_cache_wsupd} ├─6*[{client_req_hdl}] ├─{client_ws_0001} ├─8*[{loolwsd}] ├─{prison_ws_0001} ├─2*[{prison_ws}] └─{wsd_queue_0001}

サーバ起動直後

一個起動

Page 16: Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementation quick look

16オープンソースカンファレンス2016 Gunma

中見てみる (2)${LOOL}/loolwsd/jails とかいう怪しいディレクトリが

中は chroot 環境

セッションごとに実行空間を分離している

$ ls jails 合計 12

drwxrwxr-x 13 naruhiko naruhiko 4096 5 月 14 10:32 7798drwxrwxr-x 13 naruhiko naruhiko 4096 5 月 14 10:32 7799drwxrwxr-x 2 naruhiko naruhiko 4096 5 月 14 10:32 pipe

$ ls jails/7798dev etc home lib lib64 lo opt system_stamp tmp user usr var

Page 17: Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementation quick look

17オープンソースカンファレンス2016 Gunma

中見てみる (3)カンがいい人はお気づきでしょうがクライアント側は leaflet.js 使ってます表示されてるドキュメントはサーバー側で描画されビットマップで送られるタイルの並びを操作するので地図の描画と同じ技術が使える!

Page 18: Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementation quick look

18オープンソースカンファレンス2016 Gunma

中見てみる (4)クライアント・サーバー間はWebSocket でコネクション張りっぱなし

タイルビットマップとか操作データがこの中をぞろぞろっと流れている時間切れで中覗いたりはまだできてません ><;

Page 19: Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementation quick look

19オープンソースカンファレンス2016 Gunma

まとめ開発中の LibreOffice Onlineバイナリディストロもあるけど、自前でビルドして動かすのも意外とカンタン自前でビルドすれば色々覗いたりなんだりできる開発に参加してみても楽しいかも!

Page 20: Webブラウザで動くOSSオフィスソフト、LibreOffice Onlineの中身に迫る / LibreOffice Online Implementation quick look

20NVDA World 2015 Tokyo

All text and image content in this document is licensed under the Creative Commons Attribution-Share Alike 3.0 License (unless otherwise specified). "LibreOffice" and "The Document Foundation" are registered trademarks. Their respective logos and icons are subject to international copyright laws. The use of these therefore is subject to the trademark policy.

これからのろーる先生のご活躍にご期待下さい…雑なプレゼンでスミマセン…触ってみたい人はブースにどぞ!