ブックマーク / developers.bookwalker.jp (37)

  • GitHub Actionsとparallel_tests gemを活用してRailsアプリケーションの爆速CIを実現する - BOOK☆WALKER inside

    こんにちは。 メディアサービス開発部 Webアプリケーション開発課のフサギコ(髙﨑)です。 Ruby on Railsによるバックエンドの実装運用と、AWSによるサービスインフラの設計構築を中心とした、いわゆるバックエンド方面のテックリードとして働いています。 記事では、GitHub Actions上で実行するRailsアプリケーションの自動テストの所要時間を、parallel_tests gemGitHub Actionsのmatrix、ruby/setup-rubyアクションによるgemのキャッシュを併用して短縮し、爆速CIを実現する方法についてお話します。 CIで実行する自動テストの所要時間は短ければ短いほど良い parallel_tests gemを使って、1コンテナのなかでテストを並列実行する GitHub Actionsのmatrixを使って、複数コンテナでテストを並列実行

    GitHub Actionsとparallel_tests gemを活用してRailsアプリケーションの爆速CIを実現する - BOOK☆WALKER inside
  • PlaywrightでカスタムURLスキームへの遷移をテストする

    こんにちは。メディアサービス開発部Webアプリケーション開発課の奥川です。ニコニコ漫画のバックエンド開発を担当しています。 ニコニコ漫画ではe2eテストに Playwright を導入しており、OpenID Connectでの認証フローやAPIテストなど主にiOS/Androidアプリとの連携部分の検証に利用しています。 アプリ連携ではカスタムURLスキームを用いてアプリを起動することがあり、この際に意図通りのURLやパラメータを応答できているかを確認したいテストケースが存在します。カスタムURLスキームとは、 http:// や https:// の代わりに example:// のような独自のプレフィックスを用いて特定のアプリを直接起動できるURLパターンです。これにより、ウェブページや他のアプリから特定のアプリ内の特定のページや機能を直接呼び出すことが可能になります。 Playwri

    PlaywrightでカスタムURLスキームへの遷移をテストする
  • CircleCI™において、モノレポ構成のリポジトリで必要なテストのみ実行する方法 - BOOK☆WALKER inside

    こんにちは。 メディアサービス開発部 Webアプリケーション開発課のフサギコ(髙﨑)です。 Ruby on Railsによるバックエンドの実装運用と、AWSによるサービスインフラの設計構築を中心とした、いわゆるバックエンド方面のテックリードとして働いています。 最近はNext.jsで書かれた運用者向けの管理画面までも自分たちで改修するようになってきました。 記事ではCircleCIにおいて、モノレポ構成のリポジトリで必要なテストのみ実行するようなconfigファイルの書き方についてお話します。 モノレポ構成のリポジトリでは必要なテストだけを実行したい 複数のソフトウェアが相互に連携して動くようなプロダクトではしばしば、一つのリポジトリをディレクトリ分けしてそれぞれのソフトウェアを配置するモノレポ構成が採られます。 モノレポ構成のリポジトリでは多くの場合、複数のソフトウェアが同時に変更され

    CircleCI™において、モノレポ構成のリポジトリで必要なテストのみ実行する方法 - BOOK☆WALKER inside
  • RBSをCIに導入して型の恩恵を得たい - BOOK☆WALKER inside

    こんにちは,相生ゆら(@Little_Rubyist)です.最近配信でクロノトリガーをやっているんですがあまりにも面白すぎてありとあらゆる知人に「クロノトリガーをやれ」と言っています. さて,入社から半年以上経過しましたがその話はまた別でやるとして,私の所属している部署では勉強習慣というのがあって,自分の興味のあることを業務時間中に勉強してもいい時間が存在します.各々色んなことをやっていますが,私はその時間で少しずつRBSを導入しています.まだあまり触れていないプロジェクトなのでコードリーディングをしながらゆっくり入れていこうと思っています. CI導入まで済んだのでこれを一区切りとし,どういったことをやっていたのかをご紹介します. 型導入の準備 とってもシンプルです.steep, rbs_rails, katakata_irbをGemfileに追加します.ライブラリの型も必要なので,rbs

    RBSをCIに導入して型の恩恵を得たい - BOOK☆WALKER inside
  • BigQueryをオンデマンド料金モデルからBigQuery Editionsへ移行した話 - BOOK☆WALKER inside

    こんにちは、メディアサービス開発部サービス分析課の佐藤です。ブックウォーカー社で全社横断のデータ基盤を構築しています。 今年の3月末にBigQueryの新料金体系、BigQuery Editionsが発表されました。これに伴い来月の7月5日より従来の定額モデルが終了し、オンデマンド料金モデルも25%の値上げとなります。 cloud.google.com これまでブックウォーカー社ではスキャンサイズのバーストを防ぐためにGoogle Cloud(GCP)の「割り当てと上限」を利用し、BigQueryにおいてプロジェクト全体のスキャンサイズとユーザーごとのスキャンサイズを制限していました。これはプロジェクト全体、あるいはユーザーが設定したスキャンサイズを上回るとそれ以上の処理を停止させるという制限です。 Webサービス開発に関わる分析業務ではGoogleAnalyticsのエクスポートログやW

    BigQueryをオンデマンド料金モデルからBigQuery Editionsへ移行した話 - BOOK☆WALKER inside
  • RubyKaigi2023LTに出したプロポーザルを公開します - BOOK☆WALKER inside

    こんにちは,相生ゆら(@Little_Rubyist)です.RubyKaigi2023楽しかったですね.RubyKaigi2023自体のレポートは他社員が書いてくれている*1*2し,私は私でプライベートのブログにあげてしまったので今回はLTのプロポーザルの話やLTの話をしようと思います.RubyKaigi2024のLTなどにプロポーザルを出してみたい人の参考になれば幸いです. プロポーザルに書いた内容 Title Adding custom rule for Rubocop in the 2 month of employment Abstract I will talk about how I contributed to the team by developing about "nice to have, but not too much trouble without" rule

    RubyKaigi2023LTに出したプロポーザルを公開します - BOOK☆WALKER inside
  • RubyKaigiにはじめて参加してきた感想 - BOOK☆WALKER inside

    こんにちは、メディアサービス開発部Webアプリケーション開発課のシゲタです。5/11~5/13に長野県松市で開催されたRubyKaigi2023に参加してきました。RubyKaigiへの参加は今回がはじめてなので、参加してみてどうだったのか等の感想をお話しします。RubyKaigiの雰囲気が少しでも伝えられれば幸いです。 ハイレベルで刺激を得られるセッション 気になったセッションについて LT Implementing "++" operator, stepping into parse.y Fix SQL N+1 queries with RuboCop Learn Ractor 連日開催されるアフターパーティ 話したこと ご飯や観光など 感想 ハイレベルで刺激を得られるセッション わかってはいましたがやはりRubyKaigiのセッションはハイレベルでした。 Ruby言語体の仕様や機

    RubyKaigiにはじめて参加してきた感想 - BOOK☆WALKER inside
  • RubyKaigi 2023に社員4名で参加 & LTで1名登壇しました - BOOK☆WALKER inside

    こんにちは。 メディアサービス開発部 Webアプリケーション開発課のフサギコ(髙﨑)です。 Ruby on Railsによるバックエンドの実装運用と、AWSによるサービスインフラの設計構築を中心とした、いわゆるテックリードとして働いています。 記事では、2023年5月11日から13日にかけて、長野県松市で開催されたRubyKaigi 2023へ参加したことについてお話します。 RubyKaigiとは 社員4名で参加 1名がLT登壇 見に行った講演からいくつか The future vision of Ruby Parser "Ractor" reconsidered Optimizing YJIT’s Performance, from Inception to Production Ruby JIT Hacking Guide 松はいい街だった まとめ RubyKaigiとは Ru

    RubyKaigi 2023に社員4名で参加 & LTで1名登壇しました - BOOK☆WALKER inside
  • RuboCopにカスタムルールを実装する方法について - BOOK☆WALKER inside

    はじめに こんにちは、メディアサービス開発部Webアプリケーション開発課のシゲタです。 記事ではRubocopにカスタムルールを実装する方法について解説します。 Rubyにはコードの静的解析やフォーマットをしてくれるRuboCopというgemが存在します。リンターとして標準的なコーディングスタイルを提案してくれるRuboCopですが、自分でカスタムルールを実装してRuboCopの静的解析に追加することもできます。 チーム開発におけるデファクトスタンダードでもあるRuboCopですが、そのルールを自分で実装したことがある方はおそらく少ないのではないでしょうか。かくいう私も先日初めてカスタムルールを実装してみる機会がありました。 いくつか実装することでRuboCopの仕組みやコード解析について学びがあったり、ルール実装の勘所がわかってきたので、今回併せてご紹介できればと思います。 はじめに

    RuboCopにカスタムルールを実装する方法について - BOOK☆WALKER inside
  • GitHub ActionsからBigQueryのリモート関数をデプロイする - BOOK☆WALKER inside

    こんにちは、メディアサービス開発部サービス分析課の佐藤です。ブックウォーカー社で全社横断のデータ基盤を構築しています。 前回SlackからGitHub Actionsを実行する記事を投稿しましたが、今回はそのGitHub Actionsを使ってデプロイしていたBigQueryのリモート関数の利用ケースについて説明していきます。 背景 「外部のAPIから得たデータをBigQueryへ投入するやり方」の検討 Terraformでデプロイ用のServiceAccountを作成 BigQueryに外部接続とデータセット作成 GitHub Actionsにデプロイ用ワークフローを作る ランタイム判定 エントリポイント判定 全体の流れをまとめて提供する 終わりに 背景 現在、BigQueryのデータを加工する集計バッチについてはスケジュールクエリを各自に好き勝手に作成してもらう運用にしています。 スケ

    GitHub ActionsからBigQueryのリモート関数をデプロイする - BOOK☆WALKER inside
    takayamaki
    takayamaki 2023/03/17
    bqのリモート関数ってこういう使い方できるんだなぁ、と思った
  • 社内向けのgemをGitHub Packagesのプライベートgemとしてpublishする方法 - BOOK☆WALKER inside

    こんにちは。 メディアサービス開発部 Webアプリケーション開発課のフサギコ(髙﨑)です。 Ruby on Railsによるバックエンドの実装運用と、AWSによるサービスインフラの設計構築を中心とした、いわゆるテックリードのような立ち位置で働いています。 2月11日から12日にかけて、アイドルマスターのM@STERS OF IDOL WORLD!!!!! 2023で東京ドームにいたのですが、その余韻が未だに抜けきりません。毎年となるとさすがに大変そうですが、2~3年に1度くらいの頻度ではぜひ、M@STERS OF IDOL WORLD、開催してほしいですね。次は2025年でしょうか。 さて、記事では社内向けのgemGitHub Packagesのプライベートgemとしてpublishし、ローカルでの開発時やCI/CD時にインストールする方法についてお話します。 共通なコードをgem化し

    社内向けのgemをGitHub Packagesのプライベートgemとしてpublishする方法 - BOOK☆WALKER inside
    takayamaki
    takayamaki 2023/03/10
    GitHub Packagesでrubyのプライベートgemを提供・利用する方法がどこ見ても意外と端的にはまとまってないな、と思ったので書きました
  • 入社して9ヶ月目の所感 - BOOK☆WALKER inside

    こんにちは、メディアサービス開発部モバイルアプリケーション開発課でAndroidエンジニアをしている金森です。2022年の5月に中途入社し新年を迎え、9ヶ月が経ちました。 モバイルアプリケーション開発課のAndroidチームで9ヶ月仕事を通して知ったこと感じたことを書いていきたいと思います。 転職希望者にとって有益な情報になれば幸いです。 現在までの経緯 基情報 アプリチームについて 担当サービス 開発環境 開発プロセス ペアプロ 新規プロジェクト参画の機会 感じたこと 新しい技術に対しての姿勢 圧倒的ユーザー目線 まとめ 現在までの経緯 前職では受託開発会社でフロントエンドAndroid開発に従事していました。その会社に新卒で入社してからの2年間で最初はVue.jsを用いたフロントエンド開発を行っていて途中から人手不足という理由もありAndroidも触ってみないかというお声がかかりA

    入社して9ヶ月目の所感 - BOOK☆WALKER inside
  • 新卒社員だった私が勉強会に飛び込んでみたら、その良さを実感した話 - BOOK☆WALKER inside

    こんにちは、読書メーターの運営を担当している永田です。 今回は、昨年度に参加したGoogle re:Workの勉強会についてお話ししたいと思いします。 私は2021年4月に新卒社員としてブックウォーカーに入社し、配属直後にこの勉強会に参加しました。 今振り返っても参加できてよかったと思える経験だったので、なぜ参加してよかったと感じたかを新卒社員だったからこその目線で紹介できればと思います。 Google re:Workとは Google re:Workとはグーグルをはじめとするさまざまな組織の働き方の先進事例、研究、アイデアを集めたウェブサイトです。 https://rework.withgoogle.com/jp/ 週1回開催される勉強会では、これを一緒に読み、気付きや感想を共有していきます。 私が読書メーターチームに加わったタイミングと、エンジニアの方たちがその勉強会を始めるタイミング

    新卒社員だった私が勉強会に飛び込んでみたら、その良さを実感した話 - BOOK☆WALKER inside
  • テレワークの活用で育児・地方移住をしても勤務継続できた話 - BOOK☆WALKER inside

    こんにちは、メディア事業部リレーション課でディレクターをしている池田です。 主にニコニコ漫画読書メーターの課題整理・開発案件の要件定義、プロジェクトの進行管理をしています。 記事では、テレワークを活用することで、育児・地方移住をしても継続して勤務ができたことについてお話します。 育児をしながらの勤務、都内以外の住居での勤務を検討・模索されている方のヒントになれば幸いです。 これまでの働き方 ライフスタイル・環境の変化 あたらしい働き方の選択 育児休業の取得 テレワークを選択して通勤時間の短縮 裁量労働制・子どものための看護休暇の活用 社内ルール改訂による後押しでの地方移住の選択 あたらしい働き方を選択することでの不安 そもそも育児の比重をあげることで、キャリアパスが狭まらないか?育休後も活躍できるのか? 対面で行っていた打合せ以外の立ち話や細かいコミュニケーションがリモートで実現できる

    テレワークの活用で育児・地方移住をしても勤務継続できた話 - BOOK☆WALKER inside
  • あまり知られていないYAMLのタグについて - BOOK☆WALKER inside

    こんにちは、メディアサービス開発部Webアプリケーション開発課のシゲタです。 YAMLには値に型を明示するためのタグという仕様があります。 RubyYAMLライブラリもこれを拡張した機能を提供しており、タグで指定したクラスのインスタンスに値を変換することができます。面白い機能ではありますがあまり知られていなさそうなので、今回ご紹介したいと思います。 タグを指定する YAMLにタグを指定する場合には、以下のように!ruby/クラス名という形式で記述します。スペースを挟んだ次の値がインスタンスの初期値になります。 require 'yaml' YAML.load(<<~EOS, permitted_classes: [Regexp, Range]) --- array: !ruby/array [1, 2, 3] hash: !ruby/hash {foo: 1, bar: 2} regex

    あまり知られていないYAMLのタグについて - BOOK☆WALKER inside
    takayamaki
    takayamaki 2023/02/07
    めったに使わないけど知ってると稀に救われるかもしれない知識だ
  • ニコニコ漫画をRuby3.2.0に更新してYJIT有効化するとパフォーマンス改善された話 - BOOK☆WALKER inside

    はじめに こんにちは。ニコニコ漫画の開発をしているyotaとtukiyoです。 この記事はペアブロギングによって執筆しています。 記事ではニコニコ漫画で利用しているRubyのバージョンを3.2.0へ更新したこととYJITの有効化によるパフォーマンスの変化について紹介します。 ニコニコ漫画のインフラ構成についてにある通り、ニコニコ漫画は4つのプロダクトによって運用されています。 このうち記事の対象となるのは、Rubyを利用している「新バックエンド」と「課金サブシステム」になります。 今回、Rubyのバージョンが3.2.0になったことでYJITが実験段階ではなくなりました。*1 ニコニコ漫画のバックエンドシステム内では複雑な処理も多く、恩恵に与ることを期待して更新を行いました。 結果として大きなパフォーマンスの向上が見られました。 はじめに 更新に関する作業 更新前後のパフォーマンス比較

    ニコニコ漫画をRuby3.2.0に更新してYJIT有効化するとパフォーマンス改善された話 - BOOK☆WALKER inside
    takayamaki
    takayamaki 2023/01/25
    平均レスポンスタイムでこれだけ速くなっているということは99パーセンタイルとか凄い差が出てそう
  • 会社ブログの記事を"ペアブロギング"してみた - BOOK☆WALKER inside

    こんにちは。 メディアサービス開発部、Webアプリケーション開発課のフサギコ(髙﨑)です。 Ruby on Railsによるバックエンドの実装運用と、AWSによるサービスインフラの設計構築を中心とした、いわゆるテックリードのような立ち位置で働いています。 記事では、ブログへ公開する記事を執筆するにあたって、二人で共同執筆してみたことについてお話します。 会社ブログって書くの難しくない? 会社ブログに記事を書くのは難しい、億劫である、と感じる人も多いのではないかと思います。 では、そう感じるのはなぜでしょうか。 普段やっていることが記事を書くに値すると思えない 書く意義が感じられない 記事文の流れを整理するのが難しい 書いているうちに規模が大きくなり、修正方針が二転三転してしまって終わらなくなる せっかく書いたのにレビューでコメントが多すぎてやる気が削がれてしまう などが挙げられるんじ

    会社ブログの記事を"ペアブロギング"してみた - BOOK☆WALKER inside
    takayamaki
    takayamaki 2022/11/17
    書きました
  • いくつものDBからデータをかき集めるには - BOOK☆WALKER inside

    こんにちは、メディアサービス開発部サービス分析課の佐藤です。推しTRPGはD&D5版です。今年4月に入社し、事業横断データ基盤を構築しています。 今回はブックウォーカー社内でデータ基盤を構築するにあたって身につけたAWS関連の知識、主にRDSのexport snapshot to S3、Glue Job、AWS Serverless Application Model (以下SAMと略します)周りについて書いていきます。 背景 手法1. 定期的なデータ抽出 手法2. 外部接続 手法3. Change Data Capture システム構成の詳細 Export Snapshot to S3 AWS Glue Job Step FunctionsとEvent Bridge SAMとCI/CD 最終成果物とシステム運用 課題 parquetのデータ型 データの更新頻度 最後に 背景 株式会社ブッ

    いくつものDBからデータをかき集めるには - BOOK☆WALKER inside
  • Next.jsのコンテナからVercelへの移行とISRを有効化する際のハマりどころ - BOOK☆WALKER inside

    こんにちは。 メディアサービス開発部Webアプリケーション開発課でフロントエンドエンジニアをしているnerikeshiです。主にTypeScriptReactアプリケーションの開発をしています。 記事では、コンテナで稼働させていたNext.jsアプリケーションのVercelへの移行と、それに付随して行ったISR導入時に起きたハマりどころについてお話しします。 記事は同じWebアプリケーション開発課でバックエンドを担当しているフサギコ(髙﨑)との共同執筆記事です。 一迅プラスとは 以前の一迅プラス フロントエンドに関するインフラ構成の見直し Vercelへ移設するにあたって遭遇した迷いどころ、ハマりどころ DNSレコードの設定 SSL証明書 ISRページが404になったときのrevalidateの挙動について バックエンドがフロントエンドからのアクセスをIPアドレスで制限できない 一迅

    Next.jsのコンテナからVercelへの移行とISRを有効化する際のハマりどころ - BOOK☆WALKER inside
  • サーバダウンしたニコニコ漫画に何が起きていたのか - BOOK☆WALKER inside

    こんにちは。メディアサービス開発部Webアプリケーション開発課の奥川です。ニコニコ漫画のバックエンド開発を担当しています。 2021年初頭、ニコニコ漫画である作品の連載が開始されました。それに端を発する数カ月間のサーバ障害により、ユーザーの皆様には大変ご迷惑をおかけしました。 少し前の話にはなりますが、当時ニコニコ漫画のサーバでは何が起こっていたのか、どのような対応を行ったのかを振り返ってみたいと思います。 1号棟(事の起こり) 2021/01/08 問題の作品(以後、「作品I」*1と記述します)の第1話が投稿されます。その過激な内容からSNSなどでは一部で話題になりましたが、まだニコニコ漫画へのアクセスも穏やかなものでした。 2021/01/22 その2週間後、「第2話(前編)」の公開から事件が起こります。 ピークタイム最中の12:22頃から、まずmemcachedがCPU Utiliz

    サーバダウンしたニコニコ漫画に何が起きていたのか - BOOK☆WALKER inside
    takayamaki
    takayamaki 2022/10/28
    人妻たちとの壮絶な戦いの記録