Tech Bytes

短くて分かりやすい技術情報を記事として共有します。みなさんにとって学びになれば幸いです。

stylelintってなんだろう?役割を解説

stylelintとは?

stylelintはCSSやSCSS、LESSなどのスタイルシートを検証し、一貫性のあるコードスタイルを維持するための静的解析ツールです。
昨今のフロントエンド開発には欠かせないツールとなっています。

stylelintは以下のような機能を提供します。

1. 構文エラーやタイポの検出
2. コードスタイルの一貫性の検証
3. プリプロセッサの変数や関数、ミックスインなどの使用方法の検証
4. パフォーマンスの問題を検出するルールの提供

stylelintは様々な設定オプションを提供しており、ユーザーが独自のルールを追加することもできます。
また、stylelintはコマンドラインやyarnやnpmスクリプト、エディターのプラグインとして使用することができます。

stylelintはCSSやSCSS、LESSなどのスタイルシートを検証することで、品質の高いコードを作成し、保守性を高めることができます。

stylelintの実行方法

Stylelintを使用するには、まずプロジェクトにStylelintをインストールし、設定ファイルを作成してから、コマンドラインまたはエディタ統合を使用して実行します。
以下にその手順を示します。

1. Stylelintのインストール

まず、Node.jsとnpm(またはyarn)がインストールされていることを確認します。

npmを使用する場合
npm install stylelint --save-dev
yarnを使用する場合
yarn add stylelint --dev

2. Stylelint設定ファイルの作成

プロジェクトのルートディレクトリに.stylelintrcという名前のファイルを作成し、以下のような基本的な設定を追加します。
設定ファイルはJSON形式、YAML形式、JavaScript形式のいずれかで書くことができます。

JSON形式の例
{
  "extends": "stylelint-config-standard",
  "rules": {
    "indentation": 2,
    "string-quotes": "double"
  }
}
YAML形式の例
extends: stylelint-config-standard
rules:
  indentation: 2
  string-quotes: double

3. スタイルガイドのインストール

推奨される設定やスタイルガイドを使用するために、対応するパッケージをインストールする必要があります。
例えば、stylelint-config-standardを使用する場合:

npm install stylelint-config-standard --save-dev

4. Stylelintの実行

コマンドラインから実行

Stylelintをコマンドラインから実行するには、npxコマンド(npm 5.2.0以上で利用可能)を使用します。

npx stylelint "/*.css"

または、特定のディレクトリやファイルを指定して実行することもできます。

npx stylelint "src/**/*.css"
スクリプトに追加

package.jsonのスクリプトセクションにStylelintのコマンドを追加することもできます。

"scripts": {
  "lint:css": "stylelint '/*.css'"
}

その後、以下のコマンドで実行できます。

npm run lint:css

5. エディタの統合

エディタでリアルタイムにLintingを行うために、以下のようなプラグインをインストールすることができます。

  • VSCode: stylelint extension

marketplace.visualstudio.com

  • Sublime Text: SublimeLinter-contrib-stylelint

packagecontrol.io

  • Atom: linter-stylelint

atom.io

6. 自動修正機能の使用

Stylelintには自動修正機能もあり、以下のコマンドで自動修正を実行できます。

npx stylelint "/*.css" --fix

これらの手順に従うことで、Stylelintをプロジェクトに設定し、スタイルシートの品質を保つことができます。
必要に応じて、ルールや設定をカスタマイズし、プロジェクトの要件に合わせて最適化してください。

Stylelint実行前後の差分の例

Stylelintを実行する前と後の差分の例を示します。
以下の例では、Stylelintを実行する前のCSSファイルと、Stylelintによって修正された後のCSSファイルを比較します。

1. Stylelint実行前のCSSファイル

例えば、次のようなスタイルシートがあるとします。

body {
    background-color: #fff;
    color: #333
}

h1 {
  font-size: 24px;
    margin-bottom: 20px
}

このファイルには以下の問題があります:

  • インデントが統一されていない(2スペースと4スペースが混在)。
  • プロパティの最後にセミコロンが欠けている。

2. Stylelint設定ファイル

次に、Stylelintの設定ファイル.stylelintrcを次のように設定します。

{
  "extends": "stylelint-config-standard",
  "rules": {
    "indentation": 2,
    "declaration-block-trailing-semicolon": "always",
    "color-hex-length": "short"
  }
}

この設定ファイルでは、以下のルールを適用しています:

  • インデントを2スペースに統一する。
  • プロパティの最後に必ずセミコロンを付ける。
  • 可能な限り16進カラーコードを短縮形にする。

3. Stylelintの実行

次に、以下のコマンドでStylelintを実行します。

npx stylelint "path/to/your/styles.css" --fix

4. Stylelint実行後のCSSファイル

