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

Post on 12-Jan-2017

1653 Views

Category:

Technology

5 Downloads

Preview:

Click to see full reader

Transcript

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

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

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

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

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

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

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

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

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

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 ブラウザとサーバーでエディットする仕組み」だけを提供

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

えいっと起動

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

$ make run

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

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

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}

サーバ起動直後

一個起動

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

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

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

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

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

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

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

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

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.

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

top related