株式会社シベスピ 従業員ブログ

シベスピの社員ブログ。技術・想い・経験沢山書いていきます!

韻を踏むということ-後編-

お疲れ様です。岡崎です。
今更積んでいたゼノブレイドを始めました。
面白過ぎて毎日ひっくり返りながら生活をしています。

さて、今回も押韻についての続き、もといこれが最終回になります。
前回から私も自身の考えのアップデートを行ったので、
前回までのおさらいをしながら、改めてお話をしていければと思います。

1.ここがつらいよ日本語押韻

前回まで、日本語は母音+子音の種類が少ないために押韻には向いていない、
という話をしてきました。
ここに付け加えて、
以下の2つの特徴が「日本語は押韻が難しい原因」となっていました。
(1)日本語は拍の言語
(2)日本語には母音が多い

(1)日本語は拍の言語

拍とはリズム上の単位のことですが、一音ごとが同じ長さを持ちます。
どういうことかというと、「お父さん」であれば
「お・と・う・さ・ん」で5拍となるわけです。
日本語は、従来この「拍」でリズムをとることが多かったわけです。
例えば短歌や俳句も、この拍の単位でリズムをとっていることがわかります。

一方、英語のリズムの基本的な単位は「音節」です。
音節は、母音を中心として音を区切り、
複数の音を同一の発音の区切りとする場合もあります。
先ほど例に挙げた「お父さん」だと、
「お・とう・さん」と3音節になります。

ここで重要になってくるのが、
「日本語(拍)のほうが言葉に対する音の数が多い」ということです。
押韻というものは、似た響きの言葉を繰り返すことでリズム感を生む歌唱法です。
つまり、「音の数が多ければ多いほど響きを似通わせる難易度が上がる」ことになります。

(2)日本語には母音が多い

なぜ日本語の方が言葉に対する音の数が多いのか、という話にもつながりますが、
日本語は基本的に子音の後に母音が来る言語です。
一方、英語は子音の後に子音が来ることもよくあります。
例に挙げると、castle(キャッスル)やChristmas(クリスマス)などがあげられます。
つまり、日本語は英語に比べて、一単語に対する母音の数が相対的に多くなってしまいます。


これらの二つの特徴により、
日本語はただでさえ拍の単位により音が多くなりがちなのに、
母音の数も英語と比べて多いがゆえに更に音の多さに拍車をかけてしまっています。
だから、日本語は押韻がしづらい上に、
一音程度押韻した程度ではリズム感が生まれにくいのです。

2.現代日本語ラップの押韻手法

以上が、「従来の日本語」から観測した「ラップとの相性の悪さ」です。
そんな状況から、日本語ラップはどのように進化を遂げ、
押韻をジャパナイズしたのか。
前回の終わりに私は以下のように分類わけしました。

(1)文章単位で母音を合わせる
(2)イントネーションやアクセントをあえて崩し、響きを似通わせる
(3)短い間隔で同じ母音を繰り返す
(4)「語感踏み」

この分類、自分でしておきながらなんだかしっくりこなかったので、
私の中で再編してみました。
結果として、大きく二つの分類にわけられることがわかりました。

(1)押韻の解釈拡大
(2)日本語を押韻用にアジャスト

(1)押韻の解釈拡大

従来の押韻は子音+母音で文末(小節末)の音の響きを合わせるものでしたが、
これまで説明した通り、そもそも子音+母音では押韻しづらいし、したとしても効果そのものが薄い。
そこで日本語ラップは、子音+母音ではなく、母音を複数音合わせることで、本来の押韻とは異なるリズム感を生むようになったのです。
例えば「リンゴ」と「ヒント」のように、拍の単位のままで母音を複数音合わせる、といった独自の押韻を生み出うようになりました。
ただ、単語単位で母音を複数音合わせるのにも限界があります。
そこでさらに言葉を組み合わせ、「文章単位で母音を合わせる」という手法も編み出していきました。
助詞や助動詞が比較的柔軟に使用できるという日本語の利点を十分に生かした手法ですね。

えー、あえて皆さんがわかりやすい実例を挙げると、以下のような文章がわかりやすいかと思います。

「アルミ缶の上にあるミカン」

