Somurie Engineer's Blog

2020年4月振り返り

4月の振り返り Reactの文字列加工システム(上記とは別のシステム)は一旦完成。認証周りの動作確認が面倒なのでリリースせず自分用として使うことにした。あとDB周りの変更に耐えられるか微妙であった。 一方で、新たにReactで百人一首の読み上げシステムを作成中。最低限は一旦完成し、来月はリリース作業と機能追加を行う。 4月から引き続き、私生活に新型コロナの影響が大きく出ている。 1月末からリモートワークに移行しており、あり難いことに通勤時間を省けているため、勉学や運動に引き続き時間を費やす。 読書に加え、英語学習も合わせて開始した。久々にやると面白い。 Achieved 開発 SQLアンチパターンを読む → 40%読了 DDD案件の経験(@開発現場) フロントエンド Reactの百人一首システムを構築中 Redux Toolkitを使用。コード記述量が劇的に減り、開発速度がかなり上がった 基礎 FACT FULLNESS → 読了(ITではないけど教養として学習) 英語で毎日ニュースを読む(CNNとTechCrunch) Problem 新規 なし 継続中・保留 ビルド・デプロイツールの知識が少ない → React案件で多少解決予定 アーキテクト経験がない(1からシステム構成を検討) → React案件で解決予定 AtCorderで有向グラフが理解できていない AtCorderでDPのパターン経験が不足 解消 なし Try for next month フリーランスなのでコロナ影響によって急遽契約が打ち切られる恐れがあるため、次の現場の面談用にアピールポイントを増やすことを重視し見せることができるシステム構築を継続する。 また、英語はIT関連のリファレンスを見る程度であったが今月からニュースを毎日見るようにし始めた。5月も継続する。 新規 なし 継続中(前月中に達成できなかった) ドメイン駆動設計入門を読む 複雑な宿予約システムのDDD開発練習 モデリングスキルを高める書籍を読む Reactの開発案件はサーバ側の対応待ち Done Firebase上で文字列加工システムを公開する ⇒ 公開はせずクローズ

2020年3月振り返り

3月の振り返り Reactの開発案件はサーバ側の対応待ち。当分リリースできなそうなのでTry for next monthに移動する。 Reactの文字列加工システム(上記とは別のシステム)を開発中。Reactに慣れてきたが、設計がうまくできていない気がしている。NoSQLのデータベース設計ももやもやしながら進めている。DB設計事例を見ながら見様見真似で実験中。リリースした後にDB修正しにくそうなのでなかなかリリースに踏み込めない。 DDD周りの学習は平日の常駐先で積むことができている。 私生活に新型コロナの影響が大きく出ている。 1月末から平日の仕事はリモートに変わり、通勤時間が減った分を運動と勉強時間に費やしている。 ドラゴン桜や小学館の少年少女日本の歴史が無料公開されていたり、株の大幅下落を受けて投資に費やす時間に多くを費やしてしまった。(後悔はしていない) Achieved 開発 SQLアンチパターンを読む → 40%読了 「実践ドメイン駆動設計」から学ぶDDDの実装入門 ⇒ 読了 DDD案件の経験(@開発現場) DDD開発現場のぼやき 開発現場で感じたことだが、大規模な業務アプリケーションの場合、設計書を完全に廃止することは難しい現場が多いと思う。私が今参画している現場も同様で、設計チームが設計書を作成し、開発チームが設計書を元にDDDの開発を行っている。 設計チームと開発チームの意識の違いがあり、どうしても設計書はDDDに則しておらず(そりゃ設計チームメンバーがDDDに熟知していたりDDDを意識した設計をするのは無茶だと思うけど)、設計書と実装に差が出てしまう。 設計書を見て実装を見て、どこがどこと紐づいているかがわかりにくく、結局実装を詳細に見て仕様を理解しなければならない。少量なら簡単だが、設計書が10個、実装箇所が10クラスを超えるとかなりしんどい。 実装箇所を見て内部的に何をやっているか自信を持って推測できたりすれば良いんだけど、規模が大きくなってくるとなかなかクラス名・メソッド名だけから自信を持って判断ができず。。 lambdaの受け渡しが多かったりするので責務を絞る必要があるのではないか、DDDで言うコアドメインの線引きがうまくできていないのではともやもやしながら開発しています。(じゃあどうすれば良いのか、が浮かばないのが悔しい!!) フロントエンド React-Reduxシステムを構築中 FirebaseAuthenticationを使った認証機能を実装 CloudFirestoreの設計例をいくつか探して冗長な構成で実装。パフォーマンスは後回し CloudFunctionsによりFirestoreのデータコピー等を実装 基礎 法律を読む技術・学ぶ技術[改訂第3版] → 読了(ITではないけど教養として学習) Problem 新規 なし 継続中・保留 ビルド・デプロイツールの知識が少ない → React案件で多少解決予定 アーキテクト経験がない(1からシステム構成を検討) → React案件で解決予定 AtCorderで有向グラフが理解できていない AtCorderでDPのパターン経験が不足 解消 なし Try for next month 3月はFirebaseを用いたReactベースのシステム構築がメイン。 書面学習ばかりであったため3月からは手を動かす時間を長くしたい。当面コロナウイルス影響により資格試験も受けたくない(密室空間に居たくない)ので丁度良い。 React-Redux回りで良い設計ができているのか評価できない。時間ができたら他人の設計を見てみたい。 新規 ドメイン駆動設計入門を読む 継続中(前月中に達成できなかった) Firebase上で文字列加工システムを公開する。 複雑な宿予約システムのDDD開発練習 モデリングスキルを高める書籍を読む Reactの開発案件はサーバ側の対応待ち Done DDD書籍(IDDDを読み解く本)を読む

