EVENT REPORTイベントレポート

ヒカラボレポートとは、開催されたヒカラボにおいて、登壇者が伝えたい講演内容を記事としてまとめたものです。ご参加された方はもちろん、ヒカラボに興味があるという方も是非ご覧ください。

イベントレポートvol.22

脱・オレオレコーディング!Swiftによるスムーズなアプリ開発のためのリファクタリング講座|ヒカ☆ラボレポート

2017/07/19(水)更新

  • このエントリーをはてなブックマークに追加

突然ですが、みなさんはプログラムのリファクタリングを行ったことはありますか?
リファクタリングというのは、外部から見た動作を変えずに、ソースコードを整理すること。
これによって、バグの入り込む余地をなくしたり、機能の改善を簡単に行えるようになったり、メリットがたくさんあるんです。

今回のヒカ☆ラボでは、そんなリファクタリングについて、株式会社じげんの具志堅雅氏がレクチャー。
iOS用の新言語、Swiftを使ってアプリを開発した経験から、リファクタリングの重要性や作業の仕方を教えていただきましたので、ぜひ参考にしてください!

講演者プロフィール

株式会社じげん
具志堅 雅 氏

2014年度に株式会社じげんへ中途のエンジニアとして入社。
入社直後からGrowth Hack関連の施策をはじめ、UX改善をメインに行うRailsエンジニアとして活躍。
今年9月初旬からiOSアプリ開発を本格的にスタートさせ、じげん初のSwiftによるiOSアプリを僅か2週間で開発しAppleの申請を通過。
その後は1度もリジェクトされることなく、appStoreへリリースさせることに成功。

 

プライベートでは、週末などを使い積極的に外部のイベントに出席し、
プログラミング・ビジネスのスキルアップのために時間を使っている。

 

実績は以下の通り。

 

第1回アフィリエイトソン 最優秀賞
第2回 観光アイディアソン 準優勝
第1回2B Hack協賛企業賞(3社)受賞など

 

株式会社じげん
http://zigexn.co.jp

コーディング規約を作るところから、リファクタリングはスタート!

開発者本人にしか理解できないような、いわゆる“オレオレコーディング”が行われているアプリは、「後任者への引継ぎが非常に困難」「機能改善やバグの修正に多くの時間がかかる」など、たくさんの問題を抱えています。

それらの問題をクリアにするために有効な手段が『リファクタリング』です。

自分達がアプリのリファクタリングをする際、最初に行ったのが『コーディング規約の策定』でした。インデントやコメントの書き方、変数名や定数名の表し方、関数やクラスの表現方法といったことを、一つ一つ規約として定めていきました。

Xcodeをフル活用することで、iOSアプリ開発がスムーズに!

コーディングでは、Xcodeをフル活用しました。なぜXcodeを選んだかというと、Vimのような他のエディタだと、「使える人は使えるけど、使えない人は使えない」っていうところがあったからです。
XcodeはIDEとして使いやすいので、統合開発環境をXcodeにし、コーディング規約どおりに一括置換していきました。
それにより、バグを摘む必要がなくなったというか、一つずつファイルを直す手間が省けるようになりましたね。

またInfo.plistやBuild Settingを活用するところは、Xcodeで提供されているファイルの環境設定を用いて、開発環境と本番との差分を考慮していくことも行っていきました。

Info.plist ホスト面やAPIのパスを定義することで、手間を減らす

Info.plistでは、「Supported interface orientations」という項目の下に、自分たちで定義を追加していくことができます。ホスト面やAPIのパスや、GA(GA TRAKING ID)のような変わることがない定数については、どんどん定義を追加していき、わざわざソース内に書かなくても読めるような状態にしていきました。

Build Settings デバック用とリリース用を別々に定義することで、管理が容易に

Build setttingもinfo.plist同様、「User-Defined」の下に、自分達で定義を追加していくことが可能。私たちはこのBuild Setttingsを用いて、開発環境(デバック用)と本番環境(リリース用)を別々に定義していくことにしました。開発環境に見せるための定数と、本番でしか使わない定数をそれぞれ設定することで、開発環境のデータが本番に反映されるですとか、本番で見えるはずのものが開発環境で見えてしまう、といった状況をなくしていきました。

デザインパターンを適用するときに頼りになるSwift

また、Swiftはいろんなデザインパターンを踏襲することができます。特にベースとなるのがSingletonパターン。例えば、画像読み込みの部分にイメージマネージャーというのがあるんですが、そこのSingletonパターンを設定し値を持たせれば、viewの方に値を返してくれるんですね。「わざわざviewコントロールで頑張る必要がない」というのが魅力です。

次に、GAなどは、Adapterというデザインパターンを適用し、引数で値を分けていきました。さらに、GAの処理自体をmodelに全て任せることで、viewはできるだけ可読性を上げるといったことにも努めていきました。

さいごに

「開発を急ぎすぎた結果、ソースコードがつぎはぎだらけ…」
そんな状況に陥ってしまわぬよう、ソースコードの可読性を上げることを意識しながら開発は進めていきたいところです。
それでもリファクタリングの必要性を感じたら、気付いたところからまずやってみることが重要だと僕は考えています。
技術的負債が積み重なる前に、リファクタリングはぜひ行っていきましょう!

 

  • このエントリーをはてなブックマークに追加
  • 正社員求人・転職支援はこちら
  • 年収800万円以上の転職を目指す エキスパートのハイクラス転職 エンジニア・クリエイター専門 レバテックエキスパート