ぱすたけ日記

日記っぽいのを書きます。

僕が2019年に読んだマンガから今年1巻が出たものまたは短編集だけを抽出しておみくじ出来るやつ作った

今年読んだマンガは全部Spreadsheetになっているので、そこから1巻っぽいのを抽出しておみくじにしました。

昨日寝る前に思い立って、朝起きて昼前くらいに書き始めたら高速に出来た。便利。

作品を読んだ感想を聞きたい場合は結果を僕にmentionしてくれたら答えます。よろしくおねがいします。

今年のマンガの感想まとめる活動は今から開始します。

良いお年を〜〜〜

2019年の記録① 映画館で観た映画

それぞれの映画館の会員情報ページとかをパースして調べた。個々の作品の感想は個別に聞いてください。

映画を映画館で観た回数は全部で51回、ちなみに松竹系列が23回、TOHOシネマズが13回、『劇場版 響け!ユーフォニアム~誓いのフィナーレ~』が9回でした。

均すと週に1回という感じだけど、MOVIX京都の爆音映画祭のときは1日に4本観たりとかしてたし、基本的に1回で2本とか観ていてそういうペースだった。

松竹系列

TOHOシネマズ

  • PSYCHO-PASS Case.1
    • 鑑賞日: 2019/02/03
  • プロメア
    • 鑑賞日: 2019/05/26
  • コンフィデンスマンJP
    • 鑑賞日: 2019/05/26
  • プロメア
    • 鑑賞日: 2019/06/10
  • 海獣の子供
    • 鑑賞日: 2019/06/10
  • ウィーアーリトルゾンビーズ
    • 鑑賞日: 2019/06/15
  • きみと、波にのれたら
    • 鑑賞日: 2019/06/24
  • ザ・ファブル
    • 鑑賞日: 2019/06/24
  • (IMAX)天気の子
    • 鑑賞日: 2019/07/19
  • ヴァイオレット・エヴァーガーデン 外伝 
    • 鑑賞日: 2019/09/14
  • 惡の華
    • 鑑賞日: 2019/10/06
  • (IMAX・字)ジョーカー
    • 鑑賞日: 2019/10/14
  • 記憶にございません!
    • 鑑賞日: 2019/10/14

T-JOY

イオンシネマ

京都みなみ会館

京都シネマ

  • イメージの本
    • 鑑賞日: 2019年05月04日(土)

出町座

  • 21世紀の女の子
    • 鑑賞日: 2019年03月11日(月)
  • 満月の夜には思い出して
    • 鑑賞日: 2019年07月05日(金)
  • 愛がなんだ
    • 鑑賞日: 2019年07月05日(金)
  • 羅小黒戦記 The Legend of Hei
    • 鑑賞日: 2019年12月04日(水)

塚口サンサン劇場

その他

おまけ

計測用のコードスニペットです

ウェブページの表示を遅くなくしたい時の道標

このエントリは以下のアドベントカレンダーの19日目の記事です。

突然ですが、先日行きつけのビアバーの店主が使っているPCが遅いという話があり、様子を聞くとどうやらHDDで且つメモリも4GBという雰囲気で、触ってみると、たしかにWindowsのホームメニューを出すのに数十秒とかかかっていて、これで暮らしているのは大変だろうと思い、HDDをSSDに、メモリは16GBに増強するということをしました。その結果見事に体験は改善されました。

一方、このときにふと思ったのは、速くなったねとは思うものの、遅かったものが普通くらいのパフォーマンスになっただけで、じゃあ他と比べて速いかというとそうではないよねということです。ウェブアプリケーションでもこういう話はあるなと思っていて、パフォーマンスチューニングと言っても、遅い状態から普通くらいにまず一旦持っていきたいよねと思うことがあります。

何の話かというとウェブアプリケーションを開発していると初期は素朴なので、HTMLもシンプルでJSも少なく、また画像なども必要最低限だけだったりして、阿部寛のウェブサイトのようにシュッとロードしてレンダリングが完了するのですが、ウェブアプリケーションの開発も進んでいくと、徐々にあれもこれもと徐々にHTMLも肥大化し、JSも大きくなり様々なモジュールがくっつき、場合によってはルーター的なのを内包し、ウェブページの中にも画像がドンドン登場したりして、いつの間にか雪だるま式にロード時間やレンダリングまでの時間が延びることになります。