2020年3月振り返り

はじめに システム設計に関する記事が多く、後で読み返したいと思う記事を以下にまとめました。 これからシステム設計を学ぶ人の参考になれば幸いです。 DDD ボトムアップドメイン駆動設計(成瀬さん) 記事1つでとんでもない量のDDD情報が記載されている。具体的なコードもあるため時間をかけて見てみる価値あり。書籍化もされている。 リファクタリング クラウドワークス リファクタリング専門チームによるお金周りリファクタリング Railsで構築されたシステム。レガシーソフトウェア改善ガイドやDDDのエヴァンス本をオススメしている。 動的型付け言語だと調査が大変な点についても言及あり。お金周りでRails大変そうだな・・・。 単体テスト 現在時刻が関わるユニットテストから、テスト容易性設計を学ぶ テストケースの具体的なパターンとメリデメをまとめた記事。 テストケースを立てる時に感覚に頼っていたが、体系立てて記載されているものを見て目からうろこでした。 単体テストに自信がない人は特にオススメ

2020年2月振り返り

2月の振り返り 税金・簿記関連の作業がメイン。初の確定申告は無事完了。 簿記2級の試験はコロナ影響のため断念。 Reactの開発案件はサーバ側の対応待ち。(リリース予定は1月だったが延期) Reactの文字列加工システム(上記とは別のシステム)を開発中。 平日の常駐先でDDD周りの学習、実装の経験を積むことができている。 Achieved 開発 SQLアンチパターンを読む → 40%読了 DDD案件の経験(@開発現場) フロントエンド React-Reduxシステムをゼロから構築中(2回目) FirebaseでDBを構築。NoSQLを勉強中 基礎 簿記2級の試験勉強中。全量完了(2/23試験はコロナ影響により断念) Problem 新規 なし 継続中・保留 ビルド・デプロイツールの知識が少ない → React案件で多少解決予定 アーキテクト経験がない(1からシステム構成を検討) → React案件で解決予定 AtCorderで有向グラフが理解できていない AtCorderでDPのパターン経験が不足 解消 なし Try for next month 3月はFirebaseを用いたReactベースのシステム構築がメイン。 書面学習ばかりであったため3月からは手を動かす時間を長くしたい。当面コロナウイルス影響により資格試験も受けたくない(密室- 空間に居たくない)ので丁度良い。 React-Redux回りで良い設計ができているのか評価できない。時間ができたら他人の設計を見てみたい。 新規 Firebase上で文字列加工システムを公開する。 ドメイン駆動設計入門を読む 継続中(前月中に達成できなかった) DDD書籍(IDDDを読み解く本)を読む 複雑な宿予約システムのDDD開発練習 モデリングスキルを高める書籍を読む Done 簿記2級の試験勉強(過去問10回分を解く)

2020年1月振り返り

