2019年12月25日水曜日

転職と振り返り

これは琉大 Advent Calendar 2019 23日目の記事です。

前回はこちら
次回はこちら

まとまりはないのですが、その時は質問していただけたらと思います。

転職しました


新卒で入った会社は1年半でやめる形になりました。
その会社は全国・世界にも支社のある10万人規模のいわゆるSIerでした。
そこでは会社としても珍しいモバイルアプリを開発していました。
Mac Book Proもありましたし、プロキシのないインターネットにも繋がれました。

辞めた理由


やめたのは様々な理由がありますが、最も大きい理由は
「自分自身が思い描くキャリアがこの会社では歩めない」
と思ったからです。

「あれ?じゃあなんでその会社に入ったの?」と思うかもしれません。
僕もそう思いますし、最初からキャリアを思い描けていたらと思います。
いろいろ開き直りますが、それって難しくないですか?
だって、バイトと学会くらいですよ?働いたのは。

最初からキャリアを描けた人は本当にすごいと思うし、尊敬します。
だって、大学からやりたいことがあって、それを実現しようと思っているのだから。
僕にはそれがなかった。ただそれだけ。

働き始めたら、その会社でやりたいことが生まれるかな、などと考えていました。
確かに生まれました。でもそれはこの会社でやるには5年はかかりそうだと思いました。
だからできそうな会社に転職しました。

ふりかえり


新社会人になる前に、ある人からアドバイスをいただきました。
「新卒でいい会社を引き当てるのは難しいのだから、そこまで気負わなくていい」
(本当にこうだったかは忘れましたが、多分こんな感じだったはず)
今でもこれは本当だと思うし、少なくとも最近はこうなんだろうと思います。

会社の人事や教育担当の方には本当に申し訳ないと思いました。
採用の大変さは1mmくらいは理解しているつもりです。お金もかかります。
実際、転職してから採用に関わることがあったので、最低でも書類選考の大変さは知っていますが、ただ、人が辞めてしまうのはどうしようもないことだろうと思います。
いい会社でも人は辞めますし。

辞める前にもっといろいろできたかも、と思いました。
いろいろな人と話して、働きやすくアクションを起こしやすい職場にしたほうがよかったと思いました。
イベント提案したり、社外勉強会のレポートをチームに送ったりはしましたが、そうではなく、実際に勇気出して話してみる方がよかったと思いました。
まぁ、僕は1度やって折れちゃったんですけどね...。もっと信頼貯金と熱意が必要だった。

これから


アジャイル開発とモダンな開発環境に触れる会社になったので、当面は技術を身につけながら、実装速度をあげたいと思います。

補遺

できるだけ辞めたくなかったなぁとは思います。
いい人が多かったし、すごくできる同僚にも恵まれた。
linuxをカーネルを読む人がいたり、コンパイラ組んでる人もいました。
論文出したり、特許出したり。

同期が周りにいない職場だったので、勝手に社内チャットを作ったりして、知っている同期をバンバン招待しました。
チャットはクローズしましたが、その時のコミュニティはまだあるみたいです。作ってよかった。

2019年12月22日日曜日

Flutter for Webで簡単なToDoリストを作るぞ

この記事はFlutter #2 Advent Calendar 2019の21日目です。

前回はこちら
次回はこちら

1日遅れてすいません。しかも解説は追記予定です。
ソースコードだけは置くので参考になれば幸いです。

(追記2020/2/16)
githubにプロジェクトコードを置きました。
Firebaseでデモを置きました。




最近Dartを使っているので、Flutterを再び勉強するモチベーションが出てまいりました。Flutterは以前少しだけ触って放置していたので、改めてキャッチアップしてみると、なんとFlutter for Webというのがあったので興味本位で触ってみることにしました。

そういうわけでFlutter for Webで簡単なTodoリストを作ります。

やること


開発するときにみた情報源の話。作り始めのころの雰囲気を記録したいと思います。なので読みにくい点もあると思いますが、その時はもし良ければ「読みにくい」ってコメントをお願いします🙇‍♂️

やらないこと


設計周りの話はしません。今はクリーンなアーキテクチャよりもプログラミングを楽しむことに価値を置きたいと思います。

どういうのを作るのか


仕様を決めます。

  • ユーザーはタスクリストを見ることができる。
  • ユーザーはタスク名を入力し、タスクリストに追加できる。
  • ユーザーはタスクリストから終わったタスクをワンクリックで消すことができる。
  • ユーザーはタスクリストに書いたタスクを次回も見ることができる。

足りなければ追加するということで、とりあえずこれで行きます。
あとは画面のモックを作っておきます。
ハイクオリティな画面モック
では取り掛かっていきます。

環境構築


公式の方法に従って導入します。
現在はbetaチャンネルなので今後stableに変わると思います。

というわけでプロジェクトを作ります。

flutter create --org com.akior todolist_app
cd todolist_app
code .

VSCodeであらかじめ設定しておけばこれでプロジェクトで開けるはずです。
あと、VSCodeはFlutterの拡張設定は必要です。

flutter run -d chrome

これでweb画面が起動します。
ちなみにVSCodeからも起動できます。

Touch Barの実行ボタンでも起動できます。白い三角が実行、中抜き三角がデバッグ実行。
lib/main.dartを編集していきます。

完成


タスクを追加する処理です。
ユーザーはタスク名を入力し、タスクリストに追加できる


タスクを削除する処理です。
ユーザーはタスクリストから終わったタスクをワンクリックで消すことができる


更新しても画面は保持されたままです。
ユーザーはタスクリストに書いたタスクを次回も見ることができる

ここにソースコードを示します。



解説

使ったのはAnimatedListWebStorageです。
アプリならSharedPreferencesを使うところですが、WebなのでWebStorageを使うことができました。使うにはdart:htmlをインポートする必要があります。

おわりに


Flutter for Webで簡単なToDo リストを作成しました🎉
Flutterのお作法で悩みながら楽しく作れたと思います。Widgetツリーを意識しながら構造的に書くことは勉強になりました。

課題として、

  • ネットワークの要素を取り入れる(Firebaseなどと通信する)
  • PWAのように使えるのか調査する(hi fiveみたいにキャッシュにためたあと通信する機構など)
  • オリジナルのデザインをつかう

があげられそうです。

余談


最初にFlutter for Webを書き始めたときは12月始めで、そのときはdevチャンネルでした。
なので12日のFlutter Interactでbetaチャンネルに移行したときは飲み会で一芸を楽しみにしてる感じの声が出ました。
Flutterにsearch.array().