Paytner Tech Blog

ペイトナーのテックブログです

RubyKaigi2022 Platinum Sponsors として協賛&ブース出展します!

こんにちは!
ペイトナーでエンジニアリングマネージャーをやっている 脇田(@kiwatchi1991)です。

この度ペイトナー社は、RubyKaigi 2022にプラチナスポンサーとして協賛することになりました! スポンサーとしてRubyコミュニティへの還元をしたいという想いも当然ありますが、本音として、採用目的で「Rubyコミュニティに『ペイトナー』という存在を知ってもらいたい!」という想いがあることをここに告白致します。

弊社では、2つある自社プロダクトが共にRails製アプリケーションです。まさにRubyコミュニティど真ん中であるペイトナーのことを皆様に知っていただき、今後一緒にプロダクト開発をやっていく仲間との出会いのきっかけになれるとよいな、と心から願っています!

rubykaigi.org

ブース出します!

ありがたいことにブースの抽選に当選しましたので、当日はオフラインでブース出展&WebではCMも流れます!!!(ペイトナーファクタリング公式キャラクター・やっぷん の動く姿は本邦初公開!?)

ブースでは、ノベルティ配布や、オリジナルクイズの出題をします!!!ぜひブースでお待ちしております!!!

クイズ

1. 技術顧問・前島さんからの挑戦状

ペイトナーでは、技術顧問として『パーフェクトRuby on Rails』の著者である前島真一さん(@willnet)にお世話になっています。週一のミーティングや日々のチャットでの質問、ときにはコードレビューにも入ってもらうなど、会社としての技術力向上に貢献して頂いてます。

今回のRubyKaigiブース出展にあたり、軽い気持ち(!?)で「前島さん!Railsクイズを作ってくれませんか!!!」とお願いしたところ、快諾してくださいました(本当にありがとうございます!!!)。

そんな前島さんからの挑戦状へのチャレンジャー、ブースにてお待ちしています!!!

ちなみに、事前に社内のエンジニアでクイズに挑んだところ、正解率は、、、なんと、、、、、ゼr(これ以上は弊社エンジニアの名誉のためにやめておきます)。

2. ペイトナーエンジニアによるオリジナル問題

前島さんクイズが中〜上級者向けということで、初級者向けに社内メンバーで自作したクイズも用意しています! (余談ですが、私自身もクイズ制作メンバーに入りました。クイズ作るのってめちゃめちゃ難しいんですね・・・)

皆様からの挑戦、お待ちしています!ぜひペイトナーブースまで!!!

ノベルティ

各種ノベルティ用意しています!

  • Paytner Tシャツ
  • Paytnerうちわ
  • やっぷんシール
  • やっぷんラベルの 水(500mLペットボトル)

シールはこんな感じ↓↓↓

おわりに

当日オフラインで参加される皆様、ペイトナーブースでお待ちしております!!!

ペイトナーは「スモールビジネスにやさしい支払い・請求で新しい挑戦を後押しする」というミッションのもと、 オンライン型ファクタリングサービス「ペイトナー ファクタリング」とクラウド請求書処理お任せサービス「ペイトナー 請求書」を開発・運営しております。

これらのプロダクトを爆速でさらに成長させるために絶賛エンジニア募集中です! ペイトナーに少しでも興味を持っていただけましたら是非、ペイトナー 採用情報 をご覧ください!!

paytner.co.jp

本当に"簡単な操作"なのか?E2Eテスト自動化ツール『Autify』を導入してみた。

はじめに

ペイトナーのエンジニアの井齊です。

みなさんはシステムのテストをどのように行っていますか?

バックエンドであれば、PHPunit, RSpec, JUnitなど
フロントエンドであればJestなどで行われているかと思います。

弊社のペイトナーファクタリングのシステムではバックエンドはRailsでRSpecを使っており、フロントエンドのテストとして自動E2E(End to End)テストツールである「Autify」を使っています。

paytner.co.jp

今回はその一環として、フロントエンドのテストとして導入した「Autify」についての感想や良かった点、課題などを伝えたいと思います。

結論

直感的でわかりやすい!!

AutifyのHPでも、

ノーコードと簡単な操作でスムーズにテスト作成

と紹介されておりますが、ぽちぽち画面の要素を押すだけという"簡単な操作"で、直感的にE2Eテストケースを作成することができます。

autify.com

さらに、下地を作れば非エンジニアでも問題なくテストの作成・実行ができそうです。今後の展望として、非エンジニアで運用していくことも視野に入れられそうです!

Autifyとは?

Autifyはオーティファイ株式会社が開発した自動E2E(End to End)テストができるローコードツールです。E2Eテストというのは、テスターやQA担当者がブラウザ操作で想定通りの挙動になっているかどうかをみるテストです。

