movee(モビー) オノデラのブログ

(株)movee代表。週末は自社サービスを作っています。

NewsAPIで福岡市のニュースを収集するページを作ってみた

https://newsapi.org/はNews APIは世界中の30,000を超えるソースから、トップ見出し、ニュース内容、ソース情報を取得可能なAPIらしく、無料開発用ライセンスがあるので使ってみました。(1,000リクエスト/日の制限あり)。

curl 'https://newsapi.org/v2/everything?q=福岡市&searchIn=title&sortBy=publishedAt&apiKey=xxxxxxx'

NewsAPI

こんな感じで取得できるが、取得したデータの中には意外に出会い系や婚活系のニュースが含まれていたり、タイトルの最後に'wwww 'が付くような煽りっぽい記事も結構あったのでこの辺は除外したいが、防止するクエリパラメーターもなさそう。これはNewsAPIの仕様上、どうしようもないので一旦福岡市などで取得したのちにフィルタリングすればできそう。 あと、記事データを眺めていると、あまり好ましくない記事をポストしてる会社も大体わかったのでその著者も除外したい。

ということで対応してみた。 データを取得した後、タイトルに婚活か、wwが含まれている記事は除外。著者がxxx、yyyの記事は除外(除外対象にした著者名は仮で書いておきます)するフィルターをかけて、1つずつ記事を精査。 どちらかが該当した場合は公開対象から外しました。

const filteredData = fukuokaNewsData.filter((data:any) => {
      const isUnwantedTitle = data.title.includes('婚活') || data.title.includes('ww');
      const isUnwantedAuthor = data.author === 'xxx' || data.author === 'yyy';
      return !(isUnwantedTitle || isUnwantedAuthor);
    });

結果、いい感じにとれた。

NewsAPI

NewsAPIは非商用利用であれば無料というテキストを見たので、何かしら無料のサービスを作ろうかと思ったけど、念のためNewAPIサイトで本当に無料で使えるかを確認しました。「よくある質問」のページです。

・開発者プランではどのような使用が許可されますか?

・開発者プランは、開発環境での開発およびテストにのみ使用でき、ステージング環境または運用環境 (内部を含む) では使用できません。API が開発環境の外で使用される場合、API を引き続き使用するには、サブスクリプションのいずれかにアップグレードする必要があります。

Pricing - News API

うーん、どうやら公開する時点でダメっぽい(もしくはAPI側でできないようにしているのかも)。非商用サービスの公開ならOKかなと思っていたけど、ローカル環境じゃないとfreeプランは使えない。freeプランの次がbusinessプランで449ドル。本日時点の円ドル為替だと66344.24円。高い!商用利用目的があるならまだしも、非商用でしか考えていない僕としては、月額6万オーバーはコスパがすこぶる良くない。 コストがかかりすぎてるため残念だけど、NewsAPIを使ったサービス開発は断念しようと思います。とはいえ、簡単に取得できるし、著者の中には著名な出版社や新聞社も入っているため記事の質もそれなりに良いなと思いました。キーワードに沿った記事を集めたまとめサイトとか面白そうだなと思ってました。

GithubAPIで自分のGithub情報を表示している

自社のHPに何かエンジニアの日々の活動を載せられないかなと思い、Githubデータを表示できれば普段どんなことをやっているかがわかるなぁと思っていました。そこでGithubAPIを使って自社HPにエンジニアのGithubデータを出してみました。 GithubAPIはパブリックリポジトリの情報であればAPI申請なども不要で簡単に利用ができました。 curlで叩くとcurl https://api.github.com/users/yutoonodera/repos\?sort\=pushed_atGithubデータが取得できました。リポジトリ名、概要、作成日、更新日時、最新push日時などが取れます。 yutoonoderaの箇所を自分のGithubアカウント名に変更すればアカウント名に応じたGithubデータが取得できます。なので変な話、他人のGithubアカウント名をセットするだけで他人のデータが取得できます。もちろん、パブリックリポジトリだけ。 GithubAPIには注意点があって、アクセスできる回数に制限があります。確か1時間6回ほどです。HPにアクセスがあるたびにAPIを呼び出してしまうとすぐに制限に引っかかってしまってデータが取得できなくなります。1時間に6回以上アクセスがあるサイトは毎回API呼び出ししていると良くないです。 弊社HPではAPIで取得したデータはcacheファイルに書き込みます。で、そのcacheファイルからデータを取得して表示しています。ただ、これだけだと1度取得した後にずっと同じで更新されないためcacheデータ作成の更新日時を取得して、更新日時から24時間経過の場合はGithubAPIを呼び出して最新のGithub情報を取得し、cacheファイルを更新しています。 なので弊社HPに表示されているGithub情報は24時間以上の間隔で更新されています。(リアルタイム更新ではないです)

【データ処理の流れ】

・ GithubAPIでデータ取得

    ↓

