tag:crieit.net,2005:https://crieit.net/users/yahsan2/feed yahsan2の投稿 - Crieit Crieitでユーザーyahsan2による最近の投稿 2019-04-24T12:19:15+09:00 https://crieit.net/users/yahsan2/feed tag:crieit.net,2005:PublicArticle/14940 2019-04-21T22:24:31+09:00 2019-04-24T12:19:15+09:00 https://crieit.net/posts/URL-netlify-Large-Media URLパラメータで簡単画像リサイズ。netlify の Large Media が便利! <h1 id="netlify の Large Media とは"><a href="#netlify+%E3%81%AE+Large+Media+%E3%81%A8%E3%81%AF">netlify の Large Media とは</a></h1> <p>Git レポジトリでサイトコンテンツを管理する際に、画像やPSD/ZIPなどの大きいファイルを含めて管理するために Git LFS(Git Large File Strage)と仕組みがある。<br /> LFS については細かく触れないが、LFS を使って netlify にデプロイされた画像を、URLパラメータをつかってリサイズやクロップが便利に扱えるように使える神機能である。</p> <p>Large Media 公式ドキュメント<br /> <a target="_blank" rel="nofollow noopener" href="https://www.netlify.com/docs/large-media/#enabling-netlify-large-media">https://www.netlify.com/docs/large-media/#enabling-netlify-large-media</a></p> <p>Git LFS 公式サイト<br /> <a target="_blank" rel="nofollow noopener" href="https://git-lfs.github.com/">https://git-lfs.github.com/</a></p> <h2 id="netlify Large Media のサンプル"><a href="#netlify+Large+Media+%E3%81%AE%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB">netlify Large Media のサンプル</a></h2> <p>例えば、普通に gitレポジトリ に含めて github などを介して netlify デプロイすると、このようなURLで画像にアクセスできる。</p> <p><a target="_blank" rel="nofollow noopener" href="https://netlify-photo-gallery.netlify.com/images/apple.jpg">https://netlify-photo-gallery.netlify.com/images/apple.jpg</a><br /> <img src="https://netlify-photo-gallery.netlify.com/images/apple.jpg?nf_resize=fit&w=1000&h=1000" alt="りんご画像" /></p> <p>これにこんな形で、最後に <code>?nf_resize=fit&w=200</code> を加えてやると、リサイズされた画像を生成して返してくれるのだ。<br /> <a target="_blank" rel="nofollow noopener" href="https://netlify-photo-gallery.netlify.com/images/apple.jpg?nf_resize=fit&w=200">https://netlify-photo-gallery.netlify.com/images/apple.jpg?nf_resize=fit&w=200</a><br /> <img src="https://netlify-photo-gallery.netlify.com/images/apple.jpg?nf_resize=fit&w=200" alt="リサイズされたりんご画像" /></p> <p>さらに次は、画像URLにの最後に <code>?nf_resize=smartcrop&w=200</code> を加えてやると、クロップされた画像を生成して返してくれる。</p> <p><img src="https://netlify-photo-gallery.netlify.com/images/apple.jpg?nf_resize=smartcrop&w=200&h=200" alt="クロップされたりんご画像" /></p> <p>1つ画像をアップするだけでいい感じにリサイズされた画像やクロップされたをすぐに使えるのだ!神すぎないか?</p> <p>これが <strong>netlify Large Media</strong> 機能だ。</p> <p>公式サンプルに Transformation demo とジェネレーターがあるので、もう少し触ってみたいかたはこちら。<br /> <a target="_blank" rel="nofollow noopener" href="https://netlify-photo-gallery.netlify.com">https://netlify-photo-gallery.netlify.com</a></p> <h2 id="netlify Large Media の使い方"><a href="#netlify+Large+Media+%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9">netlify Large Media の使い方</a></h2> <h3 id="環境準備"><a href="#%E7%92%B0%E5%A2%83%E6%BA%96%E5%82%99">環境準備</a></h3> <p>最初に一度ローカル環境を準備する必要がある。</p> <h4 id="バージョン確認"><a href="#%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%A2%BA%E8%AA%8D">バージョン確認</a></h4> <p><code>git lfs version</code><br /> Git LFS version: v2.5.1以上 を確認<br /> なければ、Git LFS をインストール。詳細は公式サイトで割愛<br /> <a target="_blank" rel="nofollow noopener" href="https://git-lfs.github.com/">https://git-lfs.github.com/</a></p> <p><code>netlify -v</code><br /> netlify-cli: 2.6.4以上 を確認</p> <p>なければ、netlify-cli をインストール。詳細は公式ドキュメントで割愛<br /> <a target="_blank" rel="nofollow noopener" href="https://www.netlify.com/docs/cli/">https://www.netlify.com/docs/cli/</a></p> <h4 id="large media プラグインインストール"><a href="#large+media+%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB">large media プラグインインストール</a></h4> <p>バージョン確認後、netlify-cliのプラグインをインストール</p> <pre><code>netlify plugins:install netlify-lm-plugin netlify lm:install </code></pre> <p>これで環境準備は完了</p> <h3 id="サイト(レポジトリ)ごとの設定"><a href="#%E3%82%B5%E3%82%A4%E3%83%88%EF%BC%88%E3%83%AC%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%EF%BC%89%E3%81%94%E3%81%A8%E3%81%AE%E8%A8%AD%E5%AE%9A">サイト(レポジトリ)ごとの設定</a></h3> <p>Large Media 機能を使うには、サイトごとに機能を ON にしないといけないので、サイトごとで設定。<br /> 1. まずは、netlifyでプロジェクトを作成 と github レポジトリが紐付いていることを確認<br /> 2. その後、ローカルのレポジトリも紐付ける</p> <pre><code>netlify link </code></pre> <p>3.セットアップコマンドをつ</p> <pre><code>netlify lm:setup </code></pre> <p>4.セットアップコマンドをつ<br /> <code>git status</code> で、<code>.lfsconfig</code> が生成されていることを確認し、git add で<code>.lfsconfig</code>を git の管理下におく。</p> <h3 id="LFS で管理する"><a href="#LFS+%E3%81%A7%E7%AE%A1%E7%90%86%E3%81%99%E3%82%8B">LFS で管理する</a></h3> <p>サイトごとの設定の他に、LFS でファイルを管理する必要があるので、</p> <p>画像ごとでトラッキングしていくか、gitignore の <a target="_blank" rel="nofollow noopener" href="https://git-scm.com/docs/gitignore#_pattern_format">pattern rules</a> も使えるので、LFSで管理するように指定していく。</p> <pre><code>git lfs track "sample.jpeg" git lfs track "*.jpeg" </code></pre> <p>トラッキングされたファイル一覧はこちらで確認可能。</p> <pre><code>git lfs track </code></pre> <p>トラッキング時には <code>.gitattributes</code> が生成されるので、こちらも git add と commit して管理する。</p> <p>詳しくは netlify のドキュメント、または、Git LFS 公式サイトで。<br /> <a target="_blank" rel="nofollow noopener" href="https://www.netlify.com/docs/large-media/#large-media-file-tracking-configuration">https://www.netlify.com/docs/large-media/#large-media-file-tracking-configuration</a></p> <h3 id="確認"><a href="#%E7%A2%BA%E8%AA%8D">確認</a></h3> <p>うまくnetlify large media の設定と LFS で設定できていれば、あとはいつもどおりレポジトリに push をするだけで、large media 機能がつかえるようになる。</p> <p><a target="_blank" rel="nofollow noopener" href="https://lfs-test.netlify.com/sample.jpeg?nf_resize=smartcrop&w=100&h=200">https://lfs-test.netlify.com/sample.jpeg?nf_resize=smartcrop&w=100&h=200</a><br /> <img src="https://lfs-test.netlify.com/sample.jpeg?nf_resize=smartcrop&w=100&h=200" alt="木" /><br /> 最初のサンプルのようにパラメーターをつけるだけで、Large Media が使えるようになっている!</p> <p>正常に動いていれば、netlify 管理画面もこんな感じに、ドキュメントのリンクの画面から管理している画像の一覧に変わります。</p> <h3><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6531/1c50d7f0-e372-775d-df7d-379669687ba4.png" alt="Screen Shot on 0031-04-21 at 21:41:59.png" /></h3> <p>公式のサンプルもあるけど、自分でためしたサンプルも一応<br /> <a target="_blank" rel="nofollow noopener" href="https://github.com/yahsan2/lfs-test">https://github.com/yahsan2/lfs-test</a></p> <h2 id="netlify Large Media と CMS"><a href="#netlify+Large+Media+%E3%81%A8+CMS">netlify Large Media と CMS</a></h2> <p>この netlify large media 機能は、 netlify CMS をつかって画像をアップロードする lfs として画像をコミットしてくれるので、この機能を簡単につかえるので、netlifyCMS もおすすめですね。つまり画像リサイズをもった JAMstack な CMS も簡単につくれるわけです。<br /> <a target="_blank" rel="nofollow noopener" href="https://www.netlifycms.org/docs/netlify-large-media/">https://www.netlifycms.org/docs/netlify-large-media/</a></p> <p>なんか静的サイトホスティングサービスでシンプルなのに、このかゆいところにどんどん手が届いてく netlify 拡張具合ほんとファンです。</p> yahsan2 tag:crieit.net,2005:PublicArticle/14700 2018-12-28T19:11:14+09:00 2018-12-28T19:11:14+09:00 https://crieit.net/posts/Puppeteer-on-AWS-Lambda Puppeteer on AWS Lambda のスクリーンショットで文字が豆腐になるので、ウェブフォントと絵文字フォントをインストール <h2 id="状況"><a href="#%E7%8A%B6%E6%B3%81">状況</a></h2> <p>現在開発中の https://poiit.me で puppeteer のスクリーンショットを使って動的OGPをつくっています。<br /> CSSで動的な画像をデザインできるし、一つ lambda 関数を作っておけば、いろんなところで応用ができるのでいいですね。</p> <p>が、今回は絵文字が、豆腐になってしまったのでその対処法。</p> <p><img src="https://qiita-image-store.s3.amazonaws.com/0/6531/6a6ea738-cf5e-15cb-4eb3-acb2dc85e5d8.jpeg" alt="yahsan2-ogp.jpg" /></p> <h2 id="参考記事"><a href="#%E5%8F%82%E8%80%83%E8%A8%98%E4%BA%8B">参考記事</a></h2> <p>ベースはこちらの記事を参考にしました。<br /> <a target="_blank" rel="nofollow noopener" href="https://qiita.com/zyyx-matsushita/items/c33f79e33f242395019e">https://qiita.com/zyyx-matsushita/items/c33f79e33f242395019e</a></p> <p>基本は参考Qiita をベースに対応できましたが、絵文字フォントがどこにあるのか結構探したので、備忘録的にメモ。</p> <h2 id="絵文字フォントダウンロードと設置"><a href="#%E7%B5%B5%E6%96%87%E5%AD%97%E3%83%95%E3%82%A9%E3%83%B3%E3%83%88%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%81%A8%E8%A8%AD%E7%BD%AE">絵文字フォントダウンロードと設置</a></h2> <p>Google の Noto Color Emoji はこちらから ダウンロードできました。<br /> <a target="_blank" rel="nofollow noopener" href="https://www.google.com/get/noto/#noto-emoji-zsye-color">https://www.google.com/get/noto/#noto-emoji-zsye-color</a></p> <p><strong>他のダウンロード可能な絵文字フォントを知っていたら、是非ダウンロード場所教えてください!</strong></p> <p>で、ダウンロードしたファイルを解答し <code>/.font/NotoColorEmoji.ttf</code> に設置</p> <h2 id="WEBフォント"><a href="#WEB%E3%83%95%E3%82%A9%E3%83%B3%E3%83%88">WEBフォント</a></h2> <p>こちらは絵文字以外のフォントについては、WEBフォントをつかっています。</p> <p>screenshot を撮る前に head に追加してやれば反映されるはず。</p> <pre><code class="js"> await page.evaluate(() => { var style = document.createElement('style') style.textContent = ` @import url('//fonts.googleapis.com/css?family=M+PLUS+Rounded+1c|Roboto:300,400,500,700|Material+Icons'); div, input, a, p{ font-family: "M PLUS Rounded 1c", sans-serif; };` document.head.appendChild(style); document.body.style.fontFamily = "'M PLUS Rounded 1c', sans-serif"; }) </code></pre> <p>その後、長めに wait させたないとフォントが反映されていないことがあるので注意</p> <pre><code> await page.waitFor(3000); </code></pre> <p>こちらの記事を参考にしています。<br /> <a target="_blank" rel="nofollow noopener" href="https://qiita.com/chimame/items/04c9b45d8467cf32892f">https://qiita.com/chimame/items/04c9b45d8467cf32892f</a></p> <h2 id="関数実行"><a href="#%E9%96%A2%E6%95%B0%E5%AE%9F%E8%A1%8C">関数実行</a></h2> <p>lambada で呼び出す関数で、フォントをサーバーにインストールする <code>fc-cache</code> コマンド実行してから、<br /> puppeteer の screenshot などを実行すれば、ちゃんと絵文字が反映されているはずです。</p> <p>アップロードすれば終了です。</p> <p><img src="https://qiita-image-store.s3.amazonaws.com/0/6531/54eae76b-6c6d-e567-d400-0c18bc462718.jpeg" alt="yahsan2-ogp-1.jpg" /></p> <p>めでたし!</p> <p>serverless を使ったベーシックな puppeteer on lambda は github に置いてあるので必要あれば。<br /> <a target="_blank" rel="nofollow noopener" href="https://github.com/yahsan2/puppeteer-example-on-serverless-lambda">https://github.com/yahsan2/puppeteer-example-on-serverless-lambda</a></p> <p>この記事のフォント反映バージョンも要望あればで公開しますので、コメントください〜!</p> <h3 id="poiit というサービスつくっています!"><a href="#poiit+%E3%81%A8%E3%81%84%E3%81%86%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%A4%E3%81%8F%E3%81%A3%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%EF%BC%81">poiit というサービスつくっています!</a></h3> <p>この記事がもし参考になれば、50円からサポートお願いします〜!<br /> <a target="_blank" rel="nofollow noopener" href="https://poiit.me/yahsan2/"><img src="http://res.cloudinary.com/dcsqopmuq/image/upload/v1545924831/poiit-production/yahsan2/yahsan2-ogp.jpg" alt="yahsan2-ogp-1.jpg" title="画像タイトル" /></a><br /> <a target="_blank" rel="nofollow noopener" href="https://poiit.me/yahsan2/">https://poiit.me/yahsan2/</a></p> yahsan2 tag:crieit.net,2005:PublicArticle/14662 2018-12-16T00:08:22+09:00 2018-12-17T12:14:49+09:00 https://crieit.net/posts/NPO-Fastly-non-profits NPO法人をエンジニアが手伝うススメ!Fastly non-profits サポートプログラムなど <p>NPO 法人は、WEBサービスなどを無料または、格安で使わせてもらえるサービスがたくさんある。</p> <p>僕は NPO法人グリーンズ( <a target="_blank" rel="nofollow noopener" href="https://greenz.jp">greenz.jp</a> )のエンジニアとしても活動しているのだが、いろんな有料サービスに実際に触れることができて知見がたまり、他のプロジェクトでも生きているので、そんな NPO 向けのサービスを紹介と、エンジニアがNPO手伝うススメを書く。</p> <h2 id="NPO 法人向けのサービスの探しかた"><a href="#NPO+%E6%B3%95%E4%BA%BA%E5%90%91%E3%81%91%E3%81%AE%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%AE%E6%8E%A2%E3%81%97%E3%81%8B%E3%81%9F">NPO 法人向けのサービスの探しかた</a></h2> <p>探し方ですが、まずはNPO支援コレクション(通称:N コレ!)にまとまっているので、是非ここで探してみてほしい。<br /> <a target="_blank" rel="nofollow noopener" href="http://npo-sc.org/ncolle">http://npo-sc.org/ncolle</a></p> <p>有料サービスが、無料になったり、割引価格で使えるものが意外とたくさんある。</p> <p>この記事でもまとまっています。<br /> <a target="_blank" rel="nofollow noopener" href="https://rhodium.co.jp/2018/01/11/【npo必見】非営利組織-割引・特典-一覧/">https://rhodium.co.jp/2018/01/11/【npo必見】非営利組織-割引・特典-一覧/</a></p> <p>探してみるとコレも使えるのか!ってなるものをがあるのですが、いくつか自分のオススメの紹介する。</p> <h2 id="Slack 有料プラン"><a href="#Slack+%E6%9C%89%E6%96%99%E3%83%97%E3%83%A9%E3%83%B3">Slack 有料プラン</a></h2> <p>Slack は有料のスタンダードプランが無料になるというプログラムがある。<br /> <a target="_blank" rel="nofollow noopener" href="https://get.slack.help/hc/ja/articles/204368833-Slack-の-NPO-支援プログラム">https://get.slack.help/hc/ja/articles/204368833-Slack-の-NPO-支援プログラム</a></p> <blockquote> <p>Slack の NPO 支援プログラムは、審査を通った団体に対し、1つのワークスペースの有料プランへのアップグレードを無料または割引価格で提供しています。詳細は次の通りです :</p> <p>スタンダードプラン : メンバー数が250人以下のワークスペースに対しては無料のアップグレード、250人を超える規模のワークスペースに対しては85%の割引を提供します。</p> </blockquote> <p>Slack は有料になるとインテグレーションが無限につけれたり、グループメンション、メンバーの発言の分析など、無料版にはない機能が使える。NPOを支援する代わりに、いろんなインテグレーションや、一定数以上大人数で、運用ができるというのは、とても学びがある。</p> <p>Slack できることがとても増えるので、とてもオススメ。</p> <h2 id="G Suite for Nonprofits"><a href="#G+Suite+for+Nonprofits">G Suite for Nonprofits</a></h2> <p>Google の G Suite の NPO法人であれば無料で使える。<br /> <a target="_blank" rel="nofollow noopener" href="https://support.google.com/nonprofits/answer/3367223?hl=ja">https://support.google.com/nonprofits/answer/3367223?hl=ja</a></p> <p>G suite は、Google Apps まわりで、何かと便利なので、NPOを手伝うことで G suite になれるということができる。</p> <h2 id="株式会社ジャックアンドビーンズ Google Ad Grants の運用代行業務サポート"><a href="#%E6%A0%AA%E5%BC%8F%E4%BC%9A%E7%A4%BE%E3%82%B8%E3%83%A3%E3%83%83%E3%82%AF%E3%82%A2%E3%83%B3%E3%83%89%E3%83%93%E3%83%BC%E3%83%B3%E3%82%BA+Google+Ad+Grants+%E3%81%AE%E9%81%8B%E7%94%A8%E4%BB%A3%E8%A1%8C%E6%A5%AD%E5%8B%99%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88">株式会社ジャックアンドビーンズ Google Ad Grants の運用代行業務サポート</a></h2> <p>そもそも、Google Ad Grants が NPOに向けては、月間100万円分(※10,000ドル分)の無料枠で広告出稿ができる。</p> <p>しかし広告出稿の作業意外と大変なので、さらにジャックアンドビーンズさんが無料で代行運用をしてくれるものがある。</p> <p>広告運用がめちゃくちゃ大変なので、とてもありがたいし、Google Ad Grants の設定の勉強にとてもなる。</p> <p><a target="_blank" rel="nofollow noopener" href="https://npo-marketing-labo.com/free-support">https://npo-marketing-labo.com/free-support</a></p> <h2 id="Faslty の non-profits サポート"><a href="#Faslty+%E3%81%AE+non-profits+%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88">Faslty の non-profits サポート</a></h2> <p>上記のNコレ!にはないが、このリンクの下の方に Nonprofit Program っていうのがある。<br /> <a target="_blank" rel="nofollow noopener" href="https://www.fastly.com/open-source">https://www.fastly.com/open-source</a></p> <p>具体的な内容は書いていないが、 greenz.jp は無料枠(一定金額まで)をもらって、Faslty を使うことができる。<br /> 強靭な Fastly キャッシュを無料で実際に運用できるのは、とても最高である。</p> <h2 id="なぜ エンジニアがNPO手伝うのを勧めるのか"><a href="#%E3%81%AA%E3%81%9C+%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%81%8CNPO%E6%89%8B%E4%BC%9D%E3%81%86%E3%81%AE%E3%82%92%E5%8B%A7%E3%82%81%E3%82%8B%E3%81%AE%E3%81%8B">なぜ エンジニアがNPO手伝うのを勧めるのか</a></h2> <p>NPO 界隈は、IT の力が圧倒的に足りていない。エンジニアという人種がNPOに関わることは、それだけで大きな力になる。<br /> Slack を導入を手伝うだけでも、Gsuite の設定をするだけでも、めちゃくちゃ貢献できる。</p> <p>エンジニアとの関わりが比較的つくりづらい NPO とって、エンジニアが近くにいるだけでとても力強い存在となれるのだ。</p> <p>また力強い存在になれるだけでなく、上記サービスで紹介したように、有料のサービスを実運用で提案しやすいというメリットがある。フリートライアルで数週間試すのと、実際に運用するのは全然ちがう。こうした実験というと語弊があるか、手伝うことでエンジニアとしても実運用の知見を手に入れることができるのは、とてもメリットがあると思う。</p> <p>しっかりと使いこなせるようになれば、無料でNPOを応援してくれているサービス提供社のサービスを、もっと僕らエンジニアは使うだろうし、そういったNonprofit事業を応援している会社をもっともっと僕らも応援するサイクルになれば win - win - win なのではないだろうか。</p> <p>是非、NPOは無料で使える気になるサービスがあったら、そのサービスでNPOを手伝ってあげるのはどうだろうか?</p> <p>注)もちろん、無理やり導入することで運用コストを上げるなど本末転倒な提案は絶対しないでくださいね。笑</p> yahsan2