サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
デスク環境を整える
developers.bookwalker.jp
はじめに こんにちは、ドワンゴになった相生です。絶対会場で「ブックウォーカーです」っていうな……って思ってます。しかしこのブログ自体は BOOK☆WALKER insideでいいんだろうか。 RubyKaigiですね ですね。松山。もう明後日から始まりますが周りの友人たちは早速各々の移動手段で四国入りしていそうでした。すごい。ruby-jpでもRubyKaigiに向けて気持ちを高めていそうで話題がRubyKaigiばかりですが、グルメ記事の少なさを憂いている人がそこそこいました。これは記事の書き時! そんなわけで合併して人数も増えたので知見のある人を募って美味しい場所を聞いてみました。ぜひお役立てください。 瀬戸内料理 金兵衛 リーズナブルに美味しい海鮮が食べられるとのこと。道後温泉が近いということは会場も近いので行きやすそうな気配がする……。ランチもありそうです!便利! dogo-kin
こんにちは。 株式会社ドワンゴ BW開発本部 サービス開発部 Webサービス開発セクションのフサギコ(髙﨑)です。 Ruby on Railsによるバックエンドの実装運用とAWSによるサービスインフラの設計構築を中心とした、いわゆるバックエンド方面のテックリードとしてニコニコ漫画を開発しています。 2025年4月1日をもって株式会社ブックウォーカーが株式会社ドワンゴに吸収合併となりましたので、それに伴い僕も株式会社ドワンゴ所属となりました。 かつて2019年7月1日付けで株式会社トリスタへの出向になるまではドワンゴの所属でしたので、実に5年半ぶりの出戻りです。しかも会社都合。こんな面白いこともあるんだなぁと思いつつ。 このブログもしばらくはBW事業本部ならびにBW開発本部を中心としたメンバーの技術ブログとして運用されると思いますので、引き続きよろしくお願いします。 本記事では、OpenSS
こんにちは。 メディアサービス開発部 Webアプリケーション開発課のフサギコ(髙﨑)、シゲタ、今永です。 普段はニコニコ漫画などのWebサービスのバックエンドをRailsを使って開発しています。 本記事では、2024年10月の25日から26日にかけて開催された、Kaigi on Rails 2024に参加したことについてお話します。 また、本記事は各セクションを複数人で同時並行に執筆するモブブロギングによって書いています。 Kaigi on Railsとは Kaigi on Railsは、主にRuby on Railsを使ってWebサービスを開発している開発者を対象とした技術カンファレンスです。 kaigionrails.org 日々の仕事としてのWebサービス開発の役に立つ考え方、事例の発表に重点を置いている点が、最も有名なRubyに関するカンファレンスであるRubyKaigiとは異なる
こんにちは。 メディアサービス開発部 Webアプリケーション開発課のフサギコ(髙﨑)です。 Ruby on Railsによるバックエンドの実装運用とAWSによるサービスインフラの設計構築を中心とした、いわゆるバックエンド方面のテックリードとしてニコニコ漫画を開発しています。 本記事では、私たちが開発・運用しているRails製のjson APIバックエンドにおいて、mallocの実装としてjemallocを使うように変更したことについてお話します。 背景 私たちが2020年4月から開発しているニコニコ漫画のRails製json APIバックエンド(以降「新バックエンド」と呼びます)は、2010年8月のサービス開始以来サービスを支え続けているPHP製アプリケーションのビジネスロジックに関する式年遷宮的移行先であり、当初よりAWS ECS Fargate上で実行しています。*1 今年8月にリリー
こんにちは。メディアサービス開発部のyotaです。 さて、今週からRubyKaigi 2024が沖縄で開催されますね。 弊社からもチームメンバーが2名参加する予定です。 本記事はそんなチームメンバー向けに「ここオススメだよ」というスポットを紹介するものです。 会場のなはーとから少し離れているところと、車が必要なところを中心に紹介しようと思います。 割と変なラインナップかもしれませんが、よろしくお願いします。 他にも思い出したら更新するかもしれません。 ゆいレールで行きやすいスポット COLOSSEO 262 ラーメン 町の麺処 琉家 国際通り本店 琉球新麺 通堂 小禄本店 ジャッキーステーキハウス 千日 亀かめそば 名代蕎麦処 美濃作 青島食堂 焼膳 タコライスの店 赤とんぼ ウォルフブロイ(WOLFBRAU) Hally's Cafe ここからはゆいレールでは移動が大変 首里殿内(すいど
こんにちは。メディアサービス開発部Webアプリケーション開発課の奥川です。ニコニコ漫画のバックエンド開発を担当しています。 ニコニコ漫画ではe2eテストに Playwright を導入しており、OpenID Connectでの認証フローやAPIテストなど主にiOS/Androidアプリとの連携部分の検証に利用しています。 アプリ連携ではカスタムURLスキームを用いてアプリを起動することがあり、この際に意図通りのURLやパラメータを応答できているかを確認したいテストケースが存在します。カスタムURLスキームとは、 http:// や https:// の代わりに example:// のような独自のプレフィックスを用いて特定のアプリを直接起動できるURLパターンです。これにより、ウェブページや他のアプリから特定のアプリ内の特定のページや機能を直接呼び出すことが可能になります。 Playwri
こんにちは。 メディアサービス開発部 Webアプリケーション開発課のフサギコ(髙﨑)です。 Ruby on Railsによるバックエンドの実装運用と、AWSによるサービスインフラの設計構築を中心とした、いわゆるバックエンド方面のテックリードとして働いています。 最近はNext.jsで書かれた運用者向けの管理画面までも自分たちで改修するようになってきました。 本記事ではCircleCIにおいて、モノレポ構成のリポジトリで必要なテストのみ実行するようなconfigファイルの書き方についてお話します。 モノレポ構成のリポジトリでは必要なテストだけを実行したい 複数のソフトウェアが相互に連携して動くようなプロダクトではしばしば、一つのリポジトリをディレクトリ分けしてそれぞれのソフトウェアを配置するモノレポ構成が採られます。 モノレポ構成のリポジトリでは多くの場合、複数のソフトウェアが同時に変更され
こんにちは,相生ゆら(@Little_Rubyist)です.最近配信でクロノトリガーをやっているんですがあまりにも面白すぎてありとあらゆる知人に「クロノトリガーをやれ」と言っています. さて,入社から半年以上経過しましたがその話はまた別でやるとして,私の所属している部署では勉強習慣というのがあって,自分の興味のあることを業務時間中に勉強してもいい時間が存在します.各々色んなことをやっていますが,私はその時間で少しずつRBSを導入しています.まだあまり触れていないプロジェクトなのでコードリーディングをしながらゆっくり入れていこうと思っています. CI導入まで済んだのでこれを一区切りとし,どういったことをやっていたのかをご紹介します. 型導入の準備 とってもシンプルです.steep, rbs_rails, katakata_irbをGemfileに追加します.ライブラリの型も必要なので,rbs
こんにちは、メディアサービス開発部サービス分析課の佐藤です。ブックウォーカー社で全社横断のデータ基盤を構築しています。 今年の3月末にBigQueryの新料金体系、BigQuery Editionsが発表されました。これに伴い来月の7月5日より従来の定額モデルが終了し、オンデマンド料金モデルも25%の値上げとなります。 cloud.google.com これまでブックウォーカー社ではスキャンサイズのバーストを防ぐためにGoogle Cloud(GCP)の「割り当てと上限」を利用し、BigQueryにおいてプロジェクト全体のスキャンサイズとユーザーごとのスキャンサイズを制限していました。これはプロジェクト全体、あるいはユーザーが設定したスキャンサイズを上回るとそれ以上の処理を停止させるという制限です。 Webサービス開発に関わる分析業務ではGoogleAnalyticsのエクスポートログやW
こんにちは、メディアサービス開発部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言語本体の仕様や機
こんにちは。 メディアサービス開発部 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
こんにちは、メディアサービス開発部サービス分析課の佐藤です。ブックウォーカー社で全社横断のデータ基盤を構築しています。 前回SlackからGitHub Actionsを実行する記事を投稿しましたが、今回はそのGitHub Actionsを使ってデプロイしていたBigQueryのリモート関数の利用ケースについて説明していきます。 背景 「外部のAPIから得たデータをBigQueryへ投入するやり方」の検討 Terraformでデプロイ用のServiceAccountを作成 BigQueryに外部接続とデータセット作成 GitHub Actionsにデプロイ用ワークフローを作る ランタイム判定 エントリポイント判定 全体の流れをまとめて提供する 終わりに 背景 現在、BigQueryのデータを加工する集計バッチについてはスケジュールクエリを各自に好き勝手に作成してもらう運用にしています。 スケ
こんにちは、メディアサービス開発部サービス分析課の佐藤です。ブックウォーカー社で横断データ基盤を構築しています。 この記事ではSlackからGitHub Actionsを実行するためにSlack appを作った時のことを書いていきます。 外観図 背景 Slack appの準備 GitHub Appsの準備 GCP Cloud Functionsにコマンド用の関数を用意する 1. 秘密鍵からJSON Web Token(JWT) を生成する 2. install access tokenを取得する 3. repository dispatchにPOSTにする GitHub Actionsにrepository dispatchのworkflowを作る 終わりに 背景 現在サービス分析課が構築しているデータ基盤は複数のサービスのデータを取り込んでおり、多くの社員が利用しています。 この基盤はG
こんにちは。 メディアサービス開発部 Webアプリケーション開発課のフサギコ(髙﨑)です。 Ruby on Railsによるバックエンドの実装運用と、AWSによるサービスインフラの設計構築を中心とした、いわゆるテックリードのような立ち位置で働いています。 2月11日から12日にかけて、アイドルマスターのM@STERS OF IDOL WORLD!!!!! 2023で東京ドームにいたのですが、その余韻が未だに抜けきりません。毎年となるとさすがに大変そうですが、2~3年に1度くらいの頻度ではぜひ、M@STERS OF IDOL WORLD、開催してほしいですね。次は2025年でしょうか。 さて、本記事では社内向けのgemをGitHub Packagesのプライベートgemとしてpublishし、ローカルでの開発時やCI/CD時にインストールする方法についてお話します。 共通なコードをgem化し
こんにちは、メディア事業部リレーション課でディレクターをしている池田です。 主にニコニコ漫画・読書メーターの課題整理・開発案件の要件定義、プロジェクトの進行管理をしています。 本記事では、テレワークを活用することで、育児・地方移住をしても継続して勤務ができたことについてお話します。 育児をしながらの勤務、都内以外の住居での勤務を検討・模索されている方のヒントになれば幸いです。 これまでの働き方 ライフスタイル・環境の変化 あたらしい働き方の選択 育児休業の取得 テレワークを選択して通勤時間の短縮 裁量労働制・子どものための看護休暇の活用 社内ルール改訂による後押しでの地方移住の選択 あたらしい働き方を選択することでの不安 そもそも育児の比重をあげることで、キャリアパスが狭まらないか?育休後も活躍できるのか? 対面で行っていた打合せ以外の立ち話や細かいコミュニケーションがリモートで実現できる
こんにちは、メディアサービス開発部Webアプリケーション開発課のシゲタです。 YAMLには値に型を明示するためのタグという仕様があります。 RubyのYAMLライブラリもこれを拡張した機能を提供しており、タグで指定したクラスのインスタンスに値を変換することができます。面白い機能ではありますがあまり知られていなさそうなので、今回ご紹介したいと思います。 タグを指定する 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
はじめに こんにちは。ニコニコ漫画の開発をしているyotaとtukiyoです。 この記事はペアブロギングによって執筆しています。 本記事ではニコニコ漫画で利用しているRubyのバージョンを3.2.0へ更新したこととYJITの有効化によるパフォーマンスの変化について紹介します。 ニコニコ漫画のインフラ構成についてにある通り、ニコニコ漫画は4つのプロダクトによって運用されています。 このうち本記事の対象となるのは、Rubyを利用している「新バックエンド」と「課金サブシステム」になります。 今回、Rubyのバージョンが3.2.0になったことでYJITが実験段階ではなくなりました。*1 ニコニコ漫画のバックエンドシステム内では複雑な処理も多く、恩恵に与ることを期待して更新を行いました。 結果として大きなパフォーマンスの向上が見られました。 はじめに 更新に関する作業 更新前後のパフォーマンス比較
こんにちは。 メディアサービス開発部、Webアプリケーション開発課のフサギコ(髙﨑)です。 Ruby on Railsによるバックエンドの実装運用と、AWSによるサービスインフラの設計構築を中心とした、いわゆるテックリードのような立ち位置で働いています。 本記事では、本ブログへ公開する記事を執筆するにあたって、二人で共同執筆してみたことについてお話します。 会社ブログって書くの難しくない? 会社ブログに記事を書くのは難しい、億劫である、と感じる人も多いのではないかと思います。 では、そう感じるのはなぜでしょうか。 普段やっていることが記事を書くに値すると思えない 書く意義が感じられない 記事本文の流れを整理するのが難しい 書いているうちに規模が大きくなり、修正方針が二転三転してしまって終わらなくなる せっかく書いたのにレビューでコメントが多すぎてやる気が削がれてしまう などが挙げられるんじ
こんにちは、メディアサービス開発部サービス分析課の佐藤です。推し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のデータ型 データの更新頻度 最後に 背景 株式会社ブッ
こんにちは。 メディアサービス開発部Webアプリケーション開発課でフロントエンドエンジニアをしているnerikeshiです。主にTypeScriptでReactアプリケーションの開発をしています。 本記事では、コンテナで稼働させていたNext.jsアプリケーションのVercelへの移行と、それに付随して行ったISR導入時に起きたハマりどころについてお話しします。 本記事は同じWebアプリケーション開発課でバックエンドを担当しているフサギコ(髙﨑)との共同執筆記事です。 一迅プラスとは 以前の一迅プラス フロントエンドに関するインフラ構成の見直し Vercelへ移設するにあたって遭遇した迷いどころ、ハマりどころ DNSレコードの設定 SSL証明書 ISRページが404になったときのrevalidateの挙動について バックエンドがフロントエンドからのアクセスをIPアドレスで制限できない 一迅
こんにちは。メディアサービス開発部Webアプリケーション開発課の奥川です。ニコニコ漫画のバックエンド開発を担当しています。 2021年初頭、ニコニコ漫画である作品の連載が開始されました。それに端を発する数カ月間のサーバ障害により、ユーザーの皆様には大変ご迷惑をおかけしました。 少し前の話にはなりますが、当時ニコニコ漫画のサーバでは何が起こっていたのか、どのような対応を行ったのかを振り返ってみたいと思います。 1号棟(事の起こり) 2021/01/08 問題の作品(以後、「作品I」*1と記述します)の第1話が投稿されます。その過激な内容からSNSなどでは一部で話題になりましたが、まだニコニコ漫画へのアクセスも穏やかなものでした。 2021/01/22 その2週間後、「第2話(前編)」の公開から事件が起こります。 ピークタイム最中の12:22頃から、まずmemcachedがCPU Utiliz
こんにちは. メディアサービス開発部 Webアプリケーション開発課の しののめ(佐々木) です. 今年の4月にブックウォーカーへバックエンドエンジニアとして中途入社し,この10月で半年になりました. 入社の経緯から半年仕事をしてみての状況と働いてみて思ったことを書いていこうと思います. 転職活動を考えている/している方に少しでもブックウォーカーでの仕事や環境についてイメージを持っていただけたら幸いです. 入社の経緯から現在まで 入社の経緯 オンボーディング期間 チームへ配属されてのOJT 入社して半年経ってみて 技術や環境について思ったこと Ruby / Ruby on Rails CI/CD 楽をするために苦労をする 技術への好奇心 まとめ カジュアル面談してみませんか? 入社の経緯から現在まで 入社の経緯 これまではWebベンチャーやSESでAWSを利用したインフラの設計構築を中心にS
こんにちは、メディアサービス開発部Webアプリケーション開発課のシゲタです。普段はRuby on Railsによるバックエンドの開発に携わっています。 先日とあるRubyメソッドの仕様が気になりコードリーディングに挑戦したのですが、当該メソッドがどこに何という名前で定義されているのかわからず、定義にたどり着くのに時間を要してしまいました。 同じようなポイントでつまづいた方、これからコードリーディングを始めようと思っている方のために、本記事ではRubyメソッドの実装を参照する方法をいくつかご紹介したいと思います。 pry-docで参照する リファレンスから参照する Rubyリポジトリをgit cloneしてローカルから参照する githubで検索して参照する まとめ 最後に pry-docで参照する pryにpry-docをインストールして$コマンドを使うことで、C言語で実装されたRubyメ
こんにちは。メディアサービス開発部Webアプリケーション開発課のnerikeshiです。 株式会社ブックウォーカーでは、株式会社一迅社様の一迅プラスの開発を請け負っています。本記事では、その連載プラットフォームで稼働中の管理ツールのエピソード編集機能のご紹介と、それをどのように開発したかについてご紹介します。 エピソード編集機能について 漫画連載プラットフォームの管理ツールにおいて、エピソードの編集機能(連載各話の原稿画像を管理したり、タイトルなどのメタ情報を更新したりする機能)は最も重要な機能だと考えます。今回新規に管理ツールを開発するにあたって、まずその重要なエピソード編集機能の開発からはじめることにしました。 開発着手、ヒアリング 弊社内には作品登録業務を専門に行うチームがあります。手を動かす前に、彼らに日々のエピソード登録業務をどのように行っているかをヒアリングすることにしました。
こんにちは。 メディアサービス開発部、Webアプリケーション開発課のフサギコ(髙﨑)です。 Ruby on Railsによるバックエンドの実装運用と、AWSによるサービスインフラの設計構築を中心とした、いわゆるテックリードのような立ち位置で働いています。 本記事では、2022年の9月8日から9月10日にかけて三重県津市で開催された、RubyKaigi 2022に現地参加したことについてお話しします1。 RubyKaigiとは 実に3年ぶりの物理開催 見に行った講演の感想など Ruby meets WebAssembly Making *MaNy* threads on Ruby Building a Lightweight IR and Backend for YJIT Towards Ruby 4 JIT Ruby debugger - The best investment for y
こんにちは。 メディアサービス開発部Webアプリケーション開発課のフサギコ(髙﨑)です。部署名が変わりました。 Ruby on Railsによるバックエンドの実装運用と、AWSによるサービスインフラの設計構築を中心とした、いわゆるテックリードのような立ち位置で働いています。 本記事では、UTF-8環境下で動くRailsがShift_JISな外部APIと通信する方法についてお話しします。 前提知識 文字コード UTF-8環境下で動くRailsがShift_JISな外部システムと通信するには Shift_JISな外部APIに対してPOSTリクエストする べた書きとしては Railsにおいては Shift_JISで使用できない文字が混ざっていないかをバリデーションする Shift_JISな外部システムからPOSTリクエストを受ける おまけ: ユーザのブラウザにShift_JISでPOSTさせる
メディアサービス開発部モバイルアプリケーション開発課のtukiyo(id: tukiyo320)です。現在はニコニコ漫画のバックエンド開発を担当しています。 本記事では、Webサービスに付き物の定時バッチについて、ニコニコ漫画では現在どのような方針で管理・実行しているかをご紹介します。 ニコニコ漫画の構成おさらい 以下の記事に詳しいですが、ニコニコ漫画のバックエンドは4系統存在しています。どれも現在はAWS上に乗っており、PHPの現行システム以外はECS(fargate)で管理されています。 現行PHP(独自フレームワーク) 新バックエンド(Ruby on Rails) React向けBFF(Nest.js) 課金サブシステム(Ruby on Rails) developers.bookwalker.jp 本記事で扱うのは、ロジックの書き直しを目的とした新バックエンドが持つバッチとなります
こんにちは。 メディアサービス開発部バックエンド開発グループのフサギコ(髙﨑)です。 Ruby on Railsによるバックエンドの実装運用と、AWSによるサービスインフラの設計構築を中心とした、いわゆるテックリードのような立ち位置で働いています。 本記事では株式会社一迅社さまの公式漫画連載サイトであり、ブックウォーカーが開発保守運用を担当している一迅プラスのサービスインフラの概要についてご紹介したいと思います。 もしよければ、前記事のニコニコ漫画のインフラ構成についてならびに読書メーターのインフラ構成についてもご覧ください。 一迅プラスについて 一迅プラスは株式会社一迅社さまが運営する公式漫画連載サービスです。 冒頭試し読みから連載まで、2022/06/10現在で150を超える作品が掲載されています。 一迅プラスのトップページ この一迅プラスにおいてブックウォーカーは開発保守運用を担当し
Data Portalでアプリのデータを可視化しよう こんにちは、メディアサービス開発部アプリ開発グループのタンです。 作ったアプリがどう使われているかは誰しも知りたいですね。頑張ってAnalyticsでイベントを実装して、BigQueryにも連携させたのに、なかなか活用されないケースが多いでしょう。 集めたデータを見る機会も少なく、数字だけで見にくくて解釈するのに時間がかかります。そんな問題を解決するためにGoogleさんがGoogleマーケティングプラットフォームの機能の一つとしてData Portal(旧Data Studio)を2016年にリリースしました。今回はそんなData Portalの簡単な使い方を紹介したいと思います。 事前準備 当たり前ですが、Data Portalを使うにはまずデータが必要です。BigQuery、スプレッドシート、CSVファイル、様々なインプットが使え
次のページ
このページを最初にブックマークしてみませんか?
『BOOK☆WALKER inside』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く