技術系で興味を持ったりなんだりしたことをたまーに書くブログです。最近はてなダイアリー放置しすぎて記事書くたびにはてな記法忘れるのではてなブログに移行しました。ライセンスの下に提供されています。2019の17日目です。Foundation、その他いかなるLibreOfficeコミュニティの意見を代表したものではない私見です*1。いうと私はLibreOfficeの認定ほげほげではないので、ビジネスとしてガチに相互運用を検討したい場合はぜひ認定移行専門家にご相談ください。Officeとの互換性がね......」という意見を目にします。Officeとの互換製品だとは言ってないし」とか言われたって人もいるんじゃないでしょうか。Officeと「互換」ではないのか。そんなことを先日Twitterで書いたので引用しておきます。繰り返すと相互運用(という言葉については後述)のための「機能」の互換性は大事に思ってるけど、互換アプリではないよと。そこは、例えば機能や文書フォーマットだけでなく積極的に操作性も揃えようとしているこういうソフトウェア(あくまでも一例ね)とは立ち位置は違うんじゃないかなと。Officeのユーザーから受け取った、あるいは自分が作った文書をLibreOfficeで開いたら開けなかった、あるいはぶっ壊れたというのは、まあ、あんまり幸せではないわけです。少なくともそれを良しとしている人は誰もいないんじゃないのかな。そんなわけで、その点について思いつくことをちらちら書こうと思います。Officeを相手にした話となります。Officeと相互運用性があるソフトだ」みたいな言い方をします。Compatibility)とは、ある部品やコンポーネント(構成要素)などを置き換えても同様に動作させることができる性質のこと。能力に関する特性である。「同じであることを目指している」か「異なるモノを使いつつ一緒に連携できることを目指している」かということ。「互換性」と言う言葉から期待される「何もかも同じでなければ文句を言われる」ところから、ちょっと踏み込んで、使い方の工夫とかも含めることができる、と思って、私は原則として「相互運用性」って言葉を使ってます。言葉遊びと言われればそうかもですが。相互運用とインポート・エクスポートとファイルフォーマットの話さて、相互運用というのは少なくとも二者間との連携ですよという話をしました。Officeしか持ってないあなた」が、一緒に作業してアウトプットを出す......ってことです。OfficeとLibreOfficeは、違うファイルフォーマットを利用しています。OfficeがODFを読み書きするかどちらかしかないわけです。いう、ネイティブなフォーマットじゃないフォーマットを読むことを「インポート」、書き出すことを「エクスポート」といいます。言葉通り、輸入・輸出ですね。OfficeとLibreOfficeは似たような機能は提供していますが、もちろん異なるソフトウェアです。異なるというのはどういうことかというと、同じような見た目、同じような機能であっても、たとえば段落とか、箇条書きとか、表とか、そういうの。それを内部でどうやって扱うか、その仕組みは全然違うってことです。わかりやすい話でいうと、ExcelとCalcの罫線。Excelは、一つのセルに着目したとき、セルの4辺それぞれに罫線が引いてあるというモデルになってます。一方でLibreOfficeは、二つの隣接するセルがあるとき、その境界線に罫線が引かれてるというモデル*2。各アプリケーションの標準フォーマット、つまりはODFとかOOXMLは、こういった内部表現を比較的忠実に表現しています。インポート・エクスポートってのは、こういう違う世界を読み替えるってことなのです。情報の欠損や置き換えが起きて、ある意味当然なのです。いくつかの工夫で減らすことはできるはず。どっちがいい?以下さらっと解説します。バックアップは取ろうねLibOでOOXMLを読んで、編集して、そのまま書き出すという行為。これは、インポートとエクスポートが両方走るわけです。最低でも「この文書めっちゃ大事で壊れたらぜったいまずい」かつ「LibOで編集するのは初めて」って場合は、バックアップとっとくと後悔しないんじゃないですかね。OfficeでODF読んで書くときだっていえるはず。世の中にはODFが正本であるというケースが圧倒的に少ないので、それで文句を言う人が少ないというだけなんじゃ......と、思います。最新を使おうOOXMLはけっこうバージョン間でほいほい変わったりします。わかりやすいのはExcelのセル関数ですね。「新たにExcelにこんな関数が増えた!」みたいにニュースになったりしますし。当たり前ですがそういうものを使うと、LibOだけじゃなくて古いバージョンのExcelでもうまく扱えないです。LibOは「半年に1回メジャーリリースをする」という開発スタイルを生かして、ここらへんの新たな機能をキャッチアップしたり、相互運用に関わる不具合を直したりを積極的に行っています。なにか変......という場合は、LibreOfficeの最新版を試してみるといいのではないかな。いえ手元のバージョンを検証なしにほいほい最新にすることが難しいというのもあるとは思いますので、その場合は、インストールしないで使えるパッケージ、つまりWindows版の場合はポータブル版を、Linuxの場合はAppImage版の利用を推奨します。Macの場合はこのWikiの記事に従って並列インストールするのがよいですね*3。出し入れを繰り返すのはやめよう出し入れってのはようは「インポート・エクスポート」のこと。それを繰り返し続けるのはよくないって話。繰り返しになりますけどインポート・エクスポートは情報の欠落や置き換えが起きる可能性が常にあるわけですから、それを繰り返し続けるのはよくないってのはまあそうだよね、と。Officeで作業している人からファイルを受け取って、それをLibOで作業する場合、一度OOXMLからインポートした後、「名前を付けて保存」でODFにして、それを触り続けるほうがいいです。Officeしか持ってない人に渡すときに、再度OOXMLにエクスポートして返す。いや、共同編集なので、私がちょっといじって直したやつを、この人に渡して、って作業したいから、出し入れ避けられない......という場合。Office買うなり、するほうがいいんじゃないかなーと思います。Officeの互換品ではないですよ、とは書きましたが、同じような機能をする「代替品」(Alternative)ではあると言えると思います。Officeあるいはその他のオフィスソフトの代わりにLibreOfficeを導入することは、できなくはないです。その場合、社内の既存の資産の扱い、まあこれも過去の自分たちとの「相互運用」ですね。この場合も、いったんはOOXMLの過去資産をすべてODFにして、以降はODFで一貫して触り続けるのがよいと思います。Officeを、少なくとも短期的には残すのが無難じゃないかなーと。スタイルを活用するさて、少し視点を変えて、インポート・エクスポートをしても壊れにくい文章ってどうやって作ったらいいかという話。それには、スタイルをちゃんと作って、文書の修飾はスタイル側に寄せるってのが有効です。すると、結構きれいにインポート・エクスポートできると思います。フォントを揃える、代替フォントを活用するもひとつ、問題になるのがフォントの扱い。フォントが選択されている場合、レイアウトが大きく崩れることってそんなにないのですが、文書に含まれているフォントがシステムに存在しない場合は、フォールバックフォントの扱いでけっこう崩れる......という印象が、私にはあります。fontとかIPAフォントとか)の利用を検討するのが良いと思います。代替フォント(あるフォント名が指定されたときに別のフォントを割り当てる)を指定してあげるのも有効です。OfficeでODFとしてエクスポートするLibreOfficeでOOXMLをインポートするの、どっちがいいかという話。これって結局はMSさんのODFエクスポートとLibOのOOXMLインポートどっちを信じる?って話だと思うのですが、私はこの点に対してちゃんとした答えを持ってないです。身も蓋もないことをいえば「どっちも試して結果がいいほうを選ぶ」がいいんじゃないかと思いますけど。いちおう、与太話的に書いておけば。イギリス政府が政府内のオフィスフォーマットとしてODFを義務化していることをご存じの方もいるとは思います。これはODFネイティブなLibreOfficeの利用を強制してないことには注意が必要です。要はODFを正しく扱うことさえできれば別のソフトでもよいわけです。MSさんにとってもイギリス政府からbanされることは望ましくないので、ODFの扱いはそれなりにちゃんとする動機はあるはず。一方で、ハンガリー政府は「プロプライエタリ(独占的)なオフィスソフトの利用を段階的に削減すること」というポリシーを掲げています。ファイルフォーマットではなくてアプリケーションを指定しているわけです。このサポートを請け負っているNISZという組織では、「MSのODFの扱いが改善されるかどうかは自分たちで制御できないが、LibOのOOXMLの扱いは自分たちで改善できる余地があるから」という理由で、内部フォーマットはOOXMLのままにLibOに移行するという決断をし、そのためにLibOの開発者を内部で育成するという活動をしています。(2019.12.18追記:もちろん、LibreOffice有償サポートベンダーの活動の多くもまた、顧客から求められた相互運用性の向上です。それ以外の多くのボランティア貢献者もこの部分にコミットしています。)そんなわけで両者頑張っているので、現時点でどっちが絶対の正義ってのは簡単には言えませんよと。あーもう一点、もし編集が不要で見るだけであれば、PDFにして渡すのが一番良いですね。LibreOfficeの「ハイブリッドPDF」(埋め込みドキュメントとしてODF形式を丸ごと抱いたPDF。LibOで開けば編集可能文書、そうでなければPDFとして見られる)を活用しましょう。おわりにということで埋め草なポエムでした。裏付けがある話を書くべきなのですが、思いつくままの書き散らしですみません。Calendar自体はこれから先も面白そうな記事が予告されてるので楽しみですね!......以下おまけ。Officeって互換性高いっけか?で、最後にこれは愚痴なんですけど、私ちょっと前までは仕事場ではMac使ってました。Macで顧客提案資料とか作って営業さんに渡すと、Windowsで開いたらレイアウト崩れてましたよーとか言われるわけですよ。2013とかの頃かな。Officeが概ね文字の配置ロジックにてOSから得られるフォントの割付情報をわりと素朴に使っているのはまあ知ってはいたので(WordよりもExcelのほうが酷い)、そりゃーズレるよなーとは、理屈ではわかるんですけどね......。Officeって結構Windows版と機能もUIも違ってたりしたし。Onlineで開くと「このファイルは破損してるので開けないよ」って怒られるみたいなことがあったわけで*4。Officeだとみんな言わないのに、LibreOfficeだとちょっと違うと文句言われるのは、なんだか不条理だなと思ったと、そんだけです。blogに書いてます。*2:っていう話は大昔にプレゼンしました。*3:Applicationフォルダー以下のフォルダー名をリネームするだけだと、設定が混じっちゃいますが、雑にやるならそれでも可です。*4:今はMacはメインでは使わなくなったのでわかりません。2016.12(後編)そんなわけで後編。