なっぱ箱

ゲームとか読書の感想とか時々技術系の話とか

じぶん Release Notes (ver 0.32.07)

なっぱ(ver 0.32.07)がリリースされました。更新内容は下記のとおりです。

技術関連

  • 特になし

イベント

  • 食洗機を導入しました🍽
  • ポケモンカードデビューしました
  • 映画鑑賞
  • 実家の庭で家庭菜園をはじめました
  • 埼玉のトランポランドに遊びに行きました

買物

ゲーム

なし

読書

読了

読書中

なし

アウトプット

なし

ふりかえり

Keep

  • 少しづつだが運動をするようになってた
    • 仕事の休憩中に筋トレなど
  • ポケモンカードデビューをし、リモートで対戦を開始
    • 対戦者募集中
  • 食洗機を導入!!
    • 工事不要のものを買ったので鍋やフライパンは入らないが、食器系を処理するならなんとかいけるくらいのサイズ感
    • シンクに洗い物が残留することが少なくなった

Problem

  • あまり規則正しい生活を送れていない
    • 引越しの目的であった可処分時間の増加はできているはずだが、実際勉強や運動に回せているわけでもない
  • 畑を作ったのはいいが少々離れた場所なので通う頻度に悩んでいる

Try

  • 大洗の海鮮が非常に美味しかったのでまた食べに行きたい
  • ポケモンカードで対戦してくれる人をもう少し増やしたい
  • そろそろ生活のリズムを正したい
  • トランポランドが非常に楽しかったが、体がついていかなかあたので次回はきっちり堪能できるように体を作ってから挑みたい

所感

移住して1ヶ月。あっという間だったが、色々なことがあったこともありすでに2,3ヶ月くらい住んでるように錯覚するレベル。

実は友人がすでに何組か遊びに来てくれて、夜通しボドゲしたり色々なところにでかけたりしている。 あとは畑を耕し始めたり、濃密な1ヶ月を過ごせたと思う。

ただ、その代わりスキルアップに全くリソースを避けていないという問題点が出てきてしまっているので、今後は気をつけていきたい。

リモートワーク1ヶ月目

特段大きな問題点はなく過ごせてはいると思う。 ただどうしても出社したほうが良い事情というものが出てきてしまい、今の所週1くらいで出社してしまっているのが実情。

片道がドアドアで約3時間かかるのでなかなか負担が大きく、どうにかして改善したい。

来月

8月もすでに友人の来訪など予定がてんこ盛りである。夏バテしないように頑張りたい所存。 最近リリースノートしかエントリ書けていないので、そろそろ別のものもちゃんと書かねばいかん。

じぶん Release Notes (ver 0.32.06)

少し遅くなりましたがなっぱ(ver 0.32.06)がリリースされました。更新内容は下記のとおりです。

技術関連

イベント

  • 茨城県への移住を行いました🎉🎉🎉
  • あわせて各種必要なものの納入を行いました
    • キッチンボード
    • エアコン
  • 新しい会社で働き始めました
    • ポジションとしてはEMとなります
    • フルリモートマネージャーにチャレンジ中

買物

ゲーム

なし

読書

読了

読書中

なし

記録

割愛

アウトプット

なし

ふりかえり

Keep

  • 移住をスムーズに完了させることができた🎉🎉🎉
  • リモートワークで快適な生活が送れています
    • 体調も良くなってきている様子😌

Problem

  • 家が広くなった分家具がまだまだ揃っていない
  • リモートのマネージャーなのでまだまだ慣れない部分が多い
  • 時間の融通がきく分働きすぎ問題に落ちいりそう
  • 新しい職場になれるのと移住の準備で勉強等が一切できなかった
  • 会社とのリモート会議でハードウェア的な問題が発生してしまっている

