プロフィール

著者について

tsukumi です。日々の主に技術的なつまずいた事とかのメモを、自分の備忘録がてら記事にしています。
また、DTV (TS抜き) 関連の記事や、ハウツーやレビューといった記事も執筆しています。

「つくみ島だより」という名前は、tsukumi というハンドルネームの由来でもある、大分県にある津久見島からきています。その島自体にゆかりがあるわけではありませんが、幼少の頃大分に住んでいたことと、無人島が好きな事もあって、そういったつながりから取ったように記憶しています。
GitHub 他で tsukumijima という ID を使っていますが、ハンドルネームとしては tsukumi の方が正しいです。

ソフトウェアの導入方法など、一般的には少し難解とされている事柄に関して、丁寧に分かりやすく解説する記事を書くのが得意です。TVTest の記事が一番わかりやすいでしょうか。様々な方から分かりやすいとの声をいただいていて、ありがたい限りです。Google 先生にも評価されているのか、なぜか検索順位がかなり上の方になっている記事もあります。

文章を書くのは(おそらく、一般的な基準からすると)得意な方だと思っていますが、文章を書くこと自体が好きなわけではありません。丁寧に説明するということはそれだけ文字数が増えることでもあるので(TVTest の記事は 31000 字を超えている)、一度執筆を始めると数日時間をリソースを取られてしまいます。それでモチベーションがあまり上がらないこともあり、ブログの更新頻度はかなり低めです。

プログラミングが好きですが、つよつよプログラマーではありません。プログラマー歴もまだまだ浅いです。
JavaScript (TypeScript)・PHP・Python が書けます。なにかツールを書くときは Python が多いです。
フレームワークは Laravel・FastAPI・Vue.js あたりを触っていますが、どれも実務レベルほどではありません。いろいろな方面の技術に広く浅く手を出しているので、何か得意分野があるかと言うとちょっと微妙。
あと、このサイトが動いているサーバー (VPS) の管理や Apache の設定といった、Linux (Ubuntu) のコマンドライン操作や Web サーバーの構築が一通りできるくらいの技術はあります。

問題解決力、というよりググり力はそれなりにあるつもりです。苦戦や妥協を強いられることもありますが、他に例のない課題でもネット上の様々な情報をひたすら漁って自分一人だけで解決してきました。
意外と言われた事もありますが、他の人に技術的にわからない事を訊いたことはあまりありません。人様の時間を頂戴して満足なものか分からない回答を貰うより、自分でひたすら調べてトライ&エラーを繰り返した方が早いだろうし、だいたい全体の 85% くらいの課題は満足に解決できているというのもあります。

