サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
猫
developers.bookwalker.jp
こんにちは。メディアサービス開発部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化し
こんにちは、メディア事業部リレーション課でディレクターをしている池田です。 主にニコニコ漫画・読書メーターの課題整理・開発案件の要件定義、プロジェクトの進行管理をしています。 本記事では、テレワークを活用することで、育児・地方移住をしても継続して勤務ができたことについてお話します。 育児をしながらの勤務、都内以外の住居での勤務を検討・模索されている方のヒントになれば幸いです。 これまでの働き方 ライフスタイル・環境の変化 あたらしい働き方の選択 育児休業の取得 テレワークを選択して通勤時間の短縮 裁量労働制・子どものための看護休暇の活用 社内ルール改訂による後押しでの地方移住の選択 あたらしい働き方を選択することでの不安 そもそも育児の比重をあげることで、キャリアパスが狭まらないか?育休後も活躍できるのか? 対面で行っていた打合せ以外の立ち話や細かいコミュニケーションがリモートで実現できる
はじめに こんにちは。ニコニコ漫画の開発をしている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ファイル、様々なインプットが使え
こんにちは。アプリ開発グループの嶋田です。ニコニコ漫画、読書メーターのAndroidアプリ開発を担当しています。今期よりニコニコ漫画ではRxJavaからCoroutinesへの移行を積極的に進めています。この記事では、移行に至った背景から導入までを紹介していきます。 背景 CoroutinesにはRxJavaに対して既知のメリット*1が存在しますが、それらに加えて次の3点が移行を決めた大きな理由です。 将来性(Jetpackとの統合) ニコニコ漫画が純kotlinプロジェクト 非同期処理の統一 Android開発におけるCoroutinesの将来性はRxJavaに対して明確な強みと言えます。徐々にCoroutinesをサポートしたライブラリが提供され始めています。特にgoogleはKotlin firstを宣言したこともあってか積極的に展開しており、Jetpackライブラリの多くにはCor
こんにちは。 メディアサービス開発部バックエンド開発グループのフサギコ(髙﨑)です。 Ruby on Railsによるバックエンドの実装運用と、AWSによるサービスインフラの設計構築を中心とした、いわゆるテックリードのような立ち位置で働いています。 CircleCIでもOpenID ConnectのIDプロバイダ機能がリリースされた 私が書いた一つ前の記事では、GitHub ActionsとAWS IAMをOpenID Connectを使って連携させ、TypeScriptで記述したアプリケーション(Next.js, Serverless Framework)のデプロイや、TerrafromのリポジトリにPRを出した際の自動planを永続的アクセスキー不要で行っているとお話ししました。 developers.bookwalker.jp 一方で、TypeScriptやTerraform以外のア
こんにちは。 メディアサービス開発部バックエンド開発グループのフサギコ(髙﨑)です。 Ruby on Railsによるバックエンドの実装運用と、AWSによるサービスインフラの設計構築を中心とした、いわゆるテックリードのような立ち位置で働いています。 本記事では、GitHub ActionsとAWS IAMをOpenID Connectを使って連携させ、AWSのAPIをアクセスキーなしで操作する利点と、その仕組みをTerraformで構築する手順についてお話します。 訂正とお詫び(2022/3/22) GitHub Actionsのワークフローを作成するの項において、ワークフロー単位のpermissionsとジョブ単位のpermissionsの関係について正しくない記述がありましたので訂正しました。 正しくない内容を記述してしまったことについて訂正してお詫びします。 GitHub Actio
こんにちは。デザイナーの吉田です。 普段はBOOK☆WALKERストアのバナーやキャンペーンLPのデザインを主に担当しています。 さて今回はBOOK☆WALKERストア11周年キャンペーンLPのつくりかたを紹介します。 キャンペーン自体は昨年(2021年)12月に終了してしまったのですが、ページは閲覧可能ですので、ぜひ見てみてくださいね。 制作の経緯 BOOK☆WALKERストアでは、周年ごとに毎年キャンペーンを打ち出しており、昨年(2021年)は11周年だったため、11の数字に擬えて各部門を設けベストイレブン形式で紹介するという企画内容でした。 企画内容がとても面白く、制作に入る前からワクワクしていました。 参考調査 制作にあたり、私自身あまりスポーツに詳しくないのでJリーグの各チームのWebサイトをチェックしたり、サッカーに関連するものを調べました。 やはりスポーツなので、色はチームカ
こんにちは。 メディアサービス開発部バックエンド開発グループのフサギコ(髙﨑)です。 Ruby on Railsによるバックエンドの実装運用と、AWSによるサービスインフラの設計構築を中心とした、いわゆるテックリードのような立ち位置で働いています。 本記事では前記事のニコニコ漫画のインフラ構成についてに続いて、読書メーターのサービスインフラの概要について軽くご紹介したいと思います。 読書メーターについて 読書メーターは、2008年5月に開設された日本最大級の読書コミュニティサイトです。 単純な読書記録や感想投稿に留まらず、ユーザ間で交流ができること、出版各社さまからご提供いただき著者さまのサイン本や発売前に校閲校正をする際の仮刷りであるプルーフと呼ばれる段階の本が貰える献本プレゼント企画を行っていることも特徴的な点です。 読書メーターの構成 読書メーターは下記の6つのコンポーネントから構成
こんにちは。アプリ開発グループの楠本です。ニコニコ漫画や読書メーターのiOSアプリ開発を担当しています。 先日株式会社ドワンゴからブックウォーカーへアプリ移管を行い、無事何事もなく完了することができました。 本記事ではiOSアプリの移管についてをご紹介致します。この記事を見た人に移管に関する具体的な作業イメージを持ってもらえれば幸いです。 ※この記事の情報は2022年1月時点のものとなります。 公式のアプリ譲渡の概要も合わせてご覧ください。 https://help.apple.com/app-store-connect/#/deved688524f 目次 事前準備 リポジトリなどに含まれるチームIDを譲渡先のチームIDに変更 ユニバーサルリンクのapple-app-site-associationに譲渡先のチームIDを追加 App情報を保存 譲渡先のApple Developer登録 ~
次のページ
このページを最初にブックマークしてみませんか?
『BOOK☆WALKER inside』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く