Try

  • 定期的な運動を再開する
    • リモートワークだと引きこもりがちになってしまうので
  • 勉強や趣味などを再開
    • ピアノ、技術系の勉強なども再開
  • マネージャーとしてのスキルを上げる
    • マネージャーレベルLV1くらいなので勉強必須
  • リモート環境を更に整備していく

所感

事前準備していたから少しは時間があるかと思っていた6月だったが、蓋を開けてみればやっぱりめちゃくちゃ忙しい月になった。

転職

入社初日に面接してくれた人全員が退職するという話を聞かされて恐れおののくというミラクルが発生する。 さらにエンジニアとしてオファー受けていたはずだったのだが入社して蓋をあけてみたらポジションはマネージャー。引継期間は2週間。ハードモードの始まりである。

とはいってもどうしようもないので頑張るだけだと腹をくくり1ヶ月終わってみたが、メンバーに恵まれたこともあってかなんとかかんとかやっていけるような気持ちになってきている。課題点はたくさんあるので、あとは優先順位をつけてやっつけていこうと思う。

ただコードを全く書けていないのがとても引っかかるので、早めにコードを書くタスクをねじ込みたいところである。

移住、そしてリモートワーク

今の所運良くあたりの柔らかい親切な人にしか遭遇していないし、ごはん処は結構ある。そして車さえあればだいたいのものが揃っているので買い物で不便になることはなさそう。場所的には車の音がうるさいこと以外は割と満足している。

とにかく車での移動ができるようになったのが大きい。プライベートスペースを長時間維持、かつ行き先を柔軟に変更できる移動手段というのは最高である。一度電車文明に浸かった後だと感動はひとしお。

都内であれば電車でいろいろなところに行けるが、「家から駅まで、到着してから目的の施設まで、を歩かなければいけない」「満員電車でパーソナルスペースを侵害される」「空調などが自分のコントロール下にない」「途中で行き先を変更できない」などのデメリットがあるのがずっと気にかかっていたのだが、車生活によってこれらが解消されたのは嬉しい。そのかわり維持費や事故の危険性、自分が運転しなければならないなどの側面はあるが、今のところは特に問題と言えるほどでもないので大丈夫そうだ。

リモートワークに関してもそこまで大きな問題もない。とても快適である。

夕飯だけすこし抜けて食後に仕事を再開するでもいいし、昼に車で買い物に行ってもいい。そして何より出勤しなくていいので無駄な移動時間や天気に振り回されないので非常に助かっている。

その分会社の他のメンバーとのコミュニケーションには特に注意しなければならないが、それを差し引いてもとても快適で手放せそうにない。

平日の昼に夫婦で食事に出かける、なんてできるのは結構な贅沢だと思うので、これからもこの生活を楽しんでいこうと思う。

来月

来月、というかもう今月だが、すでに週末の予定はほぼ全て埋まっているので充実した移住ライフを楽しもうと思う。 畑も開始できたらいいなぁ。

じぶん Release Notes (ver 0.32.05)

なっぱ(ver 0.32.05)がリリースされました。更新内容は下記のとおりです。

技術関連

  • 「暗号技術のすべて」を読了しました
    • 読了エントリは未投稿

イベント

  • 新居の引き渡しが完了しました🎉🎉🎉
  • 友人と車で新居に出かけました
  • 引越しに向けて各種必要なものを購入しました
    • 車(納車待)
    • キッチンボード(配達待)
    • エアコン(配達待)
    • テレビボード(設置済)
    • 昇降デスク(設置済)
  • 映画を鑑賞しました
  • 会社を退職しました
    • 6/1より別の会社にて勤務となります
  • 熊津たちとTRPGの会員にオフセを行いました
    • 使用システムはデッドラインヒーローズ

買物

ゲーム

クリア

  • deltarune Chapter.1

プレイ中

なし

読書

読了

読書中

なし

記録

引越、退職等でFitBoxingとピアノはほぼできていないので割愛。

アウトプット

ふりかえり

