Chienomi

自分でも手放せない、最高におすすめなマイプロダクト

開発::util

  • TOP
  • Articles
  • 開発
  • 自分でも手放せない、最高におすすめなマイプロダクト

本記事では改めて、私が開発し、かつオープンソースソフトウェアとして公開しているものから、特に私が重用しており、品質的にも満足しているソフトウェアを紹介する。

当然ながらこれらのソフトウェアは私がハードに使っているものだから、ぴったりハマれば実用性は間違いないだろう。

PureBuilder Simply

このChienomiを含む、私の(現行で管理している)すべてのウェブサイトの構築に利用しているソフトウェア。

基本的にはMarkdownまたはReSTで書かれたソースドキュメントをドキュメントプロセッサに渡すという役割を果たす。 ドキュメントプロセッサに内蔵されていない拡張や処理の追加ができるほか、インデックスページを作る機能や、ドキュメント間の参照を可能にする機能などを持っているため、単純にドキュメントプロセッサを使うのと比べより高度なことができ、またウェブサイトとしての統合的な機能を提供可能。

同類のソフトウェアと比べると縛りが非常に少ないことと、ドキュメントプロセッサに主にPandocを使うためにより強力な機能を使えるのが強みだ。 また、プログラマブルな拡張を持っているが、ライバルと比べ非常に簡単かつ自由度の高い作りをしている。

ウェブサイトの構築にはドキュメントプロセッサのテンプレート(基本的にはHTMLベース)やCSS、JavaScriptを組み合わせるため、基本的にこれらを書ける人が手間なく構築・管理できるように考えられている。 そうなっているのは、当然私は書けるので、書ける前提で困らないからだ。

もっとも、こうした問題はプリセットやテンプレートが用意されればより間口広く提供が可能だ。 現状ではあまり広まっていないため実現していないが、公式としてもいくらかのテンプレートを用意している。

別のリポジトリでは連携する検索機能や、WordPressからの移行を支援するツールも用意している。

ウェブサイト構築ツールは2003年スタートで、8代目、2014年にPureBuilderになってからも3代目。 しかし過去のツールが使い勝手いまいちで不便を感じていたのに対し、このSimplyは何一つ不満のない完璧な仕上がりだ。

My Browser Profile Chooser

複数のウェブブラウザプロファイルを使い分けるためのスクリプト。

例えばweb twitterと打てばTwitterが開き、web amazonと打てばAmazonがお買い物モードで開く、といったことができる。 プロファイルを使い分けているためにアクティビティに固有のブラウジングが可能で、セキュリティやプライバシーに対して非常に有効であるとともに、ブックマークや拡張機能なども使い分けることができる。

OTR(プライベートモード)をデフォルトとして使うこともできる。

対応しているブラウザの種類も多く、基本的にプロファイルを扱えるブラウザは全般的に対応する。 対応していないものについて要望があれば(issueで)積極的に対応する。 (ただし、Manjaro Linuxの最新の状態で動作できるものでないと検証できないので対応しない。)

私の場合、すべてのPCにまず最初に導入するプログラムのひとつになっている。 プライバシーやセキュリティを重視するユーザーにとっては非常に有効であり、なおかつ利便性も高い。

私はこれが使えないためにWindowsを使いたくないほどだ。

RipCD

Ripit+cdrdaoを使ったCDリッパーのシェルスクリプト。 少し雑で制限も多いが十分に実用的で、現在に至るまでCDを買ったらRipCDを通すという流れになっている。 現在はWalkmanを使っているため、Walkman向けの変換スクリプトもある。

RipCDスクリプトも結構歴史があり、初代は2005年で現在は5代目。 その割には洗練されていないが、ちゃんと動いているので直す気にもならない。

RipitはFreedb.orgをデフォルトにしているが、使えなくなっているためgnudb.orgを使うようにしているのもポイント。

Multi-machine utils

複数マシンを個人で利用していることを想定し、グリッドコンピューティングやデータ連携・同期のためのユーティリティをまとめたもの。

share-central-repoは、複数マシンでGit、あるいはMercurialを用いて作業することを想定し、アップストリームとの同期忘れを防ぐ。 ちなみに、私はアップストリームはクラウドドライブで同期している。

mmffr(multimachines-ff-rinda)はRinda(タプルスペース)を用いてTCP経由でアクセス可能なキューを提供し、そこからデキューしつつffmpegを起動することで複数マシンに分散しての動画エンコーディングを可能にする。 libvpx-vp9で高品質なエンコーディングを維持するためシングルスレッドで処理することを前提に、マルチプロセス・マルチホストでの処理を可能にする。

mmfft9(multimachines-ff-tcp-vp9)はmmffrに対し、ゲーム動画に特化して動画形式をVP9/OpusのWebMに固定、キューの性能や柔軟性を下げた代わりにより速く処理完了できるようにバランス機能を追加したもの。 mmffrをコードベースとしてはおらず、イチから作り直している。意外と複雑なプログラムで、制作は割と苦労した。 私の実環境ではコンピュータのオンライン時間を1回の処理あたり数日レベルで短縮に成功しており、mmffrで感じていた扱いづらさが解消されている。 なお、将来的にもAV1に対応することはないだろう。 (実用にならないレベルで遅すぎるため。)

Reveal.js (forked)

hakimel/reveal.jsをアップストリームとするforkで、RukamodJPブランチにおいて、CSSテーマrucolor, rucolorLight, rucolorNavyという3つのテーマを追加している。

これらはReveal.jsにおいてあまり考慮されていない日本語表示の問題を解決しており、特にフォントサイズの問題を中心に調整している。

スライドを作るときは必ずこれを使っているのだが、私はスライドを作る機会がそこまで多くないためアップストリームへの追従はかなり遅いが、利用するときは随時アップストリームの変更を取り込んでいる。