ゆるふわ技術日誌

エンジニア見習いの悪戦苦闘日記

決意表明

今日は2018年6月20日。あと285日で社会人になってしまうらしい。恐ろしく早い。

あと286日で成し遂げたいこと・目標をこの記事に書いておく。恥ずかしいにもほどがあるが、自分への戒めってことで。

目標

目標とされる人になる。

技術力はもちろんだし、物事に対する向き合い方や進め方などの面も含めて。

「あいつの食らいつき方はすごい」くらい言わせてやる。

成し遂げたいこと

大学生のうちに成し遂げたいこと。

  • [ ] 外部勉強会などでのLT/登壇など
    • それができるくらいの技術的インプットをしていきたいという意味
  • [ ] 研究でボスを唸らせる
    • 決して研究もおろそかにしない
  • [ ] TOEIC 550点
  • [ ] 内定先のメンターが腰を抜かすレベルの成長をする
  • [ ] 英語のオライリー本読破
  • [ ] Webサービスのリリース
    • ビジネス的なアイデアとかはどうでもよくて、プロダクションリリースできるレベルのコード(セキュリティ/設計/テスト)を一度通して書いてみる。クラウド周りのインフラにも触る。
  • [ ] 有名OSSへのコントリビュート
  • [ ] 原付長距離ツーリング(片道200km以上)

Webアプリ開発 / Flutter

今日やった事

Webアプリ開発

ゴリゴリ書きました。

github.com

とりあえず主要な機能はできたかなーって感じです。

バグが取りきれてないところとか絶対ある気がするのと、Firebaseのセキュリティルール書いてないので、広く公開できるようなもんではないけど…。

いろいろと悩みながら作ったので、stateの名前と役割が不一致な部分があったりして、メンテナビリティー超低いコードになってしまったという反省。この辺は場数踏むしかないなぁという気がした。

今回のコードが、全部で1万5千行くらい(まじか?ちょっと怪しい)で設計が崩壊しかけているので世の中のプロダクションの規模のものを開発したら確実死すると思った。

それくらいの規模のものを触れるようになるにはどうしたらいいのだろうか。

思いつくところとしては、基礎的な知識は完璧に近い状態にしておくくらいだが、果たして。

Flutter

なんか違うことしたいなぁと思って、Flutterを触った。

とりあえず導入。導入自体は、サイトに書いてる通りにやればよくて、一個だけ詰まったのは、flutter doctorというコマンドを使うと、何を入れればいいか教えてくれるが、その案内だとiOSAndroidの環境両方入れないといけないように見えるが、Androidだけで動かせれば良いということであればAndroidStudioだけ突っ込めば動く。まぁよく考えればそうだよなぁと思うけど。

んで、公式チュートリアル

flutter.io

f:id:uutarou:20181017233145p:plain

こんなアプリができた。

↑のスクショはエミュレータで動いているが、実機もUSBデバッグオンにして繋いだら特に何もせずに使えるようになった。接続中のデバイスflutter devicesでみられる。

開発環境としては、VSCodeを使った。拡張がいい感じなので、IDEじゃなくてもいい感じに開発できる。

ただAndroidStudio使うこともできて、iOSのRunもそこからできるらしい。AndroidStudioでiOSアプリの開発。ちょっとシュールでいいなぁと思ったのでいずれ試したい。

Flutterは趣味程度でちょくちょく触っていきたいと思う。

C言語

明日SAやらないといけないので予習をしていた。

構造体の勉強をした。JSでいうとObjectやな、と思った瞬間に「あ、JSって全部Objectやん」と思って終了した。

案外簡単だった。構造体ってどうやってメモリ確保されるんだろうか、それだけよくわからなかった。

明日の予定 / やること

  • 研究
    • 流石にそろそろやらないとマズイのでなんとかする
  • SA

雑談

長いブログ書いてしまった。

React + Reduxでゴリゴリ書いてました

今日やった事

React + Reduxでゴリゴリ書いていました

数日に渡って書いているメモアプリ的なやつを一気に進めました。

github.com

今日は16commitsくらい、多分。

一時期悩んでいたReduxのステート設計は、1画面1Reducerとするようにして、複数の画面をまたがるStateはReducerを別で作って切り出すのがうまいことハマって、割とメンテナンスしやすいコードが書けている気がします。(当社比)

ただ、どうしてもReactのlifecycle methodに頼らないとダメな箇所があったりとその辺は悩みどころ。

github.com

こんなのを使ってやればいいのだろうか。逆にここまでして、Reactのコンポーネントをステートレスに保つ必要があるのかとかはよくわからないです。よく考えよう。

あとは、メモの編集画面と新規作成画面は、見た目はほぼ同じなので、その辺を共通コンポーネントに切り出そうとしているのですが、その辺がうまいことできないなぁとか。

明日の予定 / やること

  • 今日の作業の続き
  • 研究
    • そんなものはなかった()

雑談

今日は途中からノッてきていい感じに書けたのでよかったかなと思います。

研究Day

今日やった事

研究

流石に研究を進めないと卒業できなくなってしまいそう(笑)なので、丸一日全部研究を1日やると決め込んで大学に行きました。

