モノラルログ

マツオ ( @matsuoshi / monaural.net ) のざっくりしたブログです

nuxt.js で scss のグローバルな変数を使用する

nuxt.js で開発するとき、自分で定義した scss の変数や mixinをどのコンポーネントからでもグローバルに使えるようにしたい、というメモ

まずは共通のファイルを、/assets/styles/_var.scss あたりに作り、その中で各種変数などを定義しておきます。

// assets/styles/_var.scss

$theme-color: #ccc;

これらを呼び出す方法は2つあって、

毎回 import する

必要なタイミングで、この _var.scss を import すればよいですね

// components/sample.vue

<style lang="scss">
@import "assets/styles/var";

.title {
    color: $theme-color;
}
</style>

こんな風に使いたいところで importしてあげれば、まあそりゃ当然だろという感じですが、変数等が使えます

あ、sass-loadernode-sass はインストールしておいてください

yarn add --dev sass-loader node-sass

@nuxtjs/style-resources を使う

毎回書くのはめんどくさいので、このモジュールを使う方法が楽ですね。

github.com

まずはモジュールをインストール。

yarn add --dev @nuxtjs/style-resources

んで、nuxt.config.js に設定を追記します

export default {
  modules: [
    '@nuxtjs/style-resources'
  ],
  styleResources: {
    scss: [
      '~assets/styles/_var.scss'
    ]
  },
}

module として @nuxtjs/style-resources を使い、常に読み込ませる scss ファイルを styleResources として指定しておく、という設定になります。

こうすると nuxt.js のどこからでも、自分で定義した変数や mixin が呼び出せるようになるかんじです。

ちなみに、以前は nuxt-sass-resources-loader というモジュールを使っていましたが、そちらは現在はサポートが終わっているっぽいので要注意。

github.com

Kindle Unlimited が 3ヶ月 199円だったので入ってみた

キャンペーンはもう終了してしまったみたいなのですが(2019.10.27まで)、Kindle Unlimited が 3ヶ月 199円というキャンペーンがあったので、つい入ってしまいました。

forest.watch.impress.co.jp

通常は月980円だもんなあ。3ヶ月トータルで 200円とかとなれば、まあ、ついポチッとしてしまいますね。1冊気になってる本が読めたら、もう元は取れるかんじ。

てことでひとまず3ヶ月間はいろいろ試させていただいて、仮に不要となれば解約することを忘れないようにせねば。リマインダー登録。

しかし、積読もそれなりにある状況なので、そこまで読書する時間あるかな〜〜 というのが悩ましいところ……

書籍「レガシーコードからの脱却」を読んだ

「レガシーコードからの脱却 ー ソフトウェアの寿命を延ばし価値を高める9つのプラクティス」

オライリー本。

タイトルの時点でかなり興味深いのですが、翻訳者のひとり Ryuzee さんによりますと

著者が強調するのは、そのレガシーコードへの対応としていちばん大事なのは「最初からレガシーコードを作らない」という点です。 あとから品質を上げるのは、最初から品質を高く保つのに比べて何倍ものコストがかかるので、後からレガシーコードを直さなくて済むようにする。 そのためにどうすれば良いのかに紙面の多くを割いています。

何それめっちゃ気になる。つまり「レガシーコードを修正する本」ではないと。いかにして「レガシーコードを作らないようにするか」って話だと。ということで読みました。

アジャイルの本でしたね

前半は、なぜレガシーコードが生み出されるのか、という観点。

いわゆるウォーターフォール的なやり方だと、途中変更のたびにレガシー感が増えてくるよね、アジャイルな考えでやっていかないとね、という感じ。最初に目次を見た段階では、ここまでアジャイル推しな内容になってるとは思わなかったなー

そういえばこの本、序文をウォード・カニンガムが書いてるんですよね。Wiki の生みの親。アジャイルマニフェストの17人のメンバーのうちの一人。

ja.wikipedia.org

なるほどなるほど。

9つのプラクティスは納得感が高い

で、実際のプラクティスの部分も。読んでいて、まあそりゃそうだよな、という納得感が非常に高い。感覚としてなんとなく分かってた、という話がきれいに言語化されている感じ。

  • やり方より先に目的、理由、誰のためかを伝える
  • 小さなバッチで作る
  • 継続的に統合する
  • 協力しあう
  • 「CLEAN」コードを作る
  • まずテストを書く
  • テストでふるまいを明示する
  • 設計は最後に行う
  • レガシーコードをリファクタリングする

めちゃくちゃ目新しい話はないです。他の書籍でも見るようなプラクティスが上手くまとまっている。ただ、それらを丁寧に実践することはラクなことではないし、実践されているであろうからこその、納得感の高い言語化

ええ本でした。

www.ryuzee.com

node-sass が Chromebook C101PA では動かなかったので

結論だけ書くと dart-sass を使って解決した

Chromebook でフロントエンド開発

Chromebook C101PA, 便利に使っています。いまのところコード書く以外の作業はだいたい困らずにできる。バックエンドのコード書く作業なら、最悪 cloud9 でやればなんとかなる。

 

フロントエンド開発はどうだろう、と思って ChromebookLinux にフロントエンドの開発環境作るのを試してみました。とりあえず node.js 入れて nuxt.js 入れて scss も入れて…… 進めてみたところ、node-scss のところで以下のようなエラーが

> node scripts/install.js

Downloading binary from https://github.com/sass/node-sass/releases/download/v4.12.0/linux-arm64-64_binding.node
Cannot download "https://github.com/sass/node-sass/releases/download/v4.12.0/linux-arm64-64_binding.node": 

HTTP error 404 Not Found

あら node-sass が入らない。失敗する。

GitHubのイシューを見てみたところ、どうやら arm64系のCPUはサポート外らしいです

github.com

残念ですがサポート外と言われてしまってはしょうがない。node-sass はあきらめる……

scss をビルドするのに、他の方法はないのかなと思ったら

dart-sass があった

github.com

こっちを試してみます。dart-sass は npm で入れるならパッケージ名は sass です、ちょっとややこしいな。

npm i sass

ふつうに入った〜

特に設定なしで nuxt.js からも使えたので、これでいけそうです

Backlogのコミュニティ JBUG 大阪 #2 でしゃべってきました

jbug.connpass.com

Backlog やプロジェクト管理をテーマにしたコミュニティ "JBUG" (Japan Backlog User Group) で、短い時間ですが登壇の機会をいただき、しゃべってきました。2019/10/10(木)。

話したこと

細かい機能の話とかはしませんでした。

主旨としては、

  • Backlog って使いやすいツールだよね
  • ただ、プロジェクトチーム内で使い方が揃ってないと、運用カオスになりがち
  • Backlog あるある(困りごとケース) こんなのあるよね〜
  • これはマズイということで、チームみんなで話し合って、運用ルールをまとめました
  • (スライド内には含めていませんが、当日は運用ルールを例として紹介)
  • 管理者がトップダウンで決めるより、チーム内で合意したほうがみんな自主的に守ったり改善したりしやすい
  • ルールを作るときは、Backlog を使ってる目的のところから確認
  • ふりかえりで、随時なんかあれば見直す

という感じです。

ふりかえりの話でもある

「ツールの使い方がかんたん」というのと、「ツールの使い方を揃える」というのは別の話なので、ちゃんとチームとして揃える機会を作るとスムーズになるのでは、という話でした。

あとぶっちゃけ、チームでちゃんと話し合おうぜ、ふりかえりやろうぜ (今回の運用ルールはその改善アクションのひとつ) という話でもあります。

そんなかんじで。

登壇の機会をいただき、ありがとうございました〜!