短縮URLの生成スクリプト”YOURLS”の機能拡張

従来展開されている短縮URLを生成させるオンラインサービスに頼ることなく、自分専用の短縮URL生成スクリプトを設定することを挑戦してみました。利用したのは「YOURLS」というオープンソースです。前回の記事『自分専用の短縮URLの生成スクリプトを設置してみた』で基本設置するところまで完了したので、今回はより使いやすく機能拡張してみます。

自分専用の短縮URLの生成スクリプト”YOURLS”を設置してみた - RODINIA BROG
https://chi-k.net/url_short_yourls_1/

管理ページの日本語表示

まずは管理ページの英語表示を日本語に切り替えてみました。オープンソースということもあり、たくさんのプログラマーさんの協力により様々な言語への翻訳がなされています。まずは感謝申し上げます。

日本語化のソースコードは下記ページにある、「Code」ボタン内の「Download ZIP」よりダウンロードができます。

ダウンロードできたzipファイルを解凍してみました。

インストール手順については「Installation」欄に書かれているとおりなのですが、残念ながらmakeコマンドなどのコンパイルのことが私は全く知りません。ですが、いろいろと試行錯誤を繰り返しながら、なんとか進めてみました。

プログラミングをご存じの方は承知のことかと思いますが、私自身は下記のように認識しました。

  • ja_JP.po
    テキストベースの開発用プログラム。人間がわかるテキストで作られたソースファイル。
  • ja_JP.mo
    サーバマシンが理解できるマシン語で書かれたバイナリデータファイル。
  • GNUmakefile
    .poファイルから.moファイルを作るための指示書。

なるほど。makeコマンドを使ってGNUmakefileの内容に従いながら.moファイルを生成させれば良いのかな、と判断しました。ところが…結論から言うと、次の手順では残念ながら最後まで進むことができず途中断念しました。

  1. user/languages ディレクトリの中に「ja_JP.po」と「GNUmakefile」をFTPでアップロード
  2. hetemlサーバにSSHソフトからアクセス。SSHソフトの設定や接続方法はhetemlのサポートマニュアルが参考になります。私はTera Termを使っています。
SSHソフトの設定 - hetemlサポートマニュアル
https://support.heteml.jp/hc/ja/sections/360007608793-SSH-ソフトの設定
Tera Term – ターミナルエミュレータ
https://ttssh2.osdn.jp/

Tera Term上で user/languages ディレクトリへ移動して make を実行してみたのですが、ここでエラーメッセージが出てきました…。

msgfmt ja_JP.po -o ja_JP.mo
make: msgfmt: Command not found
make: *** [ja_JP.mo] Error 127

原因を探しながら、「msgfmt -o ja_JP.mo ja_JP.po」や「make -i」などをコマンドしたり、gettextのインストールを試したりしましたが、結局解決せず…。hetemlサーバでは msgfmt コマンドが使えないとか?!

.poファイルを.moファイルへ変換させる

画像や動画、サウンドファイルなどのファイル形式をオンライン上で変換できるスクリプトページもたくさんあるぐらいなので、.poファイルを.moファイルに変換できるページがあるか探したところ、見つけることができました。

po2mo.net – web-based po to mo converter
https://po2mo.net/

無事に.moファイルへ変換することができました。生成された.moファイルをダウロードして、ファイル名を「ja_JP.mo」に書き換え、FTPで user/languages ディレクトリにアップロード。

YOURLSの管理ページへアクセスしてみると、無事に日本語化ができておりました!ひと安心…。

生成する短縮URLの文字列のランダム化

標準の設定のままで短縮URLを生成すると、短縮部分が数字で「1」「2」「3」…と順番に生成されます。私が設置した環境であれば、

https://●●●●●●●/fwd/1
https://●●●●●●●/fwd/2
https://●●●●●●●/fwd/3

となります。自分だけしかアクセスしないのであれば別に構わないですが、他の人へ教えてしまうと他の短縮URLも容易の推測できてしまうので、ランダムで生成できるように設定を変更しました。