1月の振り返り 税金・簿記関連の作業ばかりしていた。 法人化の検討は時間がかかったが具体的な計算ができた。計算が複雑だし法人と個人事業主とで損金算入できるものが違うことがよくわかった。調べれば調べる程情報が出てきすぎ。 ちなみに、免税事業者と任意継続健康保険の効果が大きいため今年いっぱいは個人事業主とする結論とした。 Reactの開発案件はサーバ側の対応待ち。(リリース予定は1月だったが延期) 12月に引き続きReact-Redux周り機能を実装した。 平日の常駐先でDDD周りの学習、実装の経験を積むことができている。 Achieved 開発 DDD案件の経験(@開発現場) レガシーコードからの脱却を読む→ 読了 EffectiveJavaを読む → 読了 フロントエンド お気に入り画面等、余計な機能を遊びで追加(新しく使った技術・ライブラリ等はなし) ノンデザイナーズ・デザインブックを読む → 急ぎで一通り目を通した 基礎 法人化のタイミング検討(税金・経費・社会保険等の計算) 簿記2級の試験勉強中。半分程度完了(2/23試験) さおだけやはなぜ潰れないのかを読む → 読了 会計の基礎を読む → 読了 Problem 新規 なし 継続中・保留 ビルド・デプロイツールの知識が少ない → React案件で多少解決予定 アーキテクト経験がない(1からシステム構成を検討) → React案件で解決予定 AtCorderで有向グラフが理解できていない AtCorderでDPのパターン経験が不足 解消 なし Try for next month 簿記2級の試験勉強、個人事業主の確定申告をするのがメインになりそう。 Reactアプリは担当分を終えているため相方ペースに併せて引き続き進めようと思う。試験(2/23)が終わったらReactNativeにも触れてみたい。 また、合間時間にDDD関連の学習も進める(読書+平日現場で実践) 新規 なし 継続中(前月中に達成できなかった) 簿記2級の試験勉強(過去問10回分を解く) DDD書籍(IDDDを読み解く本)を読む 複雑な宿予約システムのDDD開発練習 モデリングスキルを高める書籍を読む Done レガシーコードからの脱却を読む EffectiveJavaを読む

2019年振り返り

2019年振り返り フリーランスSEになって1年が過ぎました。 良い状態で勉強し続けることができ、不安から自信へと変化した1年でした。 きりの良いタイミングなので振り返りを書いてみました。 開発現場の当たり前をキャッチアップ フリーランスに転向し、本格的な現場での開発は4年ぶりでした。 4年ぶりにもなると初見のツールやライブラリ、言語が多く、1年間は休日なしで勉強漬けになることを覚悟していました。 (以前の開発がJava6、Spring2.5、Subversion、社内独自のツール多数、というタイムスリップぶり) 最初から未経験のことだらけになるのは危険と思い、経験のあるJavaをベースに案件を探したのは正解で、Java経験で自尊心を保ちつつ(苦笑)、Git、BitBucket、Docker、Vagrant、スクラムといった開発のデファクトスタンダードとなるツール・プラクティスを経験しました。 事前にかなり不安があったものの、1ヶ月もあれば不安はなくなりますね、難しいことをやろうとしなければ全然問題ないです。技術的にもまだまだ通用するようで安心しました。 (迷惑をかけないように一人自宅でGitのmerge練習したりしていたのが懐かしい) ドメイン駆動設計 開発現場の当たり前を引き続き探していると原則やお作法、ベストプラクティスといったモノたちに辿り着きました。デファクトスタンダードといえるような「これだけ学べばOK!」というものはなく、手当り次第に物色。 KISSやYAGNIの法則、デザインパターン、SOLID原則などを色々と学び、最後はドメイン駆動設計に辿り着きました。 エヴァンス本が難しすぎて進まず、まとめブログや関連書籍で荒い知識を身に着けて、ドメイン駆動設計の案件に片足参加させて頂きました。 他者のコードやコードレビューなど、実戦ならではの学びが多く、短い期間でしたが大変勉強になりました。そして何よりも楽しんで参加できたことが良かったです。 この経験があったおかげで、年末からはドメイン駆動設計の現場に移ることになりました。 フロントエンドの開発 過去の開発ではサーバサイドの開発がメインであったため、フロントエンドの開発はjQueryを少しかじった程度のレベル。 ただ、サーバレスを耳にする機会も多く、自分でサービスを展開したい思いもあるため手を付けることにしました。 タイムスリップ期間がかなり長く、HTML5、CSS3、ES6等の基礎からキャッチアップ。 CSSフレームワークではBootStrap、Bulma、Material-UI、JSライブラリではReact、Redux、Vue、TypeScriptなどを扱いました。 小さめの開発に携わったものの、案件規模が大きくなると難易度が高くなるんだろうなと薄々感じますね… 年末の時点で、Reactをベースとしたアプリケーションの開発はできるようになりました。来年はいくつかサービスを作ってみようと思います。 IT基礎スキル 地道だが基礎トレーニングは重要。そして半分は趣味と自己満足だけど、以下に挑戦してみました。 データベーススペシャリスト ネットワークスペシャリスト 競技プログラミング デスペは残念ながら不合格。午後2があと4点だったので来年なんとか受かりたい。 ネスペは無事に合格することができた。 競プロはAtCorderで茶色。緑色まであと一歩。さすがに時間を取ってじっくりやらないとレベルが上がらない。あと、RubyではなくPythonでやっておけば良かったかも。中途半端にRubyができるようになってしまった。 全体的に少なからず力をつけることができたと思います。 その他 腱鞘炎になたり腰を痛めたりと、健康面では反省が多いです。 仕事や勉強に精を出していたものの、あまりにも動かなすぎたと思います。 仕事のスタミナをつけるためにも適度な運動はしよう。 総括 全体的によく頑張り、それなりに成果が出たと思います。 アウトプットが少なかった点は反省。 ITのキャッチアップ時間がかなりかかり、IT以外の勉強に手が及ばなかったので来年はもう少しITの以外も頑張りたい。 2020年に頑張ること ITだけでなく、興味が強いファイナンス・会計、避けて通れない英語を併せて学びます。 資格は自己満足と、商談時にわりと威力を発揮するので引き続きコレクションを増やそうと思います。 IT FEやデプロイツール、AWSといったインフラ関連などを手広く学ぶ。浅く広く DBスペシャリストを取得する ドメイン駆動設計を引き続き学ぶ なんらかのシステムを構築する できれば公開する 株関連が有力 AppStoreに何か出す。ReactNativeを使う(iPhoneを買ったので) ファイナンス・会計 法人化と資産運用・節税のために学ぶ(会計は現場で必要なスキル) 簿記2級を受ける。個人事業主の確定申告、法人化、現場の会計周辺業務で活かせるため FP2級を受ける。5月かな。優先度低 外交員一種。投資のベース知識として取りたい。優先度低 英語 プランはないが気長に実施する 年間予定 大まかな年間予定は以下の通り。1年のうち4ヶ月は机上勉強ですね。(本当はITストラテジストに挑戦したかったが開発時間がなくなるため断念)