Keep

  • 引越しに関する下準備をすべて完了させることができた
    • 梱包に関しても大まかには完了
  • 前々からやりたかったTRPGをプレイできた。とても楽しかったので継続していきたい
  • 家具の組立を頑張った。とても頑張った・・・

Problem

  • 外出が多いこともあり外食がとても多くなってしまった
    • 年内目標体重の言質も取られてしまったので頑張らねばならない
  • 仕方ないとはいえ出費がとても激しい。稼がねば・・・

Try

  • 新しい職場でのキャッチアップを迅速に行う
  • 新居で飼うペットの種類をできれば決めておく
  • 無事に引越しを行う

所感

引越しの事前準備、退職とやはり忙しい月になった。忙しかった分6月はすこし余裕が出ると思いたい。

新居の準備

鍵もゲットしたのでちょこちょこ新居に行って入居の準備をしている。

テレビボードなどの組立家具は事前に搬入して組立を行ったが大正解だった。時間が想像の3倍くらいかかったので引っ越しと同時にやってたらダンボールを開けてる余裕はきっとなかったと思う。組立系家具はもうないはずなので、当日はダンボールに真正面から向かい合いたい。

そして都内にいると所持するのが難しいものの代表である車を購入。諭吉がいっぱい飛んでいった。

車種は日産のジューク。年式の古い中古車だけど割とキレイそうなのと、ディーラー販売の中古車で3年保証ついているのでいいかなと。 ラゲッジスペースは結構広め。DIY用の木材などはたっぷり乗りそうだし、キャンプに行くときも安心して荷物が積めそう。ただ後部座席がかなり狭いのだけが残念。

いろいろと必要経費がかかってしまって入るが、引越し後の生活が非常に楽しみ。引越しまではあと1ヶ月。このままトラブルなく引越しを終わらせたいものだ。

来月

引越しもあるし新しい職場にも慣れなきゃいけない。大変な月にはなると思うが頑張ろうと思う。

LOWYAで67インチ対応のテレビボードを買った

戸建て物件に引越すにあたってリビングの収納をどうするかという問題を夫婦で話し合っていたんだけど、

  • 何個も収納家具を置くくらいなら収納付きのテレビボードを買って1つにまとめたほうがよいのでは
  • いずれでかいテレビを買うつもりだし、対応できる大きなサイズのテレビボードを選ぶのがベター

という意見でまとまったので大きめのテレビボードを購入することにした。

今回購入したのはLOWYAで販売しているこちらの商品。

www.low-ya.com

対応テレビサイズは67インチまで。一般的な家庭で67インチを超えるテレビはそうそう購入する必要性はないので問題はないと思われる。収納についても十分以上に整っているし、一部ガラス戸となっているのでちょっとした小物をディスプレイしても良い。LEDライトを這わせる穴も空いているのでライトアップすることも可能。あまり見栄えが良くないものは木扉のほうにしまう、と使い分けできる点も高評価。そして安い。これが決め手。

見た目も値段の割には比較的良く、YouTubeで見ても結構良さそうだったので他に対抗候補を特に上げることもせず決定。

ただ後述するが組み立てが地獄なので購入する場合は覚悟をしておいてほしい。

到着

こんな感じで4個口の激重ダンボールが届く。ちなみに大型家具等の専門配送会社が配送してくれるので、引越し業者のように床に毛布っぽいものを敷いて作業してくれたりなどの気配りをしてくれたのが助かる。

しかしとにかく重い。商品詳細を確認するとダンボール1つ30kg以上の重量があるので、到着後に別の部屋に運び込みたいとか移動をしたい場合は気をつけて運んでほしい。

開封

さてこの巨大なテレビボード、中央のテレビ台以外に左側にある「大型キャビネット」、右側にある「中型キャビネット」、そして上にある「板棚」の4つで構成されているのだが、別にダンボールごとにパーツがまとまっているわけではない。長さが違うパーツを効率的に収納するには仕方がないことではあるのだけど、全ダンボールにパーツがそれぞれバラバラに入っている。

