サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
今年の「かわいい」
techblog.locoguide.co.jp
ビジネス開発部のバックエンドエンジニアの伊藤です。主にトクバイのビジネスサイドの開発を担当しています。 Shopify記事の影響もありしばらく前からモジュラモノリスが注目されるようになりました。 我々が開発しているトクバイではモノリシックに構築されており、各機能が密結合になりメンテナンスしづらくなっています。 今回、新機能プロジェクトを担当する上で各機能をモジュール分割・コンポーネント化することを試してみました。 Packwerk PackwerkはShopifyが開発しているGemで、Railsアプリケーションをモジュール分割する手助けをしてくれます。 USAGEに書かれていることを要約すると、大規模なアプリケーションは境界を作り境界間の依存関係をコードレベルで最小にしようということだと考えています。 後述しますが幾つかのエコシステム導入する事で、よりモジュラモノリス化を促すことができま
技術部開発基盤グループの根岸(@negipo)です。ポプマスがサ終してしまいましたね……。 さて、ロコガイドにはさいきん開発基盤グループができました(わいわい)。開発者生産性を向上することで、ロコガイドという組織のもつパフォーマンスを技術的に高めてゆくのがミッションです。直したいところがいっぱいでやる気もいっぱいです。やっていきます! 本稿では最近実行された様々な改善のうち、不安定なテスト(Flaky Test)に対する対応について記述しています。 不安定なテストに対する対応 不安定なテストは名前の通りその結果が非決定論的なテストです。CI/CDパイプライン全体の安定性を損なう不安定なテストに対応していくことで、デプロイ回数が増加し、開発者生産性が向上します。LeanとDevOpsの科学などを参照するまでもなく、CI/CDパイプラインのパフォーマンスを改善することが組織の生産性に直結するこ
技術部・品質向上グループのきしけん(@takeya0x86)です。今回の記事ではトクバイアプリの自動テストに導入したダッシュボードについて解説します。 トクバイアプリのE2E自動テストについて トクバイアプリのE2EテストではSaaSの自動テストツールであるMagicPodを使用しています。詳しくは前回の記事をご覧ください。この記事ではこのMagicPodについて、さらに進んだ活用方法としてダッシュボードを紹介します。 現在のMagicPodの使い方 まず、現在MagicPodをどのように使っているかについて簡単に解説します。 テスト対象はAndroid、iOSそれぞれのネイティブアプリです。テストの分類としてはリグレッションテストを自動化の対象にしており、毎回のリリース内容に関係なく同じ内容のテストを実行しています。テストを実行するタイミングは、毎日夜間の定期実行とPull Reques
はじめに こんにちは、ロコガイドではバックエンドエンジニアとして働いている高江洲です。 エンジニアといえば好きなエディタやIDEなど開発ツールにこだわりを持っている方も多いのではないでしょうか。私も様々なツールを試用しては乗り換え、また新しいものを試すといったことを繰り返してきました。そういった中でここ1年の間に新しく使い始めたツールを3つ紹介します。 私がメインで利用している端末がMacなので、主にMac向けのツールでライセンスにフリープランがあるものをピックアップしています。 Fig Figはターミナル向けの補助ツールです。現在はMac OSのみに対応しています。今後WindowsやLinuxも開発予定のようです。 開発する際、何かしらのコマンドやスクリプトを多用しますが、各種コマンドのサブコマンドやオプションのオートコンプリートを実現してくれます。 オートコンプリートのツールは動作が
はじめに インフラ基盤グループの大谷です。日頃はトクバイサービスの基盤運用を担当しています。 今回はRDS Aurora MySQL のアップグレード事例についてご紹介したいと思います。 先頃、AWSより、MySQL5.6互換のRDS Aurora MySQL version 1においてEOLが発表されました(Preparing for Amazon Aurora MySQL-Compatible Edition version 1 end of life)。 現時点でのAWSからアナウンスされているEOLのスケジュールは以下の通りです。 2022年9月27日以降 新たなRDS Aurora MySQL version 1(MySQL5.6互換)インスタンスを作成できなくなる 以下のみ可能 スナップショットからのリストア リードレプリカの追加 インスタンス構成の変更 ポイントインタイムリス
はじめに こんにちは、自作の水やり機が安定稼働したことで毎日の水やりから解放され植物をめでるだけになった@fukajunです。 ロコガイドでは、プッシュ配信やメール配信/集計処理など多くのバッチ用インスタンスが動いています。 今回は、ロコガイドのバッチ実行をEC2からfargateに切り替えてみてどのような効果があったかを書きたいと思います。 ロコガイドのバッチ基盤について 本題に入る前にすこしロコガイドにおけるバッチ基盤の簡単な説明をしたいと思います。 弊社では、ほとんどのバッチ処理がkuroko2というバッチ基盤上で管理されています。 kuroko2は、Webの管理画面からYAML形式でジョブ定義を書いて、順次実行/並列実行/リトライなどバッチ処理のワークフローを作れます。 作ったワークフローはcron書式で設定した時間に定期実行してくれたり、ボタン「ポチッ」でワンタイムで実行してくれ
はじめに インフラ基盤グループの大谷です。最近、チームの頑張りでMySQL5.6のRDSインスタンスをアップデートしきることができました。しばらくEOLに気を揉まずに済みそうで大変晴れやかな気分です。 そして嬉しい出来事とはまったく別に、MySQLのレプリケーションエラーを起因としたサービス障害が発生しました。対応の過程でいくつかの知見を得られたため、紹介したいと思います。 当該システムの構成について システム構成 図1. 当該システムの構成概略 障害が発生した非同期処理・バッチ基盤のDB構成について説明します。構成としてはシンプルで、オンラインサービス(バックエンド)のDB負荷と非同期/バッチ処理のDB負荷を分散させるため、非同期/バッチ処理をAuroraからレプリケーションしたRDSインスタンスに振り分けていました。 この構成を採用したのは2018年初頭ですが、当時はワークロードによっ
はじめに こんにちは、バックエンドエンジニアのshimewtr です。 突然ですが、個人開発って楽しいですよね!! 規模の大小や完成の有無を問わず多くのエンジニアが個人開発をしていると思います。 私も個人開発の一環として小さいツールを細々と開発していたのですが、そのツールが社内のリポジトリで利用されました! ひょんなことから個人開発のツールが社内で利用されたので、ツールの簡単な説明と社内で使われることのメリットを紹介いたします。 使われているツールと経緯 今回、社内の一部リポジトリに自作のGitHub Actionsが利用されました。 大層なコードではなく、百数十行の Python のコードです。 新しいブランチをプッシュした際に、以下の作業が自動で行われます。 PRの作成 PRをイシューと紐付け ラベルを付与 アサイニーの設定 マイルストーンの設定 社内のリモート飲み会で開発しているオレ
こんにちは!@ar_tamaです。「技術的負債に立ち向かう」シリーズは①実装編と②ドキュメント編で終わりの予定だったのですが、小出しにしていたロコガイドでの実践についてもまとめておこうと思い、再度筆を執りました。 今回は ③ロコガイドの現在地編 と称しまして、現在私たちがどのような課題を抱え、それをどのように乗り越えていこうとしているかをご紹介します。 ※ あくまでも2021年5月時点でのスナップショットであり、今後取られるであろう様々な舵によって着地点が大きく変わる可能性があります 課題とアプローチ ロコガイドが運営するトクバイのコードが抱える負債や課題についてはCTO前田の記事「トクバイにおけるレガシーシステム改善への取り組み」にて概説されているとおりで、意図しない密結合によるエンバグや、歴史的経緯の紐解きによりデリバリーコストがかさむといった問題がだんだんと無視できない状況となってき
はじめに こんにちは @hatuyuki4です。普段はiOSアプリを開発しているモバイルアプリエンジニアです。プロ野球が好きで、特に楽天イーグルスを応援しています(宮城出身)。最近は野球好きが講じて、セイバーメトリクスの本をいくつか読みました。セイバーメトリクスは、野球を統計学的に分析する非常におもしろい試みなのです。しかしこのアプローチは野球だけではなく、様々な問題解決にも応用できます。 というわけで今回は、セイバーメトリクスの考え方の紹介と、それのサービス開発への応用事例について書きたいと思います。 セイバーメトリクスの考え方 統計学によるデータ分析と聞くと難しいように感じますが、セイバーメトリクスの発端は非常にシンプルです。それは「どうすれば勝利を増やせるか、データから分析してみよう」というものです。その考え方を段階的に分けると以下のようなものになります。 1.勝利という明確な目的を
はじめまして。ロコガイドに去年の11月中旬にジョインした松田と申します。ロコガイドではiOSアプリエンジニアとしてトクバイアプリの開発に携わっています。 この記事ではトクバイアプリ開発でのチーム開発の紹介と入社して3ヶ月が経過した私の感じたことをご紹介できればと思います。 私の経歴 まず始めに私の経歴を簡単に説明しますと、SIerでの大企業向けの汎用機システム開発やWebサービスのサーバサイドの開発、そしてiOSアプリの受託開発に長く携わってきました。開発手法としては、主にウォータフォール型の開発やチケット駆動のアジャイル開発を経験してきました。今回のメイントピックであり、スクラム開発に代表される「チーム開発」というものは前職で多少経験した程度になります。 開発フロー トクバイアプリ開発フロー トクバイアプリは2週間に1回の定期リリース制を導入しており、1スプリント2週間のスクラムで開発し
自己紹介 はじめまして。昨年12月にロコガイドに入社しました、きしけん(@takeya0x86)と申します。所属は技術部で役割はQAエンジニアです。前職では第三者検証の会社で主にE2Eテストの自動化やCI構築をやっていました。社外ではテスト自動化研究会への参加やSeleniumやAppiumなどテスト関連OSSへのコントリビュートなども行っています。 これまでのロコガイドにおけるQA・テストについて ロコガイドにはこれまでQAを専任で担当するエンジニアはいませんでした。私が一人目のQAエンジニアとなります。 これまではQAやテストに関する活動は開発エンジニアによって行われており、テックブログの「テスト」のカテゴリーにもその一部が紹介されています。 こういった活動は続けられていましたが、個々で行われるために属人化していたり、組織としての体制の構築が不十分であるなどの課題が発生していました。
VPoEの小川です。今日はエンジニアのいわゆるキャリア・キャリアプランについて個人的に考えていることをお話ししたいと思います。個人的というのはロコガイドとしてこれ以外を考えていないというわけではないためです。自分のキャリアの道が見えない人の参考になれば幸いです。 エンジニアの気質には2種類ある まずはじめにエンジニアの気質についてお話しておきたいと思います。個人的にはエンジニアには、「職業エンジニア」と「職人エンジニア」の2種類の気質があると思っています。この2つに善し悪しがあるわけではなく、個人の環境や状況によっても変わります。会社がどちらを求めるのかも、会社のフェーズや環境、状況によって変わります。この2つは何が違うのでしょうか。 職業エンジニア 職業エンジニアとは言葉を選ばずに言えば「仕事のために技術を学ぶ」という考えの人です。携わってみたい業種や業界、その中でのやりたい仕事のために
こんにちは、はじめまして。無人島に持っていきたいジャオは青花椒、プロダクトマネージャーの森人です。小売企業向け・ユーザー向け幅広くプロダクトの企画に携わっており、直近では「混雑ランプ」の開発ディレクターを担当していました。 アドベントカレンダー20日目の今日は少しばかり趣向を変えて、家づくりの話をしたいと思います。プロダクト開発とつながることがとても多いと感じているので紹介していきます。 住む環境と働く環境の接近 言うまでもなく今年は新型コロナウイルス感染拡大による環境変化が重大トピックであり、それは弊社にとってもこれをご覧いただいている皆様にとっても変化が求められた大きな出来事だったかと思います。 特にテレワーク・リモートワーク、この期間においては「在宅勤務への対応」がさまざまな方の生活に影響を及ぼしたことでしょう。 プライベート・くつろぎの象徴である自宅が、作業や会議など、フォーマルな
こんにちは、「6.0では月だろ」みたいな雑な気持ちになっている小川@conceal_rsです。この記事はロコガイド Advent Calendar 2020の14日目です。 みなさんの会社はテックブログを書いてますか?最近はテックブログがある会社が多くなってきていますね。大きな会社も小さいベンチャーのようなところまで、採用につながるケースもあるので積極的に書いているところも多いと思います。弊社でもエンジニアを積極採用中なので、広報として運用している側面もあります。一方でテックブログの運用は非常に大変だということもあり、更新が滞ってるところもちらほら見かけます。ではなぜロコガイドではテックブログを続けるのでしょうか。テックブログの良し悪しを中心に、その理由について紹介したいと思います。 テックブログの良い点 業務のことを書ける まずテックブログの良さの1つ目は、業務でやったことを書けることで
こんにちは、アマロマウントまでもう少しな小川@conceal_rsです。この記事はロコガイド Advent Calendar 2020の10日目です。みなさん社内で勉強会とか読書会とかやってますか? ロコガイドでは読書会やもくもく会が有志によって開催されています。この中でも、比較的ゆるくやっている読書会についてご紹介したいと思います。 読書会をするのはなぜ? いろんな方向に技術領域が広く深くなっていく昨今、興味ある分野だったり仕事で関わる分野だったりを勉強するために、技術書を読む機会は多いと思います。特に後者の仕事に関わる分野に関しては、必要に迫られてということも多いでしょう。また技術書は概して積ん読になりやすいということもあるので、「読みたいけど読めてない」という場合も多いと思います。そのようなときに社内や技術コミュニティなどで読書会とか輪読会などをやるのはいいアイデアですよね。一緒に読
この記事はロコガイド Advent Calendar 2020の11日目です。 バックエンドエンジニアの岡田です。 「広告基盤刷新プロジェクト」は、今年の秋から始まったプロジェクトで、 目的を簡単に言うと「純広告の運用やシステムに関わる課題を解決しよう」です。 例えばネイティブ広告の配信基盤をGo言語に書き換えるなど、 大きく分けて4つほどフェーズがあるのですが、 今回は「バナー広告に関する運用・システム改善」という直近行うフェーズについて きっかけと、実際に何を行う予定なのかを書きたいと思います。 弊社のバナー広告システムについて 多くの企業と同じように、 弊社でもバナー広告の配信ツールは、Google Ad Manager(以下「GAM」)を利用しています。 しかし、ターゲティングと各広告枠にどのユニットを配信するかの制御は独自システムで行っています。 独自システムを利用している主な理
この記事はロコガイド Advent Calendar 2020の7日目です。 みなさんこんにちは! ロコガイドサウナ部の部長こと、id:ar_tamaです。 自粛期間中に気が触れてついにテントサウナを購入してしまいました……が後悔していません。プライベートサウナ、最高です。おすすめですよ😉 さて、ロコガイドテックブログではFigma PluginやらIoTやらPython(Luigi)やらとさまざまな記事を書いてきましたが、今回は趣向を変えて、サーバサイドKotlinのお話をお届けします。 はじめに - ロコガイドとサーバサイドKotlin サーバサイドKotlin、巷でもだいぶ聞かれるようになりましたよね。 JVM言語のひとつであるところのKotlinは、そのJavaとの親和性・互換性の高さから(資産を活用できる)Javaがメインの現場での採用事例をよく目にしますが、一方でLL言語など
この記事はロコガイド Advent Calendar 2020の4日目です。 こんにちは、開発部の根岸(@negipo)です。SF小説の講座に通いはじめて毎回先生にけちょんけちょんにされています。 さて、皆さんは業務でブックマークレットを扱っているでしょうか。ブラウザのブックマークに入れておいてぽちっと押すと動くアレです。ぼくはけっこうよく使っています。プロトタイピング、可視化、項目チェック、情報の検索と取得など、ワークフロー上処理をストレートに挿入するのが難しいとき、ブックマークレットは非常に有益です。 でもちょっと待ってください。ブックマークレットってけっこう運用が大変なんです。 実務上、ブックマークレットを実装することは一年に一回あるかないかというところなんですが、どのように運用を開始し更新してゆくべきかという観点において、これならいけるという型が徐々にぼくの中で固まってきました。皆
はじめに ロコガイドでインフラ全般を担当している大谷(0tany)です。 普段は、多くの会社でインフラ/SRE/WEBオペレーション等を担当している方々と同様に サービスのインフラ構築・運用 監視/障害対応 キャパシティ/コストプランニング セキュリティ 各種インフラ作業のリクエスト などに関する仕事をしています。 ロコガイドのインフラチームが抱えている問題として、特段インフラチームがやらなければいけない仕事でなくとも、業務上開発者に割り当てている各種権限やインフラレイヤのナレッジ共有の問題から、インフラチームが握り込んでしまっている作業がいくつかあり、それが開発チーム・インフラチーム双方への負担となっていました。 開発効率を上げていくため少しずつ作業の見直しと権限の移譲を進めているのですが、そのうちの1つ、トクバイサービスのSchema適用作業を開発チームに移譲した話を紹介します。 トク
こんにちは、技術部の深谷(@fukajun)です。 先日(2020年10月3日)行われたKaigi on Railsにて、「Rubyで書かれたソースコードを読む技術」というタイトルで発表しました。 発表した内容について 仕事やプライベートではメインのRubyも含めていくつかの言語にふれていますが、Rubyで書かれたコードは非常に読みやすいと日々感じています。 基本的には、Ruby/Railsのコードは複雑なロジックでもすんなり理解できることが多いです。 とはいえ、なかなか動きがわからないコードに出会うこともあります。 今回は、そういった場合に自分がやっていることを中心に紹介しました。 発表資料 当日、使用した発表資料です。 発表動画 Rubyで書かれたソースコードを読む技術 / fukajun 発表に含めることができなかった内容について ここからは、時間の都合で本編に盛り込めなかった内容を
こんにちは@hatuyuki4です。普段はiOSアプリ開発をしていて、ロコガイドではモバイルチームのグループ長をやらせてもらっています。ステーキを焼くのがやたら上手いです。 弊社では2020年3月末から原則フルリモート勤務を開始していて、10月初旬の現時点でもそれを継続しています。やはり勤務形態が変わると、チーム作りも今まで通りではうまく行かなくなってきます。今回は、フルリモート状態でのチーム作りやコミュニケーションについて、トライしてきたことを書こうと思います。 自発できるチーム 勤務形態によらず、自分がチーム作りの上で一番心がけていることはメンバー全員が自発できるチームにしようということです。自発とは、メンバーそれぞれが新しい試みや改善点について考え、そしてそれを実際に実行できるような状態をさします。自分で考え、自分で行動する。それを誰もが行えることを目指しています。 多くの人が開発を
こんにちは!ロコガイドの開発部長をしている箕輪です。 突然ですが、みなさんif文使ってますか。 トクバイもおかげさまで数多くの小売店舗様にご利用いただけるようになり、できるだけシンプルな設計や実装を心掛けつつも、サービス拡大に伴い様々なビジネス要件を内包するにいたっています。 今回はその中でもif文にまつわる失敗事例をご紹介したいと思います。 問題の実装について はじめに事故が起きる前の実装部分を説明します。 図のように特定の流入経路の場合に、if文で画面の一部コンテンツを非表示にするという簡単なものでした。 問題発生の引き金 問題はこのコンテンツ部分のUI改修時に起きました。 改修内容としてはview内の前述のコンテンツ部分をモーダル表示に変更し、ユーザーアクションの改善を図るというものでした。 要件には「最初に画面が表示されたタイミングでモーダルを表示する」という内容が含まれていたため
Androiderのみなさんこんにちは ロコガイドでAndroidエンジニアをやってます横山(yokomii)です。 Android11が正式リリースされて数日がたちますが、TargetSDKのバージョンアップ対応は進んでおりますでしょうか? トクバイアプリも絶賛進行中なのですが、おおよその修正対応範囲や方針が見えてきたので、今回はその内容をシェアしたいと思います。 あくまでトクバイアプリ上での対応内容ですので、 各自で開発中のアプリに必要な対応内容に関しては動作の変更点: Android 11 をターゲットとするアプリなどをご確認ください。 (具体的な対応例はいくらあっても困らないだろうという考えのもとにブログを書いてます。) Package Visibilityの変更 TargetSDKが30かつAndroid11のとき、端末にインストールされているその他アプリ(Intent)情報への
こんなに長く自宅勤務が続くなら鉄のフライパンとか炊飯器とか買ってもよかったなーと思ってます。Androidアプリエンジニアのiaiaです。 前回Firebase Test LabでE2Eテストの話をしましたが、Unitテスト周りでも改善をしていて、良い変化が生まれてきたなと思ってきているので報告します。 入社直後のテストカバレッジ 私が出した最初のPull Request時点でのカバレッジです。 10%程度ですね...。 テストコードを書くのは大変で高いハードルがあるのは確かです。ですが、テストを書いていかないと、開発者は不安になりながらコードを変更しなければなりませんし、 何か修正が入るたびに面倒な手動テストを行わなければなりません。ユーザに不具合のあるアプリを提供してしまう可能性もあります。 安心してコードを変更し、リリースするためには、テストを書いてカバレッジを上げるしかありません。
こんにちは、5.3でようやく第一世界から帰ってこれた暁を祝福しているVPoEの小川@conceal_rsです。 表題の jpmobile は2009年ぐらいからずっとメンテナンスと開発を継続しているOSSですが、弊社のサービス「トクバイ」でも利用されています。 もうすでにガラケーはなくなりかけていますが、そんななかで2020年現在 jpmobile がどのように使われているのかとか、あんまり知られていない機能として何があるのかなどざっとまとめてみたいと思います。 jpmobile Overview 2020 jpmobile には大きく以下の機能があります。 ガラケー用絵文字の相互変換 Rails でのユーザエージェントごとの view の切り替え 日本語(ISO-2022-JP)でのメール送受信 ガラケー用絵文字の相互変換 もう歴史的遺物になりつつあるガラケーですが、当時は3キャリアで別
こんにちは、技術部でバックエンドエンジニアをしている金子です。 某メーカから、エンジニアに転職して早3年が経ち、前回のブログからも1年が経ちました。 昨今のコロナ禍の影響で、皆さんも生活や仕事に影響が出ていると思います。 そんな中、5/1にロコガイドはテイクアウト・デリバリー情報サービス「トクバイ テイクアウト」をリリースしました。 「トクバイ テイクアウト」とは? まず、作成したサービスの紹介をさせてください。 トクバイ テイクアウトはご自宅近くの テイクアウト情報を見つけることができるサービスです。 飲食店の店先貼り紙などの情報を、スマートフォン等を使って素早く・簡単に・無料で、情報検索することが可能です。 こちらから、ぜひお近くのテイクアウト情報をゲットしてみてください 🙏 サービス開始時は約1,000店からのスタートでしたが、現在(2020/08/07)時点で50,000件を超え
こんにちはこんにちは!バックエンドグループの id:ar_tama です。最近はひょんなことからKotlinを愛でています。 さて、3ヶ月ほど前になりますが、ロコガイドはお店・施設の混み具合がひと目で分かる混雑ランプという機能をリリースしました。 これはトクバイ(またはロコガイド)の管理画面からワンクリックで混み具合を発信可能、というお手軽さがウリのひとつなのですが、 更に簡便化したい!という声を受け、「アプリ」と「ボタン型端末」での提供も行っています。 今回はその「ボタン型端末」をセットアップした際のノウハウやハマリポイントなどをお伝えします。 「混雑ランプボタン」に使用した端末 当初のざっくりとした要件は:*1 使用者の手元に届いたら、「電池を入れるだけ」で運用が開始できること ネットワークのセットアップを挟まない=LTE内蔵のデバイスがベスト 「空き」「やや混み」「混み」が表現できる
取締役CTOの @takatoshi-maeda です。 弊社では在宅勤務(リモートワーク)を従来より、一部で活用していました。 しかし今回の新型コロナウイルス感染症(COVID-19)の流行拡大に伴い現在は原則として全従業員在宅勤務体制に移行しており、緊急事態宣言が解除された現在でも弊社は6月いっぱいまでは全社原則在宅勤務体制を継続としています。 対面コミュニケーションの利も大きいため今後出社日を設けることも検討していますが、事業継続の観点からも在宅勤務環境での生産性の維持/向上は今後の必須要件となるでしょう。 この記事では、私達が全社在宅勤務に移行するにあたって直面した課題、そして対応策についての事例をご紹介します。 同様の困りごとに直面している方の助けになれば幸いです。 従来の在宅勤務環境 前述したように、弊社では従来より在宅勤務を各チーム/個人の裁量において実施していました。 業務
次のページ
このページを最初にブックマークしてみませんか?
『techblog.locoguide.co.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く