…そうです、ダジャレです。
ダジャレは子音も合わせた同音異義文になっていることが多いので、
押韻の方が敷居は低いですが、原理は同じです。

このように「文章単位で韻を踏む」、という価値観が確立されると、
今度は「文章単位である程度響きがあっていれば、完璧に母音があっていなくても押韻と捉える」
という、「語感踏み」という概念が誕生します。
youtu.be
ステージ向かって左側で飛び跳ねながらラップをしている人は「韻マン」というふざけた名前のラッパーですが、
その名前通り韻を踏むことを得意とし、中でも「語感踏み」の開祖というべき存在でもあります。

まじで「俺のこのステージ」
上がりながらどこまでいける「公式レフェリー」
無し ちなみに言う「俺の韻レベチ」
Come back again「ホメオティック遺伝子」

上記動画の一部分を抜粋し、鍵かっこで囲んでいる部分が語感踏みしている部分です。
見ればわかる通り、完璧に母音があっているわけではないのですが、
頭の1音と文章末の2音は母音を合わせていることがわかります。
もちろんこれだけではリズム感は生まれにくいので、
歌い方や言葉のタイミングを合わせて耳になじませているわけです。

(2)日本語を押韻用にアジャスト

押韻のジャパナイズとして、手法としてもう一つ挙げられるのが、
「日本語を押韻しやすく変えてしまおう!」というものです。
もともとラップは英語圏で生まれた歌唱法。
であるならば、日本語を英語っぽく使ってしまえば万事解決だ!
という苦肉の策なのか強行突破なのかよくわからない策ですが、
それでも現状の日本語ラップではしっかりと技術として馴染んでいます。

具体的には、以下の二つの手法が挙げられると考えています。
①日本語の「音節化」
②イントネーション、アクセントを変化させることによる「強制的な語尾配置」

①日本語の「音節化」

これはもうシンプルに「わざわざ拍の発音でやらなくても良くね?」という、
押韻する上で邪魔な発音は省いてしまおう、というやり方です。
英語でいう「リダクション」を、日本語でも行ってしまおう、というものですね。
このリダクションはどのような基準で行われるかというと、
「自分が押韻したい部分以外の発音を弱くして、違和感を少なくする」という、
発話者の思想準拠のとんでもない自由度となっています。
先ほど紹介した「語感踏み」も、
音が異なる中で響きを似せるためにこのリダクションを用いたりしています。
じゃあこのリダクションの代表例は何なのか、という話ですが、
この技術は現在のラッパーの標準装備となっており、
普通にJ-HIPHOPを聴いていればすぐに出会えるものかなと思います。
個人的なおススメで言うと、
Bonberoというラッパーのリダクションはかなりオシャレだなと思うのでよかったら聴いてみてもらえると嬉しいです。

②「強制的な語尾配置」

強制的な、なんて言葉を使ってしまうとなんだか仰々しく感じてしまいますが、
要は「ここで韻をふみましたよ~」と分かりやすくリスナーに伝えるために、
アクセントやイントネーションを従来のものとは変化させることを指します。
英語でも日本語でも変わらず、ラップの楽曲を聴いていると、
響きだけじゃなく「あ、ここで韻踏んでるんだろうな」というような「強勢」を感じることがあります。
それを文章の流れで自然に作ることができれば巧みと言えるんでしょうが、
前述のとおり従来の日本語ではただ普通に押韻しても効果が薄いので、
押韻の効果を助長させるためにアクセントやイントネーションをあえて崩すことがあります。
代表例としては、個人的には餓鬼レンジャーを推したいです!
www.youtube.com

まるで泉ピン 俺は伊豆に新
居立つ五木ひ ろしのいぶし銀
それか渥美き よしの眼差し
のよな作詞技 術と輝き
Booyaka 2 say タイトルコール
この稼業 いわゆる体力勝負
死ぬまで信じて大丈夫よ
でっかい口叩くのもMy jobよ

こちら、餓鬼レンジャーポチョムキンのリリックの抜粋となっていますが、
五木ひろしや渥美きよしをとんでもない場所で切り分けて、強制的に押韻を強調しています。
リリックだけ読むと無茶苦茶に見えるんですが…実際聴いてみてください。
耳心地が良すぎて、これが超絶技巧であることに疑いの余地はなくなるでしょう。