2019年12月振り返り

12月の振り返り Reactの開発案件を主に実施した 11月に引き続きReact-Redux周り機能を実装した ※リリース予定は12月から1月延期。 平日の常駐先でDDD周りの学習、実装の経験を積むことができている 個人事業主になって初めての確定申告に向けた作業も平行して進めた Achieved 開発 DDD案件の経験(@開発現場) レガシーコードからの脱却を読む→(6割完) フロントエンド React案件の開発を進めた(最低限リリースできる状態まで完成) IndexedDB(PWA化の一環) TypeScriptハンドブックを読んだ http://js.studio-kingdom.com/typescript/ 基礎 簿記2級の試験勉強を開始した(物流システムや個人事業主の確定申告、法人化に役立つため) Problem 新規 なし 継続中・保留 ビルド・デプロイツールの知識が少ない → React案件で多少解決予定 アーキテクト経験がない(1からシステム構成を検討) → React案件で解決予定 AtCorderで有向グラフが理解できていない AtCorderでDPのパターン経験が不足 解消 Webデザインセンスがない。ノンデザイナー向けのUIライブラリ等を学ぶ → MaterialUIや色合いを自動設定してくれる機能があるため解消とする Try for next month 簿記2級の試験勉強、個人事業主の確定申告と法人化検討をする Reactアプリは担当分を終えているため相方ペースに併せて進める 合間時間にDDD関連の学習も進める(読書+平日現場で実践) 新規 簿記2級の試験勉強 継続中(前月中に達成できなかった) ノンデザイナーズ・デザインブックを読む EffectiveJavaを読む レガシーコードからの脱却を読む DDD書籍(IDDDを読み解く本)を読む 複雑な宿予約システムのDDD開発練習 モデリングスキルを高める書籍を読む Done レガシーソフトウェア改善ガイド(5割完)→すぐ使えそうな内容が多いため中断

2019年11月振り返り