そのため全ダンボールを開封してパーツをそれぞれ種別わけして並べるという作業をまず最初になってくる。

正直ものすごく場所を食う。まだ荷物を運び入れてない空っぽの12畳ほどの部屋がパーツで埋め尽くされるほどの量があるので、組み立てスペースを確保してから買うことをおすすめする。

そしてこの商品最大の欠点になるのだが、なんとパーツ一覧が存在しない。

普通であれば説明書の最初に全パーツがナンバリングされている表などがあるのと思うだろうが、そんなものは存在しない。一応各収納棚ごとにパーツのナンバリングは行われているのだが、パーツ自体に番号のシール等は一切ないので自力で照合していく必要がある。説明書上の穴の数、位置から「これだ!」と思われるものを選別する作業が必要になるのだ。

作業する場合は開封したダンボールを下に引いて作業スペースの床を保護するとよい。各ダンボールが2重梱包になっているのでダンボールに困ることはないはずだ。

必要工具

必要工具がドライバー、金槌、定規、鉛筆となっているのだが、ドライバーはぜひ電動ドライバーを用意してほしい。ナット等が埋め込まれているわけではなく、木に直接締め込むのでとてもパワーが必要になる。これを人間の手でやっているときりがないので電動ドライバーはもはや必須に近い。安物でもいいので買っておくのをおすすめする。いや本当に。

それと棚の一部を釘打ちするので金槌が必要になるのを忘れないでほしい。自分は用意するのを忘れて新居周りの店を2h近く歩き回って探す羽目になってしまった。なお定規と鉛筆は釘打ちをする場所の目安を書くために必要。最悪なくてもいいが用意しておいたほうが無難。

1つ目のキャビネットの完成

左側の大型キャビネットが完成するとこんな感じ。

これを組み立てるのだけで数時間かかり、初日が終わってしまった。やはり大量のパーツの中から探すという作業が一番しんどい。

なおガラス戸は強化ガラスになっているが、その中の敷板用のガラスは強化ガラスではないので取扱に注意。

メインになるテレビ台の完成

ここができるとテレビボードらしくなってきた。

2つ目のキャビネットの完成

最初に作ったキャビネットの小型版なのでそんなに苦労はしない。

ただ慣れてきて気を抜いたからか、ガラス戸と板扉を仕切っている真ん中の板を上下逆に取り付けてしまうというミスを起こしてしまった。そのせいで棚の敷板が平行に置けなくなったが、すでに釘打ちもしていて解体が困難のためドリルで無理やり加工して対応した。リカバー可能なミスでよかった・・・

テレビボード完成

最後の上棚が完成して組み付ければ完成となる。上棚はパーツが少ないがやや特殊な形をしているので間違えないように注意してほしい。

ちなみにおいてあるモニターはこれでも27インチサイズ。どれだけ大きいかがわかってもらえるかと思う。

感想

組立系家具にしてはクオリティは結構高目だと思う。扉や引き出しも結構スムーズなので不満点はあまりないのだが、ちょっと気になる点が1つ。

f:id:b7472:20190530125541p:plain

この写真を見てもらうとわかるのだけども、扉の蝶番が設置されてる箇所のパーツが少し飛び出しているのだ。そのせいで棚の幅ギリギリのものはそのまま出入れることができず、ちょっと斜めにするなりして入れる必要がある。幅ピッタリのケースなどになってしまうともはや入れられない。

あとは組立難易度が高いこと、かなり広めの作業スペースが必要である、など多少の欠点はあるものの全体的にはとてもよい商品だと思う。

最後にこの商品をちょっと紹介している動画を貼っておく。検討している人は参考にしてほしい。そして全く関係ないが猫がとってもかわいい。

www.youtube.com

それと旦那さんの方の料理チャンネルがクッッッッッソレベルが高いので気になる人は是非。

