kakakakakku blog

Weekly Tech Blog: Keep on Learning!

CircleCI 2.0 + Apex で Lambda をデプロイする

Lambda をデプロイする場合,最近だと Serverless Framework もしくは AWS Serverless Application Model を使う場面が多いけど,他の AWS サービスに依存せず Lambda だけをデプロイしたい場合には Apex も積極的に使っている.要件がシンプルな場合に特に便利で,過去にも事例を記事にしている.

kakakakakku.hatenablog.com

kakakakakku.hatenablog.com

kakakakakku.hatenablog.com

CircleCI 1.0 + Apex

今までは「CircleCI 1.0 + Apex」という組み合わせで Lambda をデプロイしていた.特に難しいことはなく,以下のようなシンプルな circle.yml を作成して,CircleCI 上で毎回 Apex をインストールしていた.ただし,8月末に CircleCI 1.0 のサポートが終了するため,そろそろ移行を考える必要があった.

machine:
  timezone: Asia/Tokyo

dependencies:
  post:
    - curl https://raw.githubusercontent.com/apex/apex/master/install.sh | sudo sh
    - apex version

deployment:
  master:
    branch: master
    commands:
      - apex deploy

Dockerized Apex

CircleCI 2.0 は Docker コンテナを使ってジョブを実行するため,Apex のコンテナが必要になる.ただし Apex 公式では提供されていなく,あまり良さそうなものもなかったため,今回 Alpine ベースで軽量な Dockerized Apex を作成した.バージョンは v1.0.0-rc2v0.16.0 をサポートしている.Docker イメージは kakakakakku/apex - Docker Hub に公開した.

github.com

CircleCI 2.0 + Apex

「CircleCI 2.0 + Apex」の場合は CircleCI 2.0 の記法で .circleci/config.yml を作成して,Dockerized Apex を使えば,今まで通り Lambda をデプロイできる.Docker コンテナを使うことにより,実行時間の短縮にも繋がり,メリットもある.

version: 2

jobs:
  deploy:
    docker:
      - image: kakakakakku/apex
    steps:
      - checkout
      - run: apex version
      - run: apex deploy

workflows:
  version: 2
  apex:
    jobs:
      - deploy

CircleCI の Environment Variables で,以下の環境変数を設定するのを忘れずに!

  • AWS_REGION
  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY

f:id:kakku22:20180508090052p:plain

(検証環境でデプロイをしてみた結果)

まとめ

  • CircleCI 2.0 + Apex でも Lambda をデプロイすることができた
  • CircleCI 2.0 のために Dockerized Apex を作成した

関連記事

CircleCI 2.0 の新機能「ワークフロー機能」の紹介を前に書いたから合わせて読んでもらえると!

kakakakakku.hatenablog.com

Speaker Deck で最高の URL を生成する技術

Speaker Deck の仕様

Speaker Deck に発表資料を公開するとき「タイトルから URL が生成される仕組み」になっている.タイトルが全て英語なら問題はないけど,タイトルに日本語が含まれる場合は「中国語のようなローマ字」になってしまうという裏仕様があり(以下に例を載せた),今まで「内容は素晴らしいのに URL が残念すぎる資料 💦」を多く見てきた.知っている人は知っている仕様だと思うけど,まだまだ普及していなさそうなので,今回ブログに書くことにした.

プロジェクトをリードする技術
puroziekutoworidosuruji-shu

最高の URL を生成する技術

今回「Speaker Deck で最高の URL を生成する技術」を紹介したいと思う.と言っても本当に簡単なことで,以下のように「スラッシュ区切りで英語タイトルを追加する」だけ!最高すぎる!

日本語タイトル / 英語タイトル

サンプルとして今まで公開してきた資料を例として載せておこうと思う.なお,1番最後のサンプルからわかる通り ! は無視されることも知っておくと良いと思う.

