開発者のツールと経験を向上させるためのアイディアを探すにはどうすればよいでしょうか?新しい開発ツールを作成するか、開発プロセスを調整することで、日々の開発における共通の苦しみとその改善方法を見ていきます。 10倍の開発者がいるなら、その人は他の10人の開発者の生活をより良くするものに取り組むことを決めた人です。
開発者ツールと経験への時間投資
UXはわかると思いますがDXとは何でしょう
変更の検証に時間がかかるとかメンテナンスが複雑だとかどれ位バグレポートに時間を要するか。
これは私たちの仕事に大きなインパクトを与えます。
やはり適切なツール、アーキテクチャが必要です。
コンサルタントとして効率化などをしています。
これらはDXを良くするためののものです。
どんな問題の例があるでしょう。例えばコンパイル時間
プロジェクトコンパイルではシミュレーターの再起動、スクリーンナビゲートとか、手作業のマニュアルステップが必要とか。
そこで例ですが
細かい調整をして正しくできるか確認したいとしましょう
25秒かかったとしましょう。長くないと思うかもしれません。しかし、300ぐらいのコードを変更しないといけない、25秒かかると一日で大きなムダになる
アプリをフレームワークに分解していく。
Playgourndで作るなどしてイテレーションしたりできる
Static Libraryにcocoapods-amimonoを使うことができます
コードインジェクションで再起動せずに調整する
描いたコードがリアルタイムに反映される
CodeInjectionの経験を活かしたPlayground
変更の再コンパイルは1秒以内ですみます
二つ目の問題にデータへの依存です
APIの変更を待たなければならないと言ったことがあります。 殆どの場合ネイティブフィーチャーはバックエンドが終わる前に終わるようにできます。
どう改善できるのでしょうか
まずプロトコルを使うということです。
テストでなくてもメリットがあります。一番重要なこととして パイプラインとしてデザインし、それぞれのところでProtocolにするということです。
バグレポートのデータを再現したいとかが可能になります。
レイアウトが正しいことを担保したかった。サーバーがないままできちんと全体がまとまっていることを確認するのは困難でした。繰り返し違うデータをサーバーにおいて検証するのは大変。
ファイルを保存するたびにアプリに反映されたい。
問題を解決するために描いてオープンソースにしたのがGenericな
アプリにリアルタイムにアップデートが反映されます
DataProvidorをfilewatcherにすればいいのです
バックエンドが完成する前に実装・検証することが可能になります。
非常にシンプルで強力です。
もう一つのよくある問題、殆どのアプリは何らかのマニュアルデータ入力が必要です。ログインなど。
しかしいちいち開発時に入力する必要はありません。
自分で自動化できるべきだと考えています。
認証情報を入力する時にユーザーブレークポイントを利用するのがおすすめです。
みんなが自分のブレークポイントを設定できるし簡単に向こうにすることができる
特定のデベロッパーのためだけに実行するスクリプトを設定することもできます。
自動直接でいく、もしくは適切なモードがあった時にこれは使える
バグが再現できない問題があったとします。
解決方法としてデータをシリアライズして送れるようにするということです。
もしくはデータが一方向になるようにするということです。
バグレポートを(非同期の方式のようにでも)ロードして状態を再現できるようにしています。
最後はボイラープレートを書く、使えないツールを書くという問題。
ツールはあっても制約があってうまくいかないこともあります。バグが多いリソースにアクセスする
何かカスタムで作らなくてはいけない時に実装すべてを自分で書かないといけない
同じパターンが売り返される場合、使えるツールがあって Sourceryと言うものです。
多くのコードを毎回書かなければならないと思いました
同じボイラープレートをなども書かなくてはいけない。
実際のコードが依存するわけではないので動かなくなっても取り除けばいいだけです。そしてマニュアルで元のコードに戻れば良い。つまり実際の使うリスクはないということです。
Swiftのプロジェクトでも必ずメリットが有ると思っています。
ボイープレートだけでなく、Fakeオブジェクト(プロトコルが変わるたびに書き換えないといけない)もありますが、それもSourceryでやってくれます
失敗したらこうなります
実際全体を見て違いを見つけなくてはいけない
Sourceryを使うとこうなります
複雑なオブジェクト、Rxであっても、面倒なワークフローが改善します。
AssetにはSwiftGenが使えます型安全になります。
コミュニティですばらしいツールがあるので使ってみて下さい。