www.youtube.com

ネバーランド出身の友人達と久々におかめに行ってきた

厚木に「ホルモンセンターおかめ」というホルモン焼き屋があるのだが、6,7年ぶりくらいにネバーランド出身の友人たちと行ってきた。

ネバーランド

おかめの話の前に「ネバーランド」について。

ネバーランドといえば童話のピーターパンに出てくる妖精がいる国で「住んでいる間は年を取らなくなる」というのは有名だと思う。 ここで言う「ネバーランド」も概ね同じなんだけれども、一つだけ違うのが「年を取らなくなる」のではなく「進級ができなくなる」のだ。

まぁぶっちゃけ大学時代のかつてのたまり場、自分が住んでいたアパートのことなんですけどね。

鍵を一切かけないため出入りは自由。寝て起きたら部屋の中のメンバーが入れ替わっていたりするのは当たり前。数日間毎日気絶するまでみんなでモンハンしたり、死ぬほど遊戯王をやったり、無駄にテレビとPS3が複数台あったからDarkSoulのマルチプレイをローカルで集まって試してみたり、連絡が取れなくなって心配した友達の彼女が深夜に突撃してきたりと、とってもカオスで楽しいダメ学生がたまる夢の国。

そしてこの部屋に入り浸っていたメンバーのほぼ全員が留年や退学するという悲惨な目にあったため、いつのまにか「ネバーランド」という異名でよばれるようになったのだ。ちなみに部屋の主である自分は尊敬と畏怖の念を込めて「ビーターパン」の称号を与えられていた。

とりあえず、簡単に言えば大学時代の友人とおかめっていうホルモン焼き屋に行ってきたっていう話。

ホルモンセンターおかめ

本厚木駅の駅から徒歩15分くらいのところにあるホルモン焼き屋。

個人的にはホルモン系でここより旨いホルモンは食べたことがない(そもそもホルモン焼き屋に行った経験が少ないが)。 そして値段、味、量のトータルでここに勝てる店はないのではなかろうか、というのが自分の評価。異論がある人は是非店を教えてほしい。

ちなみにかつてメニューにレバ刺しがあったのだが、人生で食べたレバ刺しの中でこの店のものがダントツでトップ。他の店のものでうまいのを食ったことがない。できることなら死ぬまでにもう一度食いたい・・・。

ただ注意点として昔からやってる店だけあって内装は古め。あと換気扇も古くてパワー不足だから混雑時は煙が店内に充満する。服に匂いをつけたくない人にはおすすめできない。

写真

f:id:b7472:20190511174146j:plain

外観はこんな感じ。とってもレトロ。そして看板にある通りマジでうまくて安い。


f:id:b7472:20190511175145j:plain

知ってる人は知ってると思うけど、これがB級グルメで有名になったシロコロ。この量で2人前。


f:id:b7472:20190511175028j:plain

タン塩。ここでは牛タンではなく豚タン。歯ごたえがよい。


f:id:b7472:20190511175049j:plain

やわらかナンコツの略でやわナン。軟骨周辺の歯ごたえのある肉。


f:id:b7472:20190511175449j:plain

カルビもある。油が甘い。米が進みすぎて困る。


f:id:b7472:20190511180733j:plain

馬刺し。昔はレバ刺しとかハツ刺しがあったんだけどね。関係ないけど会津の馬刺しも食いたいなぁ。


f:id:b7472:20190511190500j:plain

チャンジャがのった辛目の味付けのお茶漬け。これが最高の〆。


f:id:b7472:20190511175500j:plain

こんな感じのレトロな七輪で焼きます。

かつてのバイト先

実はこのおかめというお店、大学時代のバイト先だったりする。

初めてのバイトだったから給料をもらえて感動したり、まかないのキムチを食べ始めたおかげで野菜嫌いが治ったり、ホルモン焼き屋なのにまかないで刺身定食が高頻度で出てきて「今週何回カツオ食ったんだろ・・・」状態になったり、今思い出してもいろいろなことがあった気がする。

