Mobile Factory Tech Blog

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

GCPでシンプルなCI/CDパイプラインを構築する

はじめに サービスをデプロイするときはビルドしてテストしてから行うという手順はよくあります。 その時に、Google Cloud Platform (GCP) 上で CI/CD パイプラインを構築し、コードの変更をトリガーにしてビルド・テスト・デプロイが手軽にできる手法を紹介…

ShellCheckを使おう!の話

駅メモ!チームエンジニアの id:Eadaeda です。 みなさんシェルスクリプト書いてますか?私は時々書いています。12/2 の記事ではシェルスクリプトのテストを書いてみませんかという話を書きました。 tech.mobilefactory.jp 今回はテストではなく、linter の…

JavaScript 実行エンジンの違いによる URL Interface の挙動の違いについて

こんにちは、エンジニアの id:yunagi_n です。 みなさんは JavaScript において、 URL をパースするとき、どの API を使用していますか? もっとも簡単なのは、 URL Interface を使用することだと思います。 今回は、その URL Interface が、 JavaScript の…

元スクラムマスターが初めてプロダクトオーナーをやってみた

こんにちは。モバイルファクトリーでエンジニアをしているまえけんです。 自分の居るチームではスクラムで開発をしていて、自分はスクラムマスターとしてチーム運用をしていました。 が、プロダクトオーナーの退職と組織編成によるチーム人数の増加などによ…

新卒で入社した時の心構え

モバイルファクトリー Advent Calendar 2022!毎週土曜日は「良いモノ」を作る技術というテーマで、モバファクの非エンジニアが知見やTipsをお届けします! こんにちは。駅メモ!シリーズでデザイナーをしている19卒入社の @watagisanです。 アドベントカレ…

巨大なプルリクエストのコードレビューを乗り越える

こんにちは。駅奪取エンジニアのid:dorapon2000です。 コード差分の大きなプルリクエスト(以下、プルリク)をコードレビューした経験は多くの方があると思います。 プルリクは小さく・単位ごとに、とは頭でわかっていても、実装している内に想定よりも大き…

push 忘れのあるブランチで Jenkins を走らせない工夫

こんにちは、駅奪取チームエンジニアの id:kebhr です。 駅奪取チームでは Pull-Request を本番環境に反映する前に Jenkins を用いてフルテストを実行しています。 手順としては Jenkins をキックするシェルスクリプトを使い、開発環境で次のようなコマンド…

駅メモ!エンジニアの勉強会の紹介

id:nesh です。 今回の記事では駅メモ!エンジニアで定期的に開催している社内勉強会「Denco Tech Night」について紹介したいです。 Denco Tech Night について この勉強会は 2017 年から始めました。 社内勉強会が促進されている環境であるため、その社内勉…

>/dev/null 2>&1 しなくても黙ってくれるコマンドオプション3選

こんにちは。駅奪取チームエンジニアのid:dorapon2000です。 よくシェルスクリプトのIF文に >/dev/null 2>&1 を書いて条件文とすることはありませんか。実行結果の成否をIF条件として利用したいのであって実際に出力したいわけではないケースです。 実は身近…

JavaScript: unhandledrejectionの発生条件クイズ!

こんにちは、ブロックチェーンチームのエンジニアid:charinesです。 この記事ではJavaScriptにおける unhandledrejection がどのような条件で発生するのかをクイズ形式でまとめています。 unhandledrejection とは unhandledrejection はエラーハンドリング…

転送量を減らすためにCloudFrontのgzip圧縮を有効にしたら、リクエスト数も減ったのはなぜ?

こんにちは、エンジニアの id:kaoru-k_0106 です。 CloudFront で gzip 圧縮を有効にしたところ転送量が減ったのはもちろんですが、予想外にリクエスト数も減ったため、理由が気になって調査して記事にしてみました。 背景 駅奪取シリーズは、2022 年現在も…

「カジュアル面談」に関わることになったら考えること

こんにちは! モバファクで採用担当として働く@overallfactoryです。 毎週土曜日は「良いモノ」を作る技術というテーマで、モバファクの非エンジニアが知見やTipsをお届けします。今回の記事では、「良いモノ」=「良い組織」と捉えてエンジニア採用について…

シェルスクリプトのテストを書こう!

駅メモチームでエンジニアをしている id:Eadaeda です。シバンは #!/usr/bin/envを使う派です。 皆さんはシェルスクリプト書いてますか? 環境構築、開発、テスト、ビルド、デプロイなどなど、一連の作業を自動化するための手段として時々出番があるんじゃな…

TS 4.9 satisfies operator を使って React Router のナビゲーションを型安全にしてみる

BC チームでエンジニアをしている id:d-kimuson です 11月にリリースされた TypeScript 4.9 から satisfies operator が追加されました。satisfies operator が追加されたことで 「React Router でのナビゲーションを型安全にする」がやりやすくなったのでや…

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

こんにちは!モバイルファクトリーでエンジニアをしている id:d-kimuson です! 今年もモバイルファクトリーの Advent Calendar をお送りします Advent Calendar 2022 モバイルファクトリー Advent Calendar 2022 では モバイルファクトリーの社員がプロダ…

Terraform を管理するリポジトリのディレクトリ構成とその思想

