yoppieのブログ

フリーランスエンジニア始めます

iOSエンジニアになります

iOSアプリ開発にチャレンジする理由

フリーランスになり、業務未経験のAndroidアプリ開発を始め、2年10ヶ月続けてきました。
2022年4月からAndroidアプリ開発を辞め、業務未経験のiOSアプリ開発(SwiftとiOS SDKを利用)にチャレンジすることにしました。

チャレンジする理由1

  • APIを叩いて取得したデータをViewに表示する機能
  • リファクタリング
  • ビルドスピード改善
  • ライブラリの更新や移行
  • Etc...

といったAndroidアプリ開発の業務を行いました。
初めの頃は、1つ1つのタスクに時間がかかっていました。
様々なタスクを経験する中で、Androidに関する知識がたまり、1つ1つのタスクに時間がかからなくなってきました。
また、したことがない業務や新しい技術へのチャレンジをする際にも、周辺の知識を利用することでそれほど時間がかからなくなりました。
このような経緯で新しい領域にチャレンジしたいと感じたのが一つ目の理由です。

チャレンジする理由2

プライベートでFlutterを用いたモバイルアプリ開発をしています。業務でもFlutterを用いたモバイルアプリ開発をしたいと考えていましたが、僕が希望する条件に合致する案件がありませんでした。
希望する条件に合致するFlutterの案件探しを一旦諦めたのが二つ目の理由です。

Androidアプリ開発からiOSアプリ開発に移行する流れ

参画先が運営しているサービスにはiOSアプリとAndroidアプリがあり、参画先を変えずに業務内容をAndroidアプリ開発からiOSアプリ開発に移行しました。その流れについてです。

1. エージェントに相談

まずはエージェントと相談し、参画先にiOSアプリ開発をしたいことを報告してもらいました。 Flutterを用いたiOSアプリをリリースしたことはありますが、SwiftとiOS SDKを用いたiOSアプリを作ったことがほぼなく、業務経験はなかったので、不安でした。

2. 参画先とミーティング

意向、プロジェクトの状況、条件などをすり合わせるためのミーティングを参画先の方と行いました。
結果的に業務未経験にも関わらず、iOSアプリ開発(SwiftとiOS SDKを利用)のプロジェクトに移行できることになりました。

3. 参画の準備

3月の1ヶ月間、業務の約半分をiOSアプリ開発の学習に使ってよいとのことで、

をしました。とても恵まれているなと感じましたし、とても感謝してます。

業務でiOS、プライベートでFlutter

しばらくは参画先でiOSの学習をしながら業務を行い、プライベートでFlutterを用いたアプリ開発を進めようと思います。

iOSアプリ開発はわからないことだらけで闇なので、こけまくりながらAndroid並みに見渡しがよくなるまで1つ1つタスクを消化していこうと思います。
ただ、業務未経験でAndroidアプリ開発を始めた時はいろんな壁にぶち当たりましたが、iOSアプリ開発でも同じ壁にぶち当たる予想ができているので、まだ楽なのかなと予想しています。
慌てず少しずつ闇を晴らしていきます。

プライベートでリリースしたアプリ

プライベートでEngineer Blogsという様々なIT企業のエンジニアブログを読みやすくしたアプリを運営しています。
今までAndroidアプリ( Engineer Blogs「エンジニアブログまとめ」 - Apps on Google Play )のみでしたが、Flutterで作り直したのでiOSアプリも出ました。

EngineerBlogs

EngineerBlogs

  • Yoshiya Maeda
  • ニュース
  • 無料
apps.apple.com 興味のある方がいればDLし利用して頂けると幸いです。

EngineerBlogsのサポート

EngineerBlogsとは

様々なIT企業が公開しているIT技術に特化したブログ(エンジニアブログ)の記事をまとめているアプリです。
本アプリを利用することで、エンジニアブログを読みやすくなります。
また、最新のエンジニアブログの記事が投稿されたことに気付きやすくなります。 f:id:yoppiex:20220306201125j:plain:w130 f:id:yoppiex:20220306201129j:plain:w130 f:id:yoppiex:20220306201135j:plain:w130

EngineerBlogs

EngineerBlogs

  • Yoshiya Maeda
  • ニュース
  • 無料