今バイトで入っている人も当時の自分と同じ大学の学生さんらしくて、1人ベテラン1人新人といった感じ。 たどたどしくても頑張ってる新人さんを見ると当時が本当に懐かしくて、しみじみと「俺本当におっさんになっちゃったんだなー・・・」というお気持ちになった。

また行きたい

昔はあった上カルビとかハツ刺しとか豚足とかはなくなっちゃってたけど、やっぱりおかめはあの頃の雰囲気のままだし、今になってから食べてもやっぱりうまい。

マスターやおかみさんにもまた会いたいので、いずれ予定を組んで行こうと思う。

じぶん Release Notes (ver 0.32.04)

すこし遅れてしまいましたがなっぱ(ver 0.32.04)がリリースされました。更新内容は下記のとおりです。

技術関連

イベント

  • 転職先が決定しました🎉🎉🎉
  • 引越先の新居が決定しました🎉🎉🎉
    • 5/1時点より契約
  • 新宿御苑で花見をしました🌸
  • 内見がてら友人と車で出かけました
  • 10年ぶりくらいの富士急ハイランドへ行ってきました🎢
  • 義母が1週間くらい泊りに来ていました
  • レティクル東京座公演「電脳演形キャステット」を観劇しました

買物

ゲーム

クリア

プレイ中

なし

読書

読了

読書中

記録

FitBoxing

https://pixe.la/v1/users/yamash723/graphs/fitboxing.html

  • 実施回数: 1回

ピアノ

https://pixe.la/v1/users/yamash723/graphs/piano.html

  • 練習回数: 4回
  • 総練習時間: 40分
  • 練習曲
    • 米津玄師: Lemon

アウトプット

ふりかえり

Keep

  • 転職先/引越先を決めることができた。あとは引越のみ
  • 仕掛り中のゲームをクリアすることができた
  • 前々からやろうと思っていたTRPGの準備を行った
    • 実プレイは5月

Problem

  • 転職や引越準備などなどで運動やピアノなどすべてがおろそかになってしまった
  • 外出などが多かったのでせっかくだからブログを書けばよかった
  • 予定があったので仕方ないが技術書典に今回も行けなかった

Try

  • 引越に向けて事前に家の整理、不用品処分を行う
  • 都内にいる間に遊べる事は遊んでおく
  • 購入する車の選定を進める

所感

転職と引越準備でバタバタな月だった。

令和

さようなら平成、おめでとう令和。まだ慣れないよ令和。

日が変わるタイミングは何をしていたか覚えてないけども、とりあえず奥様はガッツリ寝落ちしておりました。

移住先の物件

茨城県水戸市の新築一軒家に決定。

今まで2年に1回くらいのペースで引越をしていて、マンションもアパートも一軒家も経験はあるんだけれども新築は初めての経験。とても楽しみ。 しかもお隣さんとの距離は駐車場2台分の距離が離れているので騒音に関しては全く問題なさそうな気配である。

地方にしてはありがたいことにコンビニへ徒歩3分。同じ距離圏内にけっこう大きめの森林公園的なものもあり。駅まではそこそこ離れているがまれにしか通わないと思われるのでそんなに気にならない(と思う)。

車さえあれば超巨大ホームセンター、ショッピングモール、コストコ海浜公園、魚市場なども気軽に行ける距離なので買物でも困ることはそうそうないのではなかろうか。

都内へも特急や高速バスを使えばすぐ出れる位置なので、満足いく物件に決められたと思う。

来月

休日の予定は半分どころか2/3くらい埋まった。5月はまだ引越しないので多少余裕はあるが、あとから慌てないように準備は着々と進めていこうと思う。

TypeScript & ESLint/Prettier & webpack & Jestで最小構成のプロジェクトを作る

はじめに