タイトル 生成 URL
プロジェクトをリードする技術 / Project Leading is Skill https://speakerdeck.com/kakakakakku/project-leading-is-skill
Mackerel で ECS をどこまでモニタリングできるのか / Monitoring ECS with Mackerel https://speakerdeck.com/kakakakakku/monitoring-ecs-with-mackerel
アウトプット駆動学習を習慣化する / Output Driven Study https://speakerdeck.com/kakakakakku/output-driven-study
ブログを書く技術 / Blog is My Life https://speakerdeck.com/kakakakakku/blog-is-my-life
日本で働きながら海外名門大学で学べる!そう Coursera ならね! / Coursera is Awesome ! https://speakerdeck.com/kakakakakku/coursera-is-awesome

まとめ

最高の発表資料を「最高の URL」で Speaker Deck に公開しよう!

(2022年3月追記)Speaker Deck Pro「Custom URL 機能」

Speaker Deck Pro で有効化される「Custom URL 機能」を使えば本記事の Tips は不要になる!

vimeo.com

関連記事

Keynote で「最高の発表資料」を作る方法は以下の記事にまとめているので,合わせて見てもらえると!

kakakakakku.hatenablog.com

Akamai と Fastly の事例を聞くために「CDN Study」に参加した

参加してからもう3週間も過ぎてしまったけど,4月に参加した「CDN Study」の感想をまとめておこうと思う.

http2study.connpass.com

オープニング

  • 最適化の原則
    • なるべく近く
    • なるべく少なく
    • なるべく小さく
  • CDN の存在感と世界観がどんどん広がっている

speakerdeck.com

Past, Present and Futures of CDN / Akamai Technologies

  • Akamai は 1700 を超えるエッジ(POP と呼ぶ)を持っている
    • 競合と比べても圧倒的に差がある
    • ただし「多ければ良い」という単純な話ではない
  • どうやって「最適なエッジ」に誘導するのか?
  • CDN は Contents Delivery Network ではなく Cloud Delivery Network と言える
  • EdgeWorkers : エッジで動作する JavaScript を開発している
  • 「キャッシュ」をチューニングの手法としてではなく,初期設計から検討する
    • TTL などは要件を整理しておく
    • ステートレスなアプリケーションを目指す
  • Cacheability
    • キャッシュの運用を前提とした,アプリケーションの記述手法があると良さそう
    • Swagger のような?

Akamai と言えばエンタープライズなイメージが勝手にあり,今回のようなカジュアルな勉強会で発表を聞くことがなかったけど,Contents Delivery Network(もしくは Cloud Delivery Network)企業として,非常に技術的なチャレンジをされているなと感じた.エッジの数がここまで多いのは知らなかったし,「最適なエッジ」に誘導するための特許を持っているのも知らなかった.このあたり,技術的に異常に深みがありそう.最後に話があった Cacheability モデリングの話は,今後に対する問題提起のような形になっていて良かった.キャッシュは用途を間違えると逆に制約になってしまうこともあり,ちゃんと設計して,活用する意識を改めて持つことができた.

speakerdeck.com

CDN Study in http2study / Akamai Technologies

  • 標準化
    • IETF (Internet Engineering Task Force) など,ワーキンググループにメンバーを派遣している
    • HTTP/2
    • QUIC
    • TLS 1.3
  • HTTP/2 はデフォルトで有効になっている
    • Server Push も使える
  • 2018年6月から QUIC でストリーミング配信をおこなえるようになる
    • 例えば,HLS 動画ファイルの取得が高速になったりする
  • TSL 1.3
    • Draft 21 / Draft 23 に対応した OpenSSL なら TSL 1.3 で接続できる

www.slideshare.net