なぜAutifyを導入したのか?

RSpecのRequest SpecやController Specでフロントエンドのテストを一部代用できたり、System Specを使えばRSpecでE2Eテストを行うこともできます。

しかし、最終的に非エンジニアによるQAの一部に使いたいので、直感的なGUIで操作でき、さらにそのQA自体の工数削減を狙える、という理由でAutifyを導入しました。

Autifyの使い方

簡単にAutifyの使い方をご紹介します!

一つのテストを「シナリオ」という単位で行います。新しいテストを「新規シナリオ」で作成します。

シークレットモードが立ち上がるので、そのブラウザで作業します!

AutifyはAutifyブラウザ上で操作したことをそのまま記録し、それをもとにE2Eテストのテストケースをつくってくれます!
画面の右下にバーがあり、その欄の赤丸が点滅していれば記録されている合図です。

Autifyでランダムなメールアドレスが生成でき、メールアドレスに送信したメールに対してもテストができます。

要素が存在していることをテストしたければ、該当の要素をクリックすることで記録することができます。(わかりやすい!)

記録し終わったら、実行の流れが表示されテスト実行することができます。

できること

テスト内容としては、

  • view(画面)に該当の要素が存在しているか
  • 正しいページに遷移しているか

などをテストできます。

他にもテストの定期実行も可能です。
テストが通ったかどうかはslack連携ができるので、結果をすぐに把握できるのはありがたいです。

テスト結果の一覧も見られます。

よかったところ

  • ぽちぽち画面の要素を押していくことで登録できるので直感的にE2Eテストができる
  • 一部JavaScriptでもかける

「ボタンを押す」みたいな処理も一部JavaScriptで対応できます。
今日の日付をクリックしたい!などの特殊な処理をしたいときに便利でした(公式でスニペットも用意されてます)

今後の課題

  • (Autifyに限ったことではないですが)E2Eテストはフロントエンドの実装に修正が入ったときに合わせて修正のメンテナンスが必要
  • ユーザーステータスによって振る舞いが変わる場合は毎回新しいユーザーにしないと厳しいのでデータが溜まっていく場合はたまにデータ初期化しないといけないケースもありそう

どのようにメンテナンスをしていくかは今後の課題です!

まとめ

テストケースが比較的簡単に作れるので、非エンジニアでも画面の検証をするハードルが下がったと思います!
必要なテストを充実させて、さらに保守性の高いシステムを開発していければと思っています。

ペイトナーは生産性の向上のため、様々なツールの検証と積極導入をしています!
他のツールについては、改めて別の記事で紹介します!

終わりに

ペイトナーは「スモールビジネスにやさしい支払い・請求で新しい挑戦を後押しする」というミッションのもと、
オンライン型ファクタリングサービス「ペイトナー ファクタリング」とクラウド請求書処理お任せサービス「ペイトナー 請求書」を開発・運営しております。

開発組織としては、この2つのプロダクトを爆速でさらに成長させていくことはもちろん、
スモールビジネスの領域にはまだまだ解決したい課題と、その課題を解決するために開発したいプロダクトが非常にたくさんあり、それらも爆速で開発していきたいと考えています。

それを実現するにはまだまだ仲間が足りない状態となっております。
ですので 絶賛エンジニア募集中 です!
ペイトナーに少しでも興味を持っていただけましたら是非、ペイトナー 採用情報 をご覧ください!!

paytner.co.jp

初心者3人でペアプロ始めたら、想像以上にメリットだらけだった

ペイトナーでエンジニアをやっている脇田慎平(@shimpeee_)です!

僕が入社した2022年5月からチーム内でペアプロ導入を提案し、実際にこれまで何度か実施して得た経験や気づきを書きます!

結論

めちゃくちゃにイイです!!! これからも続けていきます!!!

以降、始めたきっかけや良かった点、苦労したことなどを書きます。

きっかけ

ペイトナーには、「同期作業」という文化があります(僕がとても素敵だと思う会社文化のひとつです)。 「オンラインで繋いで、仕事の会話するもよし、雑談するもよし、黙って作業するもよし」 というものです。 業務上でのもくもく会みたいなものです。

「biz側(PM) x エンジニア」の同期作業を週2回、各30分ずつやっているのですが、これがもうすごく良くてですね。。。

ペイトナー社では現在、フルコミットメンバーは週2の出社でオフィスの席数の関係で出社日を曜日で分散させています。ですので、だいたいどのメンバーともオフィスで顔を合わせるのは週1回程度です。

リモート下ではどうしても全員が出社している時と比べるとコミュニケーションコストは上がります。PMと仕様の詳細やプロダクトの在り方等までがっつり議論できる場は、エンジニアとしてもすごくありがたい時間です。

他の人が会話しているのを聞いてるだけでもかなり学びがあります。

