Hatena summer internship 2020

Bf466502958a3e05d643e910ff5ec6a2?s=47 Shunta Komatsu
September 11, 2020

Hatena summer internship 2020

はてなのサマーインターンシップ 2020 の成果発表会で発表した資料です。

Bf466502958a3e05d643e910ff5ec6a2?s=128

Shunta Komatsu

September 11, 2020
Tweet

Transcript

  1. 成果発表 2020/09/11 Hatena Summer Internship 2020 Shunta Komatsu (id: skmatz)

  2. やったこと 1. Markdown に対応 (課題 1) 2. 独自記法として “@ 記法”

    を追加 (課題 2) 3. タイトルを自動取得するサービスの追加 (課題 3)
  3. 1. Markdown に対応 goldmark に投げるだけ

  4. 2. 独自記法として “@ 記法” を追加 @ 記法とは: SNS のリンクを簡単に貼れる機能 モチベーション:

    ブログ内で SNS のリンク貼るのが面倒 はてなブログの id:skmatz みたいな記法を任意の SNS で実現
  5. 2. 独自記法として “@ 記法” を追加 該当部分を Markdown に変換 (拡張 Markdown)

    @github:skmatz -> [@skmatz](https://github.com/skmatz) @linkedin:shuntak217 -> [@shuntak217](https://www.linkedin.com/in/shuntak217) @!github:skmatz -> [github@skmatz](https://github.com/skmatz)
  6. 2. 独自記法として “@ 記法” を追加 対応サービス • facebook • github

    • gitlab • hatena • instagram • linkedin • medium • qiita • reddit • twitter
  7. 3. タイトルを自動取得するサービスの追加 1. Markdown を走査して [](https://...) を見つけ、URL 一覧 を保持しておく 2.

    URL 先のタイトルを fetcher サービスを使って、 goroutine で並列処理をしながら fetch する 3. もう一度 Markdown を走査して該当箇所にタイトルを挿入 していく 高速かつ同じ URL であれば 1 回のみの fetch で済む renderer service
  8. 3. タイトルを自動取得するサービスの追加 1. URL を受け取る 2. robots.txt を読んで allowed か確認

    3. allowed なら GET してタイトル取得 4. disallowed なら URL をそのまま返却 fetcher service
  9. その他工夫した点・感想 • GitHub Actions で CI • Table Driven Tests

    で見通しが良く網羅性の高いテスト • gRPC や k8s を使うのが初めてだったので大変だったけど、 コーディングしながらなんとなく理解できた
  10. ありがとうございました! Gopher CC BY 3.0 Renée French / Gopher images

    CC BY-NC-SA 4.0 ashleymcnamara/gophers