管理ページの左上にある「機能拡張を管理」からページを開くと、標準でインストールされている6つの機能拡張が並んでいます。ただし、まだすべて「無効」状態ですので、リスト右側の「操作」部分にカーソルを移動させて必要な機能のみ有効化させる必要があります。

  • Allow Hyphens in Short URLs
    生成される短縮URLにハイフンを使えるようにするかどうか。
  • Random Backgrounds
    管理ページの背景イラストをランダムに変化させるかどうか。
  • Random ShortURLs
    生成される短縮URLにランダムな文字列を割り当てるかどうか。

「Random ShortURLs」を有効化すれば、短縮URLの文字列がランダムで生成されます。管理ページの左上に「Random ShortURLs Settings」と新しく表示されているので、それを開けば文字列の長さを設定することができます。

とっても便利なブックマークレットの設置

管理ページを開くことなくクリックひとつで短縮URLを生成するためのブックマークレットを作ることができます。とても便利な機能なので、ぜひオススメです。

管理ページ左上の「ツール」からページを開くと、ブックマークレットのリンクボタンが並んでいます。いまページを開いているブラウザのブックマークバー(お気に入りバー)に、そのリンクボタンをドラッグすれば、ブックマークが登録されます。

短縮URLを生成させたいページを開いた状態でそのブックマークをクリックすれば、管理ページが開いて自動的に短縮URLが作られます。「カスタム短縮」の場合は、カスタムURLの入力を促すメッセージが途中に表示されます。

「インスタント(ポップアップ)」は残念ながら私のChromeでは機能しませんでした。

「ツール」ページには、他にもSNSへ直接共有できるブックマークレットや外部ツールと連携ができるAPIに関する説明なども掲載されています。ぜひ試してみてください。

プラグインの利用

YOURLSには非常に数多くのプラグインが開発されています。プラグインの一覧ページには、100を超えるプラグインが並んでおり、どれを使ってみようかと興味が尽きません。

たくさんある中から「Hide Version String」を設定してみました。管理ページのフッターから、YOURLSのバージョン情報の表記を隠すことができます。

Remove version info from login screen - GitHub
https://github.com/YOURLS/YOURLS/issues/1878

ページ内にあるphpソースをコピーして、plugin.php とファイル名をつけて保存します。user/plugins ディレクトリに hideversion という名前のサブディレクトリを作成して、先ほどの plugin.php をFTPでアップロードします。

管理ページの「機能拡張を管理」を開いてみると、新たに「Hide Version String」が追加されていますので、有効化してみました。すると無事に、フッターに表示されていたバージョン情報を隠すことができました。

ほかの短縮URLスクリプト

今回ご紹介した以外にも、短縮URLスクリプトの設置について紹介されたページがありました。

短縮URLサービスがどんどん終了しているので、自分でOSSライブラリ「URL Shorter」開発してみた - Qiita
https://qiita.com/hirossyi73/items/5c11eeb18b6fd8015dea
[Laravel]短縮URLを作成する(laravel-short-url) - codelikeなブログ
https://codelikes.com/use-laravel-short-url/

実はYOURLSを使う前に、これらのサイトを参考にスクリプトの設置を試してみました。サーバサイドの設定などがあるので、私にとってはYOURLSよりもさらにハードルが高かったです。

Composerのインストールまではなんとか無事に進みました。私の利用しているhetemlサーバでは、標準でバージョン1.9のComposerが入っていたのですが、そこへ別ディレクトリにバージョン2を新たにインストールして使えるようにできる方法に気付くまでが最初の難関でした。

次にLaravelのインストール、そしてシンボリックリンクの設定まではなんとか進める事ができたのですが、途中の設定がどこかで間違えていたのかスクリプトが正常に動作せず、継続を断念しました。

ですが、Laravel自体に少し興味が出てきたので、学習しなおしてから改めて挑戦してみようかと考えています。参考にしたページを覚え書きとしてメモしておきます。

ヘテムルにLaravelをデプロイする方法 (Laravel5.8) - RIE’s Portfolio
https://blog.rie-k.com/2020/07/12/ヘテムルにlaravelをデプロイする方法-laravel5-8/#composerdeinsutorusuru
ヘテムル(ベーシックプラン)にLaravelをインストールする方法 - 84LIFE
https://nori-life.com/heteml-laravel-install/#Laravel