🙅‍♂️

SEから受託に入ってやったことまとめと振り返り

7 min read

背景

2019年10月にSEから受託(現職)に転職し、202012月末に退職を決めたので
この約1年2ヶ月でやったことを振り返ろうと思いました。

やったこと一覧

  1. Flutterデビューした!(本業)
  2. 個人開発アプリ6つリリースした!(iOS 4つ Android 2つ)
  3. フリーランスで開発プロジェクト5つ参画した!(Swift 2つ Flutter 3つ)
  4. MENTAでSwift,Flutter,Firebaseの指導した!(合計86人指導)
  5. 技術記事30本投稿した!(ながいやつは10本くらい)
  6. 本40冊くらい読んだ!(技術書とビジネス書が1:3くらい)

各項目の振り返り

Flutterデビューした!

Flutterとの出会い

会社に入るまでFlutterの存在は知りませんでした。
クロスプラットフォームの存在は知っていてReact Nativeだけ知っていたんですが、
技術的にWebベースなのでモバイルを中心に育ってきた自分には敷居高いなーって思って
あまり意識してきませんでした。
そして転職してFlutterのプロジェクトに配属されました、これが私とFlutterの感動的な出会いです。

Flutterが自分にもたらした恩恵

Flutter開発を行ったことによって、いろんな恩恵を受けたので記載します。

  • UIが爆速で作れる
    今までStoryboardとオートレイアウトで開発してきたので、宣言的UIによる開発は自明でわかりやすく、多画面対応も意識すれば簡単にできるのに感動しました。
    またホットリロードができるので、SwiftでのiOS開発と比べるとデバックを待つストレスが圧倒的に解消されました。

  • Android開発へのモチベーションアップ
    FlutterでサクッとiOSもAndroidアプリを作ることができるので、Android開発に感じていた障壁のような物が少なくなったように感じました。KotlinでのAndroid開発に対して重い腰を挙げられたのはFlutterでの開発がきっかけだと思います。

  • 個人開発アプリへのモチベーションアップ
    UIが爆速で作れるようになったことで、個人開発のモチベーションがかなり上がりました。
    Swiftでの開発でFirebaseを使った開発を行うと、大体2ヶ月くらいかかってしまっていた(単純にモチベーションの維持が難しかった)のが、Flutterでの開発はUIがサクッと開発できるので単純に楽しく感じました。
    加えてiOSもAndroidでもリリースができるので、Androidの友人にもアプリをダウンロードしてもらえてうれしかったです。

  • 英語記事に対する苦手意識の解消
    Flutterはまだ歴史が浅く、日本語の記事が少ないため必然的に英語の記事による検索を余儀なくされます。
    最初はしんどかったですが、Chromeの翻訳機能を使用したりすると少しずつ抵抗感はなくなり、今まで日本語記事中心でしかキャッチアップができなかったのが、英語の記事でもできるようになったことで圧倒的に検索解決能力が上がったと思います。

Flutter開発での課題

良いことしかなさそうなFlutter開発でしたが、少しめんどくさいこともありました。

  • 対応していないSDKが多い
    新しい技術なのでしょうがないのですが、他社が作っているSDKがFlutterに対応していないことが多くて、
    iOSやAndroidのネイティブ側でコードをいくつか書かないといけない部分がありました。
    最近はFlutter人気もあって外資系のサービスは対応してきているみたいです。

  • バージョンアップの対応が意外とめんどい
    新しい技術なので、バージョンアップによる破壊的な変更は何回かありました。
    またバージョンアップの頻度もかなり高いので、毎回対応する必要なありませんが定期的なバージョンアップ対応が必要だったので、少し大変でした。

  • Flutterでできないことがあった
    特にWebView周りがFlutterの弱いところで、対応しきれないバグもあったりしました。
    企業のアプリだとWebサイトのアプリ版みたいなアプリも多かったりするので、WebViewを頻繁に使用するアプリだと対応しきれない部分があったのが少し欠点に感じました。

まとめ

Flutterでの開発はとにかく楽しくて爆速で開発ができるのが強みかなと思います。
課題の部分も書きましたが、総じて自分はすごい好きですし、これからもキャッチアップは続けたいと思っています。

個人開発アプリ6つリリースした!

