Mobile Factory Tech Blog

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

Perl

フィクスチャのアーカイブ機能実装による業務改善

こんにちは、駅メモ!チームの id:charines です。 今回は駅メモ!のデータ管理におけるフィクスチャ関連の改善の事例を通じて、駅メモ!チームの改善業務への取り組みを紹介します。 課題の背景と目的 駅メモ!ではゲームに必要なマスターデータをフィクス…

Perl5.40の変更点

こんにちは、エンジニアの id:mp0liiu です。 かなり遅くなってしまいましたが、今年も6/10にPerlの最新安定バージョンである5.40がリリースされたので新機能や変更点についてまとめます。 安定化した実験的機能 try-catch 構文 5.34 で追加された try-catch…

YAPC::Hakodate 参加レポート

駅奪取チームエンジニアの id:kimkim0106 です。 「レポートを書くまでが YAPC」とのことなので、自分も書こうと思います。 YAPC::Hakodate の概要 2024/10/5(土)に、北海道函館市の公立はこだて未来大学にて開催されました。 YAPC は Yet Another Perl Co…

MySQLで「無ければINSERT、あればUPDATE」を実現する方法

こんにちは、駅奪取エンジニアの id:kimkim0106(旧: id:kaoru_k_0106)です。 今回の記事は、駅奪取でテーブルにレコードが「無ければ INSERT、あれば UPDATE」(いわゆる UPSERT)をする箇所で Duplicate entry が出ていたのを修正したり、未然に防ぐ実装…

コスト削減のため Redis の sorted sets で実装していたランキング処理を MySQL に移行しました

駅メモ!チームエンジニアの id:yumlonne です。 この記事では Redis の sorted sets で実装していたランキング処理を MySQL に移行した仕組みを紹介します。 背景 駅メモ!には複数のランキングがあり、Redis の sorted sets を使うことでパフォーマンスの…

PerlパッケージからC#クラスの雛形を作ってみる

駅メモ!開発基盤チームの id:xztaityozx です! 皆さんは Perl を書いていますか?モバイルファクトリーが長く提供しているサービスなどでは、バックエンドが Perl で書かれています。 しかしながら、自分は普段インフラ領域をやらせてもらっているというこ…

Perl で App Store Server Notification V2 の検証をする

こんにちは、エンジニアの id:kaoru-k_0106 です。 駅奪取のサブスク機能である「駅奪取er定期券」は、App Storeのサーバ通知の実装の際に App Store Server Notification V2 を用いました。 他の言語での Server Notification V2 の実装例は見つかりますが…

GitHub ActionsのSelf-hosted Runnerで複数設定のRunnerを使う

駅メモ!開発基盤チームの id:xztaityozx です!今回は CI/CD のお話です。 現在、駅メモ!チームでは Jenkins を使った CI/CD が構築されています。今回ここに GitHub Actions を加えることとなりました。チームでは段階的に GitHub Actions に移行していく…

Perl5.38の変更点

こんにちは、エンジニアの id:mp0liiu です。 今年も7/2にPerlの最新安定バージョンである5.38がリリースされたので新機能や変更点についてまとめます。 5.38 はかなり変更点が多いですが、ニッチな機能に対する変更も多いので影響の大きそうな箇所だけ知り…

2022年のVSCodeのPerl開発環境

こんにちは、エンジニアの id:mp0liiu です。 自分が所属しているチームでは現在もPerl製のプロダクトを運用しており、VSCode で Perl のコードを書いたり触ったりする機会が多いです。 Perl は開発環境が貧弱で他の言語と比べるとあまり開発体験はよくあり…

Perlコードの「複雑さ」を計測する

駅メモ!チームでエンジニアをしている id:stakHash です。 弊社の主力プロダクトの 1 つである駅メモ!は、今年で 8 周年を迎えました スマートフォンゲームとしては息の長いサービスですが、現在でも日々様々な新機能の開発が進んでいます。 今後も今以上…

Perl5.36の変更点

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

Perlの技術研修

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

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

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

「YAPC::Japan::Online 2022」に2人のエンジニアが登壇し、スポンサーと運営をしました!

こんにちは。エンジニアのid:kfly8です。 3/4(金) 3/5(土) に、Japan Perl Associationが主催するPerlに関するオンラインカンファレンス「YAPC::Japan::Online 2022」が開催されました。 yapcjapan.org モバファクでは、駅メモ!や駅奪取などのプロダクトでPer…