apps.apple.com
play.google.com

こんな方はぜひ

  • ITエンジニアの方
  • 様々な企業が取り組んでいるIT技術、最先端のIT技術に興味のある方
  • ニュースアプリのIT技術に関する記事では物足りなく、IT技術に特化した情報をもとめている方
  • 複数のエンジニアブログのRSSを利用して記事を取得する作業にめんどくささを感じている方
  • はてなブックマークでたまにエンジニアブログを読む方
  • 開発作業中にググった際にたまたま興味深いエンジニアブログに出会ったが、その後「読もう読もう」と思って結局読んでいない方

こんな方にもオススメ

  • ITエンジニアになりたい方
  • IT企業で働きたいと思っている学生や社会人
  • 今まで出会わなかった興味深いエンジニアブログに出会いたい方
  • 既存のツールやアプリを利用しても各社のエンジニアブログの記事を拾う事が難しいと感じている方

機能

  • エンジニアブログ一覧表示
    表示された様々な企業の中から複数個の企業を選択できます。 選択すると、その企業のエンジニアブログの記事が一覧で表示されます。
  • 記事表示
    タップした記事の内容が表示され読むことができます。
  • お気に入り
    何度も読み返したい記事や、後で読みたい記事をお気に入りとして保存できます。
  • 並び替え
    横方向に一覧表示されているエンジニアブログの順を並び替えることができます。

ご利用の皆様へ

ご質問、ご意見、ご感想がございましたら、下記のメールアドレスよりご連絡ください。
yoppie.bull@gmail.com

「初心者による初心者のためのFlutter詳解」を入稿しました

今までに

上記の同人誌を書きました。
業務でAndroidアプリ開発を行なっているため知見が溜まりやすく、主にAndroidアプリ開発に関する同人誌を書きました。
「実践編のどこどこを参考にしている」、「シリーズで読んでいる」といった感想を頂いたときは本当に嬉しかったし、同人誌という形で知見をまとめ続けて良かったと感じました。

また、「解決!Androidアプリ開発のアレコレ 実践編」は商業版刊行のお誘いを受け、販売を始めました。 nextpublishing.jp

新刊

2022年の1月頃に技術書典が開催されることを見越し、落選するかもしれないのに2021年の7月から新刊を書き始めました。
すると予想通り2022年の1月に技術書典12が開催される(オンラインのみ)ことが2021年の11月にアナウンスされました。

技術書典12にサークル参加で応募し、運良く当選したので「初心者による初心者のためのFlutter詳解」という新刊を技術書典12でリリースします。

前の記事にもある通り、Flutterの学習からFlutterを用いたアプリのリリースまでをまとめた同人誌です。
目次は以下です。

  1. Hello worldを表示
    • 環境構築からHello worldの表示までを細かく解説しています。
  2. 開発を始める前の設定
    • Flutterでアプリ開発を進めるための様々な設定を解説しています。
  3. 開発を始める前の前提知識
    • Flutterでアプリ開発を進めるために必要な知識は複数ありますが、これだけは知っておいた方が良いと感じる前提知識を紹介しています。
  4. Widget
    • 様々なWidgetの使い方を紹介しています。
  5. 機能
    • 個人開発でリリースしたアプリを実現するために作成した機能の作成方法について解説しています。
  6. 導入Package
    • 個人開発でリリースしたアプリを実現するために導入したPackageの利用方法について解説しています。
  7. Test
  8. リリース
    • Flutterを用いて作成したiOSアプリとAndroidアプリのリリース方法について解説しています。

入稿

「初心者による初心者のためのFlutter詳解」のページ数が198ページとなり、背表紙の幅が12mmという薄くない厚めの同人誌になりました。
裏表紙、背表紙、表紙のデザインはこんな感じです。

f:id:yoppiex:20211229224232p:plain
裏表紙、背表紙、表紙
電子版だけでなく物理本も販売するため、12月27日に入稿してきました。
いつもねこのしっぽという印刷所を利用させてもらっています。
入稿時にねこのしっぽの方が原稿と表紙、背表紙、裏表紙のデザインのチェックをしてくれます。今回は初めて指摘がなかったので嬉しかったです。

書き終えて...