3.まとめと余談

まとめ

ここまで紹介した日本語ラップの技法は、それぞれが独立しているのではなく、
複合的に利用されることで各ラッパーの「色」へと昇華を遂げています。
それぞれにもっとわかりやすい例を挙げることができればよかったのですが、
現代のラッパーはそのスタイルが多種多様過ぎて、ステレオタイプと言えるラッパーは一人としていません。
これまでのブログを読んで、少しでも押韻やラップについて興味がわいた方がいれば、
聴いてみていただけると幸いです。

余談

もしここまでの話を聞いて
「…で、押韻とか言ってるけど結局ダジャレと何が違うの?」
と思っているのであれば、このバースを送りたいと思います。

ダジャレとライムの違いも分かんねぇのか?
「布団が吹っ飛んだ」 これはダジャレだ。
「布団が俺に吹く強烈な追い風に乗って吹っ飛んだ」 これはライムだ。
わかるか?ライムっていうのは踏んでる部分だけじゃない
そこまでのプロセスに全てを賭けなさい
分かってんだろ?モンスターに戻って来い!
ついで今吹っ飛んだ布団も取って来い
By FORK

フリースタイルダンジョン復活しないかなぁ

内藤のプロフィール

初めまして。
2024年3月より入社いたしました、内藤です。
よろしくお願いいたします。

プロフィール

生年月日:2001年2月25日
出身地:埼玉県
趣味:ゲーム、コーヒー、映画
好きな食べ物:パスタ、ブラックサンダー

経歴

小学校

サッカーや水泳、空手などをやってました。
放課後はほとんど外で遊んでたまにゲームをやるような健康的な生活をしていました。
この時は怖いもの知らずでいろんなことをしていた気がします。

中学校

部活動を始めた影響でサッカー漬けの生活をしていました。
部活は割と厳しめな方で、夏は吐きながら練習していた記憶があります。
あんまりサッカーでは大成できなかったですが、この時親に買ってもらったiPod touchの影響で更にネットゲームにハマることに・・・。
思えばこの時期に初めてプログラミングというものを知り、私の人生を大きく変えた気がします。
中学3年生の頃にプログラマー、特にゲームプログラマーになりたいと考えるようになり、その方面の技術を学べる進路を目指すようになりました。
その結果、志願先変更で元々志望していた高校から情報技術系の工業高校へと変更し、そのまま進学しました。

高校

高校では授業で情報系の知識などを学びながらゲームにどっぷりはまってしまいました。
今思えば異常ですが、毎日深夜まで起きて通話しながらゲームをしていた記憶があります。
おかげで今の生活(悪)習慣の基礎はここで築かれたと思います。
卒業制作では当時ハマっていたゲームを参考に、学校を舞台にしたゲームを作成し、友人から褒められたことが嬉しすぎてゲームはゲームでも制作の方により熱が入っていきました。

専門学校

ゲーム制作を学べる2年制の専門学校に進学しました。
同じクラスのメンバーとチームを組んで一つの作品を作り上げるという経験をし、それを誰かがプレイをして感想を言ってくれる。その流れがとても楽しくて、趣味でもゲームを作ったりしてました。
また、東京ゲームショウと呼ばれる日本でも最大級のゲームの展示会に私を含めたチームで作成したゲームを出展することができ、一般の人に遊んでもらい、感想をいただくという貴重な経験をすることもできました。
しかし、後半の1年間はコロナ禍によりリモート授業になり、友人とはほとんど会えない生活が続きました。

社会人

専門学校を卒業した後は総合人材会社のIT・ICT職に就きました。
いわゆる常駐型の人材派遣会社で研修も無くコロナ禍ということもあり現場の最寄り駅の近くでリモートで入社式に参加し、途中でそのまま直行するというワイルドな初出勤から始まりました。
仕事の内容は学校にて情報機器やソフトの使い方を教えたりサポートしていました。
なんだかんだ楽しく2年と半年近く勤務していましたが、プログラマーという夢をあきらめきれず、社会人3年目という時期に何か区切りのようなものを感じ、転職活動を始めました。
そしてシベスピの未経験者採用に応募し、研修を経て入社いたしました。

研修について

未経験での採用だったため、2か月間の研修を受けました。
上述の通りある程度知識がある状態で受講したため、進むスピードは速かったように思います。