まだまだチームとしても課題だらけ(そもそも解くべき課題は何なのか?を探るフェーズでもある)なので、密にコミュニケーションを取りながら仕事を進めるのが好きな僕にとって、個人的にも非常に大切な時間です。

、、、で、思いました。

「これ、エンジニア同志のコミュニケーション活性化のために、エンジニアだけの同期作業もやりたいな!」

「てかそれってもう、ペアプロでよくね!?」

これがきっかけです。

チームのコアメンバーである社員3人ともペアプロ初心者。どう始めたらいいのかも全く無知の状態でしたが、「ペアプロやってみたい!」という気持ちだけで、えいやーで始めてみることにしました(向いてなければすぐ辞めればいいだけの話!)。

てかペアプロってどうやるん?

「よし、ペアプロやるぞー!」とSlackで盛り上がっていると、少しずつ周りのメンバーから情報が集まってきました。

過去、毎日8時間ペアプロをする(!?)現場を経験された方がいて、その方からペアプロ始めるにあたって役に立ちそうな記事をいろいろとシェアしていただきました。

これらをざっとインプットして、とりあえずはスクラムスプリント外のリファクタ系タスク(ペアプロがうまくいかなくて進捗出なくても問題ない)から始めてみることに。

実際やってみてどう?

ってことで、ここまで数回実際にやってみて感じたことを以下まとめてみました。

良かった点

学びがえぐい

これはもう一番のメリットです。

普段はスキル感の近い3人でやっています。常にコミュニケーションをとりながら、全員の持っている知識を総動員し、1つのタスクに向き合います。

Railsのお作法・設計・命名のテクニックなどの技術的な知識、ドメイン知識、細かい仕様についてだけでなく、エディタの使い方にいたるまで、補完し合いながら進めます。

やはり3人集まると、自分は知らないけど他の人が知っていること(逆も然り)がめちゃくちゃ出てくるので、時間当たりのインプット量がえぐいです。

また、一度CTOの三浦さん(@kazuman519)をナビゲータに迎えて「ストロングスタイル(つよつよエンジニアがナビゲータとなり、知識を伝授するスタイル)」で実施したこともあります。

このときは、いつもの3人が倒すことができなかった敵に対してどうアプローチしていくのかを、三浦さんがナビゲータとなって我々にデバックの過程を見せてくれました。

具体的には、「ActiveRecordで発生したバリデーションエラーの中身が見れない」という、Railsチュートリアルですら触るような初歩レベルで行き詰まっており、自分達の未熟さを痛感。。

三浦さんのデバッグをリアルタイムで見せてもらい、結局は地道に1つずつ、確実に原因を切り分けていくしかないんだな、、、と再認識する結果となりました。

レベルが近い人同士でやっても、つよつよな方とストロングスタイルでやっても、どちらでも大きな学びを得ることができます。

1人でうんうん悩まなくてよいので、早い

1人で実装していると、行き詰まったときにどうしても長時間考え込むことがあります。

そうならないよう、Google15分ルールを引用しながら、「適切に助けを乞うようにしましょう」という共通認識を持つようにはしています。

しかし、ああでもないこうでもないと試しているうちに、気づくと数時間経っていた、、、なんてことは、エンジニアだと誰しも経験したことがあるのではないでしょうか。

ペアプロではみんなで考えるので、行き詰まってから次の打ち手を見つけるまでの時間が圧倒的に短いです。 仮に全員の知識を以ってしても倒せない敵の場合であっても、「これは自分達には無理だからヘルプを呼ぼう」とスムーズに次のアクションにつなげられます。

一人でやっていると、意外と難しい部分じゃないかと思います。

コミュニケーション量が増える

ペアプロの心得にもあるように、ペアプロ中は「15秒の沈黙ですら長い」と感じてしまいます。そのため、ずっと会話しています(本当に、ずっと会話してる)。

そうしてたくさんコミュニケーションを取ることで、日々の仕事におけるお互いへの質問のハードルもかなり下がったように思います。

いわゆる「心理的安全性の高い」チームビルディングにおいても、ペアプロは非常に有効だと感じます。

単純に、楽しい!

みんなで「あーでもない、こーでもない」とわいわい会話しながらやる開発は、シンプルに楽しいです!!!楽しみながら仕事をすることは、取り組みを長く続ける上でも、生産性の上でも、非常に大事です!楽しい!

苦労した点

疲れる

ずっとコミュニケーションとっているので、すごく疲れます。疲れるので、定期的に休憩をとりましょう!(ペアプロの心得にも、一番最初に書いてあります。それだけ重要なことです!)

でも、たくさん学びがあって楽しい!!!

自分の意見を言語化する難しさ

