FRL 自由研究ラボ

自作アプリ紹介 — APP 01

動画の管理アプリ

— たまった動画を、ブラウザの1画面で整理する —

Mac にたまった動画を、Finder ではなくブラウザの画面で探し、見て、名前を変え、別のドライブへ移す。 そのために作った自分専用のアプリです。この記事では、できることと、データを壊さないための工夫を、画面つきで紹介します。

この記事を読むとできること

  • 大量の動画を「探す・見る・名前を変える・移す」アプリが、どう動いているかが分かります
  • 大事なファイルを扱う道具で、データを壊さないための工夫が分かります
  • 自分で似た道具を作るとき、どこに気をつければよいかの手がかりが得られます

想定している使い方

Mac の中で小さなアプリを動かしておき、ブラウザ(Safari や Brave など、Web ページを見るためのアプリ)で開いて使います。この記事の説明は、すべて Mac を前提にしています。 コードは載せていません。作り方の考え方は、最後の「関連する項目」から「はじめての道具箱」へたどれます。

  1. 動画の管理アプリとは何か
  2. ブラウザから動画を扱う仕組み
  3. 一覧表と絞り込み
  4. 2段のカテゴリーと、まとめての名前変更
  5. 2つのドライブのあいだで移す
  6. 見る:再生のしかたと、ほかの道具への受け渡し
  7. データを壊さないための工夫
  8. 使ってみて変わったこと
  9. 関連する項目

読む目安:約13分 ・ 自作アプリ紹介 APP 01 ・ 図3枚 ・ 実際の画面5枚

動画の管理アプリとは何か ―― なぜ Finder だけでは足りなくなったのか

動画の管理アプリは、Mac につないだドライブにある動画を、ブラウザの1画面で探す・見る・名前を変える・移すための、自分専用のアプリです。 Mac の中で動き、外のサービスには何も送りません。

動画は、Mac のドライブ(データを保存する場所)に置いています。置き場所は、Mac の内蔵ディスクでも、外付けのドライブでも、同じ考え方で扱えます。 本数が少ないうちは、Finder(Mac でファイルを見るアプリ)で十分でした。ところが動画がたまってくると、目当てのものを探すだけで時間がかかるようになりました。

いちばん手間だったのは、整理の作業です。動画は、ファイル名の頭に分類を書き込んで整理しています。 名前を変えるたびに Finder で探し、ターミナル(文字で命令を打ち込むためのアプリ)で名前を変え、また Finder に戻って別のドライブへ移す、という行き来が続き、 そのたびに名前を打ちまちがえる心配がありました。

そこで、ファイルを触る作業はそのままに、操作の入口だけをブラウザの1画面に集めることにしました。 これがこの動画の管理アプリです。AI にコードを書いてもらって作り、使いながら少しずつ直してきました。

動画を置く場所は、2つに分けて考えます。よく見る動画を入れておくメインのドライブ(速いほうが向いています)と、 しばらく見ない動画を逃がしておく大容量のドライブです。ドライブが1つだけでも使えます。 動画のフォルダの場所を直接決める設定もあるので、Mac の内蔵ディスクのフォルダでも動きます。

✕ Finder とターミナルを行き来すると Finder で 探す ターミナルで 名前を変える Finder に戻って 別のドライブへ移す 1本ごとに行き来して 時間がかかり、 名前を打ちまちがえる ○ ブラウザの1画面に集めると たまった動画 ドライブの中のファイル ブラウザの1画面で 探す・見る・名前を変える・移す 行き来せずに済み、 まちがえにくい ファイルを触る道具はそのままに、操作の入口だけを1か所にまとめる、という考え方です。

図の見方:上の段は、Finder とターミナルを行き来して1本ずつ整理していたころです。アプリを切り替えるたびに手が止まり、名前を手で打つので打ちまちがえも起きます。 下の段は、たまった動画をブラウザの1画面で扱う今のやり方です。探す・見る・名前を変える・移すが同じ画面で済むので、行き来がなくなります。

ブラウザから動画を扱う仕組み ―― Mac の中に小さな「店」を開く

