メインコンテンツへスキップ

#472 恐怖のラブレターはZipで圧縮して怖くなくしよう!

2026/6/17 ·

エピソード概要

※番組内でZipはアーカイブ形式で圧縮はDeflateと言っていますが、圧縮もセットでした!!正しくは、「Zip=アーカイブ+圧縮で圧縮のアルゴリズムにはDeflateを使っているけど、圧縮しないこともできる」です!

今回はZipの裏側に使われている圧縮の仕組みであるDeflateについてお話していきます!

じゅんぺい君に届いた恐怖のラブレターをZipで圧縮して怖くない感じにしていく試みです!

-----------------------------------------------------------------------------------

お便りはこちらにラジオネームをご記入の上お送りください!

[email protected]

質問内容はなんでもOK!

今困っていることや、キャリアについて、これからエンジニアを目指すにあたっての悩みなどどしどしご連絡ください

こちらのGoogleフォームへの回答でもOKです!(

Xで「#ひまじんプログラマー」をつけてツイートしてくれたらめちゃくちゃやる気出ます!

よろしくお願いします!

-----------------------------------------------------------------------------------

オンラインコミュニティ「ひまプロ談話室」のお知らせ

ひまプロ談話室では絶賛メンバー募集中です。

エンジニア友達を探したい!アウトプットの場が欲しい!他のエンジニアから刺激をもらいたい!など、日々のエンジニアリング業務をもっと楽しくしたい方や、もっと成長できる環境が欲しいという方向けのコミュニティです。

以下のフォームからお申し込みできます。

ひまプロ談話室参加申込みフォーム


-----------------------------------------------------------------------------------

Xのフォローもよろしくお願いいたします!

かいち

のり

じゅんぺい

-----------------------------------------------------------------------------------


BGM: MusMus様

See Privacy Policy at https://art19.com/privacy and California Privacy Notice at https://art19.com/privacy#do-not-sell-my-info.

  • ひまじんプログラマーからお知らせです。6月24日水曜日19時から、東京都汐留にあるスリーシェイクさんのオフィスで、「AI時代、エンジニアの価値はどう変わったのか。ひまプロが語るエンジニアの生存戦略」というイベントに出演します。



  • イベントでは、のりとかいちが登壇するパネルディスカッションに加え、LT会、懇親会を実施します。AI時代のエンジニアの働き方について情報収集したい人や、一緒にワイワイしたい人はコンパスでカタカナの「リプラス」と検索してご参加ください。



  • この番組は、エンジニアの成長は楽しい学びからをモットーに、昨日より少しだけ成長できる学びをお届けするエンタメ系テック番組ポッドキャストでございます。



  • 番組ポッドキャストです。



  • へえ。



  • やってまいりました。



  • ちなみにちょっと2人に質問なんですけど、ちょっと来い。



  • はい。



  • いろんな、なんか人からもらうものってあるじゃないですか。



  • ああ、はいはい。



  • お、広いな。はい。



  • もらい物みたいな。



  • おせいぼ。



  • え、せいぼ?



  • おせいぼね。



  • 制服の帽子?



  • おせいぼ。



  • あ、おせいぼ?



  • はい。



  • おせいぼ。



  • まあそんな感じ。で、え、人からもらったもので、1番うれしいものってなんだと思います?



  • これは...



  • うわ、なんだろう。



  • なんか難しいですよね、これ。



  • え、任天堂スイッチとかですか。



  • 任天堂スイッチ?



  • はい。



  • まだまだ小学生だなあ。まったく。



  • えー、宛にっていいですか。



  • もらったらうれしいですよ。



  • いいよ。



  • 自分がほしかったもの。



  • 違います。いや、まあそれはそれでうれしいと思うよ。



  • はい。



  • なんだろう、真面目にすると。



  • うん。



  • 承認。



  • 承認?



  • あ、まあでもね、これまでのやつよりだいぶ近づいてるわ。



  • まだあるか。なんだろう。



  • うーん。



  • えー、認められること以外に何かあるかな。



  • でも、ある種認められてると言っても過言ではないかもしんない。



  • 尊敬。



  • え?



  • 尊敬。



  • はい。



  • ちょっとベクトル違うんだよなあ。ベクトルの長さは合ってんだけどな。



  • 尊敬ぐらいの感じなんだ。



  • ああ、長さは合ってる。



  • なるほどね。



  • ほめる。



  • ちょっとコサイン類似度があんまり。



  • ベクトルの長さ久々に聞けない。



  • ほめられる。ほめられるは、まあ結構尊敬とコサイン類似度がなんか高いなあ。



  • むず。難しすぎる。何度ぐらいずれてます?



  • 90度。



  • 結構ずれてるなあ。



  • ああ、なるほど。



  • えー。



  • いや、90度は言いすぎたな。60度ぐらいだな、多分。



  • 感謝。



  • 感謝。



  • はい。



  • 惜しい。



  • お。



  • 結構近づいてきてるわ。



  • え。



  • もう正解っていいですか。



  • いいっすよ、いいっすよ。



  • はい。



  • ガチのラブレターだと思うんすよね。



  • あ、ガチのラブレター?



  • はい。



  • ああ、なるほど。



  • いや、もらったことないんで分かんないんですけど、多分開ける前、開けたあと、そしてその後の人生、ずっと記憶に残ると思うんですよ。



  • ま、どうなんだろう。



  • ちょっとあの...



  • 分かんない。もらったことないんだけど。



  • ちょっと怖いんですけど、あの、ひ、人によるかなっていう気も。



  • そうなんだよな。



  • 怖?



  • 怖、こいつ。



  • いや、分かる。



  • いや、多分分かる。



  • かいさんが今言えなかった部分だと思います。



  • うん。



  • ええ。



  • まあでもうれしいっすね。



  • うれしいです、はい。



  • ま、僕は誰からもらってもうれしいですけどね、順平さんと違って。



  • いや、ずるいなあ。こういう役割ですから、ひまプロの中で僕は。はい、本心ではないですね。



  • そうだね。



  • はい。



  • で、ちなみにさ、順平さん。



  • はい。



  • ちょっと学生時代に戻ってほしいんですけど。



  • はい。



  • あの、じゃあ靴箱に手紙が入ってましたと。



  • ああ、はいはいはい。



  • で、なんかこうハートのシールでこう止められてるシンプルな便箋。



  • あの、靴の下に置いてある感じですね。



  • 靴の上じゃないかなあ。



  • 上か。



  • 下なの、あれ。



  • 踏みつけないか。上か。



  • 下にやるかな。



  • うん、下じゃないね。多分ね。



  • 下ではないな。



  • じゃあ、もらったことないのばれたかもしんない。



  • うん。いや、まあでもちょっと今、今からあげるからちょっと待ってて。



  • はい。ありがとうございます。



  • うん。で、例えば手紙を開いて、こう書いてあったらどうですかっていう話なんですけど。



  • うん。



  • 「愛してます。本当に愛してます。昨日も愛してました。今日も愛してます。明日も愛してます。」



  • うん。



  • っていうのがこうバーって書かれてるみたいな。どうですか、それがこう入ってたら。



  • 怖いな、なんか。いや、あの、ちょ、ちょ、ちょ。



  • ちょっと。



  • ちょ、分かんないんですよ。分かんないんですけど。



  • え、楽しいと思うよ、その神経は。



  • あ、ちょ、ちょっと。



  • めっちゃきれいな字で書いてる。



  • ちょっと恐怖というか。



  • ちょっと怖いっすよね。



  • ちょっと怖いです。はい。



  • うん。



  • 愛してます。



  • 結構怖いよ。



  • れんこは結構怖いっすね。



  • れんこ。



  • うん。



  • で、怖いじゃないですか、これ。



  • はい。



  • なので今日はこのラブレターを、あの、Zipで圧縮してこうかなと思います。



  • えー。



  • ああ、いいっすね。ちょっと待って。



  • えー。



  • 意味が分かんねえ、でも。でも意味が分かんねえ。それ何が解決するの、それで。



  • Zipで圧縮したら怖くなくなるんじゃないかなと思って。



  • ああ。



  • まあまあ、まあ、ものは試しですからね。



  • ああ。



  • うん。中身は今日はちょっとZipをやってこうかなと。



  • ああ、分かりました。



  • いやいや、中身があんま分かんなくなっちゃったりするのかなっていう、Zip形式にしちゃうと、と思ったんですけど。



  • ああ、Zip形式にすると?



  • まあそこらへんがよく見えるんですよね。



  • いやまあでもね。



  • はい。



  • 原型は残るよ。



  • うんうんうん。



  • 分かりました。ちょっとじゃあ話の、はい。というので、えー、まずですね、そもそもZipとはという話からしていこうかなというか、なんでこの話してるかっていう話なんですけど。



  • はい。



  • ちょっと最近、あのー、バイナリーハックスリブーテッドっていう本がありまして、Orallyから出てる。



  • はいはいはい。かっこいい。



  • これを2ページだけ読んだんですね。



  • うん。



  • うん。で、その2ページ目にですね、Zipの話があって。



  • うん。



  • うん。えー、別にZipの説明してるわけじゃないんですけど。



  • うん。



  • あのー、Zipを作って、まああとはこのファイルを、ファイルの仕様とかを検索して調べれば、このファイルについて、あのー、詳しく分かりますよ、簡単ですねって書いてあって、煽られてたんで、ちょっとしっかりZipの仕様を読んでみたんですね。



  • うんうんうん。



  • うん。発散する場がなかったんで、ここで発散しようかなという感じで。



  • ああ、素晴らしいですね。



  • はい。



  • 素晴らしい。



  • というので、えー、まずZipの話からなんですけど。



  • うん。



  • 順平君。



  • はい。



  • Zipはよく触りますよね。



  • まあそうですね、はい。



  • うん。じゃあこれってなんですか。



  • いやー、なんですか。うーん、持ち運びやすく、大量のデータを持ち、はっ、持ち運びやすくしたもの、という印象です、僕は。



  • 大量の、大量のデータをっていうのはどんな、どんなイメージで。



  • まあやっぱりよくやるのはこう、たくさんのファイルたちをひとまとめにして、一発で送れるようになるみたいな。



  • おー。



  • イメージですね。



  • いいっすね。



  • ありがとうございます。



  • いいですね。



  • いいですか。



  • まずZipって、あの、圧縮方式みたいなところで思われがちなんですけど。



  • うん。



  • 実はですね、厳密にはアーカイブなんですよ。



  • うーん、うん、うん?



  • アーカイブ形式。



  • アーカイブ形式とは。



  • はい。で、アーカイブ形式っていうのは、えー、複数のファイルをまとめることですね、1つに。



  • へー、そういうんだ。



  • うん。



  • はい。



  • だからZipで例えばなんか10ファイルぐらいのさ、あのー、画像などテキストなどをまとめると、1個のファイルにまとまるじゃないですか。



  • うん。



  • うーん。



  • まあこういうのをアーカイブって言うんですけど。



  • へー。実はZipは、えー、圧縮方式ではなく、えー、アーカイブ形式の1つでございますと。



  • ふーん。



  • 圧縮ではない?



  • 圧縮ではないっす、実は。



  • へー、そうなんだ。



  • はい。でも、えー、圧縮もされますよねと。



  • うん。



  • うん。



  • で、これはZipで圧縮、圧縮っていうかアーカイブする中で、えー、デフレートっていう方式の圧縮が走ってるんですね。



  • うん。



  • で、これによってファイルとかが小さくなってると。



  • うんうんうん。



  • うーん。なので、ちょっと今日はですね、そのデフレートの話もやってこうかなと思ってます。



  • おー。



  • はい。



  • うん。



  • なんとなく流してたなあ。



  • まあでも、そんな深掘りしても役立つかどうかはちょっと分からんっすね、これ。



  • いや、まあいいっすよ、いいっすよ。



  • うん。



  • まあ雑学として覚えといてください。



  • そうっすね、圧縮、Zipファイルを扱うときにちょっと楽しくなるっていうやつですね。



  • うんうん。



  • そうなんです。



  • え、このデフレートっていうのはその圧縮の形式なんですけど。



  • うん。



  • えー、主にですね、2段構えで圧縮していってます。



  • うん。



  • はい。1つは同じ文字列の後方参照、文字列っていうか実は厳密にはバイトコードなんですけど。



  • うん。



  • えー、後方参照。



  • うわー。



  • 後ろの方向参照。



  • どんな感じですか、それは。



  • えーとね、ちょっとこれは後にあのさっきの怖い手紙を後方参照、参照しようと思います。



  • ああ、ありがとうございます。



  • でもう1つはハフマン符号っていうね、この2つをね組み合わせて圧縮をしてるんですね。



  • ハフマンっていうのは。



  • コンピューターサイエンスっぽい話になってきたなあ。



  • コンピューターサイエンスっぽいでしょ。



  • はい。



  • この番組そういう番組ですから。



  • まあまあ。



  • 週末エンジニアリングレッスンですから。



  • いや、ありがたいね。



  • はい。



  • ま、というのでまずね、あの後方参照からやっていきますか。



  • はい。



  • まずさっきの手紙と1番特徴的な部分なんでした?



  • 愛してます、愛してます。



  • ですよね。そこのれんこですよね。



  • はい。



  • で、それが時系列順で並んでるという手紙でございますと。



  • ああ、はいはい。



  • さっきの文章もう1回言うと、愛してます。本当に愛してます。昨日も愛してました。今日も愛してます。明日も愛してます。来週も愛してます。来月も愛してますと。



  • うん。



  • ま、昨日も愛してました以外は基本愛してますを繰り返してますと。



  • うん。



  • うん。で、えー、これを後方参照する、同じ文字列を後方参照するってどういうことかっていうと、まずこれ1行目に愛してますって来てます。



  • うん。はい。



  • で、えー、次の行、本当に愛してますって来てますと。



  • うん。



  • でも、この文章の中の本当に愛してますの後半部分、愛してますの部分ってもう登場してますよねと。



  • うん。



  • はい。なのでこれをさっきのやつに置き換えます。



  • 自分の最初の。



  • そう。



  • うん。



  • で、えー、次の、昨日も愛してました。これは愛してまあまで共通ですよね。



  • うん。はい。



  • だ、そこをさっきのやつに置き換えます。なんでここは昨日もさっきのやつ下に変わりますと。



  • うんうん。



  • うん。で、えー、今日も愛してます。この今日も愛してますは、えー、さっきありました。なんで、えー、今日もさっきのやつ。



  • うん。



  • うん。に置き換えていくと。



  • うんうん。



  • で、これを全部にやってくんですね。なんで、えーと、まず後方参照するとどうなるかっていうと、文章が変わります。えー、愛してます。本当にさっきのやつ。昨日もさっきのやつ下。今日もさっきのやつ。明日もさっきのやつ。来週もさっきのやつ。来月もさっきのやつと。こういう文章に変わるわけですね。



  • なんかITとかZATみたいですね、なんか。



  • ああ。



  • うん。



  • あれは確かに後方参照だわ。



  • うん。



  • うん。



  • なるほど。



  • で、これ文章で言うと前の本を参照してないって感じしちゃうんですけど。



  • 確かに。



  • あれ、そんな感覚特にないっすか。



  • いや、分かりますよ、はい。



  • 分かります?



  • さっきのやつって言ってる時点でね。



  • うん。



  • さっきやんっていう。



  • そう。で、えー、ここで言う、えっと、後方前方の概念なんですけど、文字ってじゃあ順番に処理されてくじゃないっすか。



  • うん。



  • うん。で、えー、処理されてった過去が後方っていうイメージですね。



  • うんうんうん。



  • なので...



  • バージョニングと一緒っすね?



  • バージョニングと一緒。



  • はい。



  • バージョニングと一緒?



  • バージョニングの前方互換性、後方互換性の前方後方も同じですね。



  • ああ、そうそうそう。ああ、そうだと思う、そうだと思う。なんで、えー、まあ文章の前後っていうよりは、えーと、時系列で前後っていうふうに捉えると分かりやすいっすね、これは。



  • なるほど。



  • 本当にだから今ここを読んでますっていう、何? えーっと、ポインター?



  • うん。



  • ポインターの気持ちになって、そこを駆け抜けてったときに。



  • うん。



  • 元が前にあるのか後ろにあるかみたいなことする。



  • そうそうそうそうそう。マジでそう。



  • うん。



  • ポインターの気持ちにならないといけない、これ。



  • そうそうそう。



  • うん。



  • はい。これがまず後方参照ですと。



  • うん。



  • 過去に出てきた文字列を、えー、もう参照に変えてしまうと。



  • うん。



  • はい。っていうのが、えー、1つ目の大事なやつ。でも、これをやったときに、あんまり短くなってなくないって思いませんでした? なんか。



  • まあ確かに。



  • さっきのやつって言っちゃうとね、そうですね。



  • うん。



  • さっきのやつって言っちゃうとそうなるんですよ。



  • はい。



  • うん。えー、なので次に大事なのが、えー、ハフマン符号っすね。



  • なんか熱そうですね。



  • ハフマンね。



  • はい。



  • いつもなんか熱々のじゃがいもとか食べてそうですよね。



  • そうそうそうそう。



  • うん。



  • あ、それかと。



  • そうして彼はハフマンって呼ばれるようになったみたいだね。



  • あとなんか分かんないけど、なんかロシアっぽいイメージ。



  • めっちゃ分かる。



  • なん、なんか...



  • 寒い国にいそうですよね。



  • 寒い国にいそう。すっげーひげ生えてそうだし、なんか。



  • 分かる。



  • うん。



  • 分かるんだ。



  • 分かるんだ。



  • ちょっと、でもそう言われると顔気になってきたから調べてみるか。



  • いや、どこの人なんだろう。



  • え、これでもベル研究所とかの人じゃない? 多分。



  • あ、普通に?



  • 違うのかな。



  • ベル研究所はどこですか。



  • アメリカの。



  • うーん。



  • なんかいろんな技術出してるとこ。



  • あ、それはエンジニアに限らずってこと?



  • あ、いや。ベル研究所。まあでも1番最初あれじゃない? 有名なやつだと多分電話とかじゃない?



  • うーん。



  • あれって別なのか。ベル研究所と電話の、グラハム・ベルは別なのか。



  • 電話はなんか個人開発したイメージですけどね。



  • 電話個人開発なんだ。あ、あれだわ。あのー、グラハム・ベルが名前の由来ではあるけどベルさんはいなかったわ。



  • うん。テスラみたいなことか。



  • え、テスラ? あー、あれか。テスラ・ステラだっけ。



  • ニコラ・テスラ?



  • ニコラ・テスラだ。だめだ、顔出てこねえわ、ハフマンさん。



  • 残念。じゃあ我々のイマジナリーハフマンさんで。



  • ハフマンさん、顔残ってないんだ。



  • でもロシア人ではない。



  • ちょっと待って。まずベル研究所かどうかもね、怪しいよ。俺今すげー適当ぶっこいてるからね。アメリカ、イリノイ州。



  • はい。



  • だめだ。この人ね、個人が有名じゃなさすぎるな、ちょっと。個人情報出てこないわ、全然。



  • うーん。



  • うん。ちょっと顔とかは分かんなかったんですけど。一旦、あのハフマン符号、まだ何も言ってなかったね、そういえば。



  • はい。



  • はい。



  • はい。



  • で、ハフマン符号ってのは何かっていうと、記号とかを。



  • うん。



  • 01の数字にマッピングすることっすね。



  • 愛してます。も。



  • はい。



  • 01になんか置き換えといってくれる?



  • いや、えっと、これはさっきのやつに置き換えられたので、さっきのやつを置き換えていくことになるね、01に。



  • はあ。2段階なのか。



  • で、そう、2段階。で、さっきのやつってのは、えーと、いっぱい出てきましたよね、ほかの単語と比べて。



  • はい。



  • なので、そういうやつに短いのを割り当てるんですね。



  • うん。



  • 要は01ってさ、あの1桁で表せるの2パターンしかないじゃないっすか。



  • はい。



  • 2桁で表すってなったら4パターンいけるじゃないっすか。



  • はいはいはい。



  • で、3桁で表すよってなったら次8パターンいけるわけっすね。



  • うん。



  • っていうので、まあ2の、えー、べき乗でどんどん増えてくわけなんですけど。



  • はい。



  • 2のべき乗? 累乗?



  • べき乗じゃないっすか。



  • べき乗?



  • はい。



  • で、増えていくわけなんですけど、その表現できるパターン数が。



  • うん。



  • 長い文字を短い0とか1とかに置き換えれたら、情報量って圧縮できますよねっていうことっすね。



  • ふーん。なるほど。



  • これが、えっと、ハフマン符号の考え方ですと。



  • うん。



  • で、1番このハフマン符号的な、あのー、もの。世の中で1番ハフマン符号的なものがあるんですけど。



  • えー。僕さっき言ったやつじゃなく。



  • え、さっき言ったやつ?



  • え、ITとかではなく?



  • ITとかじゃない。もっとね、直接、直接ハフマンがある。ダイレクトハフマンアタックがあるわ。



  • へー。



  • へー。



  • 10Xみたいな話? そういうことじゃなくて。



  • 10X?



  • 何々をAとするみたいな。もうAというものに何々のという情報を全部詰め込んでるから。



  • あー、いや。出現頻度がいっぱいあるものを。



  • うん。



  • 短くしてるってことっすよね、ハフマン符号的なのってことは。



  • そう。なんならもう01にマッピングしちゃっている。



  • それはコンピューターの世界じゃない話してますよね?



  • コンピューターの世界ではない。



  • うわー、当てれそう。



  • しゃ、しゃべるときとかも使います?



  • まあごくまれに、あのー、ほとんどの人は人生において経験しないけどごくまれにあるかもしれない。



  • はあ、なるほど。代名詞とかかなと思ったんすけど、違うっすね。ま、それはITですもんね。



  • うん。



  • まあでも言語的にもありそうですよね。よく出る言葉は短いみたいな。言語学的にも。



  • おー、あるのかな。まあでも日常でね、そんな長い単語とか出てこないと思う。



  • メとか。



  • あー。



  • ハとか。



  • はいはいはい。体のパーツね。



  • そう、体のパーツ短いのは。



  • うん。



  • 普通に最初に言い始めたからなのか、よく出るからなのか。



  • そうだね。なんか親族とかもさ、子とか、孫なのにさ。



  • はい。



  • 遠くまで行くと夜叉子とかになるもんね。



  • そうですね。重箱の隅突っつき始めますから急に。



  • うん。



  • いや、割とギブアップだな。



  • これ出たら気持ちいいぞ、でも。



  • マジっすか。



  • いえ、ひ、ヒント、ヒント。



  • ヒント。



  • まあ、もし使うとしたら、無人島で助け来ないときぐらいかな。



  • モールス信号か。



  • そういうことっす。トントントンツーツーツー、トントントンか。



  • はい。トントントンツーツーツー、トントントン、SOS、国際救難信号?



  • すごいなあ。モールス信号か。何回か出てくるんだよな、ひまプロ。



  • そう。で、モールス信号は、よ、英語でよく、うーんと、使われ、ま、単語ってすごい同じ頻度で使われるわけじゃなくて。例えばEとか、結構出現頻度高いんすよね。



  • うんうん。



  • 一方、多分Qとかはめっちゃ少なくて。



  • うん。



  • そういう。うん、そうっすね。なんか母音的なやつが結構少なめで。ZとかQとかあんまり使わないやつは、あのー、4つの音使って表現してるみたいな。



  • すごいよな。なんか音の数違うのに読み取れるの、結構不思議なんだよな。慣れればどうにかなるんでしょうけど。



  • 音の数っていうの、ああ、そういうこと?



  • そうそうそう。あれでもこれあれだよね、多分。一定リズムで。



  • ちょっと開けるのか。



  • 長い短いやって、えっと、つか、そうだね、使わない部分でも空白にするから届ける時間は実は変わんないのか、これ。



  • ああ、なるほど。



  • うん。



  • え、だよね、多分。そうじゃないと実現できないよな、これ、多分。



  • でもなんか手慣れたモールス信号めっちゃ速くないっすか。そういうイメージある?



  • 見たことない。



  • 手慣れたモールス信号で速いイメージあるんだよな。



  • うん。あ、そうなんだ。



  • はい。



  • 3種類あればさ、区切り文字作れればいけるよね。



  • うん。



  • うーん。



  • 確かに。



  • うーん。まあでも長い音と短い音しかないからな。まあでも一旦このモールス信号はね、まさにあのハフマン符号的ですね。



  • へー。聞いたことあったな。



  • うん。



  • なんかのとき言ってたよな、多分それ、エピソードで。



  • 多分ね、うーん、どれのときだろうな。多分あれじゃないかな。コードの話したときじゃないかな。



  • あー、あり得るね。ちょっと思い出せないっすけど。



  • あの部屋に閉じ込められててみたいな。



  • 閉じ込められててだっけ? なんか懐中電灯でこう深夜の通信するみたいな、なんか味がしたような気がしてる。



  • あー、したね。



  • うん。



  • なんか最初は導線ずーっとめちゃ長くつないでてみたいな。あれ全然違う。



  • あー、そうそうそうそうそうそう。



  • あー、良かった良かった。



  • そうそうそう。導線つなげてったら今度カーブしててもいけるよみたいな。



  • いいですよ、そんな過去の話盛り上がんなくて。



  • ま、そのときモールス信号出てきたんですけど。このモールス信号のイメージがまさにハフマン符号そのものっすね。



  • うん。



  • で、このDeflateっていうのは、まずさっきの愛してますみたいなやつを後方参照することによって、まず参照に全部置き換えていきますと。



  • うん。



  • はい。で、その上で、えーと、よく出てくるものを、えーと、短いものにどんどん置き換えて01に割り振っていきますよっていうのが、このZipのときの圧縮で使われるDeflateっていうアルゴリズムなのかな、これは。っていう流れですよと。



  • うんうん。



  • で、えー、ま、さっきはあのさっきのやつって言ったんで、別にこれ愛してますのまんま符号化してもいいんじゃねっていう気がすると思うんですけど。



  • はい。



  • これ、えっと、コンピューター的には、ま、さっきのやつって略されるわけではなくて、前に登場したときの距離とその文字の長さが、あの参照で貼られるんすね。



  • うん、なるほど。



  • そう。



  • N文字前からN文字みたいな書き方されるんすね。



  • あ、そうそうそうそうそう。N文字前からN文字みたいなのにどんどん置き換えられていきますと。



  • うーん。



  • っていうのになるんで。別の単語であれ長さ同じだったら同じ符号に割り当てれたりとか。距離同じだったら同じ符号に割り当てれるんで、それで圧縮ができていくみたいな。



  • うん。



  • うーん。



  • あ、でもそういう感じなんだ。



  • ん?



  • え、なんか、えーと、敵意、なんか愛してます、ん? 愛してますをXと置いて。



  • うん。



  • で、明日もXみたいな感じになるのかと思いきや。



  • うん。



  • えーと、明日も愛してますと来週も愛してますは、のどっちの、なんだ、どっちの愛してますって同じ圧縮にはならないってことですか。



  • えーと、長さのほうがなるかな。



  • ああ、長さのほうは確かになるか。



  • うん。



  • じゃあ、N文字前から。



  • うん。



  • Xみたいになるんすね。



  • そうそうそうそうそうそう。



  • ああ、なるほど。



  • うーん。



  • そう。



  • へー。



  • それのペアみたいな感じに置き換えられてって、えー、それが符号化されてくみたいな。



  • そうなんだ、学び。なんかもっと効率よくやれそうですけどね。そんなことないのか。



  • いや、どうなんだ。これやると、でも、まあ、なんだろう、違う単語も同じ、なんか半分は同じ共通のものを使って圧縮できたりするから。



  • うん。



  • 効率いいんじゃないかな。



  • ああ、でも確かにそうっすね。あの文字数さえ一緒だったらってことですか。



  • あ、そうそうそうそうそう。



  • ああ、それはそうかも。



  • そう。で、あとこれ、あのバイト数でやるんすね。



  • はい。



  • えー、バイト数、あー、で、実はこれあんまり短すぎるバイト数だと、あのー、効果ないんですよ。



  • うん。



  • 圧縮する。



  • うん。



  • なんだろうな、参照のポイントとそんなに情報量変わんないというか。



  • はいはいはい。



  • うんうん。だから、えーと、基本的には最低のバイト数があって。何バイトだっけな。確か3バイトだった気がするけど。ま、3バイト以上で、えーと、最も長いものを探していくみたいな。一致させていくっていう感じだね。



  • なるほど。



  • ちなみに日本語とかはね、あのマルチバイト文字じゃないですか。



  • はい。



  • 1文字でもう3バイトいっちゃうんですよ。



  • あ、お得ですね。



  • うん。物によっちゃ4バイトいくよね、多分。



  • ありそう。



  • 字によっては。



  • 数とかやばいよね。



  • マルチバイトっていうのは。



  • えーとね、英語は何バイトで表示できるんだ。1バイトでいけんのかい、アルファベットは。



  • いけそうじゃないっすか。



  • 1文字あたり1バイト。



  • そうだよね。そう。



  • うんうんうん。



  • でも日本語は、まず、えっと、英語にその1バイト取られてるし。



  • うん。



  • そもそも文字の種類が多いから、えー、確かね、3バイトで表現してたり4バイトで表現してたりするんすよ。



  • 1文字あたりを。



  • そう。あのさ、UTF-8MB4とかなんか、データベースでなんか文字、文字コードセットしようとしたら出てこないっすか。MySQL触ってる人だけあれ。



  • 見たことあるのかな。でもMySQL触ったことあるからな。見たことあるのかな。



  • なんか文字化け直そうとしたらさ。



  • はいはいはい。



  • なんかMySQLの文字、ん? 文字コード触るってなったらなんか、ただのUTF-8じゃなくて。



  • ああはいはい。



  • UTF-8MB4みたいな感じになんか、なん、ちょっと長い名前で出てくると思うんですけど。



  • ああはいはいはい。



  • あれは多分マルチバイトで、えー、4バイトっていうのを指してるはず。



  • うんうんうん。ああ、なるほどっすね。



  • だから、ま、日本語だともう2文字いけば、例えば2文字一致したら、えーと、何バイトだ、6バイトか。だし、さっきの愛してますだったら、1、2、3、4、5。5文字。



  • うん。



  • なので掛ける3で15バイト一致するんで。



  • うん。



  • えー、これを、えーと、圧縮、圧縮というか参照に、まず最初縮めて、その参照すらも短い符号に、えー、変換していくみたいな。



  • うんうん。



  • こういうふうにして圧縮してるのがこのDeflateですよと。



  • なるほど。



  • で、これで圧縮すればね、さっきの怖い文章も愛してますが1回だけになって、あとはさっきのやつだけで繰り返していけるので。



  • うん。



  • 怖くなくなるし。



  • うん。



  • 情報量も減るしいいですよねっていうのがこのZipのね、仕組みになっています。



  • 確かに。えっと、ちょっと質問いいですか。



  • はい。



  • じゅんぺいがめちゃくちゃモテモテで、バレンタインデーに、えっと、下駄箱にじゃあラブレターが10通入ってましたと。



  • うわー、ありがてー。



  • で、さっきみたいに、そのちょっと怖い人は1人しかいない、いないんですけど。



  • うん、1人しかいないんだ。



  • はい。怖い人は1人しかいないんですけど、ほかにも、なんか10通のラブレターの中には、あの同じように愛してますとか。



  • 別のね、はい。



  • はい。好き、好きですとか。



  • うん。



  • 好きなんですけど、そこまででもないですってのがいろいろ含まれます。



  • 入れるな。



  • なるほどね。



  • 入れるな、そいつは。



  • じゅんぺいのことをじゅんぺいキュンって言ってたりとかね。



  • あ、そうそうそうそうそうそう。



  • うん。



  • で、Zipにすると。



  • うん。



  • 例えば、じゃあその、最初にその愛してます連呼してる人の手紙が読み込まれた場合。



  • うん。



  • ほかの手紙に愛してますって書かれてたとしても。



  • うん。



  • ほかの手紙から愛してますっていう文字は消えるってことなんですね。



  • えーとですね、Zipの場合はファイルごとなので。



  • ああ、そうなんだ。



  • 1個は残ります、書く手紙。



  • あ、アーカイブ形式でも。



  • うん。



  • なんかそのファイルをまたいだ圧縮とかはされないんすね?



  • えっとね、されないっす。



  • へー。



  • Zipは1個ずつ圧縮して、えーと、それをアーカイブしてますね。



  • ああ、なるほど。



  • うん。



  • はい。



  • 圧縮の方式によってはそういうのも可能です。



  • Zipじゃない場合ってこと?



  • うん、Zipじゃない場合は、えっと、ある、そういうパターンも。



  • なんか、た、ターとか?



  • えーとね、ターはね、ちょっと出てきてないから分かんないけど、ラー。



  • ラーとかね?



  • ラー。



  • ああ、なるほど。なんかいろいろありますね、そういうの。



  • ラーって読むのかな、ちょっと。改めて言葉にして言ったことないファイル形式すぎてラーなのか分かんないんだけど。



  • ない、ない。分かるわ。



  • うん。



  • 不安でいっぱいですよね。



  • RARでラー。



  • はいはい。



  • うん。



  • は、えっと、複数ファイルまとめてみて、えーと、そこで圧縮してますね。



  • へー。あ、そうなんだ。



  • うん。あとね、ほかのやつはね、ちょっと正直あんまり見たことない形式なんですけど、7Z。



  • ああ、7Zip? はいはいはい。



  • え、これ7Zipと7Zって同じなの?



  • え、7Zipのファイル、7Zじゃないっすか。



  • あ、分かんない。なんか7Zとしか書いてなくて、7Zipなのかどうかよく分かってないんだけど。



  • うーん。あ、はい。7、そうっすね、7Zipの。



  • あ、そうなんだ。



  • はい。



  • じゃ、それはあれですね、ファイル見てますね。



  • うんうんうんうん。



  • ファイルまたぎで。



  • へー、そうなんだ。



  • うん。あと最近使われる圧縮で、えー、最近よく使われる高速圧縮です。DSTD。



  • DSTD?



  • ちょっと初めてすぎてよく分かんない。



  • 何の略なんだろう。



  • 略なのかな。



  • どうなんでしょうね。ちょっとすみません、もっと、ちょっとずれるかもしんないですけど。



  • はい。



  • Zipってどういう意味なんすかね。



  • Zipはね、速いみたいな、なんかそんなことをどっかで言ってたな。な、なんだっけな。



  • ZipロックのZipじゃないのかなと思ったんすけど。



  • うん。



  • いや、えっとね、なんだっけな、これ。



  • チャット的な。



  • うわー。



  • これね、このくそ長いチャットのどっかにあるんだよな。



  • ググっちゃいますよ、そんなん。えーと。



  • はい。



  • 処理スピードが速いっていう意味。なんか勢いよく進むとかっていう意味がまずZipというものにあって。



  • へー、あ、そうなんだ。



  • 既存の圧縮フォーマットよりも処理スピードが速いんだよというのをアピールするためにZipという名前が付けられました。



  • はいはいはいはい。



  • なので、あのファスナー、あのジッパーで閉じるのを連想しがちですが、そっちは関係なくて。



  • うんうん。



  • 速さというのを前面に押し出すためにZipになってますと。



  • なるほどね。



  • へー。



  • なんかさ、アイコンでもさ、ちょっとZipっぽくなってるじゃん、ジッパーというか。



  • ああ、後付けなんじゃないっすか。



  • ああ、そういうことか。



  • そう。あ、これもかけ、かけ言葉的になんかかけられるみたいなのがあとで出てきて。



  • はいはいはい。ま、でも従来の圧縮より速かったってことか。



  • はい。



  • うん。



  • へー。



  • ま、ちょっとなんで速いかはちょっと分かんないな。



  • そう、ここでマジで圧縮押し出してんだったら、じゃあなんか圧縮、アーカイブもまあいいけど。



  • うん。



  • 圧縮とも言ってほしい。



  • うんうんうんうんうんうんうん、確かにね。



  • うん。



  • そうだよね。だって。



  • 確かに。



  • 右クリックしたときになんかこれを圧縮するみたいに出るよね。



  • 出る。



  • うん。



  • 選択したファイルを圧縮するみたいに出るから。



  • そうっすね。



  • まあ確かに。



  • まあ、まあ、まあ。



  • セットで圧縮もしてるけど、えー、圧縮せずにアーカイブだけすることもできますね、Zipは。



  • へー。



  • へー。



  • なんのために。



  • それはほんとに分からない。



  • ま、だからこそ、あのー、絶対使うでしょってなって。



  • うん。



  • もうほぼセットでしょっていう考えになってるんじゃないっすかね。



  • まあまあ、そうですよね。額が1つ。



  • うん。



  • 増えました。



  • そう。でね、ちょっと今日ね、あのいい例が出てこなすぎてラブレターにしちゃったんですけど。



  • いや、天才ですよ、先生。



  • いや、めちゃめちゃいい。



  • なんでその発想になるんすか。意味分かんない。



  • 本当はね、字余りの俳句。



  • ほお。



  • を見つけてきて。ガチで圧縮して5、7、5にできたら最強だなと思ったんですけど。



  • うーん。



  • さすがに厳しそう。



  • ちょっとね、見つからなかったっすね、字余りの俳句からそれができるやつ。



  • ですよね、多分ね。いや、ラブレターのほうがキャッチーでしたよ。



  • あ、ほんと?



  • うん。



  • はい。



  • じゃあまあ、良かったっすわ。



  • うん。



  • いやー、悔しいわ、普通に。



  • どっから、そ、で、なんか、え、答え忘れ的なところ、申し訳ないんですけど。



  • はい。



  • それはのりさんとGeminiで相談したらラブレターができたんですか。それとももうのりさんのうちからラブレターが出てきたんですか。



  • あ、これはね、あのー、僕のうちから出てきてますね。



  • どこの引き出しにラブレター入ってんの、ほんとに。



  • あげたことあるんですか。



  • いや。



  • いや、なんかね、手紙を圧縮しなきゃなってなって。



  • はい。



  • もう俳句出てこないから。



  • はいはいはい。



  • ってなったときに、うーん、手紙かーってなって。で、手紙って言ったらさ、もうそんなパターンないじゃないっすか。



  • う、う、う、ん?



  • うん、もうラブレターぐらいしかないじゃないっすか。



  • どういうこと? まあ、1番キャッチーですけどね、ラブレターが。



  • そう。で、それとは普通に別で、最近その散歩してるときにさ。いや、ラブレターが1番もらったらうれしいんじゃないかなと思って。



  • うん。



  • 急に。



  • はあ。



  • それがこうコネクティ、コネクティングドットしてきて。



  • そうなんだ、そうなりましたね。



  • ポンポンポンポン、すげえな。



  • うーん。



  • いや、でもこれで完全に覚え出せる、もう。



  • 完全に覚え出せる?



  • 完璧。



  • うん。



  • ありがとうございます。



  • というので、今日はZipの仕組みでした。ちなみにZip、あのー、テキストファイルとかめっちゃ圧縮できるんですけど、あのJPEGとかMP3とかはあんまり圧縮できないらしいっす。



  • うん。



  • うん。



  • 全然ちっちゃくなんないイメージある。



  • そう。で、なぜならもうすでに圧縮されているから。



  • ああ、なるほど。



  • そう、あいつらが。



  • 確かに。



  • だから圧縮のその余地がなくて、あんまり変わんないっていう。



  • へー。



  • 感じらしいっす。



  • 圧縮されてるんだ、あれ。



  • されてるね。



  • うーん。



  • 多分方式も同じなんじゃないか、大体。



  • 圧縮の方法なんてそんなにパターンないはずですからね。



  • うん。



  • なんか文字の繰り返しをまとめるか。



  • うん。



  • 繰り返しをいかにしてまとめるかみたいな。



  • うん。多分どうせあれでしょ、赤、赤、赤、赤、赤をさ、赤掛ける5とかやってるんでしょ。



  • あ、そうそうそうそうそう。



  • うん。



  • だから多分仕組み的にはあんまり変わんないような気がする。



  • うん。



  • から圧縮の隙間があんまりないっていう感じらしいっすね。



  • うーん。



  • っていう、今日は、えー、Zipの裏側で起きているアーカイブと圧縮。



  • うん。



  • そして圧縮で使われてるDeflateの話でございました。



  • 花高。



  • ありがとうございます。



  • ありがとうございます。



  • はい。じゃあ、ちょっとアフタートークいいですか。



  • はい。



  • はい。あのー、先週かな、目標書きますって言って。



  • ああ、はいはいはい。前の1週間で。



  • 書きましたわ。



  • おお、すごい。



  • で、書いてって思ったんすけど、大谷翔平の曼荼羅チャートって。



  • うん。



  • ツリー構造じゃないっすか、言ってしまえば、データ構造的には。



  • ツリー構造ですね。



  • だからツリーで書きました。



  • え、あー、ツリーのほうが管理しやすいのかな。



  • なんかツール的に。



  • どんどん。



  • ツール的にあれっぽいのがなくて。



  • ああ、そういうことっすね。



  • いや、でもデータ構造的にこれツリーだからツリーでいいじゃんと思って。



  • 手書きで書くって言ってたのに、電子で書いてますって。



  • 電子で書いた。



  • はい。



  • うん。で、書いたんですけど、激むずでした。



  • えっと、数が出せないってこと?



  • あ、そう。



  • ああ、出せない。



  • 出しやすいやつと、出し、出てきすぎるやつと出てこないやつがある。



  • うん。



  • で、それゆえにツリーがよりフィットしたわ。



  • あれでもあえてこ、8つにまとめるのが大事そうじゃないっすか。



  • マジで。



  • いや、分かんないけど、適当なこと言ってるかな。



  • 分かんないかな。あれはなんか2ホップ掘り下げて考えることが大事なんじゃないかなと思ってたから。



  • ま、一旦ツリーでやってみて。



  • うん。



  • で、それでうまくいったら。



  • うん。



  • なんか新しい名前付けて出せばいいと思います。



  • そうだよね。



  • はい。



  • いや、で、俺ツリーを書いててね、なんか気づいたんだけど。



  • はい。



  • ツリーの先で、結果これをやんなきゃいけないじゃんみたいな共通項が出てくることがあって。



  • ああ。



  • その別のあれからね、なんか目標から。



  • はい。



  • 別のやりたいことから同じあれが出てくるみたいな。



  • うん。



  • なんか健康になるってなったときに、ま、運動するとかマッチョになるみたいなのが入ってくるじゃないっすか、当然。



  • うん。



  • 一方、長人になるからも、あのー、筋肉くそでかくするが出てくるじゃないっすか。



  • うん。



  • そこでこうつながるみたいな。



  • うんうん。



  • のがあって。目標ってもしかして、あのグラフで書いたほうがいいんじゃないかっていう結果に今、結論にたどり着いていて。



  • ああ、グラフ構造ってことっすか。



  • NodeとEdgeでつなげてみて。



  • はいはいはい。



  • っていうふうにやると、より目標立てやすくなるんじゃないかと思って。



  • うん、はい。



  • こういうメソッドって今世の中にあるのかな。調べろよって思ったしょ。それが見やすくなるのがオブシディアンだったりするんじゃないっすか。



  • オブシディアンなー。



  • え、つなげられんのかな、あれ。



  • いや、あのグラフ確かに書けるけど、なんか勝手につながるというか。



  • なんかタイトルしか出ないじゃん。てかタイトル以外書くことないからさ、この目標、なんかチャートみたいなやつ書いたときに。



  • うん。



  • なんか絶妙にオーバーステップスペックなんだよな、オブシディアンでやると。



  • うーん。



  • ま、でもオブシディアンは確かにありかもしれない。



  • うん、あのグラフ。



  • リンクでつなげて、そこのぶ、あれ部分的にあれグラフ作れるんだっけ。



  • 部分的はむず、無理かもしれない。



  • あれ全部になっちゃうのか。



  • 多分。でも。



  • オブシディアンってあれなんだよね。ページをリンクさせると、そのリンクとページをノードとして、えー、リンクをEdgeでつなげれるんだよね。



  • うん、そうっすね、そうっすね。



  • 俺のオブシディアンすごいよ。もうつぶつぶ。全然つながってない。すごい、もうライチのだん、ライチ? なんだあれ。パッションフルーツのだん、いや違うな。ドラゴンフルーツの断面みたいになってんねん。



  • どんどん分かりづらい果物が。



  • まあ1本目標に関するやつを伸ばして、そこにリンクさせまくれば、まあ多少別の枝の部分というか、見やすくはできそうですけど。どうなんすかね。



  • ま、というのでちょっとあのー、こういうのやったらいいって分かってるんだけどやんねえんだよなっていうのを1歩抜け出すためにちょっとやりました。



  • 素晴らしすぎる。有限実行ですね。



  • はい。一旦これで満足してます。



  • いやー。



  • で、一応毎日見てます。眺めてる。



  • あ、いいっすね。素晴らしい。



  • はい。ちょっとあのグラフバージョン作ったらまた、あの更新情報配信します。



  • そうっすね。あとはまあ我々は年年初めの目標もまあ適度に忘れず。



  • あー、やべえ。



  • 更新展開するんだら。



  • やべえ。



  • 変えつつでやれるというかなと思います。



  • やべえ。



  • ちょっと待って、俺今1ミリも思い出せないんだけど、1個も出てこない。



  • 頑張ろう。



  • はい。まあ6月末ぐらいにエンディングトークとかでまあ軽くしゃべればいいかな。



  • そうだね。ちょっと一旦その機会はほしいです。



  • そうっすね。



  • うん。



  • はい。えー、いい時間なんで締めていきますか。



  • はい。



  • はい。



  • はい。えーと、この番組では皆様からの感想を、えーと、SNSのXで募集しております。ハッシュタグ、ひまじんプログラマーを付けて投稿していただくと、僕らが探して見つけて、えー、糧にしていくので、ぜひともよろしくお願いします。



  • 以上っす。



  • 我々に直接質問とか感想を送りたいよっていう方は、えー、番組のエピソード欄にあるGoogleフォームから送っていただくと、我々が直接確認して、えー、エピソード取り上げたり、取り上げないにしても、あの絶対読んでるんで、えー、こちらも配信の励みになっていくのでよろしくお願いします。さらに、Slackオンラインコミュニティ、ひまプロ談話室というものを運営しております。こちらのSlackコミュニティでは、エンジニアが友達を作るとか、あとはまあ結構いろんなこう配信してる、配信? 発信をしてる方がいっぱいいて、えー、刺激を受けたりできる空間になっているので、興味ある方は、えー、番組の説明欄にございますGoogleフォームからお申し込みいただくと、サンクスページに参加用のSlack参加用のURLがごりっとねじ込まれていますので、そちらからご参加お願いします。



  • 何卒。



  • お願いします。



  • えー、最後に、この番組は各種プラットフォー、えー、この番組は各種ポッドキャストプラットフォームで配信中でございます。参考になったよという方は、えー、ぜひともプラットフォーム側のレビュー欄から星を付けて投稿していただくと、えー、上がります。



  • 上がるぜ。



  • 上がります。それでは皆さん、また次回。



  • ばいばい。



  • ばいばい。



  • まだ順平の口から聞いてねえ。中級エンジニアになりたいって、いえー。



  • どうせこのままずっと初級エンジニアだと思ってた。中級エンジニアなんてなれない。でももし本当に中級エンジニアになっていいのなら、なりたい。

0:00 40:17

#472 恐怖のラブレターはZipで圧縮して怖くなくしよう!