Stylelintを実行した後のスタイルシートは次のように修正されます。

body {
  background-color: #fff;
  color: #333;
}

h1 {
  font-size: 24px;
  margin-bottom: 20px;
}

5. 差分の説明

実行前と実行後のCSSファイルの差分は以下の通りです:

実行前
body {
    background-color: #fff;
    color: #333
}

h1 {
  font-size: 24px;
    margin-bottom: 20px
}
実行後
body {
  background-color: #fff;
  color: #333;
}

h1 {
  font-size: 24px;
  margin-bottom: 20px;
}

修正点の詳細

1. インデントの統一:

  • インデントが2スペースに統一されました。

2. セミコロンの追加:

  • color: #333の後にセミコロンが追加されました。
  • margin-bottom: 20pxの後にセミコロンが追加されました。

3. その他:

  • background-colorの値#fffは既に短縮形なので、変更はありませんでした。

まとめ

Stylelintを使用することで、スタイルシートのコードを自動的にフォーマットし、統一されたコーディングスタイルを保つことができます。
上記のように、Stylelintを適用する前と後の差分を確認することで、具体的にどのような修正が行われたかを理解することができます。

mvn installとmvn packageの違いは?

mvn installとmvn packageの違いは何でしょう?

mvn installとmvn packageは、Mavenビルドツールで実行できる2つのタスクですが用途が異なります。

mvn install

mvn installは、プロジェクトのビルド、テスト、パッケージ化を行い、プロジェクトをローカルのMavenリポジトリにインストールします。
これにより、同じローカル環境で別のプロジェクトからこのプロジェクトを参照できるようになります。

mvn package

mvn packageは、プロジェクトのビルド、テスト、パッケージ化を行い、targetディレクトリにjarファイルやwarファイルなどのアーティファクトを生成しますが、ローカルリポジトリにはインストールしません。
これは、他のプロジェクトで依存関係を解決するために使用する必要がない場合に便利です。

つまり、mvn installは、プロジェクトの依存関係を解決するために他のプロジェクトから利用できるようにするために使用され、mvn packageは、アーティファクトを生成するだけで、他のプロジェクトから利用する必要がない場合に使用されます。

mavenのマルチプロジェクトの場合はmvn installして他のプロジェクトからも参照できるようにする必要がありますね。

mvn installでtargetディレクトリは生成されるのか

mvn installコマンドを実行すると、Mavenプロジェクトのルートディレクトリにtargetディレクトリが生成されます。

Mavenでは、ビルドプロセス中に生成されるファイルやディレクトリをtargetディレクトリに格納します。
このディレクトリには、コンパイルされたクラスファイル、パッケージ化されたアーティファクト(例:JARファイルやWARファイル)、テストの結果などが含まれます。

以下は、mvn installコマンドの一般的な流れです:

1. コンパイル:
ソースコードをコンパイルし、コンパイル済みのクラスファイルをtarget/classesディレクトリに生成します。

2. テスト:
ユニットテストを実行し、テスト結果をtarget/test-classesやtarget/surefire-reportsディレクトリに保存します。

3. パッケージング:
アーティファクト(通常はJARファイル)をtargetディレクトリに生成します。

4. インストール:
生成されたアーティファクトをローカルリポジトリ(通常は~/.m2/repository)にインストールします。

例えば、次のようなディレクトリ構造が生成されます:

my-project/
├── pom.xml
├── src/
└── target/
  ├── classes/
  ├── my-project-1.0-SNAPSHOT.jar
  ├── test-classes/
  └── surefire-reports/

このように、mvn installコマンドを実行することで、自動的にtargetディレクトリが生成され、ビルド成果物やテスト結果が格納されます。

Linuxでログインしているユーザを確認するためのコマンド

Linuxでログインしているユーザを確認するにはどのコマンドを実行する?

whoami

whoamiは、LinuxやUnixシステムで利用できるコマンドで、現在のユーザー名を表示します。

whoamiの実行例

whoamiコマンドは、現在のユーザー名を表示するためのUnix系システム(Linux、macOSなど)のコマンドです。
以下に whoami コマンドの簡単な実行例を示します。

実行例

# LinuxまたはmacOSの場合

1. ターミナルを開く
2. whoami コマンドを入力する

$ whoami

3. 出力が表示される

user_name

具体的な例

例えば、ユーザー名が "test_user" の場合:

$ whoami
test_user

このように、whoami コマンドを実行すると現在ログインしているユーザーの名前が表示されます。

findコマンドで標準エラーを捨てる方法

findコマンドで、標準エラーを捨てて、欲しい結果(標準出力)だけを得るためには何をつける?

2> /dev/nullを後ろに付ける。
例)

find / -name AAA 2> /dev/null