GitHub にて、作ったソフトや各種ツールを OSS として公開しています。TVRemotePlus をはじめ、DTV(TS抜き)関連のソフトが多いです。使っているソフトやライブラリに対して Issue や Pull Requests をいくつか送ったりもしています(英語が致命的にできないので Google 翻訳を駆使していますが…)。

  • TVRemotePlus – 2019/03 ~ 2021/08
    • PHP + JavaScript (jQuery) 製の、いわゆるロケフリと呼ばれるソフトです。
    • あらかじめ TS 抜き( PC でテレビが受信できる)環境が導入されている必要がありますが、PC・Mac・スマホ・タブレットなど端末や OS を問わず、同じローカルネットワークに繋がっていれば、テレビや録画番組をブラウザから手軽に視聴することができます。
    • さらに、ニコニコ実況のコメントを流したり、Twitter でアニメ実況するための機能もあります。というかこれがやりたくて開発していました。
    • もともとまだ HTML に PHP スクリプトを直書きして動いて喜んでいたくらいのプログラミング超初心者の頃、習作として試しに作ったものがベースだったりします。そのおかげでとんでもないクソコードになってしまったわけですが…
    • 当初は公開するつもりはなかったのですが、開発していくうちに(少なくとも機能だけみれば)そこそこ使えるものになったので試しに公開してみたところ、想像以上に反響があり開発を続ける事となりました。その後も多くの方に使って頂き、ありがたい限りです。
    • 設計はおろか、フレームワークの利用といった概念が全くない頃に開発を始め、ユーザーからの要望を積み木を積み上げるように無計画にひたすら実装していってしまった結果、気づいた頃には「秘伝のソース」状態になってしまいました。
    • 開発を続けるにつれ、自分で書いたはずのスパゲティプログラムがもはや読めなくなってきた事、大幅に書き直さない限り解消不可能なボトルネックと機能追加が出てきた事もあり、2021/08 をもって開発を終了しました。現在は、TVRemotePlus の後継という位置づけの KonomiTV の開発をしています。
    • フレームワークや npm を使っていなかったりと全体的にレガシーですし、技術的な面での反省点は多数あります。とはいえプログラミングの技術力を上げられたのも TVRemotePlus のおかげなので、その点で思い入れのあるソフトです。
  • KonomiTV – 2021/06 ~
    • TVRemotePlus と同じく、いわゆるロケフリと呼ばれるソフトです。
    • TVRemotePlus と用途は同じですが、時間をかけて UI デザインを練り上げ、まるで配信サイトのようなユーザー体験でテレビや録画番組が視聴できる、メディアサーバー型のソフトを目指しています。現在、ひとまずテレビのライブ視聴のみを実装したα版の状態です。
    • サーバー側は Python + FastAPI + Tortoise ORM + Uvicorn 、クライアント側は クライアント側が Vue.js + Vuetify の SPA です。
      • 当初は PHP にすることも考えましたが、Python の方がより柔軟かつ簡単に動かすことができ、Windows 特有の辛みも軽減できる事から Python を採用しました。
      • FastAPI は非同期 I/O に対応しており、さらに実装難易度の高い MPEG-TS ライブストリームを複数のクライアントに配信するというイレギュラーな API の実装が可能であった事が決め手となり採用しました。
      • クライアント側は Vue.js です。モダンな JavaScript フレームワークに触れた事がなかったため、React と比較して比較的習得が容易だろうということで採用しました。もう少し時間があれば React にしたかもしれませんが、素早く実装することを優先しました。
      • Vuetify をベースに使っていますが、UI の大半は SCSS をゴリゴリ書いて実装しています。Vuetify 感はなくせているはずです。
    • UI デザインにはかなりこだわりました。AbemaTV を参考にしています。
    • mpegts.js を利用し、放送波と比較した遅延を 1.5 秒程度にまで短縮しています。
      また、同時に複数の端末が同じチャンネルを視聴している場合はチューナーとエンコーダーの出力を共有(共聴)したり、誰もそのチャンネルを視聴しなくなった場合はアイドル状態として「他のチャンネルの視聴リクエストが来たらチューナーリソースを他のチャンネルに委譲し、チャンネルを切り替える」「一定期間の間にもう一度視聴リクエストが来たら、オンエア状態に戻る」「一定期間の間に視聴リクエストが来なければチューナーを解放し、エンコードを止める」といった高度なチューナー・エンコーダーリソースの制御を行っているのがちょっとした自慢です。
      • 共有できるチューナーやエンコーダーのリソースは極力共有し、限りあるチューナーやエンコーダーリソースを無駄に使うことがないような設計としています。
    • α版につき機能も少ないですが、将来的にはテレビや録画番組の視聴体験を KonomiTV 1つで完結できるような、TVRemotePlus を機能面でもユーザー体験でも超えるプロダクトを目指して開発しています。私が TVRemotePlus の使い勝手に満足していないので、自分が心の底から使いやすいと思えるプロダクトを技術力を駆使して、自分の手で作り上げてみたい、というモチベーションです。
  • DPlayer (fork) – 2019/07 ~
    • コメントを流せる多機能な JavaScript 製動画プレイヤーです。私が一から作ったプロダクトではありませんが、独自に多くの改善を行っているので一応取り上げます。
    • 中国で多く使われている動画プレイヤーで、非常にコードがきれいで手を加えやすいということもあり、TVRemotePlus や KonomiTV の動画プレイヤーとして採用しています。
    • 細かなエンハンスが多いため一概に何をやったかは言いづらいのですが、DPlayer の改良をはじめた当時は npm や webpack といった技術を全く知らない状態で、そのあたりのフロントエンド技術を習得するにあたり良い土台となりました。
  • EDCBNotifier – 2020/07
    • EDCB という PC 向けのテレビの録画予約ソフトがあるのですが、その EDCB からの「番組を予約した」「予約情報が変わった」「録画を開始した」「録画を終了した」といった各種イベントを、LINE や Twitter に通知することができるツールです。
    • 完全に自分用でたいして宣伝もしていないのですが、いつのまにかそれなりに使っていただいているようです。ちゃんと予約できているかどうか通知が来るのは地味に便利ですし、今まで作ったツール群の中でも個人的な満足度は高めです。
    • 本格的に Python で書いたはじめてのプロダクトでもあります。やっている事としては難しいものではないので、Python の文法などの習得に大いに役立ちました。
  • JKCommentCrawler – 2020/12 ~
    • ニコ生に移行した新しいニコニコ実況の過去ログを日付ごとに一括で取得・保存する Python 製のツールです。後述する「ニコニコ実況 過去ログ API」で配信する過去ログを収集するために開発しました。
    • 新しいニコニコ実況はニコ生のシステムと統合されているため、以前と異なり過去ログが1~2週間で消えてしまいます。TVRemotePlus には録画番組を視聴するときにニコニコ実況の放送当時の過去ログを再生する機能があるのですが、この過去ログが取得できなくなると過去ログを再生して視聴することができなくなってしまうため、「ニコニコ実況 過去ログ API」と同時に数日間ぶっ通しで開発しました。
    • その性質上、少しでもエラーが発生して実行が止まってしまうと過去ログを取りこぼして失ってしまう可能性があるため、例外処理やリトライ処理などのエラー対策を念入りに実装しました。例外処理を意識してコーディングするようになったきっかけでもあります。
  • JKLiveReserver – 2021/04 ~ 2021/06
    • ニコニコ実況用のコミュニティ番組を一括で自動予約(枠取り)するツールです。
    • 新しいニコニコ実況に移行する際に BS の一部チャンネルは対象から除外されてしまい、結果論的に、公式で用意されていないチャンネルは有志らで実況するためのコミュニティ番組を独自で配信するようになりました。
    • ニコ生のコメント機能が使えればいいので映像を配信する必要はないのですが、とはいえ実況したい番組がある毎に生放送を開くのはかなり負担です。それを自動化し、24時間365日 BS チャンネルの実況用コミュニティ番組が配信されている状態にするためのツールです。
    • その性質上かなりニッチなツールなのですが、コマンドライン操作に慣れない方でも導入できるよう、Readme で丁寧に導入方法を解説しています。何人かに使っていただいているようで、成果として BS の多くのチャンネルで常時実況用のコミュニティ番組が配信されている状態にすることができました。