イベントTシャツを支える技術 ー Acme::Bleachの詳解

こんにちは。エンジニアのid:kfly8です。 技術カンファレンスのノベルティで、コードを載せたデザインってイイですよね。謎解き要素で遊び心をくすぐりつつ、デザイン的にも普段使いしやすくかっこいいんですよね。リブセンスさんから2015年にもらったトート…

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

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

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

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

Perlの最新動向 2021

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

PerlのList::AllUtilsの逆引き

この記事はモバイルファクトリー Advent Calendar 2020 16日目の記事です。 はじめに 動作環境 逆引き 条件を満たす最初の要素をとる 条件を満たす最後の要素をとる 条件を満たす要素より後ろの要素たちを抽出する 条件を満たす要素以降の要素たちを抽出する…

PerlのVSCodeの拡張機能を少し便利にした話

この記事はモバイルファクトリー Advent Calendar 2020 14日目の記事です。 はじめまして、20卒エンジニアのthe96です。 今回は業務中に使っているPerlのVSCodeの拡張機能のメソッド呼び出しの際の定義元ジャンプが正しく動作するように修正した話をします。…

perl-users.jpの10年前のアドベントカレンダーを読んでみた

この記事はPerl Advent Calendar 2020とモバイルファクトリー Advent Calendar 2020 2日目の記事です。 こんにちは。id:kfly8 です。 今年、会社の勉強会の時間を使ってちょこちょこと、perl-users.jpを静的サイト化しました。 せっかくなので、2008年から20…

ISUCON10でPerlの参考実装をしました

こんにちは。id:kfly8 です。普段はヒューマンリレーションズ部でエンジニア組織開発をしています。 先日、ISUCON *1でPerlの参考実装をやらせてもらったのですが、とても楽しかったです!貴重な機会をありがとうございました。また、"あのISUCON"の運営裏側…

PerlでJVMをつくろう

要約 JVMは任意の言語で作ることができるので、Perlで書いてみました github.com このようにクラスファイルを読み取り、それを実行することができます 今回は読者がJVMを書き始められるようにクラスファイルの読み取り方に焦点をおいて解説します(あまりPerl…

Perl 製の静的サイトジェネレータでも Netlify の Deploy Preview で動作確認がしたい

こんにちは、ブロックチェーンチームでソフトウェアエンジニアをしている id:odan3240 です。 モバファクには毎日1時間社内勉強会の制度があります。 tech.mobilefactory.jp 様々な目的の社内勉強会が開催されていますが、その中に一つ OSS への貢献が目的の…

Perl::Critic の Policy を作ってチーム独自のコーディング規約チェックをする

概要 こんにちは、エンジニアの id:mp0liiu です。 自分は Perl でチーム開発をしているのですが、最近ある外部モジュールの使い方に関するチーム独自のコーディング規約が追加されました。 このコーディング規約に沿ってコードが書けているかどうかは人間の…

aliasedでFunction::Parametersの型指定を簡潔にする

この記事はモバイルファクトリー Advent Calendar 2019 2日目の記事です。 ヒューマンリレーションズ部シニアエンジニアのid:kfly8です。昨日、id:karupaneruraが公開していた2019年の最先端のPerl開発ボイラープレートにて、 Function::Parametersで (Insta…

The Perl Conference 2019 in Pittsburghに行ってきた

こんにちは。ヒューマンリレーションズ部のエンジニアのid:kfly8です。 少し時間が経ってしまったのですが、6月の16日から21日にかけて、The Perl Conference 2019 というアメリカのピッツバーグで開催されたPerlのカンファレンスに登壇をしてきたので、今回…

Perlのテストモジュールの紹介

この記事は、モバイルファクトリーAdvent Calendar 2018 23日目の記事です。 前日の記事は、id:masasuzさんの モバイルファクトリーのインフラアーキテクチャ でした。 こんにちは、id:yumlonneです! 最近、テストの重要性をひしひしと感じているので、テス…

AppiumでAndroidアプリの自動テストをPerlで書いてみた

こんにちは、モバイルファクトリー - Qiita Advent Calendar 2018 - Qiita の19日目担当の id:neshです。 今日の記事は AppiumでAndroidアプリの自動テストをPerlで書いてみた事についてです。 はじめに この記事では、headless Chromeでお手軽にWebページの…