ブラウザは安全のため、Web ページが Mac の中のファイルを勝手に開いたり、名前を変えたりできないように作られています。 これはこわれた仕組みではなく、知らないサイトにファイルを触らせないための大切な守りです。

そこでこのアプリは、Mac の中でサーバー(頼まれた仕事を受け付けて返すプログラム)として動きます。 Python(Mac で動かせるプログラムの言葉の一つ)で書き、Flask(Python で小さな Web アプリを作るための部品)を使っています。 ブラウザで localhost(自分の Mac 自身を指す名前)に、アプリごとの番号(ポート番号。同じ Mac の中で動いているほかのアプリと区別するための番号)を付けて開くと、サーバーが動画の一覧を画面にして返します。

ブラウザがするのは、画面を見せて「この名前に変えて」と頼むことだけです。実際にファイルを読んだり、名前を変えたり、移したりするのはサーバーです。 こうしておくと、ファイルを触る入口が1か所に絞られるので、守りの工夫(後で紹介します)もそこにまとめて入れられます。

ブラウザ(Safari や Brave) 画面を見せて、頼みごとを送るだけ 「一覧をください」「この名前に変えて」 動画の管理アプリ(Mac の中のサーバー) localhost のポート番号で、頼みごとを待っている 読む・名前を変える・移す・ゴミ箱へ入れる ドライブにある動画ファイル 実際にファイルを触るのは、サーバーだけ

図の見方:上から順に、ブラウザ、Mac の中のサーバー、ドライブの動画ファイルです。ブラウザは頼みごとを送るだけで、ファイルには直接触りません。 頼まれたことを実際に行うのは、まん中のサーバーだけです。

一覧表と絞り込み ―― たまった中から数秒で見つける

画面の中心は、1行に動画1本を並べた表です。列には、お気に入りの印(★)、変更した日時、ファイルの大きさ、2段の分類、題名が並びます(大容量のドライブも表示しているときは、置いてあるドライブの列も出ます)。 列の見出しを押すと、その列で並べ替えられます。表計算ソフトのように、全体を一目で見渡せる形にしました。

動画の管理アプリの一覧の画面。上に検索欄と読み込み元の切り替え、お気に入りや重複候補の絞り込みボタン、操作のボタンが並び、その下の表に、お気に入りの印、日時、大きさ、2段の分類、題名が1行1本で並んでいる
実際の画面(動画の題名・分類・★はすべて架空のサンプルです。スマホでは横にスクロールできます):上から、検索欄、読み込み元の切り替え、絞り込みのボタン、操作のボタン、一覧表が並びます。塗りつぶした★がお気に入り、赤い印と「重複候補」は大きさが同じ動画の目印です。

上の検索欄に言葉を入れると、その言葉を含む動画だけが残ります。空白で区切って2つ以上の言葉を入れると、すべての言葉を含むものだけに絞られます(AND 検索と呼びます)。 全角と半角、大文字と小文字の違いは気にせず探せるようにしてあります。分類の選択欄、★の付いたものだけ・付いていないものだけを出すボタンも、検索と組み合わせて使えます。

検索欄に「京都」と入れた画面。その言葉を含む動画だけが表に残っている
実際の画面(架空のサンプル):検索欄に「京都」と入れると、その言葉を含む動画だけが残ります。右上の「リセット」で、絞り込みを元に戻せます。

1文字打つたびに、たくさんの行を調べ直すと、画面がもたつきます。そこで、打ち終わってから一瞬(0.18秒)待ち、まとめて1回だけ絞り込むようにしています。 打っている間は待ち、手が止まったら動く、という作りです。

もう一つ、ファイルの大きさがまったく同じ動画に「⚠️重複候補」の印を付けています。うっかり同じ動画を2回保存してしまったときに、 「重複候補のみ表示」で並べて見比べ、要らないほうを消せます。大きさが同じでも別の動画のことはあるので、印はあくまで「候補」です。

2段のカテゴリーと、まとめての名前変更

分類は、フォルダを分けるのではなく、ファイル名の頭に書き込む方式です。 たとえば「【旅行】【京都】嵐山の竹林.mp4」なら、大きな分類が「旅行」、小さな分類が「京都」で、残りが題名です。