アプリ自体は4つ作成しました。(Swiftで2つ,Flutterで2つ)
自分が個人開発を行っている理由は3つです。

  • 身内が使ってくれる
  • 学習した開発をアウトプットできる
  • 成果物が残る(すごいねってなることが多い)

一番大きい理由は学習のアウトプットが大きいです。
結局はアーキテクチャや設計的な知識はアプリとしてアウトプットしてみるのが一番理解できると思います。
身内が使ってくれるのをモチベーションにして、個人開発でアウトプットして知識を深めて、結果として成果物が残るのでこんなに1石3鳥な学習手段はないと思います。(いいすぎかもしれない)

良いと言われている設計やアーキテクチャは実際に自分で開発してみて、どこがいいのか?を開発者目線で理解することが大事だなと思っています。
そのための手段として個人開発はいい手段だと思うので、これからも続けていきたいと思います。


アプリ自体はダウンロード数100もいかない、たいしたことないクソアプリです。

フリーランスで開発プロジェクト5つ参画した!

ここがかなり大変でしたがとてもいい経験になったと思います。
なぜ5つも参画できたのかというと、完全にコロナの影響です。
実際に現場で開発経験を詰めたことも良かった経験ですが、

  • フリーランスになった時の働き方をイメージできた
  • 確定申告や社会保険料、その他税金に対する関心をもてた

この二つが大きな成果かなと感じています。

フリーランスへのイメージ

自分は兄がフリーランスで働いていたのをみていたのもあって、フリーランスへの憧れがかなり強かったです。
自分のフリーランスに対するイメージは以下でした。

  • 単価が高くて稼げる
  • 場所を選ばず働ける
  • 好きな時間に働ける

フリーランスになれば上記ができると安易な考えを持っていました。

フリーランスとして活動してみた結果

実際にフリーランス(副業ですが)として案件を受けてみて感じたのは少し違いました。

  • クライアントとの契約周りややりとりが意外とストレス
  • 技術力や信頼関係がないと別に単価は高くならない(交渉次第)
  • 自分に対する責任が大きくなる(時間をどう使うかは自由)

自分で営業活動して、受注して、開発してという感じで開発以外の活動が意外に多くて
そこをストレスに感じました。元々営業活動(交渉とかも)がそこまで得意ではないので、フリーランスとして活動していくには必要な力だなーと思い少しイメージとのギャップを感じました。

また「自分」に対する責任がかなり大きくなるので、技術にそこまでの自信が無いうちは
不安になることが多いので、精神衛生上やめておいた方がいいなと感じました。

本当にフリーランスになりたかったのか?

2月中旬から本業の方がコロナの影響でリモートワークになったこともあり、約1年間リモートワークで活動しました。
リモートワークになった結果、

  • 朝出勤しなくていい
  • 場所は自由に働ける(基本家)
  • 比較的お昼とかも自由に時間を使えた

などなど自分がフリーランスとしてイメージしていたことができました。
コロナの影響でお金をあまり使わなくなったので、金銭的にもかなり余裕が出てきて
自分は本当にフリーランスになりたかったのかを考えることができました。

副業という働き方が少しづつ浸透してきた今、わざわざ本業をやめてフリーランスになることにどんなメリットがあるのか考えてみた結果、本業をメイン+副業で本業の知識を生かすの働き方が自分にはあっているのかなと思いました。
実際に経験してみて、フリーランスになった時のことを真剣に考えることができたのはとても良かったと思います。

MENTAでSwift,Flutter,Firebaseの指導した!

大学時代に5年間塾講師をやっていたので、学習する上で一番効率がいいのは人に教えることというのを実感していました。(教えることで圧倒的に自分の理解力があがるのを実感していました。)
そんな経験もあり、自分の学習経験を生かせる媒体がないか探しました。

プログラミングスクールでまずはどう教えるのかを学ぶ

自分の独学法をそのまま伝えるのは、指導として正しいか自信を持てなかったので、
まずはプログラミングスクールがどう教えているのかを理解するためにスクールの講師として活動を開始しました。
スクールにはカリキュラムがあり、いつでも質問できる環境があり、ビデオチャットを定期的に行ったりと
比較的手厚いサービスだなと感じました。
そこで約3ヶ月間他の講師のやりとりや、いろんな教え方をみている中で、スクールの良いところとスクールの悪いところの両方の側面が見えてきました。(ここでは言及はしません)

