Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
1
オープンソースカンファレンス2016 Gunma
Web ブラウザで動く OSS オフィスソフト、
LibreOffice Online の中身に迫る
小笠原 徳彦 (Ogasawara, Naruhiko)
LibreOffice 日本語...
2
オープンソースカンファレンス2016 Gunma
LibreOffice とは
フル機能のオープンソースオフィスソフト
諸君らの愛した OpenOffice.org の正当な後継者
Mozilla Public License v2+
C+...
3
オープンソースカンファレンス2016 Gunma
LibreOffice Online
現在鋭意開発中のオンライン版 LibreOffice
通称 LOOL (ろーる)
Google Drive や MS Office Online に似て...
4
オープンソースカンファレンス2016 Gunma
LOOL を手元で動かす
LOOL はバイナリ配布のみ
5
オープンソースカンファレンス2016 Gunma
LOOL を手元で動かす (1)
LOOL はバイナリ配布のみ ←誤解です!
LOOL のソースコードは完全に公開されてます
https://gerrit.libreoffice.org/g...
6
オープンソースカンファレンス2016 Gunma
LOOL を手元で動かす (2)
カンタンなのは CODE を使う手
https://www.collaboraoffice.com/code/
Virtualbox のディスクイメージが配...
7
オープンソースカンファレンス2016 Gunma
LOOL を自分でビルドしよう!
オープンソースだしね
Ubuntu 16.04 LTS (Xenial Xerus) で挑戦
材料
LibreOffice ソース一式
LOOL ソース一式...
8
オープンソースカンファレンス2016 Gunma
LOOL のソースってどんな構成?
ざっくりこんなふう
loolwsd がサーバー
C++ でだいたい 1 万行ぐらい
loleaflet がクライアント
JavaScript でだいたい ...
9
オープンソースカンファレンス2016 Gunma
LOOL サーバーのビルド (1)
LOOL サーバーは LibreOffice をまんま使ってる
のでまずは LibreOffice をビルドしよう
ビルド大変とかいわれてるけど Linu...
10
オープンソースカンファレンス2016 Gunma
LOOL サーバーのビルド (2)
libpoco
C++ の軽量多機能ライブラリ
WebSocket の実装に使ってるけど、 Ubuntu のはバージョ
ンが古くて WebSocket ...
11
オープンソースカンファレンス2016 Gunma
LOOL サーバーのビルド (3)
やっと本体!
ドキュメントのとおりにコマンドびしびし叩く
$ cd LOOL/loolwsd
$ libtoolize
$ aclocal
$ auto...
12
オープンソースカンファレンス2016 Gunma
LOOL クライアントのビルド
こっちはカンタン
Ubuntu 公式パッケージの Node.js を使う場合は
Node 周りのいくつかを apt で入れる必要あり
$ sudo apt ...
13
オープンソースカンファレンス2016 Gunma
LOOL を動かす(サーバー)
予め証明証をコピっておいて(ホントはちゃんと
したの用意するべきなんだろうけど)
えいっと起動
$ cd LOOL/loolwsd
$ sudo mkdir...
14
オープンソースカンファレンス2016 Gunma
LOOL を動かす(クライアント)
適当に開きたいファイルを配置して
Web ブラウザーで以下の URL にアクセス
https://localhost:9980/loleaflet/di...
15
オープンソースカンファレンス2016 Gunma
中見てみる (1)
クライアントを上げると
サーバー側のプロセスがにょきにょき
loolwsd─┬─loolforkit─┬─2*[loolkit─┬─lo_startmain]
│ │ ...
16
オープンソースカンファレンス2016 Gunma
中見てみる (2)
${LOOL}/loolwsd/jails とかいう怪しいディレクト
リが
中は chroot 環境
セッションごとに実行空間を分離している
$ ls jails
合計...
17
オープンソースカンファレンス2016 Gunma
中見てみる (3)
カンがいい人はお気づきでしょうが
クライアント側は leaflet.js 使ってます
表示されてるドキュメントは
サーバー側で描画され
ビットマップで送られる
タイルの...
18
オープンソースカンファレンス2016 Gunma
中見てみる (4)
クライアント・サーバー間は
WebSocket でコネクション張りっぱなし
タイルビットマップとか操作データがこの中をぞろぞろっ
と流れている
時間切れで中覗いたりはま...
19
オープンソースカンファレンス2016 Gunma
まとめ
開発中の LibreOffice Online
バイナリディストロもあるけど、自前でビルドし
て動かすのも意外とカンタン
自前でビルドすれば色々覗いたりなんだりできる
開発に参加し...
20
NVDA World 2015 Tokyo
All text and image content in this document is licensed under the Creative Commons Attribution-Sh...
Upcoming SlideShare
Loading in …5
×

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

6,581 views

Published on

Webブラウザーで文書が操作できる新世代のオフィスソフトLibreOffice Onlineが開発されています。その中身を覗くために、まずは自前でビルドしてちょっと中を覗いてみましょうという内容です。

