サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
中東情勢
tech.mobilefactory.jp
こんにちは、新卒エンジニアの id:d-kimuson です 先日 type-predicates-generator という型定義からユーザー定義型ガード・アサーション関数を自動生成するツールをリリースして紹介記事を書いたのですが、感想とかを眺めていたら同じく外部から来た値に安全な型付けをするためのライブラリやツールの情報をいくつも観測しました この辺りのランタイムチェックライブラリの情報ってあまりまとまっていない印象で自分が知らないものもいくつかあったので、調べつつ簡単にまとめられたらなと思ってこのエントリを書きました 外部からやってきた値を型安全にするにはざっくりと 型生成によるアプローチ ランタイムチェック用の独自型を書かせるアプローチ 型情報からランタイムチェック関数を自動生成するアプローチ の 3 つのアプローチがあると思うので、それぞれのアプローチごとに紹介します ① 型定義
こんにちは、新卒エンジニアの id:kaoru-k_0106 です 何をしたか 私のチームでは、コミットメッセージの先頭にチケット番号を入れるルールがあります。 例えば、PROJECTNAME-123 〇〇の処理を変更しただと、PROJECTNAME-123の部分がチケット番号です。 最初はこれを手動で入力していたのですが、時々入力を忘れることがあり自動挿入しようと思いました。 ちょうど、トピックブランチ名がチケット番号だったので、ブランチ名を使う方針で実装をしました。 導入手順 その1 Gitのコミットテンプレートを設定する Gitのコミットテンプレートとは、コミットメッセージエディタを開いたときにデフォルトで設定されている文字列です。 この設定は、次のようにテンプレートファイルを作成し、git configで設定できます。 % echo '[branch-name]' > ~/.com
はてなさんのコンテキストクイズに拙作のContextual-Diagで答えてみました。これでコンテキストマスターですね!? github.com use Test2::V0; use CDD; like( warnings { length( cdd ) }, [qr/wanted SCALAR context/, qr/evaluated as STR/], 'length <ここ> ... STR in SCALAR' ); like( warnings { if( cdd ) {} }, [qr/wanted SCALAR context/, qr/evaluated as BOOL/], 'if (<ここ>) ... BOOL in SCALAR' ); like( warnings { for my $i ( cdd ) {} }, [qr/wanted LIST context
VSCode でホバーして型情報を見ようとすると、交差型はプロパティが展開されません プロパティの型を展開する Mapped Types を通すことで省略せずにプロパティを見ることができます。プロパティが交差型になっていることもあるので、再帰的にプロパティを Mapped Types に通すような型を定義しておいて、通すことでプロパティを全て確認できます type Expand<T> = T extends object ? T extends infer O ? { [K in keyof O]: Expand<O[K]> } : never : T type Temp = Expand<`確認したい型`> 厳密でなくとも簡単にどんなプロパティがあるか把握したいだけなら組み込みの Required や Partial を使うのが手軽です。ただし、あくまでデバッグ用途でそれぞれ省略可能プロ
こんにちは。ブロックチェーンチームのソフトウェアエンジニアの id:odan3240 です。 ブロックチェーンチームでは NFT を販売するためのUniqysマーケットプレイス(以下、ユニマ)と、その NFT を販売するための管理画面(以下、管理画面)を開発しています。ユニマはブロックチェーン上の NFT を日本円で売買可能なマーケットプレイスです。 ユニマの開発はブロックチェーンに関するサービスなので、ブロックチェーンに関する技術をゴリゴリに使って開発しているのでは?と考える方がいるかもしれません。しかし実際はそうではなく Web アプリケーションに関する開発は普通の技術スタックで開発しています。もちろん実装するロジックによってはブロックチェーンに関する知識が必要となる場合もありますが、マネージドサービスやフレームワークやツールを活用してコア機能の実装に集中できるように技術スタックを選択
こんにちは!エンジニア組織開発責任者のid:kfly8です。 今年もモバイルファクトリーのAdvent Calendarをお送りします🎉 今年のアドベントカレンダーは「今日から使える技術」をテーマにコンパクトにお届けしていきます!*1 今予定しているキーワードを見ると・・「TypeScript」「Vue.js」「Perl」「CLI」「MySQL」「AWS」「地図」「プロダクトマネジメント」などがあります。ぜひお楽しみください! 一覧 12/1 tech.mobilefactory.jp 12/2 tech.mobilefactory.jp 12/3 tech.mobilefactory.jp 12/4 tech.mobilefactory.jp 12/5 tech.mobilefactory.jp 12/6 tech.mobilefactory.jp 12/7 tech.mobilefa
こんにちは、21卒エンジニアの id:d-kimuson です。 先日、プロダクトで使用している lodash を lodash-es に置き換えることで、バンドルサイズの削減をしました。 lodash を lodash-es に置き換える話はよくありますが、今回のプロダクトは運用歴が長く CommonJS と ESModules が混在している少し特殊な環境での試みだったので、知見を共有したいと思います。 利用されていないコードを消し、バンドルサイズを減らす lodash はバンドルサイズの大きなライブラリです。minified な状態で 69.9KB のサイズになります。 参考: lodash v4.17.21 ❘ Bundlephobia webpack にはデッドコードを削除する TreeShaking という機能があり、ライブラリのデッドコードを削除することができるのでバンドルサ
こんにちは、エンジニアの id:mp0liiu です。 8月28日(土)の Learn Languages 2021 というイベントの Language Update というセッションで@charsbarさんと一緒に2018年以降のPerl5やPerlコミュニティの最新動向について話してきたので、そのとき話した内容に補足などしつつ記事にしていきたいと思います。 配信アーカイブはこちらから見れます。 時系列 2019/5/22 Perl5.30 リリース 2020/6/20 Perl5.32 リリース 2020/6/24 Perl7の発表 2021/5/21 Perl5.34 リリース Perl5.30 の変更点 正規表現や文字周りの細かい改善などはありますが、正直めぼしい変更点が見られないです。 Perl5.32 の変更点 isa 演算子の実装 値があるクラスのインスタンスもしくはそのサブ
モバイルファクトリーのエンジニアは、NFTマーケットプレイスの「ユニマ」や位置ゲームの「駅メモ!」など様々な事業の開発をしています。そんなエンジニアたちが、普段、どのようなことを考えているのか。3人のエンジニアに聞いてみました。 この記事に出てくる人たち チームによって性質は異なるのだから、課題に応じて、開発の進め方を変える ワークログを書くのは楽しい 可視化するのは、組織開発においても、当然サービス開発、エンジニアリングでも大事 可視化は目的ではない 楽しく仕事をする。そのために斧を研ぐ 理想を知らないと妥協してることに気づかない 自分が望んでいる環境があるなら、そう変えればいい 三者三様のキャリア @kfly8 : 今日は、モバファクのエンジニアが普段どんなことをしているのか、考えているのか、大切にしているのか、みたいなことを聞いていきたいです。よろしくお願いします! まずは、みんなが
はじめに こんにちは。ブロックチェーンチームのエンジニア、 @nanamachi です。 tech.mobilefactory.jp 前回の記事ではたくさんの方に閲覧&コメントいただきありがとうございました。この記事から1年。モバイルファクトリーは日本のどこからでも働けるようになり、書籍購入、資格取得、セミナー参加、懇親会の支援制度などフルリモートに適応できるよう多くの変化をしてきました ( https://recruit.mobilefactory.jp/work-style/ )。その中で社員の環境もさまざま変わったことでしょう。 この変化を記事にすれば、閲覧数を稼げる 弊社の魅力を発信できるに違いない!という目論見で、初めてバズった記事にすがるエンジニア組織開発責任者の@kfly8から次のようなチャットが送られてきました。 kfly8: インターネット識者*1の @nanamachi
あけましておめでとうございます。ブロックチェーンチームのソフトウェアエンジニアの id:odan3240 です。 この記事では Google Docs を用いたエクストリームリーディング形式の社内勉強会を1年間継続できた記念に、その形式を紹介をします。 エクストリームリーディング とは エクストリームリーディングとは黙読フェーズと議論フェーズの2つのフェーズを繰り返す読書会の形式の1つです。 黙読フェーズでは次のことを行います。 1節、1章、数ページなどのある程度のまとまった文章を読む範囲として決定 この範囲を参加者で並行して黙読 その次の議論フェーズでは黙読した結果について次のことを行います。 文章の解釈を合わせる 文章中で分からないところを教え合う エクストリームリーディングの利点は次の通りです。 読書会への参加に必要な事前準備が必要ないため参加のハードルが低い お互いの知識を補え合え
こんにちは、エンジニアの id:i1derful です。 2020年モバイルファクトリーアドベントカレンダーの21日目の記事です。 はじめに 僕は、とあるプロダクトチームのフロントエンドユニットに所属しています。 主に何してるかですと、フロントエンド改修プロジェクトに携わっています。 フロントエンド改修プロジェクトでは、レガシーなコードをリプレイスしています。 プロジェクト内での自身の主な役割は、 プロジェクトの方針および指針を決める スケジュールを切る 遅れたらテコ入れして上長に「いい感じ」に報告して交渉する メンバーの作業範囲・段取りを考えて伝える 何人のエンジニアを借りれるか相談する もちろん作業する このプロジェクトはすでに2年ほどやっています。 Q: 2年やっての感想は? A: 疲れましたね もちろん疲れただけでなく得られたものは当然ありますよ。 失敗は成功のもとと言いますので、
この記事はモバイルファクトリー Advent Calendar 2020 17日目の記事です。 こんにちは、エンジニアのshioiyanです。 モバイルファクトリーには部活動制度があり、いくつもの部活動が存在しているのですが、自分はそのうちのゲームジャム部に所属しています。 今年2月から弊社はリモートワークになりましたが、ゲームジャム部はビデオ通話を使って活動を継続しています。 近頃、外出自粛している人が増えた中でも、ビデオ通話で話しながら楽しく遊べるサービスを作ろう!ということで部活を通じて、Web上でリアルタイムにそれぞれの画面が同期するお絵かきチャットの開発をしました。 仕様 今回作るリアルタイムお絵かきチャットの仕様はざっくり以下のようになります。 ユーザは部屋を選んで入室ができる 部屋にはマウスやタップ操作で絵を描くことのできるキャンバスがある 絵を描くと同じ部屋のメンバーのキャ
この記事はモバイルファクトリー Advent Calendar 2020 15日目の記事です。 エンジニアの yokoi0803 です。DB設計をしていて多対一のリレーションを見たり、設計したりする機会が何度かあって、その度にどう設計するかで悩んでます。 多対一のリレーションはいくつかの設計で実現できますが、その選定の際の指標を得るため、今回はパフォーマンスの観点から設計の比較をしてみたいと思います。 多対一のリレーションを表現する3つの設計 あるテーブルが複数のテーブルに対して多対一で紐付くケースについて、ここではくじ引きとその景品を表現するためのDB設計を想定します。 箱の中のくじそれぞれに景品が設定されており、景品には旅行券や果物など、様々な種類のものがあります。 こういった仕様の設計手法にはいくつか種類がありますが、今回は「ポリモーフィック関連」、「交差テーブルを用いた設計」、「親
この記事はモバイルファクトリー Advent Calendar 2020 14日目の記事です。 はじめまして、20卒エンジニアのthe96です。 今回は業務中に使っているPerlのVSCodeの拡張機能のメソッド呼び出しの際の定義元ジャンプが正しく動作するように修正した話をします。 やったこと 従来のVSCode Perlではメソッド呼び出し(Hoge::Fuga->func())のときに定義元ジャンプを行った場合、別パッケージの同名関数の定義元に移動してしまうことがあります。 ソースコードを読む際に正しい定義元に移動しないと不便なので、この拡張機能に手を入れて改善しました。 この不具合について説明するために、同名の関数helloが定義された二つのパッケージAとBを用意しました。 修正前の定義元ジャンプ機能では、関数呼び出し(A::hello)のときはA#helloの定義に移動できています
この記事はモバイルファクトリー Advent Calendar 2020 13日目の記事です。 はじめまして! とあるチームでUX・UI周りを担当しているデザイナーのid:yux_0_0です。 今日の記事では、職種に限らず誰でもUXを意識できるようにするための「自主トレーニングのススメ」と、それを後押しする「UX探検隊」についてご紹介します。 はじめに 本題に入る前に、私がUXの世界とどう向き合っているかを軽く書かせていただきます。 私のデザイナーとしてのキャリアは、紙媒体のデザインが主な仕事の小さなデザイン事務所から始まりました。 数年かけてデザインの基礎を身につけた後にweb系企業に転職し、FlashでActionScriptを書いたり、グラフィックデザインやwebデザイン等を担当してきました。 モバイルファクトリーに入社してからもしばらくはグラフィックデザインとUIデザインをメインで
この記事はモバイルファクトリー Advent Calendar 2020 10日目の記事です。 こんにちは、エンジニアの id:tsukumaru です。 最近はチームのエンジニアのまとめ役を任され、メンバーの評価にも一部関わるようになりました。 評価を考える際、具体的にいつどのようなことがあったのかを把握していないと、「なんとなく頑張っていそうだから」や「とりあえず真ん中の評価にしておこう」といったような評価エラー(評価者が陥りがちな過ち)を起こすことにつながってしまいます。 今回は、評価エラーを防ぐために自分が行っている「行動メモ」について紹介したいと思います。 ※ 成果目標と行動目標に分けて目標を立てているなど、「行動」を評価するための評価制度がある前提で書いています。 また、この記事では評価エラーについての詳細な説明は割愛します。 行動メモについて 普段の各メンバーの様子(Slac
この記事はモバイルファクトリー Advent Calendar 2020 7日目の記事です。 こんにちは、ブロックチェーンチームのソフトウェアエンジニア id:odan3240 です。湯船に浸かるのが楽しい季節になってきました。 以前テストに関するこの記事が話題になっていて、読んだときに最後の部分が目に留まりました。 blog.sushi.money テストを先に書いてから実装を書くか、先に書いた実装のテストをあとから書いているか、という場合でも違いが出てきそう。 以前までの自分は先に実装を書いてからテストを書くことがほとんどでした。理由としては、性格的にコードを書くのが好きで、頭の中にあるコードを急いで書き出したくなるため、作業に入ると先に実装を書いていました。 しかし、開発時に実装より先にテストケースから書き始めるとうまく実装が進むことに気付いたので、共有します。 割り算を行う関数 d
この記事はモバイルファクトリー Advent Calendar 2020 5日目の記事です。 はじめに 新卒1年目のエンジニアをしているid:dorapon2000です。これまで1年で数冊のペースでしか本を読んできませんでしたが、入社してから8ヶ月経ち22+α冊の本を読むことができました。その際に、何を意識して読んでいたのか、モチベーションを継続させるためにした工夫などをお話しようと思います。ここでの本というのは小説ではなく主に技術書・実用書を指しています。 読んだ本 技術関係 Perlベストプラクティス ドメイン駆動設計入門 カイゼン・ジャーニー Effective Python第2版 達人に学ぶDB設計徹底指南書 達人に学ぶSQL徹底指南書第2版 ソフトウェアテスト技法練習帳 最強のCSS設計 チーム開発を成功に導くケーススタディ アカマイ 知られざるインターネットの巨人 詳解HTTP
この記事はモバイルファクトリー Advent Calendar 2020 4日目の記事です。 はじめまして!駅メモ!チームでUX周りを見ているUXエンジニアのMです。 今回は、会社全体のプロダクトのUX品質底上げのため、日頃から行っている「UX定例会」についてご紹介したいと思います。 モバファクのUXデザイナー/UXエンジニアとは? まずは、弊社のUX周りについての説明が必要かと思います。現在、私が所属しているチームでUXチェックを行っているメンバーは、最初からUXを担当する役割でチームに入ったのではなく、元々はエンジニアだったり、デザイナーだったメンバーが、専門性を高めてUX専任になった経緯があり、まだまだ発展途上の役割です。 UXデザイナー/UXエンジニア(以下、UX担当者)の役割は、ビジュアルのデザインに留まりません。プロダクトに触れるユーザーの体験を、たくさんの制約がある中、様々な
この記事はモバイルファクトリー Advent Calendar 2020 3日目の記事です。 デザイナーの id:momoyagi です。UI/UXについて考えたり、グラフィックデザイン作ったりしてます。前述の通りの役職なのでデザイン系の記事をすすめられたんですけど、コミュニケーションも技術じゃん(屁理屈)と思っているので雑談の話します。 弊チームのゆるく無駄な雑談 ようしゃべる 私の所属するチームでは、夕方頃、Google Meetを利用して進捗報告のための夕会後5〜10分の短い雑談タイムを設けている。 話題はTwitterのトレンドから休日の話等、他愛もない事柄ばかりで聴いても聴かなくてもなんの支障もない話題が中心。 度々、事業やタスクについての相談も行われるが普段は無駄そうなことばかり、というかほとんど無駄である。 チーム構成や世界情勢 弊チームでは、中心となる社内のメンバー数人と業
この記事はPerl Advent Calendar 2020とモバイルファクトリー Advent Calendar 2020 2日目の記事です。 こんにちは。id:kfly8 です。 今年、会社の勉強会の時間を使ってちょこちょこと、perl-users.jpを静的サイト化しました。 せっかくなので、2008年から2010年の記事を読み返したのですが、勉強になりました。 温故知新というと大仰ですが、昔から今にかけての変化も触れながら、 個人的に面白かった記事をいくつか紹介してみたいと思います。 1. 元々の文字列を破壊しないように置換する方法 最も素朴な方法は、別の文字列に退避する方法だと思いますが、2行になって面倒です。 my $old = "dog"; my $new = $old; $new =~ s/dog/cat/; 2008/12/12で紹介されていたのが、List::MoreU
この記事はモバイルファクトリー Advent Calendar 2020 1日目の記事です。 こんにちは、ブロックチェーンチームでソフトウェアエンジニアをしている id:odan3240 です。最近会社で使っていた椅子と同じモデルの椅子を購入して QoL が上がっています。 認証に Cookie を使用している API を叩いてサーバサイドレンダリング (以下 SSR) する場合、SSR 時にも認証を通しておく必要があります。 Nuxt.js において、API リクエストを行うライブラリとして nuxt/axios を使用していると SSR 時に HTTP ヘッダーを proxy してくれるため、これを達成できます。この記事ではこれについて解説します。 Cookie を伝搬させる必要性 セッション情報を Cookie で管理している API サーバにリクエストを投げるときには HTTP ヘ
こんにちは。id:kfly8 です。普段はヒューマンリレーションズ部でエンジニア組織開発をしています。 先日、ISUCON *1でPerlの参考実装をやらせてもらったのですが、とても楽しかったです!貴重な機会をありがとうございました。また、"あのISUCON"の運営裏側を見れて、苦労、凄さなど身近な所で感じることができました。 微力ながら協力できて嬉しかったです。 この記事では、Goの参考実装からPerlへの移植をして考えたことを書きたいと思います。今後、移植をされる方の何かの参考になれば幸いです。注意として、ここでの考えは公式の見解ではなく、あくまで個人的な見解です。 できるだけGo実装に寄せる 移植は、できるだけオリジナル実装のGoに寄せるよう心がけました。 実装の乖離が大きいと競技としてフェアでない、移植ミスの際に気づきやすくなりそう、そんなことが理由です。 具体的には、次の2つを行
ブロックチェーンチームのソフトウェアエンジニアの id:odan3240 です。 Vue.js で、input タグの ::placeholder 疑似要素に動的なスタイルを当てたい場面がありました。 この記事では、その際の問題と解決方法について紹介します。 この記事のゴール Vue.js では HTML クラスのバインディング や インラインスタイルのバインディング を用いて、動的にクラスやインラインスタイルを割り当てることで CSS を動的に変更ができます。 例えば、<input :style="{ paddingLeft: myPadding }">で、input タグの padding-left は myPadding を更新することで動的に変更されます。 しかし、これらの構文では ::placeholder の疑似要素だけを指定できず、結果スタイルを変更できません。 CSS カス
こんにちは、エンジニアのid:tenmihiです。 この度弊社の社内勉強会の時間を活用して、TechKaigiを開催したので紹介したいと思います。 TechKaigiとは TechKaigiはモバイルファクトリーのエンジニアがどんな問題を抱え、どう解決してきたかを共有をする勉強会です。 弊社のエンジニアであればチームを問わず誰でも参加できます。 開催ごとに発表テーマを決める予定で、第1回目のテーマは 隣のエンジニアが知らなそうなこと でした。 開催の理由 リモート勤務だと場所を選ばず仕事ができたり通勤時間に縛られなくなる一方で、コミュニケーションなどで辛いところもありますよね。 私は2年ほど前から東京を離れて長崎の自宅からフルリモートで働いていますが、オフィス側との会議や突発的な障害対応などでコミュニケーションの問題を経験しています。 猛威を奮っているコロナウィルスによる影響で弊社も今年の
4月入社の新人エンジニアのxztaityozxです。趣味はdotfilesいじりです 皆さんは日々の開発でふと、調査やデータの加工が必要となったことはありませんか?私はたくさんあります。 ではそういった時、どうやって解決していますか?私はいくつかのCLIツールを組み合わせることで解決しています。 例えば、/etc/services からtcpなサービスの名前を取り出すときは以下のようにします $ cat /etc/services | grep -P "\d+/tcp" | awk '{print $1}' こういったテクニックを「ワンライナー」と呼ぶことにし、日常のちょっとした調査やデータ加工をサッと出来るようにコマンドラインと触れ合っていくことを目的とした勉強会「ワンライナー勉強会」を開催しました。 この記事では、「ワンライナー勉強会」の進め方や問題、解答例を紹介します。 進め方 社内
要約 JVMは任意の言語で作ることができるので、Perlで書いてみました github.com このようにクラスファイルを読み取り、それを実行することができます 今回は読者がJVMを書き始められるようにクラスファイルの読み取り方に焦点をおいて解説します(あまりPerlの話はしません) 目次 自己紹介 JVMの基本 クラスファイルの解説 オペコードの実行 まとめ 自己紹介 駅メモにて主にバックエンドを担当しているid:toricorです。 仕事ではサーバがPerl実装なので、Perlでいろいろな機能を実装したりパフォーマンスチューニングをしたりしています。 JVMをつくろう 残念ながら今のところ仕事ではほぼJVMと縁がないので、まずは基本を確認します JVMとは Java Virtual Machine(Java仮想マシン)の略です Java仮想マシン - Wikipedia JVMはJav
こんにちは、ブロックチェーンチームでソフトウェアエンジニアをしている id:odan3240 です。 ページをまたぐエラーを制御したい場合、グローバルな状態管理を行えるVuex が選択肢に上がるかと思います。しかし、Vue.js 2系に対応する 3系の Vuex は公式の TypeScript サポートがなく TypeScript と相性が悪いことが知られています。エラー状態管理のような規模の小さいものなら Vue.observable を利用すれば良いのでは?と考え実装してみたところ、いい感じになったので紹介します。 前提知識 Vue.observable とは Vue.observable は Vue.js 2.6 から追加された API です。この API はオブジェクトをリアクティブにすることができます。コンポーネントの data 関数の返り値がリアクティブになるのと同じ仕組みです
次のページ
このページを最初にブックマークしてみませんか?
『Mobile Factory Tech Blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く