このほか、いくつかちょっとした Web サービスを開発・運営しています。ジェネレーター系が多めです。
いずれも小規模なものですが、多くの方に使っていただけているようで、ありがたい限りです。

  • やばいクレーマーのSUSURU TVジェネレーター – 2021/09
    • 深夜の勢いで 7 時間くらいで作ったやつです。
    • 需要が謎ですが(なんで作ったんだろう…)、きれいに描画できるよう実装できたので個人的には満足しています。縦書きの実装に苦労しました。
  • テレビの字幕っぽいのジェネレーター – 2021/04
    • テレビの字幕 (ARIB 字幕) をなんとなく再現した画像を生成できるジェネレーターです。好きな画像の上に字幕を合成し、テレビの字幕をキャプチャしたかのような画像がつくれます。
    • エイプリルフールネタとして徹夜で 10 時間くらいの突貫で作りました。いろいろ面白い使い方ができると思います。
  • ニコニコ実況 過去ログ API – 2020/12
    • 2020年12月のニコニコ実況のリニューアルにともない、2008年11月から蓄積されてきた旧ニコニコ実況の全てのコメントの過去ログデータが消失するのを阻止すべく開発した API です。
      新ニコニコ実況の過去ログは前述の JKCommentCrawler で 15 分おきに収集し、サーバーに保管された過去ログの容量が 150GB もあることから自宅サーバーで運用しています。
    • 元は TVRemotePlus で過去ログが表示できなくなるのをどうにかするために突貫で作ったものでしたが、ニコニコ実況に関連する他の様々なソフトでも使っていただいています。
  • 天気予報 API (livedoor 天気互換) – 2020/09
    • livedoor 天気 が2020年7月でサービス終了してしまい、プログラミングのチュートリアルでありがちな「APIからデータを取得してきて表示する」という用途に割とよく使われていた livedoor 天気の API も使えなくなってしまったため、その代替として開発した API です。
    • 2021年2月に情報の取得元である気象庁の HP が大幅にリニューアルされたため、事実上ほとんど書き直しました。Qiita でも 10 件以上この API を使った記事が書かれていたりと、私の想像以上に色々なところで使われていて恐縮です。
  • Twitter API のアクセストークンを確認するやつ – 2020/07
    • Twitter API を開発者アカウントにした Twitter アカウント以外で使うために作ったツールです。
    • フォームに指定したコンシューマーキーでアプリ連携をして、連携したアカウントのアクセストークンを取得するだけのツールです。たとえば Bot にしたいアカウントと開発者アカウントにしたアカウントが異なる場合などに役立つと思います。
  • YouTubeMP3もどき 2019/12 ~
    • 名前の通り、YouTube とかの動画サイトの動画をダウンロードできるちょっとアレなサービスです。内部では youtube-dl を利用しており、事実上 youtube-dl の Web ラッパーです。
      もとは他の方が運営されていたものを引き継いだものですが、引き継いだ際に実質コードを全て書き直しています。
    • 明確に Web サービスといえるものはこれくらいかもしれません。元々自分用に開発したものですが、なぜか非常に利用者が多く、さらにサーバー側でエンコード処理を行うために頻繁にサーバーがダウンしてしまっています。多くの負荷の高いアクセスを捌き切る難しさを痛感しました…。
    • 結局私自身普通に youtube-dl を使うようになったこと、大量のアクセス数を捌くには全て作り直す必要があることなどから、現在はほぼ放置状態です。
  • shamimomo.net – 2019/08 ~
  • かなり恐怖を感じた弁護士ジェネレーター – 2019/07
    • 一番最初に作ったジェネレーターです。額縁に画像をはめ込むだけの単純なジェネレーターですが、開発当初はそれなりに苦戦した記憶があります。
    • このとき作成したジェネレーターのデザインやコードは、他のジェネレーターを開発する際に改良を加えながら秘伝のタレのように受け継がれています。

