SlideShare a Scribd company logo
6
Most read
18
Most read
19
Most read
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=summary
https://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 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
オープンソースカンファレンス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 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
オープンソースカンファレンス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-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.
これからのろーる先生の
ご活躍にご期待下さい
… 雑なプレゼンでスミマセン
… 触ってみたい人はブースにどぞ!

More Related Content

PPTX
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
PPTX
本当は恐ろしい分散システムの話
PDF
ARM CPUにおけるSIMDを用いた高速計算入門
PPTX
RustによるGPUプログラミング環境
PDF
分散システムの限界について知ろう
PDF
Dockerからcontainerdへの移行
PDF
[Cloud OnAir] Google Cloud へのデータ移行 2019年1月24日 放送
PDF
Linux女子部 systemd徹底入門
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
本当は恐ろしい分散システムの話
ARM CPUにおけるSIMDを用いた高速計算入門
RustによるGPUプログラミング環境
分散システムの限界について知ろう
Dockerからcontainerdへの移行
[Cloud OnAir] Google Cloud へのデータ移行 2019年1月24日 放送
Linux女子部 systemd徹底入門

What's hot (20)

PDF
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
PDF
ドメイン駆動設計 基本を理解する
PDF
DockerとPodmanの比較
PDF
BuildKitの概要と最近の機能
PDF
推薦アルゴリズムの今までとこれから
PPTX
RLSを用いたマルチテナント実装 for Django
PDF
eBPFを用いたトレーシングについて
PDF
DynamoDB設計のちょっとした技
PDF
CyberAgentのインフラについて メディア事業編 #catechchallenge
PDF
CRDT in 15 minutes
PDF
Tackling Complexity
PPTX
トピックブランチとは
PDF
こわくない Git
PDF
Dapr × Kubernetes ではじめるポータブルなマイクロサービス(CloudNative Days Tokyo 2020講演資料)
PDF
いまさら聞けない!CUDA高速化入門
PDF
ミリシタを支える GAE/Go
PDF
機械学習モデルのサービングとは?
ODP
Guide To AGPL
PPTX
Anaconda navigatorのアップデートが終わらないときの対処方法メモ
PPTX
【DL輪読会】DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Dri...
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
ドメイン駆動設計 基本を理解する
DockerとPodmanの比較
BuildKitの概要と最近の機能
推薦アルゴリズムの今までとこれから
RLSを用いたマルチテナント実装 for Django
eBPFを用いたトレーシングについて
DynamoDB設計のちょっとした技
CyberAgentのインフラについて メディア事業編 #catechchallenge
CRDT in 15 minutes
Tackling Complexity
トピックブランチとは
こわくない Git
Dapr × Kubernetes ではじめるポータブルなマイクロサービス(CloudNative Days Tokyo 2020講演資料)
いまさら聞けない!CUDA高速化入門
ミリシタを支える GAE/Go
機械学習モデルのサービングとは?
Guide To AGPL
Anaconda navigatorのアップデートが終わらないときの対処方法メモ
【DL輪読会】DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Dri...
Ad

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

PDF
openSUSEユーザーに向けたLibreOffice入門 / Introduction of LibreOffice for openSUSE users
PDF
LibreOfficeの最新動向 in OSC 2015 Hiroshima
PDF
LibreOfficeをビルドしてみよう(Windows)
PDF
補足 : LOOLのビルドについて
PDF
LibreOffice Online環境の構築
PDF
Recent Information about LibreOffice
PDF
LibreOfficeとモバイルデバイス
openSUSEユーザーに向けたLibreOffice入門 / Introduction of LibreOffice for openSUSE users
LibreOfficeの最新動向 in OSC 2015 Hiroshima
LibreOfficeをビルドしてみよう(Windows)
補足 : LOOLのビルドについて
LibreOffice Online環境の構築
Recent Information about LibreOffice
LibreOfficeとモバイルデバイス
Ad

More from Naruhiko Ogasawara (20)

PDF
さらばデスクトップ?モバイル・クラウド時代のLibreOfficeの挑戦/LibreOffice current status, or the chall...
PDF
最新のデスクトップアプリを使おう:Snap, Flatpak, AppImage
PDF
LibreOffice Asia Conference 2019 Tokyo; what we had achieved, and what's next
PDF
小江戸らぐBBQ 2019
PDF
The Document Foundationについて / About The Document Foundation
PDF
TDFと寄付、メンバーシップ、認定制度 / TDF and donation, membership and certification
PDF
Building a bridge between Japanese LibreOffice community and the world
PDF
Happy Software Freedom Day! (Koedo Linux Users Group, Tokyo, Japan)
PDF
宣伝:SeleniumConf Tokyo 2019やりますよ!
PDF
Using latest LibreOffice on openSUSE Leap 15 - by modern packaging systems
PDF
The Document Foundationについて
PDF
告知 ー OSnuC Kawagoe 2018
PDF
LibreOffice: The Office Suite with Mixing Bowl Culture
PDF
Make It Better Together: コミュニティを主体としたLibreOffice翻訳 / : Community-centered Lib...
PDF
Hospital days in czech / チェコで入院した話
PDF
LibreOfficeの最新動向 / LibreOffice current status
PDF
Vertical Writing: typical use-cases and current status in LibreOffice
PDF
LibreOffice, the free office productive suite and it's status of accessibilit...
PDF
小江戸らぐ 第154回飯能河原BBQオフ(春の宴)にいて
PDF
LibreOffice UI/ ヘルプ翻訳の基礎知識
さらばデスクトップ?モバイル・クラウド時代のLibreOfficeの挑戦/LibreOffice current status, or the chall...
最新のデスクトップアプリを使おう:Snap, Flatpak, AppImage
LibreOffice Asia Conference 2019 Tokyo; what we had achieved, and what's next
小江戸らぐBBQ 2019
The Document Foundationについて / About The Document Foundation
TDFと寄付、メンバーシップ、認定制度 / TDF and donation, membership and certification
Building a bridge between Japanese LibreOffice community and the world
Happy Software Freedom Day! (Koedo Linux Users Group, Tokyo, Japan)
宣伝:SeleniumConf Tokyo 2019やりますよ!
Using latest LibreOffice on openSUSE Leap 15 - by modern packaging systems
The Document Foundationについて
告知 ー OSnuC Kawagoe 2018
LibreOffice: The Office Suite with Mixing Bowl Culture
Make It Better Together: コミュニティを主体としたLibreOffice翻訳 / : Community-centered Lib...
Hospital days in czech / チェコで入院した話
LibreOfficeの最新動向 / LibreOffice current status
Vertical Writing: typical use-cases and current status in LibreOffice
LibreOffice, the free office productive suite and it's status of accessibilit...
小江戸らぐ 第154回飯能河原BBQオフ(春の宴)にいて
LibreOffice UI/ ヘルプ翻訳の基礎知識

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