ことしのふりかえり〜

概略

ざっくりなにをしたかなーって振り返ると,

  • 4-7月 => 大学の授業, 開発
  • 8-9月 => インターン2社, 開発
  • 10-12月 => 大学, 開発, 就活少々
  • 1-3月 => ひたすら就活

たぶんこんな感じ.

大学について

大学は相変わらず成績は低めだけど, 卒業するラインを維持して単位取得できた.

後期は思ったより就活が重かったので, 授業はかなり減らしたのだけど, 前期で少し余裕をもって単位取得できていたので, 目立った遅れが出なかった. 来年は関心が強い授業も多いし, しんどいけどあと1年がんばろう…

開発について

今年はWebの年だった.

1年前といえばちょうどキャリアがざっくりWebに固まってきた頃だったと思う.

プロダクトとしてわかりやすいし, 生活にも身近でユーザーの想像がしやすかったのと, 比較的小規模チームでの開発が多く, 大規模受託開発へのネガティブイメージも理由だと思う.

Web開発がしたい, でもFlask齧ったくらいの経験しかないからWeb周りの知識をつけようってことで漠然とWebを理解するみたいなレベル感で目標設定をしていた.

今思えば, この頃の目標はだいたい達成できた, というか目標以上だったのかなと思う. 良かった

やったことと反省

まずは, Web開発をするなら言語とは別に, フレームワークが必要になるらしい

どんなのがあるねんてことで調べてみると

  1. Ruby on Rails (Ruby)
  2. Laravel (PHP)
  3. Django (Python)

の名前が良く上がっていた.

海外はともかく日本では Django の人気は比較的低めだったので, Laravel とか Rails を使うことも考えたのだけれど, Web開発を学ぶ ってとこに注力するには, 極力言語仕様とかの理解が済んでいる言語のほうが良いと感じたのでDjangoを選んだ.

選択肢としては間違ってなかった(Python自体のレベル感もあがったし, Webに注力できた)けど, やっぱり就活とかでも Django 使ってるってところ聞かないし, やっぱそんな人気ないのかーとちょっと残念になる

まあ Python は好きだし, 個人開発は実務以外でもすると思うのでそこで使っていくと思う.

Djangoは良いフレームワークなのだけれど, いやそれ故にブラックボックス化が激しくて開発のイメージが湧いていなかった当時の僕にとってはちょっと重かった(よくわかんないけど作れる状態は嫌だった).

てことで, とりあえずFlaskで一通りのフローがイメージできてからDjangoを使うようにした.

流れとしては,

  1. とりあえずレスポンスを返す
  2. HTMLのレスポンスを返す
  3. テンプレートエンジンを使って動的なHTMLを返す
  4. ユーザー認証
  5. セッションを使ってログインを保持する
  6. ID, パスワードを保存するためにデータベースを利用する
  7. パスワードをハッシュ化して認証する
  8. APIを作ってみる + クライアントサイドを連携する
  9. uWSGI, Nginx使ってデプロイしてみる
  10. コンテナ化してみる

みたいに少しずつ出来ることを増やしていって, だいたい全貌がつかめたのでそれからはDjangoを使うようになった.

開発自体はできるようになったので,

  1. インターンで薬のレコメンドアプリを作る
  2. インターンで選択肢付きのストーリー投稿サイトを作った
  3. Zwitter(未完成)
  4. 博物館の展示物検索システムをつくった

みたいなWebアプリを共同開発で実際につくった.

最初はクライアントサイドとサーバーサイドで連携が上手く取れなくて, ドキュメント+コミュニケーションを取るようにして対応したり, ゴール設定が曖昧だったために開発の軸がブレてしまい, 分析とか設計のフェーズにより力を入れたりとか, 色々障害がありつつもその都度やり方をアップデートしながら知見を貯められたのかなと思う

技術的なところでいうと, クライアントサイドからインフラまで, 実装からデプロイまで, レガシーな構成からモダンな構成までとりあえず作れるようにはなったと思う.

これからの課題

チーム開発に関する現状の課題感としては,

  • サーバーサイド自体は1人で担当することが多かったのでメンバーに配慮した開発(可読性とか)への取り組みが甘かった
  • 拡張性のある設計, 意識はしていたけどプロジェクトが進むと甘さを嫌でも理解させられる
  • プロジェクトマネジメント(タスク管理, ゴール設定とか)

とかとか.

今年もチームでまた何か作りたいので, そういうときに意識はしていきたいけどぶっちゃけ学生が作る規模感だと甘えても余裕で作れてしまうから, 難しいところだなと.