こんにちは。ブロックチェーンチームのソフトウェアエンジニアの id:odan3240 です。 tech.mobilefactory.jp 上記の記事で紹介した通りユニマ/ガレージのインフラは Terraform で管理されています。 この記事では Terraform を管理するリポジトリのディレク…

GitHub Actions で nodenv を扱う方法

こんにちは。ブロックチェーンチームのソフトウェアエンジニアの id:odan3240 です。 下記の記事で紹介した通り、ブロックチェーンチームではバックエンドでも Node.js を使用しています。 tech.mobilefactory.jp フロントエンドとバックエンドのソースコー…

チーム横断の技術研修とは別で「プロダクト技術研修」をする

駅奪取チームエンジニアの id:dorapon2000 です。 弊社の今年の技術研修についての記事が何点か投稿されています。 tech.mobilefactory.jp tech.mobilefactory.jp プロダクトで利用されているプログラミング言語、ライブラリ、RDBMSなどの技術研修を行っても…

Perl5.36の変更点

こんにちは、エンジニアの id:mp0liiu です。 少し前の話になりますが、5/28にPerlの最新安定バージョンである5.36がリリースされたので、コミュニティ周りの動向も含めて気になった点についてまとめていこうと思います。 use v5.36 一番影響がある変更は us…

GitHub ActionsのワークフローをオートスケールするSelf-hosted runnerに移行した話

こんにちはエンジニアのEadaedaです。 皆さんのチームではGitHub Actionsを使っていますか?ブロックチェーンチームではテストやリンター、デプロイといったワークフローをGitHub Actionsで行っています。 今まで、デプロイ以外のワークフローはGitHub-hoste…

OSSのスポンサーを始めるときに、技術広報目線で考えたこと

こんにちは。エンジニアのid:kfly8です。 今月から、NestJSとethers.jsのスポンサーをはじめました この記事ではOSSのスポンサーをするにあたり考えたことを書きます。 モバファクは、NestJSとethers.jsの2つのOSSのスポンサーになりました NestJSとethers.j…

TOKYO BLOCKCHAIN TECH MEETUP 2022 で登壇しました

こんにちは。ブロックチェーンチームのソフトウェアエンジニアの id:odan3240 です。 先日開催された TOKYO BLOCKCHAIN TECH MEETUP 2022 に登壇してきました。 connpass.com 登壇内容 「クラウド KMS の活用」というタイトルで、自作の OSS の cloud-crypto…

新卒エンジニアが技術研修で学んだこと・気付いたこと

はじめまして。22卒エンジニアの id:kebhr です。 モバイルファクトリーでは、現場で使用されている技術を学ぶ技術研修がおよそ1ヶ月にわたって行われます。私は学生時代から趣味やアルバイト・業務委託の仕事でコードを書いてきましたが、技術研修を通して…

Perlの技術研修

こんにちは。エンジニアのid:kfly8です。 先日、技術研修のインタビュー記事を公開し、手を動かしつつ、コミュニケーションをよく取る技術研修といった主旨の内容でした。 tech.mobilefactory.jp こちらのインタビューでは具体的な研修内容は触れていません…

社内勉強会 「Crypto 勉強会」の紹介

こんにちは。ブロックチェーンチームのソフトウェアエンジニアの id:odan3240 です。 モバファクには「シェアナレ!」という社内勉強会制度があります。この制度の時間を利用して隔週で「Crypto 勉強会」を開催しています。 「Crypto 勉強会」は前身の「Laye…

Vue2 (nuxt2) で TypeScript の型を守る Tips

こんにちは、ブロックチェーンチームの id:d-kimsuon です Vue2 では TypeScript がサポートされており、公式の TypeScript のサポートのドキュメント に従うことで TypeScript で書いていくことができます しかし、素直に書いていくと any 型になってしまっ…

手を動かして、ちょくちょく話すモバファクの技術研修

「新しい環境に馴染んで活躍できるか?」 この不安を感じる人は少なくないと思います。そういった不安に対応できるよう、モバイルファクトリーでは、できる限り早くチームや会社に馴染んで強みを発揮できるようにオンボーディングを大切にしています。 この…

GW自由研究発表会を開催しました

こんにちは、ブロックチェーンチームの id:odan3240 です。 モバファクには「シェアナレ!」という社内勉強会制度があります。この制度の時間を使用してゴールデンウィーク(以下GW)中に個人が趣味開発で行ったことを共有する会を開催しました。 この会は以下…

!!0 eq 0 ? 'True' : 'False'の結果は?|Perlのコンテキストとスカラ値を覗く

Falseになります。 なぜか? eqは何か? eqは、文字列同士が一致しているか確かめる演算子です。より詳しく言えば、SV(Scalar Value/スカラ値)という構造体の中のPV(Pointer Value/文字列)を比較します*1。スカラ値の文字列を利用することを、Perlならではの…

nestjs/swaggerで生成したOpenAPI 3.0の定義ファイルを使ってReDocにWebhookの項目を表示させる

みなさんこんにちはエンジニアのEadaedaです。 皆さんのチームではAPIドキュメントの生成に何をお使いですか?UniqysチームではReDocを使っています。 nestjs/swaggerを使ってコントローラーから生成したOpenAPIの定義ファイルを与えるだけでリッチなドキュ…