サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ブラックフライデー
tech.actindi.net
morishitaです。 このエントリで私の 100 本目の投稿となります。 桁が増えてひと区切りということでこれまでの自分の投稿を振り返りたいと思います。 最初の投稿が 2017/08/14 の「いこレポ はじめました。」でした。 そこから今月まで 55 ヶ月、ということは月に約 1.8 本。 だいたい隔週に 1 本投稿してきたことになります。 実際には毎日のように投稿していた時期もあれば、数週間投稿しなかった時期もあるのでコンスタントに月 2 本弱というペースではありませんでした。 私のこれまでの投稿の一覧はこちらです。 tech.actindi.net 投稿記事の傾向 ざっとこれまでの投稿のタイトルを眺めると我ながらいろいろ書いてきたなぁと思います。 投稿内容でジャンル分けをしてみると、次の様になりました。 ジャンル 投稿数 内容 プログラミング 37 Ruby や Typescri
morishitaです。 アクトインディでは開発環境で Docker Compose を利用しています。 Rails などで構築する一般的な Web アプリケーションは DB を必要とするとので最低でも次の2つのコンテナを含むと思います。 DB のコンテナ アプリケーションコンテナ アクトインディで実際に開発に使っているものでは nginx や webpack-dev-server のコンテナのあったりするので 3−4コンテナ動きます。 これらのコンテナは決まった順番に起動するしないとエラーになったりします。 例えば、Rails は DB に接続できないと起動に失敗します。 そんな起動順を制御する仕組みとして docker-compose には depends_on があります。 これまで各サービスの起動順を制御するものくらいのふわっとした理解で使ってきましたが、理解を深めるためいくつか試
morishitaです。 前回は M1 Mac 上の Docker Desktop でオーソドックスな構成の Rails アプリケーションであるいこレポの docker-compose の開発環境を動かしてみました。 思ったより少ない変更で動くことが確認できました。 tech.actindi.net ※ ↑前回のエントリを前提にしているところもあるので先に読むことをおすすめします。 今回は同じ docker-compose を Lima の Intel on ARM な仮想マシンで動かしてみたいと思います。 マシンスペック etc は次の通りです。 MacBook Pro(14 インチ、2021) チップ Apple M1 Max メモリ 64GB OS macOS Montrey Lima 0.8.1 Lima とは Lima は "macOS subsystem for Linux"
morishitaです。 サーバーサイドの開発では Docker コンテナを利用することが一般的になりました。 本番環境はもちろん、開発環境も Docker Compose などコンテナで構築することが多いのではないでしょうか。 その際、Ruby や Node.js といったプログラミング言語や MySQL や Redis などのミドルウェアは Dockerhub で提供されている Docker Official Imagesをそのまま利用したり、自前のイメージをビルドする際のベースに使うことが多いと思います。 一方、2020 年 11 月から Dockerhub からイメージを Pull する際に回数に制限がかかるようになりました。 ログインしない状態だと IP アドレスあたり 6 時間で 100 回までとなっています。 便利で利用頻度も高い Docker Official Images
morishitaです。 年初にいこーよに新しいサービスを追加しました。 その名も「いこーよプレミアム」です。 iko-yo.net いこーよプレミアム - プレミアムクーポン 簡単に紹介すると、いこーよの有料会員サービスです。 登録するといこーよプレミアムクーポンが利用できるようになり、 お得にお出かけ施設を利用できるというサービスです。 まだ iOS アプリでしか利用できなかったり対象施設が少ないのですが、 今後 Android アプリにも対応しますし対象施設も増えていく予定です。 更にプレミアムクーポン以外の機能も追加するかもしれません。 そんな「いこーよプレミアム」が 550 円/月でご利用可能です。 いま登録すると 5 月分まで 110 円/月になる割引キャンペーン中ですのでぜひ登録ください! と宣伝はこれくらいにして、本題にいきましょう。 「いこーよプレミアム」はサブスクリプシ
morishitaです。 Google App Script (以下、GAS)便利ですよね。 無料で使える JavaScript の実行環境で HTTP での外部への通信も可能なので、API を叩いたり、Web サイトにアクセスして情報を収集するなどできます。 しかも定期実行も可能なので、定期的な作業の自動化も可能です。 さらに、Google Sheet にも手軽にアクセスできるので、収集したデータを確認しやすい形で簡単に保存できます。 GAS には Web ブラウザ上でコーディングできるエディタが提供されています。 すこし前から、それが新しくなったという話をネットで見かけていたのですが、私のアカウントにはなかなか反映されませんでした。 それがやっと来たので触ってみました。 ちなみに、スクリーンショット中に表示しているコードは gas-slack-incoming-webhook のもので
morishitaです。 前回のエントリで、CodeBuild 上で RSpec を実行する環境について紹介しました。 tech.actindi.net その中で RSpec の結果を CodeBuild のレポートで確認できるようにしてみたらなかなか良かったのでそれについて紹介します。 CodeBuild のテストレポート機能とは 1年ほど前に CodeBuild に追加された機能で、CodeBuild で実行したテスティングフレームワークの実行結果を管理し、見やすく表示する機能です。 例えば、複数回のテストの実行時間やエラー数をグラフにして表示できます。それを見れば、テストケースが増えてきたとか、実行時間がどれくらいとか傾向がわかります。 テスト結果トレンド また、1回のテスト実行結果を次のように表示できます。 1回のテスト結果 主に Java 系のテスティングフレームワークをサポート
morishitaです。 先日、いこーよを Kubernetes に移行した件を紹介しました。 tech.actindi.net いこーよは Web だけで動いているわけではなく、裏で定期的に実行されるバッチ処理も行っています。 本エントリではそのバッチ処理の実行環境を Fargate ECS に移行した件について書きます。 移行前はどうなってた? いこーよは Rails で開発しています。 バッチ処理というと、DB を集計したり、一斉に DB の値を書き換えたりするものがほとんどです。 そこで ActiveRecord のモデルを利用したいので、バッチ処理も Rails で実装しています。 つまり、Rails Runner で定期的にバッチ処理を実装したメソッドを実行しています。 移行前は、バッチ処理専用サーバがあって、crond で定期的に実行していました。 バッチ処理そのものやバッチ
morishitaです。 yamamotoが次のエントリで紹介しましたが、いこーよを Kubernetes 上で運用し始めて3ヶ月になろうとしています。 tech.actindi.net まあトラブルもありますし、やってみてEC2で運用していたのとは勝手が違うところに苦労しつつですが、移行してよかったと思っています。 移行前の状況 いこーよは弊社のメインサービスであり、最も長くメンテナンスを続けているシステムでもあります。 トラブルが発生するとご迷惑をおかけするユーザが多いサービスでもあります。 そのため、とりあえず落ちずに稼働しているしということで、改善のためにインフラに大きく手を入れることには及び腰になっていました。 この数年はサービスの成長にともない現れるシステムの綻びをちょっとづつ改良しながらいこーよを支えているという状況でした。 いこーよの姉妹サービスであるいこレポでは、Rail
こんにちは!WEBエンジニアのkanekoです。 最近AWSで遊ぶのが楽しいです。 でも少し前まで 「AWS?できたらいいなとは思うんですけど、そもそもインフラのこと何もわからないですし、そもそものそもそもアプリケーションコード書くのもまだまだですし、できる方にやっていただくほうがいいですし、そんな私には手が出せないですよ」 と心の底から思っていました。 そんな怯み気味だった私がCDKですごく楽しいと思ったので楽しいぞという気持ちとその要因を書き綴ります。 私と同じような「やってみたいけど何からやれば」という状態の方がいらしたら、この記事が参考になれば嬉しいです。 始める前のステータス概要 NginxとかApacheあたりなら少しだけ触ったことがある ネットワーク?よくわかりませんね インフラ関係の横文字用語全般聞き慣れない コンテナ技術もさわりだけ、複雑なことはわからない やってわかりた
morishitaです。 Nuxt.js で作っている SPA を Amplify Console で運用していることはこれまで数本のエントリで紹介してきました。 tech.actindi.net tech.actindi.net その Amplify Console に Cypress によるE2Eテストがサポートされたという発表が2019年の10月にありました。 aws.amazon.com その時から気になっていたのですが、ついに導入したので紹介します。 結論から言うと、Preview 機能と併用するとむちゃくちゃ便利です。 更にDependabotを組み合わせるとライブラリのアップデートもサクサク進みます! Amplify ConsoleのE2Eテスト 次の手順で、E2E テストを追加できます。 Cypressの導入 テストの実装 Amplify.yml への Test ステップの
ohataです。 最近子供がバスケットボールを始めて、運動不足解消がてら一緒にバスケしたら全然ついていけず。。。 これからはダンコたる決意で一生懸命バスケの練習をしようと思います! さて本題ですが、今回はプライベートでちょっとイジったdeployツール fabricについてです。 Fabricって? Pythonで記述できるデプロイツールです. Fabric Rubyで言えばCapistranoと同じような役割なのですが、 今回は以下の条件で、Fabricを使ってみようと思いました。 そこまで大したことはしない 構成自体をAnsibleを使っている (Pythonを使っている) アプリケーション自体がjs (Rubyを使ってない) fabric と言えば 真っ先に思いつくのが こちらだと思います。 アプリ運用するには結構有益なツールですよね。 こちらで言うとfastlaneの役割に近いです
こんにちは!!こんにちは!!インフラエンジニアのyamamotoです。 今日もAWS CDKでクラウドインフラを構築するよー!! 今回はCDKでALBを作ってみました。 コードはこちら!! ※当ブログのコードはTypeScriptで記載しています。 import { Construct, Duration, Stack } from '@aws-cdk/core'; import { Peer, Port, SecurityGroup, Vpc, } from '@aws-cdk/aws-ec2'; import { ApplicationLoadBalancer, ApplicationProtocol, ApplicationTargetGroup, } from '@aws-cdk/aws-elasticloadbalancingv2'; const env = { region:
morishitaです。 このエントリはアクトインディアドベントカレンダー2019の3日目です。 adventar.org CDK、便利ですね。 これまで、Lambda は Serverless Framework を使って開発してきたのですが、CDKでやるとどんな感じか試してみました。 作ったもの 習作として、テキストをクエリパラメータで送ったら、QRコードが返ってくるAPIを作ってみました。 QRCode Generator 作成するリソースとしては次の通りです。 Lambda 関数 Lambda Layer API Gateway なお、Lambda関数もCDKのコードもすべて Typescript で実装しました。 Lambda 関数の実装 APIの本体である Lambda関数のコードは若干雑ですが次の様に実装しました。 // eslint-disable-next-line im
adventar.org これはactindi Advent Calendar 2019、1日目の記事です。 こんにちは!Androidアプリエンジニアのhondaです。 今日でactindi勤続4年になりました。 今回は開発中のアプリをメンバーに配布するためにGitHub Actionsを使ってみたときのことをつらつらと書きたいと思います。 GitHub Actions、使ってよかった。 Android版いこーよでは今までCIでbitriseを使っていました。 もともと、GitHub Actionsを使ってみた理由がビルド時間が短縮できるかを検証するためでした。 ビルド時間を比較したところ2分ほど短縮することができました。 また、bitriseよりGitHub Actionsのほうがビルドが安定しているようなのでとても好印象でした。 Android版いこーよでは今後もGitHub Act
こんにちは。kanekoです。 私はいこーよの中でもWEBチケット販売に関するプロダクトのチームにいます。社内での呼び方はいくつかありますがここではプロダクトをticket、チームをチケットチームとします。 この記事の結論 結論を述べますとDBがPostgreSQLのrailsアプリでmoney型のカラムをもつテーブルを作成してあれこれ試してみたところよく分からないこともあったが楽しかった。という感じです。(ざっくり) money型との出会い ticketではDBにPostgreSQLを採用しています。 チケットチームは今年動き始めたチームで、アクトインディでは初のECサービスの開発をしています。 私自身も初めてなことがたくさんあり毎日が勉強です。そんな中「DBのお金(料金、手数料ect)の扱いって何が正解なのかしら??」とふと検索したことがきっかけで、つい最近money型があると知りまし
morishitaです。 当社で最も開発が活発なリポジトリはメインサービスであるいこーよのものです。 毎日、いくつものプルリクエストが登録されてはリリースされクローズしてきます。 プルリクエストの状態や重要度はラベルで表しています。 例えば次のようなラベルがあります。 WIP エンジニアレビュー待ち デザイナーレビュー待ち1 レビュー修正待ち Ship it! Bug dependencies2 リポジトリごとにラベルとその色がまちまちだと状況を把握しにくいので、いこーよ以外のプロダクトも概ね同じラベルを登録して使っています。 これまでいこーよのリポジトリに揃えるべくそれぞれのリポジトリでちまちま手で設定をしてきました。 しかし、このところ Github にいくつか新たなリポジトリを作る機会があり、 流石に面倒なので複数のリポジトリのラベルを一元的に管理できる仕組みを作ってみました。 作っ
iOS アプリエンジニアの namikata です。今日のブログは技術的な事ではなく、育児休暇の事について語りたいと思います。2019 年 9 月に育児休暇を 1 ヶ月取得しました。Facebookのマーク・ザッカーバーグさんも取得してましたし、僕もそのビッグウェーブに乗ろうかなという気持ちで取得しました(すみません、冗談です。単に生まれたてほやほやの子どもの成長を見届けたかっただけです)。会社としては、男性初の育児休暇の取得事例になるかと思います。 育児休暇を取得して一番声を大にして言いたい事は、 会社とチームのことがさらに好きになりました。 ということです。なので、会社とチームの為にこのブログを書こうと思います。アクトインディに興味を持ってくれた人に、少しでも響いてくれればいいなと思います。 入院から出産 奥さんが安静の為 1ヶ月程入院し、予定より早く小さく子どもが生まれました。 赤ち
morishitaです。 毎月第3土曜日にお得クーポンを配布しているいこーよ こどもBIRTHDAYはいこーよの中にありながら、このコーナーだけ独立したNuxt.jsのSPAとなっています。 https://birthday.iko-yo.net/birthday.iko-yo.net 次の記事で紹介したようにJestでテストしており、ESLintを使ってチェックもしています。 tech.actindi.net これまでは実装していたのが主に私とデザイナーの二人だけだったのでCIを用意しておらず、ローカルでJestとESLintを実行してチェックしていました。 ちょうど Github Actions が使えるようになったので、これを使ってCIをやってみました。 Jest まずはJestによるテストの実行。 次のような内容のYAMLファイルを .github/workflows/jest.y
こんにちは、キエンです。 最近、DBサーバーの負荷分散とAuroraの高速フェイルオーバーの対策を調査した時、ProxySQLを検証しましたので、ご紹介します。 ProxySQLとは? ProxySQLはMySQLおよびfork(Percona ServerやMariaDBなど)用の高性能で高可用性のプロトコル対応プロキシです。ライセンスはGPLv3となっています。以下の主な特徴はあります。 クエリーキャッシュ クエリールーティング フェイルオーバーサポート ファイアーウォール ProxySQLの公開サイト ホームページ GitHub ウィキ ProxySQLの構成 ProxySQLの構成は複雑ですが、以下のニーズを満たすため使いやすい構成システムがあります。 設定を簡単に動的更新を許可する ゼロダウンタイムプロビジョニングが必要な大規模なインフラストラクチャでProxySQLを使用できる
morishitaです。 2019/08/21 行われたPWA Night vol.7 ~PWAのミライや活用方法をみんなで考えよう~ で 「いこレポ」でのPWAで事例ということで話してきました。 pwanight.connpass.com これまでにこの関係では次のブログエントリを書きました。 tech.actindi.net tech.actindi.net これらを発表用に再構成した内容ですが、事前に伺っていたYahooさんの発表内容と結構かぶりそうだったので次を軸に話しました。 RailsアプリケーションにWorkboxでキャッシュを実装した話 A2HS をカスタマイズした話 資料はこちらになります。 speakerdeck.com 大勢の前で20分も話す機会が久々で緊張しました。後半声が上ずったのが恥ずかしい。 Workboxの設定ファイルについて 発表後、「Workboxの設定
morishitaです。 AWSのリソースを作るときにはコンソールをポチポチやるよりは Cloud Formation を使ったほうが楽に感じるようになってきました。 そんなところに aws-cdk が GA になりました。Typescript で Cloud Formation スタックが書けるということで気になっていました。 ちょっとググると DyanamoDB とか Lambda を使ってサーバレスアプリケーションを作りました的な記事が出て来るのですが、今回はちょっと地味にIAMユーザを作ってみました。 背景 当社ではほとんどのプロダクトで Docker Compose による開発環境を用意しています。 更に、いくつかのプロダクトでは本番DBのデータ1を含むDockerイメージを毎日ビルドしてECRにプッシュしています。それを Pull すれば、ほぼ最新の本番DB同様のデータをローカ
morishitaです。 既存のGASのプリケーションにSlackへの通知を追加したいなぁと思いました。 Incoming Webhook経由でSlackにメッセージを送るのはそんなに難しくないので、サラッと実装しても良かったのですが、汎用的な要件だしライブラリとして実装することにしました。 ライブラリとして公開したもの 公開したものはコードは gas-slack-incoming-webhook こちらです。 実質、公開したのはsrc/IncomingWebhook.ts だけです。 もともとSlack謹製のnpmパッケージ@slack/webhook - npmがあるので、これと同じように使えるものにしました。 違いは次の点くらいです。 通信処理をUrlFetchApp.fetchで実装 NPMはaxiosを使っている GASは同期処理しかできないので非同期処理を排除 Proxy接続系
morishitaです。 先日、Rubocop Performance の速度比較について3回に分けて書きました。 tech.actindi.net tech.actindi.net tech.actindi.net どんな言語でも多かれ少なかれあることですが、Rubyでも同じ結果を得るのに複数の実装方法があり、読みやすさ、わかりやすさ、文字数・行数の多少、実行速度などの点でそれぞれ良し悪しがあるなぁ。とやってみて改めて思いました。 メンテナンス性の観点からは書きやすい、読みやすい、わかりやすいコードを書けばいいと思います。 ただ、ユーザにとってより良いサービスの提供を考えると速さは正義、ちょっとでも速い実装方法を選択したいものです。 で、上記のエントリを書きながら、これとこれはどっちが速いんだろうと思ったいくつかを計測してみました。 計測について 計測には BenchmarkDriver
morishitaです。 以前、Nuxt.js のSPAの稼働環境としてAWS Amplify Console を紹介しました。 tech.actindi.net とても便利に使っているのですが、先日、次の機能追加があり、更に便利になりました。 aws.amazon.com 早速使って見たので紹介します。 Branch Autodetect ってどんな機能? Amplify Console ではブランチ毎に専用環境が用意され、そのブランチにPushするたびに自動的にデプロイされる機能があります。 これまではどのブランチをその対象にするかを事前に設定する必要がありました(Amplify用語ではブランチを接続するといいます)。 今回追加された Branch autodetection はその名の通り事前設定なしで、ブランチ毎の環境を作ってデプロイしてくれます。 全ブランチが対象というわけではな
morishitaです。 前々回、前回から続くrubocop-performanceの指摘事項について盲従せずに確認してみるシリーズの最終回です。 前編、中編はこちらです。 tech.actindi.net tech.actindi.net 計測について 計測には BenchmarkDriver を利用しました。 Rubocopのドキュメントに bad と good の例が掲載されていますが、基本的にはそれをBenchmarkDriverで計測してみて比較しました。 例をなるべく変更せずに計測する方針で行いましたが、文字列、配列、ハッシュなどは定数にして使い回すようにしています。 各 Cop が論点にしているポイントだけをなるべく計測するため、これらの生成コストを計測に含めないようにするためです。 計測に利用したコードはこのエントリにも掲載しますが、次のリポジトリにも置いておきます。 ru
morishitaです。 前回のエントリーの続き、rubocop-performanceの指摘事項について盲従せずに確認してみるシリーズの2回目です。 前編はこちら。 tech.actindi.net 計測について 計測には BenchmarkDriver を利用しました。 Rubocopのドキュメントに bad と good の例が掲載されていますが、基本的にはそれをBenchmarkDriverで計測してみて比較しました。 例をなるべく変更せずに計測する方針で行いましたが、文字列、配列、ハッシュなどは定数にして使い回すようにしています。 各 Cop が論点にしているポイントだけをなるべく計測するため、これらの生成コストを計測に含めないようにするためです。 計測に利用したコードはこのエントリにも掲載しますが、次のリポジトリにも置いておきます。 rubocop-performance-me
morishitaです。 以前、弊社のWebエンジニアキエンが次のエントリで紹介した prontoによる自動レビューですが、今ではほかのRailsアプリケーションにも導入して使っています。 tech.actindi.net うっかりしたコードを書くと容赦のない指摘コメントが付きます。 その多くはコードフォーマットに関するものなのですが、時々rubocop-performanceにより「遅いかもしれないので書き直しましょう」という指摘をされます。 へーそうなのかーと素直に修正してきたのですが、ツールを活用するのはいいのだけど、盲従するのは良くないぁと心に引っかかるものを感じていました。 JuanitoFatas/fast-rubyにも測定結果があるのですが、ざっと見て古すぎるRubyバージョン(2.2など)での結果が更新されていないものが結構あるなぁと思いました。 また、Rubyのバージョン
morishitaです。 このところNuxtのSPAを作っていました。 次のエントリで紹介したものに手を入れていたのですが、このときにはテストを書いていませんでした。 tech.actindi.net 今回はちゃんとテストも書こうと思ってやってみました。 いくつかすんなり行かず試行錯誤した部分があるのでそれを書こうと思います。 Nuxt SPAのテスト SSRを含まないNuxt SPAアプリケーションの構成要素は大雑把に次を含んでいます。 コンポーネント ページコンポーネントから使われる構成要素を実装したVueのSFC1 ページコンポーネント ルーティングとひも付きページを構成するSFC Vuexストア クライアントサイドでデータを格納しデータフローを制御するモジュール PluginやMiddleware Nuxtからフックされるモジュール その他ユーティリティ的なモジュール 他のコンポー
次のページ
このページを最初にブックマークしてみませんか?
『アクトインディ技術部隊報告書』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く