今日は、この雪だるま式に膨らんでしまったロード時間やレンダリングまでの時間を短くしていくまでのことを紹介したいと思います。

つまるところ、First Contentful PaintやFirst Meaningful Paintまでを短くしようという話です。First Contentful PaintはいくつかあるPaint Timingの1つで、ユーザーがウェブページに遷移してきてからブラウザが DOM から受け取ったコンテンツの最初の部分をレンダリングするタイミングのことです。

初歩的なものを中心に紹介しますが、ウェブアプリケーションが大きくなっていく過程でこういったものは見落としがちで意外とシュッと出来る上に効果を感じられたりすると思うので、今一度皆さんのお手元のウェブアプリケーションにそういった箇所がないかチェックする際の指標になればと思っています。

スローガンのご紹介

この活動をやっていくときのスローガンを紹介します。復唱をお願いします。

  • 読み込まない
  • 実行しない

それぞれもう少し具体的なテクニックも踏まえて見ていきましょう。

読み込まない、そして実行しない

「読み込まない」は(そのときの表示に)必要なもの以外は読み込まないということです。例えば、ウェブページの上部を表示している時にウェブページ最下部に埋め込まれているYouTubeや、列んでいる画像を読み込まないということです。

Chromeのみですが、img要素に loading という属性があり、loading=lazy を指定することで遅延ロードをさせることが出来ます。非対応ブラウザでも IntersectionObserver などを使ってpolyfillできるので、こういったことをすることで簡単に画像の読み込みを抑制することが出来ます。

意外とページ内を見渡してみると表示範囲外に要素が沢山あるもので、それらの読み込みを削ることで本当に表示に必要なものにネットワークリソースやレンダリングコストを集中させることが出来ます。PageSpeed InsightやLighthouseなどで簡単にチェックできるので一度やってみてください。画像やJSやCSSなど削減できるものが見つかると思います。

画像の遅延ロードを設定してまわることをもう少し大枠で捉えるとそもそもHTML自体も最初は削ってしまって、必要なタイミングで組み立てたり、fetchしてきて挿入するということも考えることが出来るかもしれません。

一方で、不要なものは読み込まない一方で必要なものは少しでも高速に読み込みたいものです。例えば必要な画像が決まっていたり、レンダリングに必要な情報をJSON APIで取得することが分かっている場合はpreloadやprefetchを使用することでリソースの先読みをすることが出来ます。

また、ここで読み込まない対象として一番しっかり考えたいものとしてJavaScriptのファイルがあります。とは言っても現代的なウェブアプリケーションJavaScriptは切っても切れない関係ではあり、Reactなどを使ってSPAにしている場合にはいつの間にか巨大な1つのbundle済みファイルになっていることも少なくないと思います。読み込まないというわけにはいかないという前提で、どう削っていくかということを考える必要があります。

やはりここでもまずは最初のレンダリングに必要なJavaScript以外を読み込まないというのが鉄則になってきます。実行しなければ読み込むのは良いのでは?という方に向けて、ここでJavaScriptのファイルサイズに関する1つのグラフを紹介したいと思います。

(画像は JavaScript Start-up Optimization  |  Web Fundamentals より)

これによって分かるようにJavaScriptのファイルサイズを削減することは画像のサイズを削減すること以上の意味を持っています。JavaScriptは読み込まれるとそれがパースされ、コンパイルされ、実行されます。この間にかかる時間は画像のデコードよりも遥かに大きくウェブページの表示までのパフォーマンスに大きな影響を与えます。もちろんReactなどを使っていればJavaScriptを実行するまでが短くなればなるほどレンダリングが早くなるのは当然という感じでもあります。