11月の振り返り Reactの開発案件を主に実施した。 ReactはHelloWorld程度の経験。TypeScriptとReduxは未経験であったため学習と実験的な実装及びリファクタリングに多くの時間を割いた。 React-Redux周りのトレンドは抑えることができたと思う。 平日の常駐先でDDD周りの学習に時間を費やすことができるため、その他の時間はフロントエンドの学習を行っている。 12月にリリース予定のため引き続き当案件に時間を割く予定。 Achieved 開発 DDD案件の経験@開発現場 レガシーソフトウェア改善ガイド(5割完) ノンデザイナーズ・デザインブックを読む(2割完) EffectiveJavaを読む(3割完) フロントエンド React+Redux+TypeScriptを使ってシステムのα版が完成 以下、React-Redux周りのスキル・知識を身に着けた Hooks各種機能 Ducksパターン Fluxパターン Saga React-Router Material-UI 基礎 業務知識として物流システムを体系的に学習(業務知識の本) Problem 新規 なし 継続中・保留 ビルド・デプロイツールの知識が少ない → React案件で多少解決予定 アーキテクト経験がない(1からシステム構成を検討) → React案件で解決予定 Webデザインセンスがない。ノンデザイナー向けのUIライブラリ等を学ぶ AtCorderで有向グラフが理解できていない AtCorderでDPのパターン経験が不足 解消 JSのフレームワーク1つも使えない(サーバ側に知識が偏りすぎている) → React案件で解決予定 Try for next month Reactアプリに注力する(丁度良くProblemも解決する) 合間時間にDDD関連の学習も進める(読書+平日現場で実践) 新規 なし 継続中(前月中に達成できなかった) ノンデザイナーズ・デザインブックを読む レガシーコードからの脱却を読む DDD書籍(IDDDを読み解く本)を読む 複雑な宿予約システムのDDD開発練習 モデリングスキルを高める書籍を読む Done ReduxのサンプルWebサイトを作成する(11月以降実施予定)

2019年10月振り返り

10月の振り返り ドメイン駆動設計、ネットワークスペシャリスト(以下ネスペ)の勉強の時間を割いた。 10月よりDDDの案件の現場になり、業務=DDD勉強になった。 10月20日にネスペ試験があったため前半はほぼネスペ勉強、試験後はブログのWordPress脱却作業と、React開発案件の着手をした。 9月のうちにJavaのStreamとジェネリクスを手堅く学習しておいたため業務後に追加学習する必要はあまりなかった。 Achieved 開発 DDD案件の経験(@開発現場) ブログをAmazonEC2からHugo(静的ジェネレーター)に移行 Gradleの仕組みを学習(現場トラブル) EffectiveJavaを読む(3割完) フロントエンド ReduxのHelloWorldを作成した(React開発案件の一環) 基礎 ネスペの教科書午後1と午後2を6年分+α実施した 東京都主催のネットワークセキュリティ状況研修(全3日)に参加した(Ciscoルーターを用いたネットワーク構築、IPsecの構築などを実施) Problem 新規 Webデザインセンスがない。ノンデザイナー向けのUIライブラリ等を学ぶ 継続中 ビルド・デプロイツールの知識が少ない → React案件で多少解決予定 アーキテクト経験がない(1からシステム構成を検討) → React案件で解決予定 JSのフレームワーク1つも使えない(サーバ側に知識が偏りすぎている) → React案件で解決予定 AtCorderで有向グラフが理解できていない AtCorderでDPのパターン経験が不足 解消 なし Try for next month Reactアプリに注力する(丁度良くProblemも解決する) 合間時間にDDD関連の学習も進める 新規 ノンデザイナーズ・デザインブックを読む レガシーコードからの脱却を読む 継続中(前月中に達成できなかった) DDD書籍(IDDDを読み解く本)を読む 複雑な宿予約システムのDDD開発練習 モデリングスキルを高める書籍を読む Done ReduxのサンプルWebサイトを作成する(11月以降実施予定) ネスペ6年分の過去問をこなす

2019年9月振り返り