Vue等であればvue-cliで新規プロジェクトを作ってしまえばいいのだが、 別にVue等を使わないCUIツールなり簡単なものをザクっと書きたいとき用に最小構成のものが欲しかったので作ってみた。

(あとはそもそもここ最近のモダンな構成をゼロから用意したことなかったので勉強がてら)

作ったもの

作ったものはこんな感じ。

github.com

├─dist
│   └─── bundle.js
│      
├─node_modules
├─src
│   ├─── app.spec.ts
│   └─── app.ts
│
├─ .gitignore
├─ .eslintrc.js
├─ .prettierrc
├─ jest.config.js
├─ package-lock.json
├─ package.json
├─ tsconfig.json
└─ webpack.config.js 

手順

プロジェクトの初期化

とりあえずプロジェクト用のディレクトリを切り、最低限のソースと.gitignoreを用意しておく。

$ mkdir minimum-ts-template && cd $_
$ npm init -y
$ mkdir src && touch src/app.ts .gitignore

src/app.ts

export const SayHello = (): string => {
  return 'Hello! TypeScript!'
}

console.log(SayHello())

.gitignore

node_modules
dist

TypeScript/Webpackの設定

必要なパッケージを追加し、それぞれの設定ファイルを作成。内容はお好きに変更してどうぞ。

$ npm i -D typescript ts-loader webpack webpack-cli
$ touch tsconfig.json webpack.config.js

tsconfig.json