研修中は教えてもらうような研修ではなく、自分で調べて進めていく形式になります。
プログラマーはコードを書く力だけでなく調べる力も大切です。
そのため、分からないことがあったらまずは調べてからその調べた結果をもとに講師に相談する必要があるこの研修は、調べる力と伝える力も培うことができます。

進めていくうちにわからないところで躓いてしまうこともあるかもしれませんが、そんな時はぜひ講師の方に相談してみてください。
考え方や調べ方など状況や理解度を考慮して教えてくれます。
最初は講師の方に聞くのが忍びないかもしれませんが、みんな同じ研修を通った仲間です。
遠慮なく相談してください!

一言

筋トレ続けたい

中西のプロフィール

初めまして、2024年3月より正社員として入社させていただきました。中西と申します。

プロフィール

生年月日:1995年7月11日
出身地:兵庫県 育ちは神奈川県
趣味:サーフィン、読書
好きな食べ物:鶏飯、さば、カレーなど

経歴

小学校

野球、プール、空手をやってました。

プールと空手は小学校1年生のころからやっていました。
小学校3年生の頃に野球を始めて、小学校5年生くらいに野球一本に絞りました。
ここから大学4年生まで野球を続けることになります。
放課後に友達とよく野球をして遊んでいました。
小学校6年生のころに市の大会で優勝して、県大会に出場しました。
このとき肩のけがをしてしまい、思うような結果が出ずに負けてしまった記憶があります。

中学校

ここから私の坊主生活が始まりました。
中学校でも野球ばかりしていました。
学校の部活には所属せずに、クラブチーム所属していました。週6でチームに通っていたのでほとんど遊んだ記憶がないくらい野球をしていました。
練習や挨拶が厳しかったのがとても記憶に残っています。ここで学んだことは現在でも活きているなと感じています。

高校生

高校は神奈川県の男子高に通っていました。
もちろんここでも野球ばかりやっていました。しかし、テストで赤点を取ると髪を五厘にそらなければいけなかったので
テストの前だけは勉強していました。

大学生

大学4年生まで野球を続けましたがここで野球をやめることになります。
野球をやめたあとは以前から興味のあったサーフィンを始めました。
海が身近な地域に住んでいるので近所の方や友達もサーフィンをしている人が多く、自然と始めていました。

社会人

卒業後に新卒で、自動車販売の営業職として5年9か月勤めました。
一日に数多くの顧客と電話や対面でコミュニケーションをとってきたのでその経験は活かしたいと考えています。
仕事をしていて楽しくなく、目標を達成しても嬉しくない自分がいました。原因は仕事の将来性への不安など、いくつかありました。
そんな中、自分の将来を真剣に考えた結果、エンジニアになることを決意しました。
その後、弊社の研修を経て今に至ります。

研修について

未経験での入社であったため、2カ月間の研修を受講しました。
研修内容の詳細は他の方がおしゃっているので割愛いたします。

研修は厳しいといわれておりますが私はあまり厳しいと思わず、むしろ楽しかったです。
理由としては、自分でこの研修を受けることを選んだからだと思います。
日々新しいことを学ぶ楽しさやできないことができるようになる嬉しさも挙げられます。

この研修では自分から学ぶ姿勢がなければ、
とても厳しい壁にぶつかると思います。
ぜひ、主体的に行動することを大事に取り組んでください!

一言

サーフィン不足

古典的な暗号化技術とその限界

毎度のことながら、ブログに書けるようなネタが無くて困っています。
最近の出来事といえば...思い付きで遠くまで洋菓子を食べに行ったとか、ヒューズから電源取ってドラレコを取り付けたとか色々ありますが
うーん、書こうにもオチがないし、ドラレコの件は写真ばかりになるし...何か良い方法ないですかね。

という訳で今回は、たまたま目に付いた参考書より、暗号の話です。
とはいっても共通鍵のAESや公開鍵のRSA等の話ではなく、古典的な暗号方式「換字式暗号」についてが中心となります。

換字式暗号