9月の振り返り ドメイン駆動設計、ネットワークスペシャリスト(以下ネスペ)、SpringBootの勉強に時間を割いた。 8月よりDDD案件のタスクは少なめ。主に休日に実施している。 AtCorderについては時間を少なめにし、大会に隔週参加している状況。 Achived 開発 DDD案件によるDDD経験アップ(今月は長めに時間を取ることができた) DDDの書籍「エヴァンス本」読了 Java11〜12のブログ記事を作成。 SpringBootのコメント付きサンプルシステム構築。DB2連携、SQLログ出力を実装。やりたかったことはとりあえず完了 AtCorder大会に週2で参加。緑色ランクまであと一歩。 JavaのStream、ラムダ式、ジェネリクスの詳細を理解した。JavaGoldの書籍、Streamを使った検索や処理の実装サンプルプログラムを作成した。 フロントエンド ES6の学習。以下をハンズオン(第1部は全て完了。全3部構成) [https://ja.javascript.info/][1] 基礎 ネスペの教科書一通りおさらい ネスペ午後1を5年分実施 ネスペ午後2を1年分実施 Problem 新規 なし 継続中 ビルド・デプロイツールの知識が少ない アーキテクト経験がない(1からシステム構成を検討) JSのフレームワーク1つも使えない(サーバ側に知識が偏りすぎている) AtCorderで有向グラフが理解できていない AtCorderでDPのパターン経験が不足 解消 なし Try for next month 次の案件の復習とネスペ勉強が主になる。 ネスペ試験が10月にあるため学習をする。 新規 ネスペ6年分の過去問をこなす モデリングスキルを高めたい。何か書籍か問題集を探す 継続中(前月中に達成できなかった) DDD書籍(IDDDを読み解く本)を読む 複雑な宿予約システムのDDD開発練習 ReduxのサンプルWebサイトを作成する(11月以降実施予定) [1]: http:// https://ja.javascript.info/

2019年8月振り返り

8月の振り返り 7月に続き、DDDの案件は平日夜と休日に継続して実施している。 AtCorderについては先月と状況は変わらず、毎週末の大会だけ参加している状況。 プラスアルファとして、JavaScriptとSpringBootの学習を実施している。 Achived 開発 DDD案件によるDDD経験アップ(今月は長めに時間を取ることができた) DDDの書籍「エヴァンス本」はDDDの実践開発で詰まった箇所を読んでいる。8月は5章を読んだ(3割完) Java9〜12の新規追加機能サンプルを作成。 Java9〜10はブログ記事作成。 SpringBootのサンプルシステム構築。SpringSecurityの実装が完了。 AtCorder大会に週1で参加。緑色ランクまであと一歩。 フロントエンド Vueの主要機能を使ったサンプルWebページを作成 ES6の学習。以下をハンズオン(第1部は8割完。全3部構成)https://ja.javascript.info/ インフラ なし Problem 新規 ビルド・デプロイツールの知識が少ない アーキテクト経験がない(1からシステム構成を検討) JSのフレームワーク1つも使えない(サーバ側に知識が偏りすぎている) 継続中 AtCorderで有向グラフが理解できていない AtCorderでDPのパターン経験が不足 解消 JSの最近のフレームワークであるVueとReactを多少なりとも触って感覚を掴めた Try for next month 次の案件に向けて事前準備を行う必要がある。SpringBootとDDDの学習が主。 ネットワークスペシャリスト試験が10月にあるため学習をする。 新規 SpringBootをゼロから一通りの機能を解説コメント付きで実装する DDD書籍(IDDDを読み解く本)を読む ドメイン駆動設計全体像をまとめる ネスペの解説ブログ記事を書く ネスペの過去問を解く(2週間で1年分解く) 継続中(前月中に達成できなかった) Java11、12の新機能サンプルプログラムのブログを書く JSの学習。以下サイトをハンズオンで進める https://ja.javascript.info/ 複雑な宿予約システムのDDD開発練習 ReduxのサンプルWebサイトを作成する(11月以降実施予定)

フリーランス歴8ヶ月の商談結果まとめ

はじめに 2019年2月にフリーランスになって現在の職場で半年ほど働きました。 10月から別の現場に挑戦しようと思い、いくつかの商談を行ったため気付きをまとめます。 フリーランスになったばかりの方、これからなる方の道標になれば幸いです。 現状のスキルと探した案件 現状のスキル プロフィールにまとめて書いてあります。 探した案件 SpringBootの現場経験が欲しかったため、SpringBoot案件を探しました。 プラスアルファとして、ドメイン駆動設計・FEフレームワーク(ReactかVueかAngular)、AWSが経験できると尚良の条件です。 案件の業界はバラバラですね。コンサル、金融、物流と、特に枠を設けずに探しました。 商談の反応 フリーランスデビュー時の商談では経験がないことがかなり不評だったのですが、今回の商談はガラッと変わって好印象な反応が多かったです。 前回は5案件の商談を行い2社からオファーを頂いていたのですが、今回は4案件の商談を行い4社共オファーを頂けました。(こんなに良い結果になるなら4社も受けなくて良かった・・・エージェントの方すみませんでした・・・) 評価された点 色々と評価された点はありましたが以下が主です。 モチベーション 通常の案件(平日の昼間の案件)だけでなく、空き時間にももう1つ案件を持っていたり、勉強に時間を費やしているエピソードはかなり反応が良かったです。趣味=仕事になっているので本音で話せるのは良いですね。 競技プログラミング まだスコアは高くないですが、趣味として競技プログラミングをやっている点も良い反応を頂けました。 関数型の書き方は問題なくできるかという質問に対してRubyで競技プログラミングやっているので問題ないという回答をして納得して頂けたようで良かったです。 少なくともやってない人より良いアルゴリズムを書けるようには見えますし、実際に競技プログラミングを初めてから仕事で書くアルゴリズムの質は良くなっています。空き時間にすぐできますし、趣味としておすすめです。 DBスペシャリスト SQLが書けるかという話になり、DBスペシャリストにギリギリ落ちた話をしたら反応が良かったです。(落ちたんですけどね・・・) 評価されなかった点 ビルド・デプロイ関連ツールの経験 ビルドツールやデプロイ関連の経験がないことは不評でした。案件で途中から入ると大体できあがっているんですよね・・・。個人活動としてでも良いのでゼロから作る経験は必須だなと思いました。 具体的にはGradle、CircleCI、Ansible、Chef(最近聞かないけど)などのキーワードが挙がりました。 アーキテクト経験 ゼロからの全体設計、インフラも含めた構成の検討の経験がないことは指摘されました。 新規構築案件でのみ指摘を受けています。 AWS未経験 AWS案件は多いですね。多少触っているだけでは評価されないなという印象です。 受けた質問 こんな質問されるんだという質問が多々あり、回答にやや困ったものもあったので備忘として残しておきます。 Java12の機能を使っていますか? SQLは複雑なものも書けますか? NoSQLの経験はありますか? ストレスはどういった時に感じますか? エンジニアとしてのキャッチアップの状況はどうか 今後に向けて 一旦商談はクローズしましたが、次回商談に向けて色々と課題が挙がりました。 今回受けた指摘を次回商談で受けなくするという目標に向けていくつかタスクを挙げました。次回いつになるかわかりませんが半年〜1年を目処に以下をこなしていきます。 ゼロからのシステム構築は必須。小さい案件でも良いので機会を探して試す ビルド・デプロイツール設定 development環境、production環境の分離設定 FEフレームワーク経験(多数は無理かと思うのでReactだけ試す) Java以外のサーバサイド言語経験の充足

2019年7月振り返り

7月の振り返り 6月に続き、DDDに力を入れた。 DDDの案件は平日夜と休日に継続して実施している。 SpringBoot、DDDはそれぞれ学習範囲が広いが、ベースは抑えることができた。指摘を受けることは多いが、開発が進められる状況になった。 AtCorderについては先月と状況は変わらず、毎週末の大会だけ参加している状況。腕はあまり落ちておらず、ABCでD問題が解けるか解けないかというレベル。 スキマ時間にJSを学習し始めた。ES6の仕様がわかっていないので体系的に学習中。 Achived 開発 AtCorder大会に週1で参加。400点問題までは解けるようになった。継続中。たまに解けない時があるせいでなかなか緑色ランクになれない・・・。 DDDの書籍「エヴァンス本」は読破は効率が悪いので中断。DDDの実践開発で詰まった箇所を読むようにしている(3割完) Springの勉強(SpringMVC、SpringBoot、SpringSecurity、SpringDataJPAの浅い所を一通り) Spring徹底入門を読破(10割完) 複雑な宿予約システムのDDD開発練習(5割完?) IntelliJ Ultimateの使い方。マルチカーソルを使いこなせるようになってきた思う。 デザインパターン(GoF23)の復習 SOLID原則を覚えた フロントエンド Bulmaの主要機能を使ったサンプルWebページを作成 Reactの主要機能を使ったサンプルWebページを練習作成 ES6の勉強。以下をハンズオン(4割完) https://ja.javascript.info/ インフラ なし Problem 新規 なし 継続中 AtCorderで有向グラフが理解できていない AtCorderでDPのパターンによっては解けない(パターンが色々あるのでももう少し経験を積みたい) 解消 Spring、SpringBootの知識不足→最低限の知識はついた 腱鞘炎は再発の心配なし。ここ2ヶ月程痛みなし! Try for next month 次の現場向けに何らかシステムを見せられる状態にしたかったが副業が開始したため一旦そちらに注力中。 前々月〜前月にかけて書籍の学習に時間を費やしすぎており、手を動かす時間が少なかった。前月の後半からサンプルコードを作成に時間を費やす始めており、8月もJSやJavaのサンプルコード作成を行うようにする。 新規 JSの学習。以下サイトをハンズオンで進める https://ja.javascript.info/ ReduxのサンプルWebサイトを作成する VueのサンプルWebサイトを作成する 継続中(前月中に達成できなかった) Java9、10、11、12の新機能サンプルプログラムを書く Springに関して記事を書く。始めてみて感じたことがテーマ DP、有向グラフは大会で確実に解ける状態にする

6月振り返り

総括 5月に続き、AtCorderとDDDに力を入れた。 AtCorderについてはABCでD問題までは普通に解けるようになってきた。競技プログラミングらしくDPが結構できるようになってきたのは実力がついてきたと実感している。 DDDについては副業として仕事を頂くことになったため、実践で学ぶ形になった。 新規開発であり、SpringBoot最新バージョンを採用している。ツール類もメインで入っている職場と異なる点が多く、キャッチアップに時間がかかっている。 Achived 開発 AtCorder大会に週1で参加。400点問題までは解けるようになった DDDの書籍「現場で役立つシステム設計の原則」を読み終えた DDDの書籍「エヴァンス本」は読み終えない。一旦実践を優先するため諦めた(3割完) Springの勉強(SpringMVC、SpringBoot、SpringSecurity、SpringDataJPAの浅い所を一通り) 「Spring徹底入門」の読書(6割完) GitHub上で複数人開発。Issue、ラベル、プルリク等の出し方 IntelliJ Ultimateの使い方。IntelliJ内の用語概念、ショートカット、LiveTemplate等(本格的なJava開発でIntelliJを使うのが初めて) 「IntelliJハンズオン」の読書(完読) Bulmaの概要理解(副業で扱うため) インフラ なし IT基礎 なし 英語 なし Problem AtCorderで有向グラフが理解できていない AtCorderでDPのパターンによっては解けない(パターンが色々あるのでももう少し経験を積みたい) Springの知識不足 腱鞘炎は椅子を変えたら調子よくなった。適切な位置に肘置きがあるだけで手首の負担が大幅に減る Try for next month 次の現場向けに何らかシステムを見せられる状態にしたかったが副業が開始したため一旦そちらに注力する DP、有向グラフは大会で確実に解ける状態にする Springの書籍を読破する(浅く広く大まかな構成とできることを頭に入れる) Java9、10、11、12の新機能サンプルプログラムを書く Springに関して記事を書く。始めてみて感じたことがテーマ 8月末にどういった状態でありたいか JavaかRailsの何らかのシステムが出来上がっていること → これは諦める(年内は無理そう) ブログが見せられる状態であること DDDに関する意見を書く 簡単なプログラムを書いて、ブログで説明する AtCorderとGitHubのリンクを貼る GitHubが見せられる状態であること → 簡単なプログラムのサンプルは上げたい AtCorderが見せられる状態であること

2019年5月振り返り

総括 AtCorderとDDDに夢中になった月だった。何かしらのシステムを構築して公開したい気持ちはあるが、サンプルの作成やお手本コードとの照らし合わせなど、基礎力を高めることをまず行っている。今年は基礎力を高めることが第一目標でもあるため当分継続する予定。 AtCorderは自分の実力不足を知る良い機会だった(心が折れないように頑張ろう・・・)。 研修に参加し、他のエンジニアの関心が何に向いているのか知る良い機会になった。DDDはやはり人気。 Achived 開発 Rubyのチェリー本読み終えた。一通りRubyは読めるようになったと思う。AtCorderの問題をRubyで解いたため基本的な処理は効率的・簡潔に書ける JJUGに参加した DDDの学習。参加できなかったが「レガシーをぶっ潰せ」の参加報告ブログを読んだり、JJUGで関連セミナーに参加、BPstudyに参加した RubyブロックやProc等、関数型言語要素の理解(動作原理やスコープ) AtCorder大会(ABC)に2回参加。300点問題で引っかかる・・・ AtCorderが難しい。数学要素と効果的な計算方法の選定がネック。ABCの過去問A、BはRubyに慣れるために多数解いた。C、Dはまだ慣れていない インフラ なし IT基礎 なし 英語 移動中の英語リスニングは継続中(5月半ばから気温がやけに高くなり自転車通勤はストップ) Problem AtCorderの300点問題に時間がかかりすぎている 腱鞘炎が再発してしまい治らない。長くタイピングし続けると辛い Try for next month AtCorderのC、D問題の過去問を解く。Cは大会で確実に解ける状態にする 腱鞘炎を完治するために書籍学習等をバランスよく組み入れる(読書が捗ってちょうど良い) モチベーションキープのためにDDD研修に参加・もくもく会を開催する 以下は着手中。継続して実施する。6月はAtCorderとDDD。書籍学習と手を動かす作業のバランスに気をつけて進める。 Rubyメタプログラミングの完読(6割完) DDD学習「設計の本」の完読(5割完) DDD学習「エヴァンス本」の完読(2割完) クリーンアーキテクチャのプログラム自分なりにサンプルを作ってみる(Java12で) Java9、10、11、12の新機能サンプルプログラムを書く 8月末にどういった状況でいたいか? ある程度学習する方向性が見えてきたので3ヶ月後の理想の姿を考えてみました。以下の通りです。他の仕事も頂けるようになりたいのでインプットを終えてアウトプットしている状態になりたいですね。 ・JavaかRailsの何らかのシステムが出来上がっていること ・ブログが見せられる状態であること ・DDDに関する意見を書く ・簡単なプログラムを書いて、ブログで説明する ・AtCorderとGitHubのリンクを貼る ・AtCorderが見せられる状態であること ・GitHubが見せられる状態であること