早く実務についてこの辺の知見を一気に吸収したいな.

僕個人の技術的なスキルで言えば

  • 実装・設計に関する深い理解(動けばいいではない)とカスタマイズ力
  • 運用に関する泥臭いスキル感(教科書的じゃない)
  • オリジナリティ(浅く広くだったので, 所謂ここなら負けないって部分が少ない)

が凄く足りてないと感じる.

1つ目に関しては, どちらかというと低レイヤーの知識が不足している問題な気がするので, 次年度にその辺りを意識して勉強できたらと.

DB周りは授業を来季で取ってたりするので, その辺でしっかり勉強し直そうと思う.

OS周りとか, 言語処理系みたいな部分もまた別で勉強しておきたいな.

あと「動けばいい」精神が強くなってしまっているのがクライアントサイドに得に多いので, この辺も深い理解に落とし込みたい.

2つ目に関しては,

友達が起業するとかで, システム製作を依頼されたこともあったのだけれど, toB プロダクトってこともあって, セキュリティ意識はあるけどこれが一般的に必要なレベル感に達してるのかとか, サーバー落ち後の対策イメージとか, どうやってスケールするのかとか, 正直不安が多すぎて受けられなかった. 良い機会だし, ぜひやりたかったんんだけどできなくて悔しかった.

この辺のスキル感は, やっぱり実務が一番はやいのかなと思うので, 実務ベースで吸収したいな.

最後のは, もともと目指す先がゼネラリスト寄りなので悩みどころではあるんだけど, アプリケーション部分での強みがほしいなと思う.

Webアプリが作れますだけじゃなくて, 例えばWebアプリを作って, 後ろでDLを回して最適化できますとか.

てことで, 今年がWebだとするなら来年は機械学習に寄せるのもありかなーとか思ったりしてる.

まあ研究がそっち寄りなので勝手にやりはするんだけど.

Webに関してはこんなもんかなー.

あとは関数型の知見が欲しくてScalaに触り始めたりしたのだけれど, ちゃんと進められなかったのが反省点だ.

だいぶ多言語と異なる空気感とかもあって, もうちょっと気合いれないとって感じだった.

もともと性格上, 「とりあえず簡単なものを作るのは難易度が低く, それを応用して高度なことをする」みたいなフローのが得意な気がするので, とっつきにくい対象を学ぶための自分なりのフレームワークも確立しておきたいなーと思ったりもした.

就活について

うん, 就活. しんどかった.

もともと社交性が低いのもあって, 人と会話するだけでも結構体力を使うし, 緊張にも弱いので面接すれば失敗するし, そもそもアピールするより, 低く見積もっておきたいタイプなのでその辺もきつかった.

けど, 実入りもかなり多かった.

社会を多少知れたってのもあるし, やっぱり自己分析がすごくよかった.

自分について,

  • 強み
  • 弱み(課題)
  • 幸福感

辺りに関する理解が深まった.

いや就活意識があるせいでたぶん勝手に寄せた自己分析にはなってしまっている気がするからそこは良くなかったんだけど,

一応ある程度時分への理解が深まったし, 長所をどう生かして成長させていくかとか, モチベーションをどうやって保つかとか, 克服すべき課題はなにかとか, 色々みえてくるものがあった.

ありがたいことに内定をいただけたので, 就活はもう終わりだ. 面接とかそういうのはしばらくいいかな()って感じだけど, こういう自分と向き買う時間はこれからも取っていきたい. むしろこれからこそとっていくべきだとと思った.

生活について

ビジネス書なり, 技術書なりを以前より読むようになったのは凄く良かった.

あとタスク管理を少しずつ出来るようになったので, 「いやだけどやらなきゃいけないこと」にも少しづつ取り組めるようになってきた.

来年の目標

大学

  • 授業をちゃんと受ける, ちゃんと卒業しよう!!
  • とりあえず最初は研究を第一に.

開発

  • 低レイヤー寄りの知識をつけよう
  • 機械学習
  • クライアントサイドをもうちょっと強くしたい
  • 今年もチーム開発をしていこうと思う, 今年こそはなにかちゃんとリリースしたい!!

生活

昨年は(就活のストレスのせいもだいぶあるんだけど), クソみたいな生活リズムで過ごしてたので今年はちゃんと睡眠と食事バランスに気をつけようと思う!

あと引き続き読書をしよう. 数を増やそう.

って感じかな. また今年もがんばろー