表で動画をいくつか選び、「カテゴリー一括付与」を押すと、画面の上に小さな窓(モーダル)が開きます。 大きな分類と小さな分類を入れて決めると、選んだ動画の名前が「【大】【小】題名」の形にまとめて付け直されます。 もともと付いていた分類は外してから付け直すので、【】が二重に重なることはありません。

カテゴリーの一括付与の小窓。第1カテゴリー(大)と第2カテゴリー(小)を入れる欄がある。後ろの表で、分類のない動画3本が選ばれている
実際の画面(架空のサンプル):分類のない動画を選んで「一括付与」を押すと、大きな分類と小さな分類を入れる小窓が開きます。後ろの表では、選んだ動画にチェックが付いています。

分類の入力欄には、すでに使っている分類が候補として出ます。候補から選べば、打ちまちがいで「京都」と「京都市」のような、 似ているけれど別の分類が増えるのを防げます。分類が割れると、絞り込みで片方が出てこなくなるためです。

2つのドライブのあいだで移す ―― 足りないときは1件も動かさない

速いドライブは、容量が小さめです。大容量のドライブ(HDD=ハードディスクのように、遅いかわりにたくさん入る記憶装置など)は、速さを少し手放すかわりに、たくさん入ります。 そこで、よく見る動画はメインのドライブに置き、しばらく見ない動画は大容量のドライブへ出しておき、また見たくなったらメインへ戻す、という使い分けをしています。

画面の上の「読み込み元」で、メインのドライブだけを表示するか、メインと大容量の両方を表示するかを切り替えられます。 両方を表示すると、どの動画がどちらにあるかが「場所」の列に出ます。名前の変更、分類の付け直し、ゴミ箱へ入れる操作は、どちらのドライブの動画にも同じようにできます。

気をつけたのは、大容量のドライブからメインへ戻すときです。メインのほうが小さいので、たくさん選んで戻すと途中で満杯になり、半分だけ移った状態で止まるおそれがあります。 そこで、戻す前に選んだ動画の合計の大きさと、メインのドライブの空きを比べ、足りなければ1件も動かさずに止まるようにしました。 この確認は、念のため画面とサーバーの両方で行います。

大容量 → メインへ戻すとき(上から順に) ① 選んだ動画の合計サイズを数える ② メインの空きと比べる(少し余裕を持たせる) 結果は2通り 空きが足りないとき 1件も動かさずに止まり、足りない量を知らせる 空きが足りるとき 移したあとの空きを見せ、確認してから移す メイン → 大容量へ出すときは、大容量のほうが大きいので、この確認はしません

図の見方:大容量のドライブからメインへ戻すときの流れを、上から順に描いています。合計の大きさを数えてメインの空きと比べ、足りなければ止まり、足りれば移したあとの空きを見せて確認してから移します。 逆向き(メインから大容量へ出す)は、大容量のほうが大きいので確認を省いています。

もう一つ、ドライブの名前をアプリの中に書き込まないようにしています。以前、外付けドライブの名前を変えただけで、一覧が全部空になったことがありました。 アプリがドライブの名前を決め打ちしていたためです。今は、つながっているドライブの中から、動画フォルダのあるメインのドライブを毎回探すので、名前を変えても一覧は消えません。

見る ―― 再生のしかたと、ほかの道具への受け渡し

動画は、一覧から選んで別の窓で再生します。「表示中をランダム再生」を押すと、いま絞り込まれている動画を順番を混ぜて1本ずつ流します。 「表示中の動画を一斉プレビュー」では、画面を 2分割・4分割・6分割にして、何本かを同時に流して見比べられます。

再生中はキーボードで操作できます。左右の矢印キーで早送り・巻き戻し、上下の矢印キーで前後の動画へ移ります。 早送りの幅は、数字の 1・2・3 のキーで 10秒・30秒・60秒に切り替えられます。長い動画をざっと見るときは 60秒、細かく探すときは 10秒、という使い分けです。