平文(暗号化前の文)を一文字または複数文字の単位ごとに別の文字に置き換え、一見すると意味不明な文字列を作る暗号化技術です。
換字式暗号は主に変換前後の対応表を用意し、適用する方式が主流です(※1)
この場合、対応表を入手しない限り復元は困難となるため、古典的ではあるものの長らくこの暗号化技術が使われてきました。

頻度分析

さて、一見解読が困難なようにも見える換字式暗号ですが、この方式は頻度分析という手法によって簡単に見破られる事となります。
頻度分析とは、簡単に言うと「平文、暗号文でよく使う文字ランキング作って、突き合わせてみよう」という暗号読解の手法です。
文字ごとに出現頻度を割り出し、暗号文にも同様の頻度で出現する文字があれば対応しているとみなす事で、解読に必要な対応表を埋めていく事が可能になります。
ところでこの頻度分析、一体どれほど正確なのでしょうか?
↓検証してみました↓

実験

今回はExcelで頻度分析による暗号解読が再現できるかを検証してみます。
条件は以下3つ

  • 言語は英語
  • 単一換字式暗号(一文字につき一文字の対応表を用意し暗号化)を用いる
  • 平文、暗号文のサンプルは英字新聞から抜粋

①マクロで暗号化機能を作成

↓「対応表」を元に、入力した文章を変換するマクロを作成

↓対応表

②平文のサンプル取得

「平文サンプル」へ平文のサンプルを追加。英字新聞より、約10,000字分の記事を抽出。

③暗号文のサンプル取得

「暗号文サンプル」へ、英字新聞より抽出した文章を暗号化し、サンプルとして追加。(平文のサンプルに使用した文章は使わないように注意!)

④頻度算出

②③で追加したサンプルを元に、平文と暗号文で使用されているアルファベットの数を算出し、一文字ずつ出現頻度の順位をつける。

グラフにしてみると、出現頻度の差が顕著になります。Eが圧倒的ですね。
暗号文ではRの出現頻度が1位となっていることから、
この時点でEの暗号化後はRだろう。と分析できます。

⑤復号用の対応表作成

④のデータを元に、復号用の対応表を作る。同時に、復号用のマクロも作成。

⑥答え合わせ

ここからが本題。平文→暗号化→復号→平文で
どれだけ元の文に近い文章が復元できるかを確認します。よーいスタート。

「This is a book」を暗号化し

取得した暗号で復号を行います。

「Tlis is a book」が取得できました。
元の文と比べて、予想以上に正しく復号できましたね。
恣意的な解釈に繋がるためあまり良くない手順ですが、文脈から「Tlis ⇒ This」と読み替えて解読することもできそうです。
今回は合計約10,000文字の英文をサンプルとしていましたが、もっと集めれば、精度は上がっていくものと考えられます。

おわり

いかがでしたでしょうか?
対応表が一つしかない簡単な換字式暗号であれば、比較的簡単に解読が可能であることが分かるかと思います。
今回のような解読法は言語学の応用であり、古典的な暗号には有効ですが、現代ではそうもいきません。
エニグマ(※2)の登場以降、暗号解読はこういった言語学の分野から数学の分野へと移行し、コンピュータの登場により暗号化技術は人力では到底解読ができない(※3)レベルまで進化しました。
今回色々調べてみて、こういうものを考えた先人たちはすごいなと、しみじみ思いました。



※1.実際は複数の対応表を用いる場合が多いですが、長くなるので割愛
※2.大戦中ドイツで開発され、当時世界最強とされていた暗号機。エニグマの攻略には、とある天才数学者の活躍や当時のドイツらしいうっかり等色々面白いエピソードがあるので、興味ある方はぜひ調べてみてください。
※3.なお、サマーウォーズの主人公は...。

時間の歴史

こんにちは。
今回は時間についてです。
これまで時間については、様々な文脈で語られてきましたが、
ここでは歴史的な転換点となった事を3つご紹介します。

転換点① 現在主義 ~4世紀の宗教から~

時間について語られた本のうち、最も有名なものの1つ(と思っている)に、
アウグスティヌスの『告白』があります。
これはキリスト教的な本ですが、その中で時間について語られています。

この本が出る前まで、時間は運動を用いて説明・考察されていました。
(天体の運動によって時間が測れるなど)
アウグスティヌスは、これらを切り離して考察しました。