このときWebpackのCode Splittingは1つの強力な選択肢になります。dynamic importを利用することで、JavaScriptを複数のChunkに分割してくれます。このことによりエントリポイントになるJavaScriptファイルは小さくなり、パースや実行の時間を短く出来ます。一方で、Chunkの分割を上手く戦略的にやったり、こちらもpreloadを設定しないと、メインの実行パス内でdynamic importをすることになってしまい結果的にJSの実行中にファイルの取得とパース等が起きてしまい終端のJavaScriptを実行するまでの時間が結果的に長くなり、レンダリングまでの時間が延びるということもあるので気をつけたいですね(この辺の上手いやり方があんまり掴めてないのでオススメ情報あったら教えて下さい)。

また現代的なウェブページの場合、ウェブページ内にSNSのシェアボタンや埋め込みのためのJavaScriptや場合によってはアナリティクスや広告のためのJavaScriptなど数多くのJavaScriptが読み込まれていると思いますが、これらも例えば必要な位置にユーザーがスクロールするまでJavaScript自体を挿入しないということも考えることが出来ると思います。

JavaScriptの実行は1つのフレームに対して1つのスレッドしかないので、これらの読み込みからの実行を抑制することでメインで提供・実行したいJavaScriptの実行時間をセーブすることにも繋がります。

また、読み込んだ際も、JavaScriptのそれぞれの関数などの実行を極力しないということも重要です。JavaScriptを書いているとメインのことをやりつつ、イベントをリッスンする形にしたり、Promiseなどの形にして、並列に複数のタスクをこなそうという風に記述したくなることがあると思いますが、こういったものを我慢して実行を遅らせるということもメインのレンダリングに必要なJavaScriptの実行時間を守るという観点で考えてみても良いかもしれません。色々なハンドラを初期化時に設定していることでいつの間にかメインの表示に必要なJavaScriptの実行を阻害している可能性があります。また、あるJavaScriptの(関数の)実行が長いことがPerformance計測などにより分かっている場合はrequestIdleCallbackのようなものの利用を検討してもいいでしょう。

JavaScriptの実行に関してはこれまた素朴にやっていると、ひとまずエントリポイントをdocument.addEventListener('DOMContentLoaded')に引っ掛けていたりするかもしれませんが、script要素のasyncと組み合わせて読み込み完了後即実行させていてもこれだと効果薄になってしまうので、DOMがなくても準備できるもの、例えばglobalに何かをexportするとか、Sentryの初期化をするとかはそれまでにさっさと終わらせておくみたいなのも地味に効いたりするので見直してみてください。

また、JavaScriptの実行がウェブページのレンダリングに与える影響に関しては過去にまとめたりしているので、そちらも手前味噌ですが参考になるかと思います。

まとめ

ウェブページの表示の高速化の遅くなくすための道標として、考え方のヒントになればと思って書いてみましたが、いかがでしたか?若干本文中は具体例に欠けるような感じにはなってしまいましたが、こういったテクニックや考え方を持って今年一年ははてなで提供しているGigaViewer(はてなで提供しているマンガビューワです)でのマンガ表示部分が表示されるまでの高速化などに取り組んでいたので、ブログ記事の形でざっと考えていたことを書いてみました。

株式会社はてなでは一緒にウェブページ表示の高速化をやっていく人を募集しています。

また、京大マイコンクラブではこういったトークを僕が極稀に合宿などで行ったりしているので、興味がある人は入部してみてください

身近な人はお声掛けいただいたら一緒にPerformance計測などをしながらこの辺の話を伝授するみたいなことも多分出来ると思うのでお声掛けください。

アドベントカレンダーの明日の担当は id:dekokun さんと:tofu_on_fire:さんです。楽しみですね。

好きなウェブサイトにmasawadaを表示できる<masawada-3d>を作りました

こんにちは!!!



みなさんmasawadaさんをブログに埋め込みたいですよね



そういう皆さんのために<masawada-3d>をCustomElementで作成しました


わいわい!!!!!

詳しくはGithubリポジトリを見てください!!!!!!!!!!!!!
詳細は省きますが、Three.jsで描かれていて、カメラとmasawadaの向きを与えることで任意の角度のmasawadaさんをウェブサイト上に描くことが出来ます。custom elementなのでCSSを当てたりも出来ますし、実態はcanvasなので、document.querySelector('masawada-3d canvas').toDataURL()とかでも出来ます!!!!属性をrequestAnimationFrameで書き換えるとかも良いですね。欲しい機能や属性があったらissueやPRで教えて下さい。