iOSAndroid両方で動作確認したり、正しく説明するために両方のスクショを撮ることもあり、骨の折れる作業が多かったです...
ただ、「初心者による初心者のためのFlutter詳解」を書く中でFlutterについてかなり追求したので、基礎力は着いた実感があります。

最後に

新刊以外の既刊4冊の電子版と物理本も販売します。
興味のある方は是非技術書典12にサークル参加するENGINYというサークルを見てみてください。

フリーランスになり2年経ちました

簡単な振り返りと、これからを書きます。

2019年3月

新卒として入社した会社でバックエンドのエンジニアとしてグルメ系のサービスの開発に携わっていました。
この時期にその会社を辞め、フリーランスになり、業務経験のないAndroidアプリ開発にチャレンジすることを決めました。
周りからは「早すぎる」「やめておいたほうがいい」といった声が4割、応援の声が6割ありました。

リスクをとらないというリスクを1番恐れていましたし、昔からどうなるかわからない不安感を楽しむ性格なので、とりあえずやりました。
それに、なんかフリーランスおもしろそうでしたし、 失敗したとしてもそれはそれでおもしろいので。

2019年5月

個人事業主として開業しました。開業手続きは1分ぐらいで終わり、特にテンションは上がらず、淡々と準備を進めていました。
また、3ヶ月間どこの企業とも契約することができないことをチャレンジの失敗と定義し、いろんな企業との面談を進めていました。
記憶が曖昧ですが7、8社面談した結果、全ての企業からオファーをもらい、とある大手の企業Rと契約しAndroidアプリ開発に携わることになりました。

2019年6月 - 2021年3月

フリーランスになり、初めて契約した企業でのAndroidアプリ開発が1年9ヶ月続きます。

かなり成長できた実感がありました。主に

  • プロダクトの開発を行う中で得たこと
  • その業務を行う中で関わった人から得たこと

がとても大きく、アウトプットがとても多かったためです。

また、裁量が大きかったです。よって何かを実現するために自己研鑽したり、良いプロダクトにするために追求することが増えました。この時の自己研鑽と追求は明確な目的があったため、有意義でした。

2021年4月 - 現在

とある大手の企業Rとの契約をやめ、とある大手の企業Dと契約しました。ここでもAndroidアプリを作ることになります。
具体的なことは契約上言えませんが、僕を含めたAndroidアプリチーム4人で開発をしています。
かなり優秀な方に囲まれていて楽しいです。

これから

2021年4月からFlutterを使ったアプリ開発をプライベートで始めました。
始めた理由ですが、できることを増やしたいとか、これから流行りそうとか、いろんな理由が浮かんできましたが、それらは後付けの理由で、本当の理由は物作りをする人として、そそられたからです。良さそうな遊び道具があったので遊んでみたという感じです。

リリースしたアプリはこちらです。

Flowering

Flowering

  • Yoshiya Maeda
  • エンターテインメント
  • 無料
apps.apple.com play.google.com Floweringというアプリで、フラワーアレンジメントができるアプリです。

思いのほかFlutterが楽しかったので、もう一個自分が欲しい動画アプリを作ろうかと思い立ちました。
しかし、一旦立ち止まりこれからどうなりたいのか考えました。
そして、業務でFlutterを使いたいという結論に至りました。
よって、もっと深掘ぼりFlutterを使った業務を行えるレベルに達している必要があると考えました。
こういった経緯で動画アプリの作成は一旦やめ、Flutterの学習からFloweringをリリースするまでの経緯を同人誌としてまとめることにしました。まとめるプロセスで追求することなるので。

まだ同人誌の設計途中ですが、以下のような目次にしようかなと思ってます。

  • DartとFlutterの学習
  • プロジェクト作成からビルド成功まで
  • 使った技術
  • 作った機能
  • AndroidiOS特有の問題と解決方法
  • iOSアプリの審査でどういう項目でリジェクトされたか

Do. Or do not. There is no try.

これはスターウォーズヨーダの名言です。
直訳すると「する。それともしない。試行はない。」になり、意訳すると「やるんやったら最後までやりきれ。途中でやめるんやったら最初からやるな。」です。
あまり知識がなく、方法、目的が曖昧な場合、がむしゃらに量を増やしていろんなチャレンジをすべきですが、ある程度自分の将来を絞ることができている場合、しないことを決め継続的にそれをせず、することを決めそれを追求した方が良いと思っています。
しかもオタク気質な人の方がしゃべっていておもしろいですし、学びも多いです。