Published in: Technology
  • Be the first to comment

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

  1. 1. 1 オープンソースカンファレンス2016 Gunma Web ブラウザで動く OSS オフィスソフト、 LibreOffice Online の中身に迫る 小笠原 徳彦 (Ogasawara, Naruhiko) LibreOffice 日本語チーム
  2. 2. 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. 3. 3 オープンソースカンファレンス2016 Gunma LibreOffice Online 現在鋭意開発中のオンライン版 LibreOffice 通称 LOOL (ろーる) Google Drive や MS Office Online に似てる 違いは、 LOOL はよりオンプレ寄り サーバーは各組織でそれぞれ立てる Google や MS みたいにデカイデータセンターを保守しない
  4. 4. 4 オープンソースカンファレンス2016 Gunma LOOL を手元で動かす LOOL はバイナリ配布のみ
  5. 5. 5 オープンソースカンファレンス2016 Gunma LOOL を手元で動かす (1) LOOL はバイナリ配布のみ ←誤解です! LOOL のソースコードは完全に公開されてます https://gerrit.libreoffice.org/gitweb?p=online.git;a=summary https://github.com/LibreOffice/online (read-only mirror) LOOL は「 LibreOffice の文書を Web ブラウザと サーバーでエディットする仕組み」だけを提供 文書をどうやってアップロード・ダウンロード・管理する かはまた別(好きに作っていいよ)というスタンス このバイナリディストリビューションが複数あるって話
  6. 6. 6 オープンソースカンファレンス2016 Gunma LOOL を手元で動かす (2) カンタンなのは CODE を使う手 https://www.collaboraoffice.com/code/ Virtualbox のディスクイメージが配布 *.vmdk 中身は openSUSE 上に構築されたイメージ これを Bridged Network で設定した仮想マシンにアタッチ して起動 カンタンに動くけどちょっとつまんない
  7. 7. 7 オープンソースカンファレンス2016 Gunma LOOL を自分でビルドしよう! オープンソースだしね Ubuntu 16.04 LTS (Xenial Xerus) で挑戦 材料 LibreOffice ソース一式 LOOL ソース一式 libpoco ソース一式
  8. 8. 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 README drwxrwxr-x 12 naruhiko naruhiko 4096 5 月 10 23:46 loleaflet drwxrwxr-x 12 naruhiko naruhiko 4096 5 月 14 04:30 loolwsd drwxrwxr-x 2 naruhiko naruhiko 4096 5 月 10 23:46 scripts
  9. 9. 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. 10. 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. 11. 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. 12. 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. 13. 13 オープンソースカンファレンス2016 Gunma LOOL を動かす(サーバー) 予め証明証をコピっておいて(ホントはちゃんと したの用意するべきなんだろうけど) えいっと起動 $ cd LOOL/loolwsd $ sudo mkdir /etc/loolwsd $ sudo cp etc/*.pem /etc/loolwsd $ make run
  14. 14. 14 オープンソースカンファレンス2016 Gunma LOOL を動かす(クライアント) 適当に開きたいファイルを配置して Web ブラウザーで以下の URL にアクセス https://localhost:9980/loleaflet/dist/loleaflet.html? file_path=file:///PATH/TO_DOC&host=wss://localhost:9980
  15. 15. 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. 16. 16 オープンソースカンファレンス2016 Gunma 中見てみる (2) ${LOOL}/loolwsd/jails とかいう怪しいディレクト リが 中は chroot 環境 セッションごとに実行空間を分離している $ ls jails 合計 12 drwxrwxr-x 13 naruhiko naruhiko 4096 5 月 14 10:32 7798 drwxrwxr-x 13 naruhiko naruhiko 4096 5 月 14 10:32 7799 drwxrwxr-x 2 naruhiko naruhiko 4096 5 月 14 10:32 pipe $ ls jails/7798 dev etc home lib lib64 lo opt system_stamp tmp user usr var
  17. 17. 17 オープンソースカンファレンス2016 Gunma 中見てみる (3) カンがいい人はお気づきでしょうが クライアント側は leaflet.js 使ってます 表示されてるドキュメントは サーバー側で描画され ビットマップで送られる タイルの並びを操作するので 地図の描画と同じ 技術が使える!
  18. 18. 18 オープンソースカンファレンス2016 Gunma 中見てみる (4) クライアント・サーバー間は WebSocket でコネクション張りっぱなし タイルビットマップとか操作データがこの中をぞろぞろっ と流れている 時間切れで中覗いたりはまだできてません ><;
  19. 19. 19 オープンソースカンファレンス2016 Gunma まとめ 開発中の LibreOffice Online バイナリディストロもあるけど、自前でビルドし て動かすのも意外とカンタン 自前でビルドすれば色々覗いたりなんだりできる 開発に参加してみても楽しいかも!
  20. 20. 20 NVDA 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. これからのろーる先生の ご活躍にご期待下さい … 雑なプレゼンでスミマセン … 触ってみたい人はブースにどぞ!

×