MENTAを見つける

プログラミングスクールでの指導のノウハウと、個人での独学経験を生かして個人で活動できる場を探していたところ、MENTAを見つけました。
MENTAを通して多くの方とコミュニケーションをとり、いろんな質問に対して回答をしてきたので、
結果的に自分が後回しにしていたことを理解できたり、説明するためにより学習する週間ができたので、自分にとってかなりいい経験になったと思います。

反省

MENTAで学んだ経験を生かして、本業での新人育成などにアウトプットするところまでやりたかったですが、
そこまで手が回らなかったので少し反省しています。副業で学んだ知識やノウハウを本業に生かすのが最高のサイクルだと思ってるので、なんらかの形でアウトプットするところまで行ければと思いました。

技術記事30本投稿した!

メインはQiitaを使って技術記事を投稿しました。

技術記事の投稿に対するハードルは早めに下げておくのがいいと思います。
最近のエンジニア転職ではQiitaでアウトプットしてる人が多いので、投稿のハードルは下がってると思いますが、定期的にアウトプットする週間はつけておいた方がいいと思います。
アウトプットすることでいろんなメリットがあります。

  • 技術記事にアウトプットすることで知識の整理ができる
  • 分かりやすい記事を意識するので、伝える能力が向上する
  • 技術発信をするエンジニアということでまわりからも一目おかれる

エンジニアの文化としてOSS的な思考が強いので、技術記事のアプトプットはエンジニアの市場価値を上げるのにはもってこいだと思います。

Qiitaは最近Qiita jobsをやっているので、そこから良い転職のお話もあったりするので
結果的に技術記事のアウトプットはして良かったです。

アウトプットのハードルを下げてくれたパイセンエンジニア(@unsoluble_sugar)には感謝したいです・・。

本40冊くらい読んだ!(技術書とビジネス書が1:3くらい)

読んだ本の量というより、定期的に読書する習慣ができたのが一番大きいと思います。
技術書は有名な良書と言われるものは読みました。

  • リーダブルコード

https://www.amazon.co.jp/dp/4873115655/ref=cm_sw_r_tw_dp_x_nj42FbWV84N77

感想

一般的にいいコードがどんなコードか?というのがなんとなくイメージできた。
変な固定観念がつく前の早い段階で読めたのはすごい良かった。
コードがjava?か何かで書かれててコード自体は難しくて理解できない部分もあった。

  • Webを支える技術

https://www.amazon.co.jp/dp/4774142042/ref=cm_sw_r_tw_dp_x_9j42FbZHMYME0

感想

Web技術の歴史から仕組みまで学べたので良かった。
Firebaseに頼ってきたエンジニアはAPIに対して苦手意識を持ってる人が多いと思うので、
そういった人は読んでみるのがいいかなと思う。

技術書以外で最近読んだ本の中で自分の中で一番良かったのは以下の本です

  • 転職と副業の掛け算

https://www.amazon.co.jp/dp/B07VC49YQH/ref=cm_sw_r_tw_dp_x_Bm42FbEAJ12K0

感想

市場価値に中心に考えることの大事さ,軸ずらし転職など
個人の価値が大事になってきている社会での生き方が学べて今までの価値観が結構変わった。

  • お金の大学

https://www.amazon.co.jp/dp/B0876WHDDF/ref=cm_sw_r_tw_dp_x_Av42FbG05RQBJ

感想

お金の価値観がだいぶ変わる。
資産運用とか保険とか結局どうすればいいのかがわかる。
結論としては損をしたくないなら自分で勉強するしか無いということがわかり、
いわゆる金融リテラシーが上がる。
Youtubeが本当はお勧め(アイコンが少し胡散臭いけど)

https://www.youtube.com/c/ryogakucho

まとめ

定期的に読書して、知識をインプットするのは本当に大事だなと感じた。
ビジネス書を読みがちなので、技術書をちゃんと読む。

振り返りまとめ

なんだかんだ書き出してみるといろいろやって忙しい1年ちょいだったけど、
習慣化できてることがいくつかあるので、意外とストレスは少なくできてる。

5年後10年後の将来のキャリアがまだあまり見えていないので、
来年はまたいろんな活動をしてそこが見えたらいいなと思ってます。

おわり

この記事に贈られたバッジ