Fastly のプログラマから見た CDN

  • Fastly の POP 一覧
  • CDN には2種類のモデルがある
    • コンビニモデル : Akamai
      • すぐ近くに POP がある
      • よって,レイテンシが下がる
    • スーパーマーケットモデル : Fastly
      • 巨大な POP がある
      • よって,キャッシュヒット率が高くなる
    • モデルの解説は以下のブログにある
  • ルータレス・ルーティング
    • 32台のキャッシュサーバが,それぞれルータも兼ねている
  • ステートレス・ロードバランス
    • LB を置かず,IP と PORT をハッシュ化して,キャッシュサーバを決定する仕組み
  • CDN 専用の独自ファイルシステムを開発している
  • Fastly を CDN ではなく「分散 KVS」として考えることができる
    • VCL : Varnish Configuration Language
    • インスタント・パージ
      • サロゲートキーを指定して,特定のキーが付いた複数のキャッシュを一括でパージできる
  • 日経新聞社の事例もある
  • CDN に関係するプロトコル拡張
    • DNS over HTTPS
      • DNS に問い合わせたことを記録させず,セキュアに通信ができる
    • Early Hints
    • Server Timing
    • Variants
  • QUIC を TCP/2 を言ってはダメ(ワーキンググループ的に)

コンビニモデルとスーパーマーケットモデルの話は知らなかった!面白すぎる.また,ルーティングとロードバランスの話など,ソフトウェアとして課題解決をされている印象があり,Akamai と違う規模,違う戦略なんだなという点も知れて良かった.最後にまとめたプロトコル拡張の話は詳しく理解できていないため,調べることを自分の宿題にしたいと思う.

speakerdeck.com

まとめ

  • 抽選倍率2倍の「CDN Study」に参加した
  • 今まで聞いたことがなかった Akamai と Fastly の発表を聞けて良かった
  • TLS 1.3 / QUIC など,プロトコルの話は理解が不足していることを痛感した
  • アプリケーションと Cacheability の話は今後の設計に活かしたいと思う

Google Analytics / Google Tag Manager 初学者にピッタリな「わかばちゃんと学ぶ Google アナリティクス」を読んだ

3月末に発売された「わかばちゃんと学ぶ Google アナリティクス」を読んだ.著者の湊川さん,献本ありがとうございます!

本書で学べるのは Google から提供されている以下のサービス群で,このあたりに興味のある初学者にピッタリな内容になっている.個人的には以下のサービス群は仕事でも個人でも使っていて,そこそこ理解のある中級者だと思うので,中級者目線での書評をまとめたいと思う.

  • Google Analytics
  • Google Tag Manager
  • Google Search Console
  • Google AdWords
  • Google Data Studio

コンバージョン計算式

Chapter 1 で「コンバージョン計算式」の話が出てくる.「コンバージョン = 訪問数 x コンバージョンレート」で,コンバージョンレートは業界の平均値を目指しつつ,訪問数を伸ばしていくようなストーリーになっていた.これは Google Analytics などのサービスを使う前に知っておくべき知識なので,ちゃんと書かれているのが素晴らしいなと思った.仕事でも「どうにかして,コンバージョンレートを改善しよう!」という施策を進めることがあるけど,柔軟に考えると,実は訪問数を伸ばせば良かったりする場面も多くある.

すぐに試せる Google Merchandise Store

Google Analytics を試す環境として,Google Merchandise Store の Google Analytics が公開されていることを知った.コンバージョン(目標)など,どのように設定をすれば良いかという「お手本」にすることができるため,気になったときに見れるように設定しておくのが良いと思う.これは知らなかった!

support.google.com

f:id:kakku22:20180430144429p:plain

フィルタ

Chapter 2 で Google Analytics のフィルタ機能が紹介されているのも良かった.会社の IP を除外するテクニックはあまり知られていないような気がしていて,実践的な内容になっていた.

セッションの定義

Google Analytics を使っているなら「セッション」の概念は理解していると思うけど,「セッションタイムアウト = 30 min 固定」という理解をしている人が多いように思う.確かにデフォルト値はそうなっているけど,ここはサービスの特性によって変更できるので,ここも実践的なテクニックが紹介されていて良かった.