/dev/nullは渡されたものを無にすることができます。
2>とすると、標準エラーを渡すことができるため、これを/dev/nullによって打ち消すことができるわけです。

なぜ/dev/nullで標準エラーを打ち消すことができるのか

/dev/nullは、UnixおよびUnix系オペレーティングシステムで使用される特別なファイルです。
このファイルにデータを書き込むと、それが永久に消去され、読み取りを行っても常に空の結果が得られます。

標準エラー(stderr)を/dev/nullにリダイレクトすると、エラーメッセージが単に破棄され、出力として表示されることはありません。
これは、デバッグやログ出力など、エラーメッセージを無視して良い場合に便利です。
例えば、プログラムが期待どおりに機能しているが、標準エラーには特定のメッセージが表示されるのを避けたい場合などです。

/dev/nullを使用しない場合の具体的な標準エラーの例

例えば、ファイルをコピーする際に、コピー元のファイルが存在しない場合に発生するエラーです。

$ cp non_existent_file.txt destination_directory/
cp: cannot stat 'non_existent_file.txt': No such file or directory

このエラーメッセージは、"non_existent_file.txt" というファイルが見つからないことを示しています。
/dev/nullを使用しない場合、このようなエラーメッセージが標準エラーに表示され、ユーザーに通知されます。

echoで出力した結果ファイルに追記する方法

echoで出力した結果(例えばAAAという文字列)をtest.txtというファイルに追記するにはどうしたら良いですか?

echo AAA >> test.txt

>>はLinuxのリダイレクト記号の1つであり、標準出力結果をファイルにリダイレクトします。既存のファイルに追記するコマンドです。

echoで出力した結果(例えばAAAという文字列)をtest.txtというファイルに新規作成で保存

echo AAA > test.txt

>はLinuxのリダイレクト記号の1つであり、標準出力結果をファイルにリダイレクトします。

Linuxのechoで出力された結果をファイルに保存する方法

echoで出力した結果(例えばAAAという文字列)をtest.txtというファイルに保存するにはどうしたら良いか

結論、以下のようなコマンドで保存ができます。
この場合、AAAという文字がtest.txtに保存されます。

echo AAA > test.txt

>はLinuxのリダイレクト記号の1つであり、標準出力結果をファイルにリダイレクトします。
既存のファイルを上書きするコマンドでもあります。

上書きではなく、ファイルに追記して保存する方法

この場合は以下のようなコマンドになり、「>」ではなく、「>>」を使うことになります。

echo AAA >> test.txt

変数に保存する方法

おまけになりますが、ファイルではなく変数に保存する場合、以下のようにします。

my_var=$(echo "AAA")
echo $my_var

これにより、my_varという変数に"AAA"という文字列が保存され、後で使用できます。

これらの方法を使って、echoの結果を保存することができます。

Linuxのbcコマンドを使い、echoを使った足し算を実行

echoを使った足し算コマンドはどう書くか

echo '1+1' | bc

bcは、Linuxで利用できるコマンドライン計算機です。
bcを使用すると、算術演算子(加算、減算、乗算、除算など)を使用して数値を計算できます。
ただあまり使うことはないので知らない人が多いですよね。

そもそもbcコマンドとは

bc(ベーシック・コンピューター・アルゴリズム)は、UnixおよびUnix系オペレーティングシステムで使用されるコマンドラインの電卓プログラムです。
bcは、任意精度の整数計算および浮動小数点数計算をサポートしており、算術演算、関数、条件式などを扱うことができます。

bcコマンドを使用すると、コマンドラインから数式を入力し、計算結果を出力することができます。
以下は、bcコマンドの基本的な使用例です。

echo "2 + 2" | bc

これは、2 + 2の結果である4を出力します。

bcは、インタラクティブモードでも使用できます。
以下は、bcをインタラクティブモードで起動して使用する方法の例です。

bc

このコマンドを実行すると、bcのプロンプトが表示されます。
そこで、数式を入力し、Enterキーを押すと結果が表示されます。

bcは非常に柔軟で、ユーザーが自在に数式や関数を組み合わせて使用することができます。

bcを使った加算、減算、乗算、除算

以下は、bcを使用して加算、減算、乗算、除算を行う方法です。

1. 加算:

echo "10 + 5" | bc

これは、10に5を加えて15を出力します。

2. 減算:

echo "10 - 5" | bc

これは、10から5を引いて5を出力します。

3. 乗算:

echo "10 * 5" | bc

これは、10を5倍して50を出力します。

4. 除算:

echo "10 / 5" | bc

これは、10を5で割って2を出力します。

bcでは、整数演算と浮動小数点数演算の両方がサポートされています。
整数演算の場合は、bc -lコマンドを使用して、浮動小数点数演算の場合はbcコマンドを使用します。