その一環というか、実験のために、Webサーバーの動きをコントロールしたかった。

自分で書くことも考えたが、H2OというWebサーバーRuby(正確にはmrubyという軽量なRubyの実装)で拡張を書けるので、それを試したり、実験したりしていた。

公式のドキュメントが、使用例豊富でいい感じ。

Using Mruby - Configure - H2O - the optimized HTTP/2 server

ドキュメントにも書いているが、ステータスコードとして399を指定すると次のハンドラに処理を流すことができる。これを利用して認証モジュールを書いたりできる。研究とは関係ないが楽しい。

明日の予定 / やること

  • SAやってる科目のお勉強(C言語)
  • あとは研究半分フロントエンドの勉強半分

雑談

学校に21時前くらいまで残って作業するのが一番効率的な気がする。

コードを書いて本を読んでましたあとCircleCI

今日やった事

コードを書いた

引き続き、メモアプリを作っていた。

medium.com

この記事を読んで、やはりFormの入力値などもすべてReduxのStoreにぶち込んだ方が、複雑にならなくて良いのかもしれないと思って、リファクタリングしたり、見た目に少しだけ手を入れたりしてみた。

あとCircleCIでFirebase Hostingにデプロイしようと思っていろいろ試したが、うまく動かず。こちらは原因不明。

f:id:uutarou:20181014230030p:plain

本を読んだ

やる気を生み出す方法が書いていると聞いて…

明日の予定 / やること

  • SA3コマ
    • 1日で3コマも入っている
  • 研究
    • Webサーバーのmruby拡張を動かす

雑談

いい加減研究やらないとやばくね

今日やった事

Reduxアプリを黙々と書いた

昨日の続き。

黙々とアプリを書いていた。やっぱり、なんか釈然としない感じ、もやもやとした感じを抱きながら書く羽目になる。

多分原因は、「このコード、拡張しろって言われたらどうする?」とか考えると、無理としか言えないようなその場しのぎのコードだからなんだと思う。

拡張性のある、きれいなコードどうやったらかけるんだ。

ソースコードリーディング

github.com

ある程度の規模のReactのソースコードの例をこれしか知らないのでとりあえず黙ってこれを読んでる。

数日前にも気づきをいろいろ書いたが、やっぱり過度にReducerを分割しすぎずに、1画面1Reducerにとどめておく事で、ある程度わかりやすいコードかつ、拡張できるコードがかけるのかなと思った。

明日の予定 / やること

  • ソースコード読む
  • Reduxの公式ドキュメントを読む
    • そういえば読んだ事なかったなぁと思って。何かヒントがあると嬉しいのだが…。
  • コード書く

雑談

どうやったら最強になれるんだ…。マジで厳しい。もっとストイックにやっていかないとダメだなぁいう感じ。まだ作業するけどとりあえずブログ忘れそうだし更新しておく。

フロントエンドに強い人になる為に…

今日やった事

TypeScriptでアプリを書いてた。

フロントエンド最強マンを目指して……。

バックエンドもフロントエンドもできるようになりたいけど、流石に両立はできないのでフロントエンドから最強を目指すぜ!と思って今日は1日使ってウェブアプリを書いてた。

やっぱり、ステートの設計とか、どうやって非同期処理をするかとか結構難しい部分が多くて辛いなぁと思った。

定石みたいな部分もあるだろうし、知りたいと思ったが、どうすればいいものか。

って感じ。

とりあえず今日の作業リポジトリ

GitHub - uutarou10/choimemo2: やっぱりTypeScriptがお好き

謎にCircle CIの設定ファイルが入ってるけど、デプロイもせず、ただビルドがコケないかだけを見ているという謎。

そのうちFirebase Hostingに投げるようにします。

明日の予定 / やること

  • 病院
    • 正直症状が改善してきたので面倒でしかないけどまぁ行きます
  • 今日の作業の続き
    • とりあえず、辛い部分がなんなのかをわかる為にも一回作りきる
    • どれくらい進めるかわからないけど、とりあえずロジックの実装は終えたい(今見た目は全部放置してある)

雑談

新しいMac全てが快適で神…!


最近ブログだれてきてたので、しばらくはこのテンプレートで毎日更新していこうと思います。

次の日やる事がわかるだけでも、朝悩まなくて済むよね、っていうただそれだけ。

Gitを教えた

Gitを教えた

研究室の後輩にGitを教えるという任務をゲットしたので、昨晩突貫工事で作ったGitの講義資料をもとにGitを教えてきた。

add -> commit -> pushくらいが一回で理解できる限界なんだろうなぁという所感。branchとかMergeRequest(うちの研究室はGitLabを使っているので)とか出てくると途端に反応が悪くなった気がする。

あと、なぜかボスが邪魔をしてくるという。どういうこっちゃねん。

昨晩は資料作成に深夜2時すぎまでかかってしまって、完全に眠い。

Redux

real world exampleを読んでた。どういったタイミングでactionを発行しているとか、どういうstateの構造しているかとかはなんとなく理解できた。

根本的な理解を求めてReduxのドキュメントを読んだりしていた。にしても眠すぎて頭に入ってこないので今日は寝る。

雑談

雑すぎる記事、お許しくださいましぇ。