github.com


この記事はmasawada Advent Calendar 2019 - Adventarの2日目の記事でした。昨日の記事はmasawada Advent Calendar 2019 1日目: どこでもmasawada - The Third Lawでした。この記事はネタが被ったのでJSConfJP中に発想から実装を行いました。間に合って良かったですね。皆さんも自身のブログやウェブサイトなどでご利用ください。良い作例あったら紹介したいと思います。

(この記事はHTMLモードで書かれました)

2019年7月8月に読んだ良かったマンガ

夏の間遊び呆けていたので記事を公開できてませんでした。なので7月と8月はひとまとめです。

あと、何故かブログのAmazon埋め込み経由で全く売り上げが上がってない気がして先日からトラッキングコードを変えてみたんですが効果が無さそうです。助けてください。

そしてこれは先月分です

では2019年7月8月の良かったマンガをどうぞ。

SPY×FAMILY 1 (ジャンプコミックスDIGITAL)

先月の記事でも発売前に推してましたが、発売されました!!!!皆さん絶対に買ってください。キャラ良し、ストーリー展開良し、テンポ良しで個人的には上半期最高のウェブ漫画でした。入学してさらにラブ要素と良い女友達要素が出てきてどこまで最高になるんだって感じです。よろしくおねがいします。

試し読み

かけおちガール プチキス(1) (Kissコミックス)

厳密には単行本じゃないんですが、Twitterで見かけて良さそうと思ったので、プチキスは単行本化まで時間がかかる印象があり、単話を珍しく買いました。感情の機微とそれぞれの人物がしっかり描かれていて良かった。

試し読み

木曜日は君と泣きたい。(1)【電子限定特典付】

木曜日は君と泣きたい。(1)【電子限定特典付】

木曜日は君と泣きたい。(1)【電子限定特典付】

ある秘密をそれぞれに抱える4人のラブストーリー。1巻は主人公 相川薫の秘密しか明かされなかったけど、2巻以降他の人物の秘密が明らかになり、4人がどう揺らぐのか楽しみ。絵はもうちょっと上手いと良いなぁと思った。

試し読み

https://ganma.jp/kiminaki

思春期JCの血は極上(1) (メテオCOMICS)

思春期JCの血は極上(1) (メテオCOMICS)

思春期JCの血は極上(1) (メテオCOMICS)

吸血鬼が極上の血を飲むべく女子中学生をちゃんと健康に育てるオカンコメディ。誠一郎のアホっぽさとオカン感、女子中学生てこなも可愛くて安心して読んでられる。

試し読み

もういっぽん! 3 (少年チャンピオン・コミックス)

いや〜〜遂に神童 南雲が入部!!!だから最初からずっと南雲が絡んできてたのか〜〜ってなって、めっちゃ良い展開!先輩の存在も明らかになって次巻も早速楽しみです。

静さまは初恋である、浪漫斯はまだない。 1 (ヤングジャンプコミックスDIGITAL)

"恋愛"という言葉がまだ人々に知られる前の明治時代を舞台にしたラブコメ。自分の感情=恋を表現したり理解する術を持たない2人とそれを見守るイギリス人がLoveという言葉を知っている状態からそれを見守っている構図が面白い。

試し読み

可愛そうにね、元気くん 1 (ヤングジャンプコミックスDIGITAL)

リョナラーな主人公廣田くんが同級生の八千緑さんをネタに同人誌を描いていて…という話。テンポも良いしそれぞれのキャラのSM的な関係性も主な登場人物が3人というので分かりやすいし、絵も画面も上手くて惹き込まれる。

試し読み

ニジとクロ: 1【イラスト特典付】 (REXコミックス)

いい話って感じだし、ストーリーも設定も表現も全部良いって感じだけど、白黒はっきりしないと気がすまない女子大生・白星クロエ って設定の割にはそんなにこだわってないような気もして、まぁいいかって思った。そういう意味では全体の焦点がイマイチぴんとこなかった。