Flutterをやりだしたので、プライベートの時間でとことん追求して楽しんでいくつもりです。

Floweringのサポート

Floweringとは

カメラで撮った写真、スマホに保存している写真、アプリから選択した画像を元に、フラワーアレンジメントをすることができるアプリです。
本アプリを利用することで、実際にフラワーアレンジメントを行う前に完成系をイメージすることができます。
トリミング機能が搭載されているので、写真に余計な物や背景が入っていても削除できるので問題ありません。
登録とログインなしですぐに手軽に始められます。

f:id:yoppiex:20210616182048p:plain:w130f:id:yoppiex:20210616182058p:plain:w130f:id:yoppiex:20210616182108p:plain:w130f:id:yoppiex:20210616182118p:plain:w130f:id:yoppiex:20210616182130p:plain:w130f:id:yoppiex:20210616182143p:plain:w130f:id:yoppiex:20210616182151p:plain:w130

ご利用の皆様へ

ご質問、ご意見、ご感想がございましたら、下記のメールアドレスよりご連絡ください。
yoppie.bull@gmail.com

「解決!Androidアプリ開発のアレコレ 保守・改善編」を書きました

はじめに

今までに

という同人誌を書いてきました。
たまった知見を同人誌という形でまとめることでスッキリさせてきました。

Androidアプリ開発を業務で行う中で保守・改善するための知見もたまってきたのでそろそろまとめたいなと思い「解決!Androidアプリ開発のアレコレ 保守・改善編」という同人誌を書きました。

技書博5にてサークル参加し、そこで新刊として発売します。

gishohaku.dev

ちなみに上記の3つの既刊も発売します。 https://gishohaku.dev/gishohaku5/circles/OM47hzQvVZMzZvawWvAK

「解決!Androidアプリ開発のアレコレ 保守・改善編」は

  1. 保守・改善の意義と概要
  2. ビルドスピード改善
  3. マルチモジュール
  4. 開発用アプリ
  5. 導入ライブラリのバージョンアップ
  6. Dagger Hilt
  7. その他

という章の構成になっています。この記事ではそれぞれの章を簡単に紹介します。

1. 保守・改善の意義と概要

この章ではAndroidアプリ開発における保守・改善の意義と概要を記載しています。
Android端末が作られるプロセスを確認することで保守・改善が重要である理由を理解できます。

2. ビルドスピード改善

この章ではAndroidアプリのビルドスピードを改善(速く)するための手順と方法を噛み砕いて解説しています。
各項目で対策前と対策後で何秒改善できたか計測しています。
すぐに実践できることも記載しているので、試したことがない項目があればぜひ試して欲しいです。

3. マルチモジュール

この章ではAndroidアプリをマルチモジュール化していないプロジェクトをマルチモジュール化するまでを解説しています。
自身でマルチモジュール化してみて、問題解決に時間がかかった点や、注意点を具体的に記載しています。

4. 開発用アプリ

この章ではAndroidアプリをビルドする際に、本番環境用と開発用で分割する方法の説明と、開発用アプリに導入したいライブラリの紹介をしてます。
Gradleファイルの設定がめんどくさく間違えやすいため章として切り出し詳しく記載しています。

5. 導入ライブラリのバージョンアップ

この章ではAndroidアプリに導入しているライブラリをバージョンアップするためのPull Requestを 自動作成する方法を記載しています。
以下2つの方法が良さそうだったので、両方試した結果を記載しています。

  • Dependabot
  • Releases Hub Gradle Plugin

6. Dagger Hilt

この章ではDagger Hiltを解説しています。実際に実装し試しました。
DIには苦手意識があったので、正直手を出すのが嫌だなーと思っていました。でも実際にDagger Hiltを試してみると楽にDIを実現できました。
導入方法、実装例、解説という流れで記載しています。

7. その他

この章は1つの章として切り出すほどではないものをまとめた章です。
Gradle Kotlin DSLAndroid Studioの機能を用いたアプリ改善などがあります。

