2020年の振り返り
概要
去年は電子工作系の作品を作ったり、本ブログで記事を書いたり、TwitterではM5Stack関係のツイートをしたりしていたのですが、今年は趣味開発の時間の多くをアプリケーションの開発に使っていた1年でした。特にモバイルアプリ開発の時間が多く、これまであまり関わったことがない領域だったので、新たな学びが多かったです。 また、仕事において人を見る立場になったこともあり、マネジメント系の本を読む機会が増えました。そして、これまで頭の中に描いていたエンジニアとしてのキャリアだけではなく、マネージャーとしてのキャリアも考え始めた年になりました。
趣味開発
サービス
yatta!
自分のやったことをアピールして、他の人の頑張りから刺激を受けられるサービスがあれば良いなと思い、Railsを用いたWebサービスを作りました。フォームと詳細ページのみだったので思いついてから1週間ほどで完成しています。 Twitterでの共有を前提としており、OGPを活用することで通常のツイートより目立たせるようにしました。
今日はこれをやったよ!みんなもやったことを共有しよう! #yatta
— クラクス (@kuracux) February 23, 2020
https://t.co/chlvT3MX5E
実際に全然知らない方にも使っていただけて大変嬉しかったですし、ありがたいことにお褒めの言葉もいただけたりもしました。
こういうサービス素敵… https://t.co/NkYH8w5m8m
— きなこ (@AsukaOkochi) February 11, 2020
ただ、以下の点で投稿のハードル自体が高かったなと感じました。
- 何かしら行動する→投稿するという流れになるが、何もしていない人はそもそも投稿できない。(質問箱等は質問さえあれば投稿でき、なおかつ今何もしなくても過去の経験を答えることが出来る)
- こんなことを投稿してもな…と思う人は投稿しない
作り始めた動機として「皆の頑張りに刺激を受けて他の人も頑張ろうと思えるような世界が見れるといいな」という想像から始めましたが、そういった問題や課題が現実にあったのかと考えてみると、実際はなかったんだろうなと思いました。作る目的は様々ですが、使われることを目的とした場合には、作り始める前に、その問題は存在しているのか?既存のアプリや方法で解決できないのか?を検討すべきだと思いました。 また、そもそも自分が使おうとしないため、開発のモチベーションを維持することが出来ませんでした。自分自身が1ユーザーとして使うものを作るほうがモチベーションにもなりますし、改善点も見えやすいんだろうなと思いました。
おごりあい
よく会う人との割り勘や別会計を毎回するのは面倒だな・・・と思い、「会計時にどちらかが相手の分も支払う→支払った金額を記録→次の支払いは過去の支払い額が少ない人が払う」を管理するためにReact Nativeを用いたiOSアプリを作りました。
apps.apple.com元々Trelloで似たようなことをやっていたのですが、金額計算を手計算で行っており、管理することが手間だったのでアプリを作った形になります。
また、yatta!における教訓から、作り始める前には以下の点を意識しました。
- 自分がユーザーとして使うもの
- 既存のアプリでは実現されていないもの
事前にアプリの調査や既存のアプリやサービスで試したことを踏まえて作成に踏み切りました。 ロゴの作成からアプリストアへの申請など、開発面以外についても初めての経験ばかりでしたが、リリースまでの流れを知ることが出来たので良かったです。ストアに公開された時はとても嬉しかったですね。
このアプリについては現在も継続して利用しているのですが、アプリの改善までは手を付けられていません。 理由としては
- 現在の状態でやりたかったことがある程度達成できてしまった
- React Nativeの開発でかなり苦労してしまったことによるモチベーションの低下
後者については、主にライブラリの選定ミスが要因です。破壊的変更が加わったばかりのライブラリを利用してしまい、実現したいことの記事を探しても見つからず、最終的にYouTubeで解説している動画から実現方法を見つけました。最新バージョンが良いだろうと思って意地でも使おうと思いましたが、こういったことが起こるので柔軟に対応しないといけないと思いました。
サ活記(開発中)
詳細はリリース後に記述しますが、FlutterによるiOS/Androidアプリ開発を進めています。 年内にリリース予定でしたが、一部機能で大きな修正が必要になったので絶賛開発中です。
電子工作
触覚フィードバック付き仮想ボタン
M5Stack Core2の発売タイミングと並行してM5Stack Creativity Contestが開催されていたので、何か作ろうと思い、作成しました。せっかくならM5Stack Core2から搭載された、タッチパネルと振動機能を活用したかったので、このようなものを作りました。 ありがたいことに、参考にしてもらえたので嬉しかったです。
#M5Stack_CORE2 の触覚フィードバックとして、音を出そうとしていて、かなり苦戦していたのですが、こちらのコードの、振動をフィードバックとして使うというのが、シンプルで、凄く良さそうです。参考にさせていただきます! https://t.co/70thZulGTY
— nod(YモードP) (@nod_Y) September 11, 2020
電子ペーパー
デイリーポータルZさんの記事を見て、これは欲しい!と思い、パーツを集めて組み上げました。これを使って何かやろうと思いましたが、画像を表示するだけかなり楽しかったので満足しました。
ディザリングと色付け(黄色のみ)したら更にいい感じになりました。 pic.twitter.com/sURANPfI9i
— クラクス (@kuracux) July 26, 2020
その他
ハーディ・ガーディ作り
Twitterでみかけたハーディ・ガーディの演奏動画を見て「欲しい!」と思ったのですが、手軽に始めるには手が届きにくい金額でした。そこで簡易的ではありますが制作できるキットがあったので、そちらを購入し組み上げました。
ハーディ・ガーディを作りました pic.twitter.com/1lDGwIXbnz
— クラクス (@kuracux) September 6, 2020
購入当初は練習していましたが、気づけば飾っているだけになっています。
データ分析系
去年の年末から年始にかけて時間があったので、データ分析の本を一通りやってみました。
「Python実践データ分析100本ノック」をやりました。データの加工から予測、結果の妥当性の確認など、サンプルを使い、手を動かして学べたのは良かったです。特にデータを可視化し仮説を立てること、データ分析の多くの時間をデータの加工に割くことが分かったのは収穫でしたhttps://t.co/QbDa3hgWQh pic.twitter.com/Y3j6Z8uq6i
— クラクス (@kuracux) January 4, 2020
この流れでKaggleや競馬の予測にも挑戦しようと思いましたが、テーブルコンペが開催されず、またコロナの関係で競馬場にも行くことが出来なくなったので、モチベーションが維持できずに取り組むのをやめてしまいました。
仕事
詳細は割愛しますが、大きな変化として以下がありました。
役職がつきました
人を見る立場になりましたが、エンジニアとしてのキャリア以外の幅が広がった点をプラスに考えています。チームで働くことが多い仕事なので、その上でどのように立ち回っていくかを試行錯誤していければと思います。一方で、初めての立場ということもあり、マネジメント系の本を様々読み漁っていますが、その分技術的な方向に割ける時間が減ってきています。1日の時間の総量は決まっているので、時間を何に使うかを決めて学び続けていければと思います。
書いた記事
電子工作系の記事は新作があまりなく、業務で利用しているRubyに関する記事の比率が上がりました。また、役職がつくにあたり、自分の考え方をまとめる練習が必要だと感じ、自己啓発系の記事も少し書いたりしました。多くの時間をモバイル開発の時間にあてながらも、この本数を書けたのは良かったなと思いつつも、モバイルアプリ開発の記事も書いておけば良かったなと思いました。
技術系
- M5 Weather Forecast
- Virtual Button with Haptic Feedback / 触覚フィードバック付き仮想ボタン
- 触覚フィードバック付き仮想ボタンを作ってみた
- M5Stackでいろんなデータを取得・表示してみよう!
- Rubyのencodeとforce_encodingの違い
- Rubyでバージョン番号の比較をする
- あなたの言葉をイクラちゃんが喋るとどうなるのか?
- 「リファクタリング:Rubyエディション」を読んで
- 【Ruby on Rails】Stripeのサブスクリプションで試したことをまとめてみた
- 【Stripe】サブスクリプションの支払いタイミングが特定日時においてズレる問題について
自己啓発系
来年について
- 電子工作系については、今年と同様に触りたいもの・作りたいもの・必要なものが出来たときに作っていこうかと思います。M5Stack Core2やM5Paperを購入しつつも活用できていないので、何かに使いたいです。
- アプリ開発については、まずは新規で作っているものを完成させること。そして、今後は現状作っている2つのアップデート方向に時間を割ければと思います。これ以上新規で作ると他のことが何もできなくなるので、仮にアイディアを思いついても作りません(元々2つ目も作る予定はなかったので、その反省を活かします)。1作目の「おごりあい」はReact Nativeによる実装をしているので、フロントエンドまわりの勉強もそこで併せて出来れば良いなと思います。
- 業務領域がインフラ寄りになりそうで、AWSの知識を身につけていく必要がありそうです。直近の目標としてはSAA(ソリューションアーキテクト アソシエイト)の取得を目指して勉強していこうかと思います。
- RubyやRailsについては、まだまだ深く学びたいなと思っています。機能を作るだけであれば多くの場合は問題ないのですが、より良い作り方や実行速度を考慮した作り、またRubyやRails自体の理解できていない領域がまだまだ広いので、学んでいければと思います。
- マネジメント系の本も適宜読んで、実務に活かしていければと思います。