彼の時間論を(かなり)要約すると、
時間には、未来・現在・過去という3つの要素で存在しているが、
厳密には、過去としての現在・未来としての現在が存在しているだけで、過去や未来は存在しない。
過去は記憶として、未来は期待として認識している。

このような考え方は、現在主義と呼ばれています。
現代でも議論されていて、現在主義にも色んな派生形がありますが、
元を辿ると、この人に行き着きます。

転換点② 正確な時計に ~14世紀から16世紀のヨーロッパ~

経済学者 ジャック・アタリの『時間の歴史』から紹介します。

日時計や砂時計は紀元前から存在していたと言われていますが、
現代の日常生活の中で、必要不可欠な精密な時計は、
14世紀のヨーロッパにて作られたと言われています。
15世紀には、教会(や鐘楼)に大時計が設置されるようになり、
16世紀に入ると、様々な公共建築物に設置されたとのことです。
また、この間に懐中時計といった小型の時計も登場しました。

技術的な進歩によって精度を増した時計によって、
それまでよりも、時間を数として測るようになります。

転換点③ 絶対時間から相対時間へ ~17世紀から20世紀の科学~

17世紀にニュートンによって、常識となっているような時間の概念ができました。
これは絶対時間というもので、物体の運動とは無関係に、一定のテンポで流れている時間という意味です。
時計がなくなったとしても、時間は一定で流れていくという考え方です。
それまで、時間は時計によって測られるものでしたが、それ以降、時計は時間によって動くものへと変わりました。

この絶対時間は、ニュートン力学を説明するために作り出されたもので、
何か理論があって生まれたものではなく、時間ってそういうものという前提として出てきました。
そのため、(発表当時から批判されていましたが、)アインシュタインによって批判されました。

20世紀にアインシュタインは、(マッハの相対時間の影響を受け、)「特殊相対性理論」を作りました。
ここで、動いている時計はゆっくり進み、光の速さに達すると時間は止まるという話をします。
現代物理学はこの系譜にあるため、ニュートンの絶対時間は息をひそめていますが、
現在でも絶対時間-相対時間の議論はされているようです。

おわりに

時間については、哲学や社会学、物理学などで研究されていますが、それぞれの時代の研究が他の分野から影響を強く受けていたりします。
その時代の考え方を知るために、歴史から知るのも一つの手段ですね。

Google Chrome拡張機能を作ってみた

Google Chrome拡張機能とは

Google Chromeをカスタマイズして、よりリッチにするためのアドオンです。
例えば、
・広告をブロックする
・音声を自動的に文字起こしする
・Webページの表示をおしゃれにする
など様々なことができます。

作ってみた

Chromeウェブストアで公開されているようなしっかりしたものもありますが、
簡単なものなら自分で作成できます。
やってみたところ、とても簡単でしたので共有します。

今回作る拡張機能

Webページのふちを歩く猫を表示する拡張機能
↓イメージ(vscode拡張機能)
https://marketplace.visualstudio.com/items?itemName=tonybaloney.vscode-pets

大まかな流れ

  1. ソースが入ったフォルダを作成する
  2. Google Chromeでフォルダを読み込む

以上です!見ていきましょう。

実装

1.ソースが入ったフォルダを作成する

今回は、主にJavaScriptCSSで作成します。

フォルダ構成
 GCE_WalkingCat(ソースフォルダ)
   ├images
   │ └walking_cat.gif(歩いてる猫のGIF)
   ├css
   │ └style.css
   ├js
   │ └script.js(猫を移動させるスクリプト)
   └manifest.json(拡張機能の設定ファイル)

重要なのはmanifest.jsonです。
どのソースを動かすか、どこのページで動かすか、どのリソース(画像など)を使うかなどを記載します。
それではソースを見ていきます。

①walking_cat.gif

↓こちらのサイトからフリー素材を使わせていただきます。
https://freesozaixtrain.web.fc2.com/

②style.css

↓猫GIFの大きさと位置指定要素を設定しています。

#gce_cat_gif {
    position: absolute;
    width: 120px;
    height: 60px;
}
③script.js

↓表示されたページに猫GIFのimg要素を追加し、0.1秒ごとに移動させます。
右下→左下→左上→右上→右下の順に移動し、四隅に着いたらGIFを90度回転し方向転換します。

