Mobile Factory Tech Blog

技術好きな方へ!モバイルファクトリーのエンジニアたちが楽しい技術話をお届けします!

1周回ってのポモドーロテクニック

ポモドーロテクニックを改めて実践したら結構良い感じだったので知見を共有します。 作業に集中できない、効率よく作業したい、そんな人におすすめです。 そもそもポモドーロテクニックとは 時間管理術の1つ。 集中の時間と短い休憩を繰り返して作業を効率…

MySQLでデータベース内のGenerated Columnをリストアップする

MySQL 5.7.6 以降ではGenerated Columnが使えます。 テーブル定義に計算式を記述すると計算結果をカラムとして扱えるようになる機能です。 駅メモ!でも最近利用しているGenerated Columnですが、データベース内で増えたGenerated Columnをリストアップした…

アプリに地図を埋め込むのは簡単!

駅奪取エンジニアのid:dorapon2000です。駅奪取では11月にゲーム内の地図のリプレースを行いました。地図そのもののスタイルも変わりましたが、地図の表示に使うライブラリも変更しています。今回は、アプリに地図を埋め込むだけであれば、ほんの少しのコー…

NestJS 製のプロジェクトのテストを@swc/jest で高速化する

NestJS は Node.js 向けのウェブフレームワークです。その特徴として Decorator を用いてクラスやメソッドにアノテーションをする仕組みを提供しています。 例えば API のエンドポイントを定義する場合は次のようなコードを実装します。 import { Controller…

CloudFront + API Gatewayの構成でCloudFront-Is-Mobile-Viewerなどのヘッダーを参照する時の注意点

はじめに CloudFrontからオリジンへのリクエスト時に特定のHTTPヘッダーを含めるには、オリジンリクエストポリシーの設定が必要です。 docs.aws.amazon.com CloudFrontを使用すると一部HTTPヘッダーが書き換えられ、特にUser-AgentヘッダーはAmazon CloudFro…

Mapbox GL JS で大量のデータを可視化する

はじめに 駅メモ!チームでエンジニアをしている id:wgg00sh です. 駅メモ!では2021年11月に「未取得の駅を地図で確認できる機能」をリリースしました. 今回はこの機能を実現するにあたって発生した問題の一例と,その問題をどのように解決したかについて…

VS Code + Code Runner でPerlテストをボタン一つでprove実行

普段Perlのテストはターミナル上で prove t/hoge.t で実行しています。 これを楽するために、VS Codeの拡張機能 Code Runner - Visual Studio Marketplace を使い、編集中のファイルを開いたまま、ボタン一つで実行できます。 拡張機能 Code Runner をインス…

miroをもっと使いたい!miroアプリ 3分クッキング

miro アプリ 弊社はモバワークを導入していて、チームメンバーも普段はフルリモートワークをしています。 チームではオンラインホワイトボードとしてmiroを導入していて、例えばこんな事に使ってます。 ボード上でタスクチケットの管理 残りタスクと進捗の可…

hyperfineを使ったCLIツールのベンチマーク

CLIツールのパフォーマンス気になりますね 皆さん普段様々なCLIツールをご利用かとは思いますが、そのCLIツールのパフォーマンスが気になったことはありませんか?私はまれによくあります。今回はそういうときに役に立つ hyperfine をご紹介です。 github.co…

MySQL 5.7 でクエリだけでランキングを実現する方法

ここ半年、競プロをこつこつ頑張っているエンジニアの id:dorapon2000 です。好きなアルゴリズムは累積和です。 解決したい課題 「MySQL 5.7 内で完結できるように、クエリだけでランキングを取得したい」 データベースのデータを使って調査をする際、ランキ…

外からやってくる値から TypeScript の型を守るライブラリ・ツールまとめ

こんにちは、新卒エンジニアの id:d-kimuson です 先日 type-predicates-generator という型定義からユーザー定義型ガード・アサーション関数を自動生成するツールをリリースして紹介記事を書いたのですが、感想とかを眺めていたら同じく外部から来た値に安…

プロダクトバックログが複雑すぎる!

はじめに はじめましての方ははじめまして、ブロックチェーンチームの id:Nanamachi です。夏頃まではエンジニアとして関わっていましたが、故あって現在はプロダクトマネージャとしての道を進んでいます。今日はそんな新米プロダクトマネージャが、膨れ上が…

Vue.jsでoffsetWidth, offsetHeightが取得できない時は

はじめに offsetWidthやoffsetHeightなどの幅や高さを取得する関数たちは、display: noneになっている場合、0を返します。 Vue.jsで要素の表示非表示にv-showを用いている場合、v-showはその要素にdisplay: noneを付与して制御を行うので、非表示中のoffsetW…

行動を妨げる指標の罠

チーム開発で、指標をうまく使えると便利ですが、この「うまく使う」というのはなかなか難しく、罠はあると思っています。 今回は、この罠を、信号機に例えて、説明してみたいと思います。他にも、罠があればぜひ教えてください! 壊れた信号 壊れた信号 デ…

コミットメッセージにブランチ名を自動挿入する

こんにちは、新卒エンジニアの id:kaoru-k_0106 です 何をしたか 私のチームでは、コミットメッセージの先頭にチケット番号を入れるルールがあります。 例えば、PROJECTNAME-123 〇〇の処理を変更しただと、PROJECTNAME-123の部分がチケット番号です。 最初…

Perlのコンテキストクイズにツールで答えてみた

はてなさんのコンテキストクイズに拙作のContextual-Diagで答えてみました。これでコンテキストマスターですね!? github.com use Test2::V0; use CDD; like( warnings { length( cdd ) }, [qr/wanted SCALAR context/, qr/evaluated as STR/], 'length <こ…

特定のディレクトリだけパーミッションを確認したい

TSの型迷宮に迷い込んだエンジニアのid:dorapon2000です。 ディレクトリのパーミッションを調べるとき、皆さんどうしていますか。例えば/etcのパーミッションを確認したいとき、以前の僕はこうです。 ❯ ls -l / total 104 drwxr-xr-x 2 root root 4096 6月 2…

DBIのcanは、関数が生えているかでなく、実装されているかどうかを判定する

次のコードの通り、DBIx::Sunnyを利用した際、$dbh->select_oneを呼び出せるにも関わらず、$dbh->can('select_one')がfalseとなります。 canの挙動が、デフォルトと異なり、一見すると困惑します。 use Test2::V0; use DBIx::Sunny; use Types::Standard qw(…

VSCode で TypeScript の交差型のプロパティを省略せずに見れるようにする

VSCode でホバーして型情報を見ようとすると、交差型はプロパティが展開されません プロパティの型を展開する Mapped Types を通すことで省略せずにプロパティを見ることができます。プロパティが交差型になっていることもあるので、再帰的にプロパティを Ma…

NFTマーケットプレイス「ユニマ」の技術スタックを紹介します

こんにちは。ブロックチェーンチームのソフトウェアエンジニアの id:odan3240 です。 ブロックチェーンチームでは NFT を販売するためのUniqysマーケットプレイス(以下、ユニマ)と、その NFT を販売するための管理画面(以下、管理画面)を開発しています。ユ…

モバイルファクトリー Advent Calendar 2021

こんにちは!エンジニア組織開発責任者のid:kfly8です。 今年もモバイルファクトリーのAdvent Calendarをお送りします 今年のアドベントカレンダーは「今日から使える技術」をテーマにコンパクトにお届けしていきます!*1 今予定しているキーワードを見ると…

CommonJS と ESModules が混在している環境で、lodash を lodash-es に置き換え、バンドルサイズを減らす

こんにちは、21卒エンジニアの id:d-kimuson です。 先日、プロダクトで使用している lodash を lodash-es に置き換えることで、バンドルサイズの削減をしました。 lodash を lodash-es に置き換える話はよくありますが、今回のプロダクトは運用歴が長く Com…

Perlの最新動向 2021

こんにちは、エンジニアの id:mp0liiu です。 8月28日(土)の Learn Languages 2021 というイベントの Language Update というセッションで@charsbarさんと一緒に2018年以降のPerl5やPerlコミュニティの最新動向について話してきたので、そのとき話した内容に…

目的と技術に向き合う。その心は、楽しさのため|モバファクエンジニア座談会

モバイルファクトリーのエンジニアは、NFTマーケットプレイスの「ユニマ」や位置ゲームの「駅メモ!」など様々な事業の開発をしています。そんなエンジニアたちが、普段、どのようなことを考えているのか。3人のエンジニアに聞いてみました。 この記事に出て…

突撃! 在宅の開発環境 2021年夏

はじめに こんにちは。ブロックチェーンチームのエンジニア、 @nanamachi です。 tech.mobilefactory.jp 前回の記事ではたくさんの方に閲覧&コメントいただきありがとうございました。この記事から1年。モバイルファクトリーは日本のどこからでも働けるよう…

モバファクのフロントエンドランチ会の紹介

こんにちは。ブロックチェーンチームのソフトウェアエンジニアの id:odan3240 です。 この記事では昨年の9月から社内で取り組みを続けているフロントエンドランチ会について紹介します。 フロントエンドランチ会とは 第2木曜と第4木曜のランチの時間 (13:00-…

EIP-2718: Typed Transaction Envelope が Ethereum の未来を感じる提案だったので紹介したい

こんにちは、ブロックチェーンチームでソフトウェアエンジニアをしている id:odan3240 です。 来月に予定されている Ethereum Berlin Upgrade の調査を行う中で発見した EIP-2718: Typed Transaction Envelope が、Ethereum の未来を感じさせる提案だったの…

Google Docs を用いたエクストリームリーディングのすゝめ

あけましておめでとうございます。ブロックチェーンチームのソフトウェアエンジニアの id:odan3240 です。 この記事では Google Docs を用いたエクストリームリーディング形式の社内勉強会を1年間継続できた記念に、その形式を紹介をします。 エクストリーム…

ERC721 の extension の違いによるコストの比較

この記事はモバイルファクトリー Advent Calendar 2020 25日目の記事です。長かったアドベントカレンダーもこれがラストです。今年も25日まで毎日技術記事を楽しみに過ごせました。 こんにちは、ブロックチェーンチームのソフトウェアエンジニア id:odan3240…

社内勉強会を丁寧に改善し、フルリモートでシナジーを生み出す

この記事はCTOA Advent Calendar 2020とモバイルファクトリー Advent Calendar 2020 の24日目の記事です。また先日のGaiax Technical Meetupsの登壇内容を元にした内容になります。 こんにちは。エンジニア組織開発責任者のkobaken(@kfly8)です。 明日はクリ…