・cacheファイルにデータを書き込み

    ↓

・cacheファイルの更新日時が24時間未満の場合はcacheファイルのGithubデータを表示

・cacheファイルの更新日時が24時間以上の場合は最初に戻る(GithubAPIでデータ取得)

という流れです。今のところ問題なくHPに表示されています。 とはいえ、更新日時が古いリポジトリばかりをHPに表示するのも考えようだなと思うので、定期的に過去パブリックリポジトリも更新していこうと思います。

リクルートを作った「起業の天才」の所感

amazonの口コミなどで評価が高かった起業の天才の本を読んだ。天才は創業者の江副さん。 企業への招待(リクルートブックの前身)やとらばーゆなど出版物を世に出した人物だし、今では代表的なクラウドサービス「AWS」と同じ構想を持ち、動いていた人。

自分自身も新卒時はリクルートグループの会社に応募していたりして、とても興味深く読めた。

時代が追いついていなかったというか、出る釘を許さなかった日本文化が潰してしまった天才だなと思う。 とはいえ、江副さん自身もちょっといかがわしい部分があったりするのが人間味があって面白い。 どんな大企業にも挑んでいくベンチャー精神は凄まじいと思うし、今のリクルートグループの考え方のベースは江副イズムによるものだと思う。 利益優先なところがある反面、ある街では結果的に銅像が建てられていて、とても感謝されている。 自分の想いと他人の想いはイコールじゃないんだと感じた。

2023年12月ふりかえり

引き続き決済系のサービスを作っている。フロント開発にも少しだけ慣れてきたし、楽しくなってきた。もっと勉強していく。

業務で学んだこと

  • storeとか
  • Express.jsがとても使いやすい
  • n回目だが、エンジニア採用には費用がかかる
  • Intersection Observer APIが思いのほかスムーズに実装できた
  • 大文字から小文字に変更したファイル名があったがGitが認識してくれなくてrequireできなくてテストでこけてた。git rm --cached '古いファイル名'をすれば新しいファイル名を認識してくれる。 【Git】ファイル名の大文字小文字を変更する
  • Redisとは、みたいなこと。自社サービスで使ってみようかなと。

業務以外で学んだこと

  • 清香園はキッズルームが充実していて良さそう
  • 実家に帰省した。妹家族にも会えてよかったし、祖父母にもひ孫を見せれてよかった。ただ3家族(親、妹家族、私たち)が実家に集結すると割とカオスで両親ともあまり喋れなかった。
  • 風邪がとても長引いていて楽しみにしていた年末イベントを3つほどキャンセルした。子供も生まれたし、在宅仕事っていうのもあり、来年から11月〜2月は冬眠時期にしようかなと思う。
  • 桜坂(ほぼ警固)のスーリールに行ってきた。安定の美味しさだった。

購入した本

できたこと

  • 自社サービスの分離化(ホームページから分けてツール化した。近々公開できそう)
  • バッチの解読

次月にやっていきたいこと

2023年11月ふりかえり

引き続き決済系のサービスを作っているがフロント開発がメインでJavaは読むぐらい。 フロント開発はあまり経験がないががんばる。Ts+Vue3

業務で学んだこと

業務以外で学んだこと

  • 筑紫餅より信玄餅の方が歴史がある
  • 息子の赤ちゃん土俵入りイベントに参加した
  • 息子のことに集中していて、猫に構ってあげられないので猫の機嫌が悪い。おもちゃを買ってあげた
  • インフルエンザの感染率はそんなに高くないはずなのに、コロナの感染率の高さに慣れてしまっている。予防接種だいじ。
  • 2ヶ月ほどスクワットしてるのだが結構筋肉がついてきた
  • はてなブログを法人化してもまぁまぁ安い  法人向けはてなブログ

購入した本

できたこと

  • ExpressでCICD構築
  • stagingサーバ構築
  • Vue3の小さな改修ができた

次月にやっていきたいこと

  • ExpressでWebデータ分析モデル実装
  • TypeScriptの本1冊買って読む

2023年10月ふりかえり

10月から新規案件に入った。決済系サービス。

業務で学んだこと

業務以外で学んだこと

購入した本

次月にやっていきたいこと

  • ExpressでCICD構築・stagingサーバ構築
  • イベント参加してエンジニアやデザイナーと交流

(読書ログ)達人プログラマー ―熟達に向けたあなたの旅― 第2版 1/1

  • ・エンジニアは1年に1つは新しい言語を習得しなさい
  • ・ツールを完璧に使いこなせるようになりなさい
  • ・納期でぐじぐじ言わず、間に合わないのはその能力がない自分のせい
  • ・テストコードを書くこと
  • ・割れ窓を放置しない

https://amzn.asia/d/hHMSyml

この本はエンジニアとしての心構えを教えてくれる。環境のせいにしている自分に喝を入れる本としては最適だし、新人エンジニアにもぜひ読んでほしい本。