window.onload = function() {
  // htmlにimg要素作成
  var img_element = document.createElement('img');
  var gifPath = chrome.runtime.getURL('images\\walking_cat.gif');
  console.log(gifPath);
  img_element.src = gifPath;

  img_element.id = 'gce_cat_gif';
  var append_area = document.querySelectorAll("body")[0];
  append_area.appendChild(img_element);
  
  // gif表示設定
  var image = document.getElementById('gce_cat_gif');
  var distance = 10; // 移動速度
  var screenWidth = window.innerWidth; // 画面の幅
  var screenHeight = window.innerHeight; // 画面の高さ
  var currentX = screenWidth - image.width; // 画像の初期X
  var currentY = screenHeight - image.height; // 画像の初期Y
  
  // 初期位置
  image.style.left = currentX + 'px';
  image.style.top = currentY + 'px';

  // 画像の向きを変更
  function setDirection(deg) {
    image.style.transform = 'rotate(' + deg + 'deg)';
  }

  // 左方向の移動
  function moveLeft() {
    currentX -= distance;
    if (currentX < 0) {
      currentX = 0;
    }
    image.style.left = currentX + 'px';
    setDirection(0);
    if (currentX === 0) {
      currentX -= 28; // 左側隙間を微調整
      image.style.left = currentX + 'px'; // 左側隙間を微調整
      clearInterval(leftInterval);
      upInterval = setInterval(moveUp, 100);
    }
  }

  // 上方向の移動
  function moveUp() {
    currentY -= distance;
    if (currentY < 0) {
      currentY = 0;
    }
    image.style.top = currentY + 'px';
    setDirection(90);
    if (currentY === 0) {
      clearInterval(upInterval);
      rightInterval = setInterval(moveRight, 100);
    }
  }

  // 右方向の移動
  function moveRight() {
    currentX += distance;
    if (currentX > screenWidth - image.width) {
      currentX = screenWidth - image.width;
    }
    image.style.left = currentX + 'px';
    setDirection(180);
    if (currentX === screenWidth - image.width) {
      currentX += 30; // 右側隙間を微調整
      image.style.left = currentX + 'px'; // 右側隙間を微調整
      clearInterval(rightInterval);
      downInterval = setInterval(moveDown, 100);
    }
  }

  // 下方向の移動
  function moveDown() {
    currentY += distance;
    if (currentY > screenHeight - image.height) {
      currentY = screenHeight - image.height;
    }
    image.style.top = currentY + 'px';
    setDirection(-90);
    if (currentY === screenHeight - image.height) {
      clearInterval(downInterval);
      leftInterval = setInterval(moveLeft, 100);
    }
  }

  // 最初は左方向の移動
  var leftInterval = setInterval(moveLeft, 100);
};

※未完成のポイントがあります。時間の関係で見送ります。
 (1).スクロールに対応していません。ウィンドウの大きさを基準に移動していることが原因。
 (2).四隅で若干カクカクします。四隅の到達判定でGIFの向き変更を考慮していないことが原因。

④manifest.json

他にも設定できる項目はたくさんありますが、今回設定した項目はこちらです。

manifest_version:マニュフェストファイルのバージョン。v2は 2024年6月にはサポート終了のためv3。
name:拡張機能の名前。
version:拡張機能のバージョン
permissions:拡張機能の権限。"activeTab"は、アクティブなタブに対してアクセス可能な権限。
web_accessible_resources:
拡張機能がWebページからアクセス可能なリソース。
指定したリソースがすべてのWebページ("<all_urls>")から取得できる。
content_scripts:
拡張機能が特定のウェブページで実行するスクリプトやスタイルシートの定義。
すべてのWebページ("<all_urls>")で指定したスクリプトをスタイルを適用する。

2.Google Chromeでフォルダを読み込む

一瞬です!

拡張機能の管理画面を開く

GoogleChrome右上の三点メニュー > 拡張機能 > 拡張機能を管理 を開きます。

②ソースを読み込む

パッケージ化されていない拡張機能 を選択します。

ソースが入ったフォルダを選択すると、拡張機能が読み込まれます。

③確認する

すべてのサイトで実行する設定にしているので、適当なWebページを開けば動いていることが確認できます。

感想