実装方針等で議論しているとき、「ここはこうした方がいいんじゃないか?」と自分の意見を言う場面が何度もやってきます。これが結構難しい・・!

うまく言語化できない部分は理解が不十分なところなので、それが炙り出されてまた成長しちゃいますね!伸びしろ!!!

キリが悪い状態で終わる難しさ

ある日のペアプロで、予定していた時間がきてしまったけど、会議室空いてるし、キリが悪いからもうちょっとだけ延長しよか・・・!と延長したことがありました。

しかし、あと少しで終わると思ったところで新たな沼にハマり、1時間延長してさらにカオス化して終わる結果となりました。

すぐ解決するとは限りません。時間になったら中途半端でも終わらせる強い心が必要。

具体的には、終わる時間の10分前になったら、今日やったこと、今詰まっているポイント、次回最初に確認することを簡単にまとめることをルールとしました。

開発効率が落ちる!?

「ペアプロやると複数人で同じコードを触っているから開発効率が落ちる」という言説があります。これは、リソース効率・フロー効率の観点でいうとリソース効率重視の考え方だと思います。

www.slideshare.net

私たちのチームでは、スクラム開発を行っています。スクラム(およびアジャイル)開発は、まさにフロー効率を高める活動そのものです!

今はペアプロに慣れていないことで短期的に開発効率が落ちることがあっても、仕様・ドメイン理解の向上、メンバースキル向上, チームビルディングの側面を考えると、すぐにペイできるコストだと考えています!

まとめ

ここまで述べてきたように、苦労ポイントもありますが、生産性向上が期待でき、学びの多い楽しい取り組みとなっています!

これからはもっと頻度を増やし、スプリントのタスクに複数人をアサインし、ペアプロベースで開発を進めるということもできたらいいなと考えています!!!

おわりに

ペイトナーは「スモールビジネスにやさしい支払い・請求で新しい挑戦を後押しする」というミッションのもと、 オンライン型ファクタリングサービス「ペイトナー ファクタリング」とクラウド請求書処理お任せサービス「ペイトナー 請求書」を開発・運営しております。

これらのプロダクトを爆速でさらに成長させるために絶賛エンジニア募集中です! ペイトナーに少しでも興味を持っていただけましたら是非、ペイトナー 採用情報 をご覧ください!!

paytner.co.jp

ペイトナーTech Blog始めます

はじめまして!! ペイトナーでCTOをしている三浦( @kazuman519)です。

この度、エンジニアによるブログを始めることにしました!

なぜはじめたのか

ブログをはじめた目的は2つあります。

1つは定番な目的である 「採用力の強化」
もう1つは 「組織としての開発力の向上」 で、こちらが1番の目的です!

ペイトナーは創業してから今年で4年目の会社となり、非常に頼りになるハイスキルなエンジニアや、やる気が満ち溢れている開発意欲の高いエンジニアが集まっています。

しかし、エンジニアが組織的に開発ができるようになってきたのはここ半年間の出来事で、それまではメンバーの個の力でプロダクト開発を支えていた印象が強い状態でした。

それ故に 「組織としての開発力」 は伸ばす余地がまだまだある状態です。

なので今回メンバーと話し合い、今後さらに開発力を向上してくための投資はしっかりしていこうということで、リソースの投資先の1つとしてブログを選びました。

ブログで情報をアウトプットすることで、

  • 組織としての知見や技術の貯蓄
  • 知識や技術、考え方などの共通認識化
  • アウトプットすることで自身のそのトピックに対する理解度 & アウトプット能力の向上

といったことを促し、組織としての開発力の向上に繋げられると考えています。

また、そのアウトプットによってペイトナーのエンジニア組織の雰囲気や文化、取り組んでいることなどを外部の人に知っていただき、
結果的に採用力の強化にも繋げられると考えています。

なのでまずは「組織としての開発力の向上」に重きを置き、
カジュアルに開発に関する情報を発信していければと思っておりますので、
今後ともよろしくお願いいたします!

おわりに

ペイトナーは「スモールビジネスにやさしい支払い・請求で新しい挑戦を後押しする」というミッションのもと、
オンライン型ファクタリングサービス「ペイトナー ファクタリング」とクラウド請求書処理お任せサービス「ペイトナー 請求書」を開発・運営しております。

開発組織としては、この2つのプロダクトを爆速でさらに成長させていくことはもちろん、
スモールビジネスの領域にはまだまだ解決したい課題と、その課題を解決するために開発したいプロダクトが非常にたくさんあり、それらも爆速で開発していきたいと考えています。

それを実現するにはまだまだ仲間が足りない状態となっております。
ですので 絶賛エンジニア募集中 です!
ペイトナーに少しでも興味を持っていただけましたら是非、ペイトナー 採用情報 をご覧ください!!

paytner.co.jp