このブログについて

私自身の備忘録を兼ねたいわゆる技術系ブログですが、プログラミング関係以外にも、ソフトのハウツーやレビューのような記事もたまに執筆しています。
記事の内容は結果的に技術系のものが大半になっていますが、方針としてそうしたカテゴリの記事に限定しているわけではないので、今後日記的な記事を書くことがあるかもしれません。

記事は知識のない人でもわかりやすく理解できるように、スクリーンショットを多用し丁寧に説明することを心がけています。特に DTV 関連の記事は初心者の方が見に来られる事を想定し、細かな操作まで丁寧に執筆しています。

主にプログラミングや Linux でのコマンド操作でつまづいた事や、あまり情報のないソフトの使い方、トラブルシューティング、試してみたものといった技術的な内容を中心に記事を執筆しています。
他のブログさんに私が書きたい事と同じような事が書かれていれば基本書かないようにしているため、結果的にかなりマイナーな事例に対する対処法のような記事が多くなりがちです。

古い記事では統一されていない事もありますが、自分にとっての備忘録的な意味合いが大きい記事では常体で、読者の方に説明・紹介するような意味合いが大きい記事は敬体で書いています。
ただ感覚的な部分もあり、明確にそのルールに則って書いているわけではありません。極論その時々の気分と、あとは文体がしっくり来るかどうかで決めています。

古い情報はできる限り更新するよう努めていますが、記事数がそれなりにあるため、どうしても古かったり不正確な情報がそのままになってしまっている可能性もあります。
このブログの内容を参考にされる際は自己責任の元、他の情報とも照らし合わせてご利用ください。
特に技術系の記事に関しては、作成日時・更新日時を確認してから参考にされるようお願いいたします。

お問い合わせ

記事に関するお問い合わせはコメント欄からお願いします。
どうしても見逃してしまうこともあるかもしれませんが、頂いたコメントはできるだけ確認し、返信するように心がけています。

このブログに関するお問い合わせは tsukumizimaあっとgmail.com までメールでお願いします(あっとの部分は @ に変えてください)。
頂いたメールを確認次第返信しますが、返信までに数日かかるかもしれません。