ゆるふわ技術日誌

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

今更ながらtypescript-fsaが地味に便利だなという話

3日ぶりのブログ更新です。

「ゆるふわ技術日誌」なのに、技術のことでもない日記をつらつらと書くのも、精神的に来るものがあるので、これからは更新頻度を落としても技術的なことを書くブログにしていきたい所存。


久々にReactやりたいな(というかやらないと、書き方忘れそうだな)と思ったので、小さなアプリを作り始めました。

React + TypeScriptのプロジェクトを作るのも、いつのまにか

$ create-react-app hoge --typescript

でできるようになってるし、すごい。

Reduxのアクションやreducderは、普通のJSで書くのであれば、そのままてきとうに書けばいいのだが、TypeScriptとなると、型を当ててあげないとダメですね。(ダメってことはないけど、それならJS使う)

その時に便利なのがtypescript-fsa。

github.com

Reduxの型定義ファイルにも、Actionの型とか定義されてるけど、どうもいまいちなので、その辺をよしなにしてくれる。

import { Action } from "redux";
import actionCreatorFactory, { isType } from 'typescript-fsa';

const actionCreator = actionCreatorFactory('common');

export const signedIn = actionCreator<{ uid: string }>('SIGNED_IN');

interface StateType {
  uid: string | null;
}

const defaultState: StateType = {
  uid: null
};

export default (state: StateType = defaultState, action: Action) => {
  if (isType(action, signedIn)) {
    return {
      ...state,
      uid: action.payload.uid
    };
  }

  return state;
};

こんな感じ。


なんかもっと語るつもりだったけど面倒になってしまった。

Reduxのソースコードを読んでみたみたいな話

Reduxのソースコードを読んでみた。

別にReduxじゃなくて全然よかったんだけど、OSSソースコード読んでみようかなと思ったのがきっかけ。

割とちっちゃめのライブラリで、とっかかりに読むにはちょうど良かった。

まだ、createStoreしか読んでいないけれど、こうやってできてたのかーと感心したり、知らないJSの文法が出てきたりした。(関数の中でargumentsという名前で引数が配列で取って来られるとか)

あまりにも小さいかつ有名なライブラリだったのでコントリビュートしたりする余地は残念ながらなさそうだけど面白かった。

集中ってだいじだなぁと思った。

昨日ブログ書いてないことからも想像がつく?ように、なんだか何も手につかずアニメとYouTube観て過ごしてしまう日を2日くらい過ごしてしまいました。

今日は、途中からなんとか切り替えて、卒研発表ようのスライドを作っていました。結果2時間くらいで終わったという。

2時間で終わることを2日間かけてやってしまった後悔は大きい。


スライドは無事完成したので、あとは練習して発表本番を迎えれば、ちゃんと卒業できそう。

よかったね、という感じ。

スライドを作る

今日は卒論発表の練習をしていました。

作ったスライドは、8割くらいOKで、残りの2割は要修正といった感じで、自分で作ったにしては、上出来なのではないかなと思った。

卒論発表もLTも、気をつけるべきポイントは似てて、

  • スライドにつらつらと文章を書きすぎない
  • 図を使って視覚的に伝わるように
  • 論点をブレさせない、飛躍させない

と、こんな感じかなと思った。

特に僕は、話の内容を急に飛ばしてしまうクセがあるようなので、その点には気をつけつつやっていきたい。


卒論関連も、本当にそろそろ終わりなので、コード書くなり、設計について学ぶなり、何をやるか決めて、社会人になるまでの2ヶ月を有意義に使っていかねば!と決意したりした。

OOP

OOPについて思いを馳せていた。(だいぶ大げさ)

思えば、大学1年の頃からずっとOOPらしき何かをやらされてきたが、本質は何もわかってなかったのではないか、という気がしてきた。

社会人まであと数ヶ月のタイミングなので、学んでおくべきは、こういう基礎的なところなのかな、と思ったりした。


あと、日常話として、今日で、半年間やってきたSAが最終勤務だった。

1年生にJavaを教えていた。自分が遥か昔に理解してしまったところまで、レベルを落として、同じ目線に経って教えることの難しさを痛感した半年だった気がする。

あと、Java忘れてなくてよかった。

React NativeでTypeScriptを使う2019

React Native使ってなんか作りたいな〜と思って、作るならTypeScript一択だなぁ〜と思って、そういえば2017年夏にインターンでRN触ってた時はTSにするの地味に面倒だったような〜と思って、でもそれから1年以上経ったし、なんかもっとスマートになってるんじゃないなかぁなんて思って調べたら、やっぱりいい感じになっていた。

本当は、最近ちゃんとしたブログ書いてないし、ここに書いてやっぞ!と思っていたのですが、思いの外お役立ち情報な気がしたので、Qiitaに投稿することにした。

qiita.com

こちら。

ポイントとしては、

  • react-native init MyProj --template typescriptをやればTypeScriptが使える
  • tscを使ってコンパイルしているわけではないので、型がおかしくても実行できちゃう。型チェックはtscで!

という感じ。

お勉強になりましたね。