f:id:kakku22:20180430144411p:plain

Google Search Console 連携

ブログを運営していると,どのような検索キーワードで流入があるかを把握することが重要なので,Google Search Console は定期的に確認している.Google Analytics だけを使っていると (not provided) が多く困るため,初学者でも Google Search Console を使えるように書かれていて良かった.なお,僕はブログを運営していて,以下のメトリクスを定期的に確認している.

  • Google Analytics
    • ページ/セッション
    • ページビュー数
    • 平均ページ滞在時間
    • 直帰率
    • 新規とリピーター
  • Google Search Console BETA (最近はリニューアル版を使っている)
    • クエリ
    • 平均 CTR
    • 平均掲載順位

f:id:kakku22:20180430144354p:plain

少し気になったこと

本書では,Google Analytics などの操作を説明するために,Chrome のキャプチャが多く載っていて,初学者でも迷うことなく理解できるようになっている.ただし,一部の Chrome のキャプチャで「macOS のメニューバー」と「Chrome のツールバー」まで見えているため,導入されている Chrome 拡張もわかってしまった.小さなことかもしれないけど,このあたりは全てのキャプチャで統一しておくと良さそう.

Google Analytics をマスターするなら

本書で Google Analytics に入門して,もっと活用しようと思ったら「できる逆引き Google アナリティクス」を読むのが1番良いと思う.とにかく詳細に解説されていて,Google Analytics ってこんなに機能あるのか!と驚かされると思う.

ネットマーケティング検定

Google Analytics とは直接関係ないけど,マーケティング関連の認定資格(検定)があり,そこまで難しくはなく,僕は2015年に取得している.参考までに紹介しておく.マーケティング関連の仕事をしているなら取得しておいても良さそう.

www.sikaku.gr.jp

kakakakakku.hatenablog.com

まとめ

  • 「わかばちゃんと学ぶ Google アナリティクス」 を読んだ
  • Google Analytics / Google Tag Manager 初学者にピッタリな内容になっていた
  • フィルタ,セッションの定義など,実践的なテクニックも紹介されていた

関連記事

kakakakakku.hatenablog.com

kakakakakku.hatenablog.com

プロジェクトをリードする技術

今日,社内勉強会で話す機会があり,過去1年間を振り返りつつ「プロジェクトをリードする技術」というタイトルにした.今回は参加者がエンジニアだけじゃなく,ビジネスチームのメンバーもいたため,できる限り,技術的な用語を使わないようにした.質疑応答とディスカッションもあり,1時間非常にワクワクした時間だった.

関連する領域

僕がプロジェクトをリードするときに意識しているのは,スクラムなど特定のプラクティスに依存しすぎないことで,チームの特性によって,関連する様々な領域からプラクティスを集めている.ザッと挙げるだけでも,こんなにたくさんある.

  • チームビルディング
  • ファシリテーション
  • マネージメント 3.0
  • アジャイル (スクラム / カンバン / XP)
  • 組織論
  • 育成
  • 心理学
  • メンタリング
  • プロジェクトマネジメント

資料

過去1年間に取り組んだことを全て詰め込んだ!プレイングマネージャーとして頑張ってきた「集大成」とも言える.プロジェクトを任された新任リーダーにオススメ!

続編

kakakakakku.hatenablog.com

関連する資料

「XP 祭り 2017」や「July Tech Festa 2017」で登壇した内容も一部含めている.

kakakakakku.hatenablog.com

kakakakakku.hatenablog.com

kakakakakku.hatenablog.com

kakakakakku.hatenablog.com

kakakakakku.hatenablog.com

関連する書評

オススメ本を多く資料に含めた.本から学んだことを実践すると1番学びになる.

kakakakakku.hatenablog.com

kakakakakku.hatenablog.com

kakakakakku.hatenablog.com