Lozad.js で Lazy Load (非 jQuery)



カテゴリー Programming

はじめに

jQuery を使わずに Lazy Load できる ApoorvSaxena/lozad.js の使い方を整理した。

TL;DR

  • <img class="lozad" src="dummy" data-src="image"> のように指定
    • class="lozad" を追加
    • data-src に Lazy Load 対象画像、src にダミー画像を設定
  • lozad().observe() を実行して Lazy Load 起動(監視処理の起動)
  • IntersectionObserver を使っているので SEO 的にも良い(らしい)
続きを読む

はじめに

2019年11月時点で主要な SNS である(と個人的に思う) Twitter, Facebook, LINE への共有リンクの設定方法についてまとめた。

TL;DR

  • Twitter: https://twitter.com/intent/tweet?text=<text>
    • 他オプション: via, related, url, hashtags
  • Facebook: https://www.facebook.com/share.php?u=<url>
  • LINE: https://line.me/R/msg/text/?<text>
続きを読む

Rails で OGP を content_for で設定する方法



カテゴリー Programming

はじめに

Rails で OGP meta tags を設定する方法について整理した。この例では content_for を使ってページ別に定義する方法を用いている。

TL;DR

  • サイト名などの共通項はレイアウトファイルに記述
  • レイアウトファイルに yield(:ogp) を追加し、ページ別の設定内容を展開
  • 個別ページの view ファイルに content_for(:ogp) でページ別の設定内容を記述
続きを読む

はじめに

Laravel の中間テーブルを使った多対多(belongsToMany)の関係で、中間テーブルのカラムでソートする方法を調べた。

イメージとしては「ユーザー」と「サークル」があって、「ユーザー」は複数の「サークル」に所属可能、「サークル」には複数の「ユーザー」が所属。サークルへの加入時期(created_at)でソートする、など。

TL;DR

  • withPivotorderBy を組み合わせる
  • withPivot('created_at AS joined_at') のように別名を付けると分かりやすい
続きを読む

はじめに

PHP, Laravel で null の可能性があるケースでの便利なメソッドや演算子について調べたので忘れないようにメモ。

※Ruby の Safe Navigation Operator (ぼっち演算子) hoge&.name とかのようなもの。

TL;DR

  • optional(): optional($hoge)->name とすると、$hoge = null の時は null が返ってくる
    • エラーにならない
  • Null 合体演算子 ??: $a = $b ?? 'null だよ' とすると、$b != null の時は $b$b == null の時は ?? の後の値が設定される
    • 三項演算子($a = $b != null ? $b : ‘null だよ’`)のようなもの
  • optional($a)->name ?? '未入力' のように組み合せて使うと便利
続きを読む

はじめに

サイトのタイトルは document.title で取得できるが、description は一発で取れない(専用の関数が無い)ので、簡単に取得する方法を調べた。

TL;DR

  • Array.prototype.slice.call(document.head.children).find(t => t.tagName === "META" && t.name === "description") で取れる
    • Array.prototype.slice.call と組み合わせると、Array.prototype のメソッドも使える
    • tagNamename などを変更すると、他のタグも一撃で取れるはず
  • Array.from(document.head.children).find(t => t.tagName === "META" && t.name === "description") でも良い
続きを読む

はじめに

Chrome 拡張機能を React などで構成された SPA で動作させる方法 で、background から JS を注入する方法を整理した。が、別要件で上手くいかないケースがあったのでメッセージドリブンで処理タイミングを通知する方法を整理した。

TL;DR

続きを読む

はじめに

とあるページ向けに作っていた拡張機能が上手く動作しなくなったので確認すると、React.js を利用した SPA に変更されていた。

リロードするとちゃんと動作するのだが、クリックなどでページ遷移すると拡張機能が動作しないので、対応方法について調べた。

続編: Chrome 拡張機能で background scripts から content scripts にメッセージを送信する

TL;DR

続きを読む

はじめに

docs 配下を対象にした GitHub Pages を、検索エンジンにクロールしてもらうために調べたことを整理した。

ちなみにターゲットは以下のサイト。

TL;DR

  • docs_config.yml を配置
  • docsgoogleXXXX.html を配置
  • Vue CLI の場合は public に配置してビルド
続きを読む

HTML の OGP meta タグの設定方法



カテゴリー Programming

はじめに

OGP の設定について調べたので簡単にメモ。

調べる前は「面倒くさそう」と思ってたけど、ちゃんと見たら大したこと無かった。

TL;DR

  • <head>prefix を付与
  • <meta property="og:xxx" content="xxx> で各要素を指定
  • Twitter は <meta name="twitter:xxx" content="xxx"> で指定
  • Facebook は <meta property="fb:xxx" content="xxx"> で指定
続きを読む

r17n


Softwear Engineer


Fukuoka