iOS開発におけるAutoLayoutを初めて触った感想

2018年3月9日

テクノロジー 日記

珍しくお仕事を引き受けたiOSアプリの改修案件で、AutoLayoutを使用していたので、初めて触った感じをブログに書き残しておきます。 今までstoryboardを使わずに、Objective-Cだけでエレメントを作り出す方がはるかに楽だったので、GUIは使ってこなかったんですが、 人から引き受けたアプリ開発で、AutoLayout使われていたら、使わざるを得ませんね。

打ち合わせでのハッタリ

アプリの更新作業を依頼されて、その会社までお打ち合わせに出向いたのですが、その会社のアプリ製品ではなく、とある大手会社から開発依頼をされて、アプリ製作を主に行なっている会社さんでして、 どうにもこうにも、開発人員が少なく忙しいとのことで、外部で手際よくやれる人を探していたとのことでした。 そんなことはどうでもいいんですが、その打ち合わせの際に、x-codeコーディングの説明を受けて、StoryBoardを使っての構築と、基本的にUIはAutoLayoutで行なっているとのことで、どちらも僕がこれまで使ってこなかったのですが、気前よく「問題ありません」と笑顔で返してあげました。 そもそも、そこの社長さんは、技術はわからないっぽいんですが、iPhoneアプリですが、iPadで見た時に崩れませんか?と質問した所、 「基本的にAutoLayoutで構築しているので画面崩れはありません。」と言っていたので、よく質問してみると、全機種での検証作業などは行ったこと無く、 「iPhone6,7,8とplusで見えていれば問題ない」との事だったので、自分検証で納得がいけばいいかとその場はそれで終えて持ち帰りました。

Autolayoutって嫌われているの?

最初はStoryBoardってMacBookProで操作してても、重いな〜〜〜って感じで、使いにくさを体感していたんですが、 AutoLayoutの基本構成がわからずに検索していると、 まだ Storyboard で消耗してるの?——Re:ゼロから始める視覚表現(ビジュアルリプリゼンテーション) こんなページを見つけてしまい、基本的に僕と同じ感性を持った人のようですが、デメリット押しで、あまりポジティブ思考が見られなかったので、面白く読むだけで、内容は鵜呑みにしませんでした。 でも、この作業で僕が感じたStoryBoardとAutoLayoutに関しては、 StoryBoardは、GUIとして、propertyなどの読み解き方をしれば、仕様書などを別途構築しなくても、使える非常にいい仕組みであると思われますが、コードとの連携(ドラッグしてあーだこーだするアレ)が、やはりこんな連携をするのであれば、コードで書いたほうが遥かに楽と感じます。 そして、StoryBoardが楽なのは分かったんですが、「痒い所に手が届かない」という点がどうしても気になります。 それは、例えばとある要素を画面に配置して、その要素のborder属性で特定の辺のみにborder表示をした場合や、border-colorの変更をしたい場合などは、コードで行なうしか無いようです。 ※どうしても僕には見つけられませんでしたが、GUIで出来るんでしょうか? 他にも細かなプロパティはコードに頼るのであれば、UIの全制御が出来ない以上、「StoryBoardは使わないほうが早く仕事が進む」という思考になってしまいます。 またAutoLayoutは、基本的にUIの設計仕様書が無いと、他人が見たらワケワカメ状態です。 もちろん、個別のオブジェクトのプロパティを見ていけばそれで理解はできるんですが、どうしても許せなかった点は、AutoLayoutの設定をしても、画面のプレビューに反映されず、都度ビルドして、エミュレータで確認しない正確な画面イメージが再現されないという点です。 しかもAutoLayoutの値設定に「現在表示されている値を取得する」という機能があり、プレビューと切り離されて理論値だけで行おうとするこの機能にやりやすさは感じませんでした。 あと、AutoLayoutも画面に表示するオブジェクト全体をキチンと構成し、階層分けし、画面サイズの可変によってどういうつまり具合になるかを事前に計算しておかなければ、重なりや崩れは想像通り発生しますね。 少し前向きに発言すると、この概念を使い込んで自分なりの設計思想を持てば、iOS開発のデザインは制することができるかもしれません。 でも、別OSに移植する際に困る要因になることは間違いないでしょう。

何故こんな案件を受けたのか?

そもそもIT関連でシステム構築などを行なう会社を経営している僕のポリシーとして、基本的に受託開発案件を受けないという風にしています。 これには2つの意味があって、 1. 僕の会社では、基本的に自社製品開発を行う事をビジョンにしているため、他人の会社様の商品開発を行なうのは、優先順位が下という事。 2. 仲介業者が入る委託開発は開発者として受けないポリシー この2点ですが、開発員のワガママにも聞こえるかもしれませんが、以前人材紹介会社から、「エンジニアを紹介してくれたらマージンを払います」と言われ、作業をしないのに発生する金額に少し疑問があったので、僕のポリシーとして除外しました。 「紹介料」という事で生業にしている会社も多いので、あくまで開発員としての発言です。 この手の話で、「搾取」という言葉をよく聞きますが、そっち側の人にはあまりなりたくないエンジニアは多いでしょうね。

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。