Money Forward Developers Blog

株式会社マネーフォワード公式開発者向けブログです。技術や開発手法、イベント登壇などを発信します。サービスに関するご質問は、各サービス窓口までご連絡ください。

20230215130734

Swiftで業務改善ワークショップを開催

マネーフォワードの福岡拠点でクラウド経費本部Product開発部でモバイルアプリケーション開発のエンジニアをしているいたるです。

今回、東京田町にある本社オフィスにてiOSエンジニアが集まり技術顧問のgiginetさんによる「Swiftで業務改善ワークショップ」を開催していただきました!

あんざいゆき、三木康暉の両氏が、AndroidおよびiOSの技術顧問に就任|株式会社マネーフォワード

corp.moneyforward.com

技術顧問giginetさんインタビュー コミュニティ活動やOSS活動の秘訣を聞いてみました | Money Forward Money Forward Engineers’ Blog

moneyforward.com

今回のワークショップでは、普段の業務で効率化したい部分をSwiftで改善することを目標に、Xcode 14から使えるようになった Package Plugin を活用したツールを開発いたしました。

ワークショップ

ワークショップではまずこちらの資料をgiginetさんから講義していただきSwift Package Plugin の使い方や Swift で開発ツールを作る手法について学びました。 Swift Package Pluginについては Apple から発表されて間もない技術のため最初の導入方法からつまづくポイントまで網羅された資料になっており初心者でも簡単に始めることができるものとなっていました。

参加メンバーには事前に普段の業務で改善したい箇所、効率化したい箇所を出してもらい、今回のワークショップで自動化及び効率化に取り組みました。

Swift Package PluginはSwift Packageとしてビルドスクリプトやコマンドを配布できる機能です。配布したツールは簡単に自分のアプリケーションから実行することができます。

実装パート

前半の講義を終えたあとは各自課題解決のための実装に取り組みました。

講義パートにて導入方法から説明があったためスムーズに実装に取り組めました。 私は普段業務で利用しているクリーンアーキテクチャのモデルクラスの初期ソースコード自動生成を実装しました。

つまづく点もありましたが、giginetさんによるサンプルコードも参考にしつつ、すぐに質問できる環境もあり大きく悩むこともなく実装することができました。

また、今回Build Tools Pluginの話は講義では省略されていたのですが、こちらについてもgiginetさんがサンプルコードを作成していただき、そちらの実装を参考に進めることができました。

成果報告パート

成果報告会では各自実装したものを、つまづいた点や取り組んだ内容やアプローチ方法を発表しました。 ここではいくつかの課題と解決事例をご紹介いたします。

杉本 至

普段モデルクラスを実装する際に、構造体などの定型的な実装を、毎回、新規作成するのが手間という課題を抱えていました。 そこで、今回は、必要な構造体やenum、function を自動生成できるコマンドプラグインを実装しました。

コマンドプラグインをインストールすると、プロジェクトツリーの右クリックから開発したコマンドを実行することができます。

対象となるプロジェクトを選択し、ダイアログに必要情報を入力すると。

このように、テンプレートからソースコードが生成されます。

従来は同じファイルをコピペして生成していましたが、 エラーのない状態で生成され、そのまま開発を行うことができるため、新規実装の効率が改善されました。

Swift Package Pluginで配布したコマンドはXcodeから実行できるため、日常的なタスクをプラグイン化することで、小さな業務改善が容易になります。

杉本コメント

今回のワークショップでは今まで手間になっていたが自動化するにも Swift 以外の言語を利用しなければいけなかったところを手軽にXcodeを利用して実装することができました。まさにTechnology drivenを体現することができました!今後もArgumentsよりクラス名を指定できるようにするなど改善し、さらに手間を減らせるようにしていこうと思います。

松元 麗美

Money Forward X本部の松元麗美さんは、複数のターゲットのバージョンアップを自動で行うためのプラグインを開発しました。

マネーフォワードMEは、多くの銀行向けに1つのプロジェクトから、複数のアプリをリリースしており、多数のターゲットが存在します。

これまで、リリース時に手作業でバージョンの更新をしていたものをSwift Package Pluginを利用して自動化することに取り組みました。

今回実装したプラグインにより、複数のターゲットのマイナーバージョンを上げる、などの操作をボタン一つでできるようになり、業務効率が改善しました。

松元さんコメント

ここまで多数のtargetを随時管理していく必要があるプロダクトも珍しく、効率化するにも既存の何かを利用するのは難しいと感じておりました。 また、shell scriptを自分で書くのもなかなか腰が重かったので、面倒だとは思いながらも手作業でバージョン更新を行なっていました。 そんな中、このワークショップでSwift Package Pluginをご紹介いただき、Swiftで書けるならこれを作ってみるしかない!と思って挑戦してみることに。 普段見ているアプリのプロジェクトとは構成も作り方も違っていましたが、ネットで調べるよりも情報が多くてわかりやすい資料とサンプルコードのおかげでなんとか動くようになりました。 動かし方さえわかってしまえばあとはSwiftで書くだけなので、楽しく進めることができました!

終わりに

今回のワークショップでは最新の技術を素早くキャッチアップでき、実際の業務に利用できるようになるまで進めることができました。 iOSエンジニア全員がすぐに業務で活かせる内容を学べたことは非常に大きな成長に繋がったと感じました。

また、新メンバーも参加することができマネーフォワードの文化に触れることができ体感していただくことができました。

技術顧問であるgiginetさんには資料も少ない中、最新の技術であるSwift Package Pluginをしっかり波及していただきメンバー全員の学びになり非常にありがたかったです。

私は今回のワークショップではモデルクラスの初期コードの自動生成までできたので、これを元にテストコードの自動生成やstubの自動生成にも取り組みたいと思います。