まくむすび 1 (ヤングジャンプコミックスDIGITAL)

『マヤさんの夜ふかし』の保谷伸先生新作!高校演劇部を舞台にした作品で、とにかく読んでいてワクワクが伝わってくる。こういう表現や芸術に熱量を向けるみたいな作品に心打たれがち。とにかく↓から試し読みしてください!!!!!

試し読み

夜と海 2巻 (ラバココミックス)

夜と海 2巻 (ラバココミックス)

夜と海 2巻 (ラバココミックス)

1巻で絵、演出、コマ割り、ストーリーと度肝を抜かれて最高ってなったんだけど、2巻もそれを上回るように良かった。他のキャラクターも描かれて奥行きも出てきてるし、これからもよろしくおねがいします。

少年の初恋は美少女♂でした。 1巻 (デジタル版ガンガンコミックスpixiv)・めんどくさがり男子が朝起きたら女の子になっていた話 1巻 (デジタル版ガンガンコミックスUP!)

小林キナ先生だな〜って思った。

二度目の人生 アニメーター(3) (ヤングキングコミックス)

ガンダムを題材にした話が中心に進むこの巻。最後の展開が胸熱だった。

ワンナイト・モーニング (ヤングキングコミックス)

一夜限りの関係と朝ごはんを題材にした短編集。読後感もスッキリしてて良い短編集だった。

開口一番!(1) (ビッグコミックス)

開口一番!(1) (ビッグコミックス)

開口一番!(1) (ビッグコミックス)

『ようことよしなに』の町田翠先生の新作が早速出てそれだけで最高。今回の題材は落語。お調子者の主人公が自分が「笑われる側」から「笑わせる側」になりたいと思って落語に飛び込む話。前作にも負けない勢いがあって続きが楽しみ。

試し読み

ゆりでなる♥えすぽわーる(1)【電子限定特典ペーパー付き】 (RYU COMICS)

ゆりでなるvえすぽわーる(1)【電子限定特典ペーパー付き】 (RYU COMICS)

ゆりでなるvえすぽわーる(1)【電子限定特典ペーパー付き】 (RYU COMICS)

こういうのが出てくると良い意味でリュウっぽいなぁって思う。高校卒業と共に政略結婚が決まっている心が街中で見かけた女子2人組からあらゆる百合を妄想してスケッチブックに描いていく。その百合妄想の後に現実の2人について描かれて読者だけは事実を知るという構成になってる。この構成が面白いし、妄想にふける心とそれを見守る雨海もまた百合で尊い。最高です。

試し読み

初春が咲く 1巻 (まんがタイムKRコミックス)

初春が咲く 1巻 (まんがタイムKRコミックス)

初春が咲く 1巻 (まんがタイムKRコミックス)

普段あんまりきららコミックス読まなくて読んでもきららフォワードの4コマじゃないやつなことが多いんですが、これはまんがタイムきららのコミックスだけど、普通のラブコメって感じで「きららってこういう作品もあるんだ〜」って思いました。

娘の友達(1) (モーニングコミックス)

娘の友達(1) (モーニングコミックス)

娘の友達(1) (モーニングコミックス)

『バイバイ人類』の萩原あさ美先生の新作。娘の友だちに誘惑されて家族から社会から理性から絆されそうになりながらも理性を微かに保つ主人公・晃介。ずっとどっちに転ぶんだろと思いながらページをめくっていた。どうなってしまうんだろう。

夢中さ、きみに。 (ビームコミックス)

夢中さ、きみに。 (ビームコミックス)

夢中さ、きみに。 (ビームコミックス)

どの話も丁寧に作ってあるなぁと感じる短編集だった。キャラも独特だけど現実離れしてなくて良い。

乙女怪獣キャラメリゼ 3 (MFコミックス アライブシリーズ)

新キャラのライリが出てきて、コンプレックスを共有したり乗り越えていく3巻という感じで良かった。その分メインの2人のやり取りは少なめで少し物足りなさもあった。いや〜ちゃんと少女漫画しててスゴい。