ソースさえ作成できれば、あとはフォルダを読み込むだけで簡単でしたね。
良く使うページでここをちょとだけ変えたい!などあれば、ぜひやってみてください。

年をとると健康の話が増えるらしい

風邪をひかず高熱を出さなくなってから19年経ちました。(キリ悪い)
コロナに罹ったパートナーからの感染を2度もかわし、後厄も終わったし、
おみくじも大吉だったので、2024年も健康に過ごしたいです!!

でも最近、血液検査の結果から風疹の免疫がつきにくいことが分かったので、
世界中のみんなが私のためにワクチンを打って予防してくれる事を願っています笑

あと、、世界平和も願っています。


なんだか今年は年明けからずっと物騒ですね。
しかし私に出来ることは何もないので、いつもの振り返りをしまーす!!★☆

2023年よかったもの

① 洗濯乾燥機

ようこそ我が家へ!家事に大革命を起こしてくれました。
干す&取り込むの作業も、室内干しのイヤな湿気ともおさらばです。
一年中エアコンをつけてるので、それに比べたら電気代は大したことない。
次は洗濯物を畳んでくれる家電が欲しい〜笑

② 生花のサブスク

2023年はカレンダーと共に生花を贈ってくれるサブスク(月額2400円)を、
好きなアーティストが企画してくれました。
色鮮やかに季節を感じられることと、毎月新しいビジュを拝むことは
健康的な生活に結びつくと感じました。

何がメインやら

③ ザ・ガード(整腸錠)

私のストレスの根源は腸の異常であるため、穏やかな毎日を過ごすためにも、
飲むことを5ヶ月かけてようやく習慣化させました。
どうしても野菜や納豆を食べたくない偏食を発症したときも、
ザ・ガードのおかげで平穏に暮らしましたとさ。めでたし。

④ パンプキンソフトの復活

ディズニーハロウィンといえばパンプキンソフト!
3年ぶりの復活です!これが無くっちゃハロウィンが始まらない!!
ファン待望とあって常に60分待ちの列でしたが、
並ぶ度に両手分(2個)ずつ買うことで、効率よく3年分のフラストレーションを解消しました。

⑤ 手作り柚子胡椒

曼珠沙華を観に行ったときに無人販売所で柚子を見つけて挑戦。
青唐辛子はとうに時期を過ぎていたのでネットで購入しました。
自分好みのザクザクした柚子胡椒は、究極しっとり鶏むね肉※に合う!!
※2021年よかったもの
もうすぐ春~(*^^*) - 株式会社シベスピ 従業員ブログ


⑥ 味噌玉

イメージはインスタント味噌汁みたいな感じです。
味噌に好きな具を混ぜて、何も入っていない製氷機に詰めて冷凍庫へ入れるだけ。
氷一個分の大きさの味噌玉=一杯の味噌汁なので、
湯を沸かせばいつでも味噌汁を飲めます。

左:作り途中の⑤ 右:使い途中の⑥

⑦ ペチコートパンツ

ぽかぽかあったかいインナーです。
ボトムスの下に履くことが出来て、レギンスとは違って締め付けが無いです。
もはや、オシャレに冬を乗り切るための必需品となりました。
気になる人は連絡ください、ショップのURL送ります笑

⑧ Moneytree

銀行やカード情報を紐づけて、資産管理できるアプリです。
資産を一覧で見たい方、家計簿が難しいと思ってる方にオススメします!
お金のこと好きだからお金のこと考えると沼っちゃうことを知っていたので…
一生知らないフリするつもりだったんですけど……
アプリ入れてからずっとお金の動き見ちゃう、どうしよう!

おまけ

⑧を使ったキッカケは、パートナーと将来計画をしたことですが、
「〇年以内に1人当たり〇万円貯めよう」と話して、いざ自分の資産を確認したら、
・・・何か分かんないけど、もうお金ありました。

全然心当たり無いようでわずかに覚えてる、ちゃんと自ら作り上げた資産でした。
秋にドングリ埋めて、埋めたこと忘れるリスかな?
無意識に準備してることが多くて、たまに自分が怖くなります。

こうして何の気なしに毎年色々試しながら過ごしていることも、
きっと私の潜在意識には着実に蓄積されており、いつか役に立つ日が来るのかもしれません。