Common Lisp の CLOG で YouTube のプレイリスト機能を実装してみた

投稿日: 2022-09-03 土
CLOG Lisp

はじめに

先週の土曜日に某所で CLOG - The Common Lisp Omnificent GUI というライブラリがあることを教えてもらったところ、 GUI のソフトウェア開発に革命を起しそうなポテンシャルを感じたため、 その可能性を探るために YouTube Local Playlist を開発しました。

CLOG とは

CLOG - The Common Lisp Omnificent GUI はブラウザ上で動く GUI のアプリケーションを簡単に作れるようにする Common Lisp の凄いライブラリで、 Web Scoket によるサーバー・クライアント間通信を駆使することにより サーバーサイド側からクライアント側の制御が可能となっていて、 サーバーかクライアントかをあまり意識することなく GUI アプリの開発ができます。

YouTube Local Playlist とは

私が作成した YouTube Local Playlist は、YouTube の動画を気軽に連続再生するためのソフトウェアで、 主にご飯を食べながら YouTube の動画を連続再生するために使用します。 普段は自前の Git リポジトリにソフトウェアのコードを置いているのですが、 このソフトウェアは何かあったときに対処がしやすそうという理由で GitHub に置いています。 何を懸念しているのかについてはお察しください。

GUI アプリケーションを作成した経験も CLOS を使った開発の経験も Web 開発の経験も少ないため戸惑いも多かったのですが、 私が個人的に必要とする下記機能を実装することができました。 なお、動作テスト時の環境は SBCL で CLOG のバージョンは 1.2 (古い)です。 なぜ CLOG のバージョンが 1.2 になってしまったかというと Guix に登録されている CLOG のバージョンが 1.2 だからです。 Common Lisp のパッケージを Guix に登録する方法を学習するのを先送りした結果こうなりました。

  • YouTube の動画のプレイリストを構築すること
  • 作成したプレイリストをローカルマシンに保存できること
    • 具体的には Common Lisp が動いている環境側に保存される仕様になっている
  • プレイリスト中の動画を再生できること
    • IFrame Player API で再生できるようにした
  • プレイリストの動画を連続再生できること
    • 動画の終了を検知して次の動画を自動再生した
  • ドラッグ&ドロップで動画の並び換えやプレイリスト間の移動ができること
  • ドラッグ&ドロップで動画をプレイリストに追加できること
    • UI からはまず分からないけど、url の入力フォームに YouTube の動画へのリンクをドラッグ&ドロップするだけで追加できる
      • 改善の余地はあきらかにある
  • プレイリスト中の動画をプレイリストから削除できること

CLOG を使ってみた感想

使ってみた感想としては、 かけた労力に対してはるかによいものができているという印象です。 もともと GUI の開発は自分にとってあんまり益がない割に面倒くさいので、 モチベーションがなかったのですがこれくらい楽だと少しやってみようという気持ちになってきます。

チュートリアルがとても充実していて、 それぞれのチュートリアルの趣旨を理解すればだいたい使えるようになります。

CLOS のオブジェクトと DOM が対応していて、 オブジェクトを操作すると DOM が思ったように変化するのが分かりやすい印象です。

clog-builder というツールを使うと GUI で楽に UI の作成ができるようなのですが、 このツールの使い方を覚えるコストは今回の目的に対しては割に合わない感じがしたので使いませんでした。 将来的には使えるようになりたいです。

私は日常的には Common Lisp を書いていないので、 普段から Common Lisp を使っている方が CLOG を使った場合にはもっとよいところや特徴を見つけられるのではないかと思います。 私からは「簡単で良かった、最高!」という感想しかありません。

おわりに

正直私が作った YouTube Local Playlist をみんなに使って欲しいという気持ちはほぼありません。 どちらかというと CLOG 凄いよ!みんな試してみて!という気持ちでこの文章を書きました。

是非 CLOG を使ってみてください。

日記の一覧に戻る