書き終えて...

どうしても新しい技術に目がいったり、新機能開発が楽しいなと感じますが、長い目で見た時にプロダクトを保守・改善し、1つ1つをシンプルに保つことが大事だと再確認しました。
また、同人誌としてまとめる作業を行うことで追求することとなり理解度が向上して良かったです。アウトプット大事。

最後に

技書博5での久しぶりのサークル参加がとても楽しみです!
興味のある方は是非遊びにきてください!

参画する案件を初めて変えた

はじめに

フリーランスとして活動を始めて、初めて参画する案件を変えました。
結婚したことによりプライベートの事情が変わり、月の報酬を20万円アップさせる必要が出たためです。

参画先を変えるまでの流れについてまとめます。

エージェントの経由で報酬の交渉

参画先する案件を変える前に、現状の案件で月の報酬を20万円上げてもらいたいと考えました。
エージェント(有名な企業)を経由して参画しているため、報酬を上げる交渉をする場合もエージェントを経由する必要があります。

エージェントに報酬アップの交渉依頼をしたところ、一般的にテックリード的ポジジョンでないと希望の報酬額に満たないと言われ、参画先に依頼をしてもらえませんでした。
おそらくエージェントの企業内で、参画者の業務歴や業務内容に応じて報酬額を揃える規則というか常識みたいなものがあるのだろうと予想し、別のエージェントを用いて希望の報酬額を得られる参画先を探しました。

すると、そのエージェントからは僕の希望の条件に合う案件を複数紹介してもらえました。
結果、月の報酬が+20万になり、さらに月の業務時間が-20時間になり、それ以外の条件も僕に合う案件に参画することになり、とても満足しています。
色々なエージェントが存在するので、固執しないほうがいいと思いましたし、エージェントを信用しないで良かったです。

また、最近はエージェントとのやりとりも全部リモートなので、足を運ぶことなく楽です。

コロナ禍の参画先案件探し

  • バックエンド+Androidアプリの開発ができる
  • 出退勤時刻が決められていない
  • フルリモート

など複数の叶えたい条件があったので、コロナ禍ということもあり参画先案件探しは難航するだろうと予想していました。
しかし、Androidアプリ開発の案件は大量にあり、参画したい案件を選べる立場でした。
最近はAndroidエンジニア不足が加速しているような気がするのでその影響もあるかもしれません。

面接は全てリモートでした。デュアルディスプレイで面接を受けると、エディタに自己紹介の内容や、発言したい内容をカンペとして準備できるので、リモート面接は便利です。

また現状の仕事と並行して次の参画する案件を探す場合、足を運ぶことがなく時間がかからないためリモート面接は便利です。

リモート入場

参画先を変えた業務初日、あらかじめ家にPCなどの業務に必要なものが送られていたので、入場する際もリモートです。
めんどくさがりなので、僕にとってリモートメインの世の中はメリットが大きいと感じます。

また、今後も出社することなくフルリモートで、コロナがおさまったとしてもフルリモートのままという契約なので、最高です。
会社員の場合どうしても出社する必要にかられ、フルリモートは難しいという声をいろんな人から聞きますが、その点業務委託は楽だなと感じます。

参画先を変えて感じたこと

会社員だと評価シートに書いてある評価項目を達成して評価を受けます。また、年功序列や謎のランク付けなどで年収に上限が設定されている場合が多いのでめんどくさいです。
やはり親のお手伝いをしたときに、お小遣いをもらえるのと同様で、評価を受けることは報酬をもらうことだと感じます。

また、その時々で柔軟に参画先を変えられ、世の中がジョブホッパーと認識しないフリーランスのメリットは大きいと感じます。

最後に

gishohaku.dev 第5回技書博にて、Androidに関する同人誌の新刊を発売予定です。
タイトルは「Androidアプリ開発のアレコレ 保守・改善編」です。
目次は

  1. 保守・改善の意義と概要
  2. ビルドスピード改善
  3. マルチモジュール
  4. 開発用アプリ
  5. 導入ライブラリのバージョンアップ
  6. Dagger Hilt
  7. その他

です。執筆は終了し今は表紙と裏表紙を作っています。
サークル参加楽しみです!