バランスを取りたい

よくCTFの記事を書きます

WORDを支える技術

この記事はWORDIAN Advent Calendar 2018の7日目の記事です。

記事を途中まで書いた状態で12月7日発売のスマブラをしていたらMacが死んでしまって書きかけの記事が蒸発しました。
ので手短にWORDを支えていた技術と支えていく予定の技術について紹介します。

WORD編集部では普段の記事の編集環境としてLaTeXを使用しています。 少し前までは一太郎ユーザーもいましたが、ここ最近の数号はLaTeX率100%になっています。

さて、何故ここまでLaTeXユーザーが多いのかというと、編集部内での公式LaTeXテンプレートとLaTeXビルドサーバーが構築されているからです(多分)。 一太郎は編集部内のPCに物理的にアクセスしないと編集することができませんが、LaTeXならお手元のPCで編集ができます。

今までの編集環境

今までのWORDは以下のリポジトリにあるテンプレートを使用して書かれています。 github.com

このテンプレートを使ってそれぞれが記事を書き、結果のPDFを結合して最終的なWORDが完成します。

多くの編集部員は記事をビルドするために手元のTeX環境と部内に置かれたビルドサーバーを使っていい感じにやっています。
手元の環境では簡単な確認をし、最終的に部内のgitサーバーへpushしてビルドしてもらうという感じで使っている人が多いと思います。
また、手元にTeX環境を入れたくない部員はある程度書けたタイミングでpushして結果を確認する方法で記事を書いています。

f:id:xrekkusu:20181206235546p:plain
ビルドが終わった様子

このような便利なLaTeX環境ですが、今年の5月下旬に事件が起こりました。 編集部のgitサーバーは、ホスティングしているESXiマシンのHDDが壊れ中身のデータもろともお亡くなりになってしまいました。

上のビルド結果の画像は46号のものですが、LaTeX-BitBucketという表記があります。 実はマシンの死亡後、部内のリポジトリではなくBitBucket上のリポジトリをビルドするように改変が行われています。
これは以前の環境を維持しつつなんとかWORDの発行を行なっているだけにすぎません。 以下では移行後にどうなるのかついて書きます。

これからの編集環境

前述の通りVMのホストマシンが壊れ、編集環境の変更を余儀なくされてしまいました。 まず、LaTeXのビルドサーバーはgitサーバーからデータを取得していたため、実質的にLaTeXのビルドができない状態になりました。 これにより、元々発行が滞っていたWORD44号の進行がより滞ってしまいます。 また、時代の流れかサーバー管理をやりたい編集部員もあまりいなかったり、5年以上前の構成で動いているサーバー群が止まるとリカバリーが難しすぎたりするため、ついにWORDもクラウド化に向かいます。

gitサーバーをBitBucketへ移行 (完)

そのままです。

BitBucketを選択した理由は、学生プランで無料で運用しようとしたときにGitHubでは責任者(学類長)から連絡をする必要がありますが、BitBucketではac.jpのWORDのメールアドレスから申請を出すだけで素早く学生プランが有効になったからです。
別にアトラシアンの大ファンとかではないです。

また、編集部内のgitサーバーではいちいち公開鍵を連絡してgitoliteの操作がわかる担当者に追加してもらうという面倒な作業がありましたが、BitBucketではアカウントをグループに追加するだけになり、その他にもWebGUIのおかげでリポジトリの管理が簡単になりました。
これで後輩に引き継いでも安心ですね。先輩がこういうことを思っていると押し付けられた後輩はそれをぶっ壊していく風潮があるので頑張ってほしいです。

記事のビルドをBitBucket Pipelinesへ移行 (未)

BitBucketの学生プランには異常な量のPipelines使用時間が割り当てられます。
これを使わない手はないということで、部内にまだ残留しているJenkinsおじさんをリストラする計画が生まれました。

現在記事ビルド用のDockerコンテナを用意して、bitbucket-pipelines.ymlにあれやこれやを書き、自動でビルドしてくれるように仕向けている最中です。 ビルド用のコンテナはOBの@_yyu_さんがいい感じにしてくれたので続きを頑張っています。

困っている点は、ビルドの成功・失敗をいかに取得するかというところですね。 Pipelinesのstepの失敗をSlackにカスタム通知したいんですが、ダーティにやる方法しかなさそうなのでしばらく悩んでいます。

テンプレートの変更 (未)

テンプレートの変更はVMホストが壊れる前から進んでいたプロジェクトですが、これを機に一気に進めて移行しようという流れがあります。

この辺に関して自分は門外漢なのでまだいまいちわかっていませんが、WORDの号全体を1つのTeXソースとしてビルドしようという構想だと思います。 今までは各々がPDFを生成してそれを結合していたのを、記事をTeXソースの段階から全部マージしてPDFを生成をする方法に置き換える感じです。

PDFの結合とか目次の生成は慣習的には編集長の仕事になっていますが、ソースから結合してしまえばこの部分を手動でやる必要がなくなるので、より効率的に発行まで漕ぎ着けられるようになるでしょう。

終わりに

書いていたら日が変わって8日になってしまいました。よくないですね。

46号はLaTeX-BitBucketのJenkinsおじさんにやってもらっていたので47号では全てうまく行っているといいですね。 ちなみに内容は編集部内での合意を取っていない上、議論中の内容なので本当に編集環境がこうなるとは限りません。