動画の冒頭を切る、2本をつなぐ、といった加工は、このアプリには入れていません。選んだ動画(メインのドライブにあるもの)を「動画カット・連結へ」のボタンで、 加工だけをする別の小さなアプリ(カットと連結の2つだけができる自作の道具)へ送ります。 1つのアプリに何でも詰め込まず、役目ごとに小さな道具を分けると、どちらも直しやすいままに保てます。

データを壊さないための工夫

動画の名前を変える、移す、消す。どれも、まちがえると取り返しのつかない操作です。速く便利にすることより、失敗しても元に戻せることを先に考えました。

消すときは、ゴミ箱へ入れる

「削除」を押しても、動画はすぐには消えず、Finder で消したときと同じようにそのドライブのゴミ箱へ入ります。 まちがえて消しても、ゴミ箱から戻せます。Mac 本体のゴミ箱にしないのは、外付けの動画を本体へ入れると、数 GB の動画が本体へまるごと写されてしまうからです。

「ゴミ箱へ」を押したときの確認の表示。動画の名前と、「ドライブのファイルをゴミ箱へ移動します(Finder のゴミ箱から戻せます)」という説明が出ている。後ろの表では、消そうとしている行が赤い枠で囲まれている
確認の表示の例(動画は架空のサンプルです。実際のアプリではブラウザ標準の確認の窓が出ます。ここでは同じ文面を、見やすいように再現しています):消す前に、どの動画を、どこのゴミ箱へ入れるのか、戻せることを知らせます。

「読めなかった」を「0件」と扱わない

★の一覧を iCloud Drive(Apple のインターネット上の保管場所とつながったフォルダ)に置いて、ほかの Mac とも共有する場合を考えます。 iCloud Drive には、容量を節約するために、名前だけがあって中身がまだ届いていない状態があります。このときに読むと失敗します。 もし失敗を「★は0件」と受け取って保存すると、たくさんの★が空の一覧で上書きされ、それがほかの Mac にも広がってしまいます。 そこで、読めなかったときは保存そのものを止め、画面に「読めませんでした」と知らせるようにしています。

お気に入りの一覧を読めなかったときの画面。上に赤い帯が出て、「お気に入りの一覧を読めませんでした。iCloud の同期が終わるのを待ってから開き直してください。この状態では★の変更を保存しません」と知らせている
実際の画面(架空のサンプル。iCloud が中身をまだ届けていない状態を、試験用に再現したものです):エラーにして止めるのではなく、赤い帯で理由を知らせ、★の保存だけを止めます。動画の一覧は、そのまま使えます。

途中で止まっても壊れない保存

一覧や★を保存するときは、いきなり元のファイルに書かず、別のファイルに書き終えてから、まるごと差し替えます。 書いている途中で Mac が止まっても、元のファイルは無事なまま残ります。★の一覧は、さらに1つ前の控えも残しています。 ドライブをまたいで動画を移すのに失敗したときも、書きかけのファイルを片づけてから止まるので、次に移すときに「同じ名前のファイルがあります」と断られ続けることはありません。

どの画面からでも、続きから使える

iPhone からも使いやすいように、入力欄の文字は 16px(iPhone が勝手に画面を拡大しない大きさ)にしています。 色は Mac の見た目の設定に合わせて、明るい画面と暗い画面が自動で切り替わります。 検索した言葉、分類の絞り込み、並べ替えの順番、★の表示、読み込み元は、ブラウザの中の小さな保存場所に覚えさせています。 名前を変えたあとに画面が読み込み直されても、同じ絞り込みのまま続けられます。

使ってみて変わったこと

いちばん変わったのは、ファイルが壊れたり消えたりする心配をせずに、大きな動画の山を手元で育てていけるようになったことです。 探す・見る・名前を変える・移す・退避するが1画面にまとまり、Finder とターミナルを行き来することがなくなりました。

このやり方が向いているのは、たくさんの動画を抱えている人です。 自分の好みの操作で、動画を分類し、見て、退避したい人にも合います。

ただし、自分で作った道具は、動いたように見えて、ときどき静かにまちがえます。移す・消すといった操作のあとは、たまに Finder でも中身を開いて、 本当にその場所にあるかを自分の目で1回確かめる習慣を残しておくと安心です。