{
  "compilerOptions": {
    "target": "ES2017",
    "module": "es2015",
    "baseUrl": ".",
    "paths": { "@/*": ["src/*"] },
    "outDir": "./dist/",
    "removeComments": true,
    "strict": true,
    "noImplicitAny": true,
    "strictNullChecks": true,
    "strictFunctionTypes": true,
    "strictPropertyInitialization": true,
    "noImplicitThis": true,
    "alwaysStrict": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "noImplicitReturns": true,
    "noFallthroughCasesInSwitch": true,
    "esModuleInterop": true
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules", "**/*.spec.ts"]
}

webpack.config.js

const path = require('path')

module.exports = {
  entry: './src/a.ts',
  module: {
    rules: [
      {
        test: /\.ts$/,
        use: 'ts-loader',
        exclude: /node_modules/,
      },
    ],
  },
  resolve: {
    extensions: ['.ts', '.js'],
  },
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist'),
  },
}

設定ファイルを追加したらpackage.jsonにbuildスクリプトを追加。

package.json

  "scripts": {
+   "build": "webpack --mode=development",
    "test": "echo \"Error: no test specified\" && exit 1"
  },

これで下記のようにTypeScriptのビルドが出来るようになる。

$ npm run build

Hash: 12c5408bc864105b0202
Version: webpack 4.30.0
Time: 919ms
Built at: 2019-04-19 14:09:37
    Asset      Size  Chunks             Chunk Names
bundle.js  4.07 KiB    main  [emitted]  main
Entrypoint main = bundle.js
[./src/app.ts] 97 bytes {main} [built]
$ node dist/bundle.js
Hello! TypeScript!

ESlint/Prettierの設定

The future of TypeScript on ESLint

という事なのでTSLintではなくESLintにしましょう。

まずはパッケージの追加を行って各種設定ファイルを作成。細かいルールはお好きなように。

$ npm i -D eslint @typescript-eslint/eslint-plugin prettier eslint-config-prettier eslint-plugin-prettier
$ touch .prettierrc .eslintrc.js

.prettierrc

{
  "singleQuote": true,
  "semi": false,
  "trailingComma": "all"
}

.eslintrc.js

module.exports = {
  extends: ["eslint:recommended", "plugin:prettier/recommended"],
  plugins: ["@typescript-eslint", 'prettier'],
  parser: "@typescript-eslint/parser",
  parserOptions: {
    sourceType: "module",
    project: "./tsconfig.json",
  },
  env: {
    browser: true,
    node: true,
    es6: true,
  },
  rules: {
    "no-console": "warn",
    "@typescript-eslint/adjacent-overload-signatures": "warn",
    "@typescript-eslint/no-unnecessary-type-assertion": "error",
  }
}

設定ファイルを追加したらpackage.jsonにlintスクリプトを追加。

package.json

  "scripts": {
    "build": "webpack --mode=development",
+   "lint": "eslint --ext .js,.ts --ignore-path .gitignore .",
+   "lint:fix": "eslint --fix --ext .js,.ts --ignore-path .gitignore .",
    "test": "echo \"Error: no test specified\" && exit 1"
  },

これで下記のようにESLint/PrettierによるLintができるようになる。

$ npm run lint

D:\workspace\javascript\minimum-ts-template\src\app.ts
  2:10  error    Replace `"Hello!·TypeScript!";` with `'Hello!·TypeScript!'`  prettier/prettier
  3:2   error    Delete `;`                                                   prettier/prettier
  5:1   warning  Unexpected console statement                                 no-console
  5:24  error    Delete `;`                                                   prettier/prettier

✖ 4 problems (3 errors, 1 warning)
  3 errors and 0 warnings potentially fixable with the `--fix` option.
$ npm run lint:fix

D:\workspace\javascript\minimum-ts-template\src\app.ts
  5:1  warning  Unexpected console statement  no-console

✖ 1 problem (0 errors, 1 warning)

Jestの設定

最後にテストフレームワークのJestのパッケージを追加。やはり設定ファイルがあるのでそちらも追加。

$ npm i -D jest ts-jest @types/jest eslint-plugin-jest
$ touch jest.config.js

ESLintに設定を追加。

.eslintrc.

  module.exports = {
    extends: ["eslint:recommended", "plugin:prettier/recommended"],
-   plugins: ["@typescript-eslint", 'prettier'],
+   plugins: ["@typescript-eslint", 'prettier', "jest"],
    parser: "@typescript-eslint/parser",
    parserOptions: {
      sourceType: "module",
      project: "./tsconfig.json"
    },
    env: {
      browser: true,
      node: true,
      es6: true,
+     "jest/globals": true,
    },
    rules: {
      "no-console": "warn",
      "@typescript-eslint/adjacent-overload-signatures": "warn",
      "@typescript-eslint/no-unnecessary-type-assertion": "error",
    }
  }

設定ファイルを追加したらpackage.jsonのtestスクリプトを修正。

package.json

  "scripts": {
    "build": "webpack --mode=development",
    "lint": "eslint --ext .js,.ts --ignore-path .gitignore .",
    "lint:fix": "eslint --fix --ext .js,.ts --ignore-path .gitignore .",
-   "test": "echo \"Error: no test specified\" && exit 1"
+   "test": "jest"
  },

app.tsに対するテストを書いてみる。

touch src/app.spec.ts

src/app.spec.ts

import { SayHello } from './app'

describe('SayHello', () => {
  test('toBe "Hello! TypeScript!"', () => {
    expect(SayHello()).toBe('Hello! TypeScript!')
  })

  test('not toBe "Hello! JavaScript!"', () => {
    expect(SayHello()).not.toBe('Hello! JavaScript!')
  })
})

これで準備は整ったのでテストを実行。

$ npm run test

 PASS  src/app.spec.ts
  SayHello
    √ toBe "Hello! TypeScript!" (3ms)
    √ not toBe "Hello! JavaScript!"

  console.log src/app.ts:5
    Hello! TypeScript!

Test Suites: 1 passed, 1 total
Tests:       2 passed, 2 total
Snapshots:   0 total
Time:        2.868s
Ran all test suites.

以上で最小構成のプロジェクトが完成!

全然関係ないけどはてなブログのコードブロックもQiitaみたいにファイル名つけられるようになったらいいなぁ・・・