コードを書く日々:フリーランスエンジニアの技術メモ

何度も同じことをググってしまう自分の備忘録です。何か調査した際には、そのエッセンスを記事としてまとめ、とりあえず共有することを心がけています。

Vue.jsでクラス名を動的に設定する (class名の最初の文字列を固定)

Vue.jsでクラス名を動的に設定する方法

Vue.jsで動的にクラス名を設定するには、v-bindディレクティブを使用します。名前の最初の文字列を固定するには、文字列連結を使用して、名前の最初の文字列と動的な部分を結合します。

例えば、名前の最初の文字列をmy-class-とし、動的な部分をdataオブジェクトの変数classNameとします。以下のようにv-bindディレクティブを使用して、クラス名を設定できます。

<div v-bind:class="'my-class-' + className">...</div>

これにより、my-class-の後に、dataオブジェクトの変数classNameの値が動的に設定されます。

また、ES6のテンプレートリテラルを使用することもできます。以下のように、バッククォート(`)で文字列を囲み、${}で変数を埋め込むことができます。

<div v-bind:class="`my-class-${className}`">...</div>

コロンを使用して省略形で書くこともできます

<div :class="'my-class-' + className">...</div>
<div :class="`my-class-${className}`">...</div>

少し応用

クラス名の設定が複雑になる場合や、複数のクラスを動的に適用する場合には、オブジェクト構文や配列構文を使用することも可能です。

オブジェクト構文では、クラス名をキーとし、そのクラスを適用するかどうかをブール値で指定します。以下に一例を示します。

<div v-bind:class="{ active: isActive, 'text-danger': hasError }">...</div>

ここで、isActivehasErrorはdataオブジェクトの変数です。

これらがtrueであれば、それぞれのクラス名activetext-dangerが適用されます。 falseであればそのclass は付与されません。

配列構文を使用すれば、複数のクラスを動的に適用することが可能です。

<div v-bind:class="[classA, classB]">...</div>

上記のコードでは、classAclassBはdataオブジェクトのプロパティで、それぞれの値がクラス名として適用されます。 これにより、classAとclassBの値が変更されると、それに応じて適用されるクラスも変更されます。

また、配列構文では条件付きのクラスも利用することができます。以下にその例を示します。

<div v-bind:class="[isActive ? activeClass : '', errorClass]">...</div>

この例では、isActivetrueであればactiveClassが適用され、falseであれば何も適用されません。そして、errorClassは常に適用されます。

さらに、配列内部でオブジェクト構文を使用することも可能です。これにより、より複雑な条件でクラスを動的に適用することができます。

<div v-bind:class="[{ active: isActive }, errorClass]">...</div>

上記のコードでは、isActivetrueであればactiveクラスが適用され、errorClassは常に適用されます。

これらの配列構文を活用することで、Vue.jsにおけるクラスの動的な設定がより柔軟に可能となります。

その他、よく使うもの

条件式

条件式を使用することで、複数の条件に基づいてクラスを適用することができます。たとえば、ある条件と別の条件が同時に真である場合にクラスを適用するような場合です。

<div :class="{ 'class-name': conditionA && conditionB }"></div>

この例では、conditionAconditionBが両方ともtrueの場合にclass-nameが適用されます。

<div :class="{ 'high-counter': counter >= 30 }"></div>

この例では、counterの値が30以上の場合に、high-counterというクラスがこのdiv要素に適用されます。 counterの値が30未満の場合には、このクラスは適用されません。

三項演算子

三項演算子を使用して、異なるクラスを適用する例は以下の通りです。

<div :class="counter >= 30 ? 'high-counter' : 'low-counter'"></div>

まとめ

以上です。

Vue.jsでは、v-bindディレクティブを利用してクラス名を動的に設定することができます。 文字列連結、テンプレートリテラル、オブジェクト構文、配列構文を駆使することで、様々なシナリオに応じた柔軟なクラスの適用が可能です。 また、条件式や三項演算子を用いることで、より詳細な条件に基づいたクラスの適用が行えます。

これらのテクニックを使いこなすことで、Vue.jsアプリケーションのUIをより動的かつ表現豊かに構築することができるでしょう。

Sassで親セレクタのクラス名を含めた要素を選択する

Sassでは、親要素に指定された複数のクラス名のうち、特定のクラス名を持つ要素を選択するために、セレクタの複合クラスを使用します。

例えば、class属性が "a b" となっている要素に対して、"a"クラスの中で"b"クラスを選択する場合、以下のように書くことができます。

.a {
  /* aクラスのスタイル */
  &.b {
    /* aクラスかつbクラスを持つ要素のスタイル */
  }
}

上記のSassコードでは、"&"を使用して親要素を参照し、"."を使用してクラス名を指定しています。"&.b"と書くことで、親要素が"a"クラスかつ"b"クラスを持つ要素を選択することができます。

例えば、以下のHTMLコードがある場合:

<div class="a b">...</div>

上記のSassコードを適用すると、"a"クラスのスタイルが全ての要素に適用され、"a"クラスかつ"b"クラスを持つ要素には、"a.b"セレクタのスタイルが適用されます。

.a {
  /* aクラスのスタイル */
}
.a.b {
  /* aクラスかつbクラスを持つ要素のスタイル */
}

上記のCSSコードが生成されます。

IntelliJ IDEAでGitのBase Repositoryを変更する方法

設定を触ったりアカウント連携したりしてるうちにbaseが変更されたときの対応です。

IntelliJ IDEAでGitのbase repositoryを変更するには、以下の手順に従ってください。

  1. IntelliJ IDEAを開き、Gitのリポジトリを開きます。
  2. 右側にある「Git:」をクリックします。
  3. 「Git Repositories」ウィンドウで、変更したいリポジトリを選択します。
  4. 「Branches」セクションで、現在のブランチを選択します。
  5. 右クリックして、「Git Repository Settings」を選択します。
  6. 「Git Repository Settings」ダイアログボックスが表示されます。 「Remotes」タブを選択します。
  7. 既存のリモートリポジトリを削除するには、選択してからマイナス(-)アイコンをクリックします。
  8. 新しいリモートリポジトリを追加するには、プラス(+)アイコンをクリックして、新しいリポジトリを追加します。
  9. 新しいリモートリポジトリのURLを入力し、OKをクリックします。

これで、Gitのbase repositoryを変更することができます。

IntelliJ IDEAのリリース周期について

IntelliJ IDEAのリリースサイクル

IntelliJ IDEAは、Community Edition(無償)とUltimate Edition(有償)の2つのエディションがあります。

IntelliJ IDEAは、機能追加やバグ修正などのアップデートを定期的にリリースしています。IntelliJ IDEAのリリースサイクルは通常、1〜3か月ごとにメジャーバージョンがリリースされます。また、リリースサイクルは製品のエディションによって異なります。

エディション リリースサイクル
Community Edition 毎月リリース
Ultimate Edition 1年に1回のメジャーバージョンリリースと、その間に定期的なマイナーアップデートがリリース

IntelliJ IDEAのリリースサイクルには変更が加えられる場合があります。最新のリリースサイクル情報は、JetBrains社の公式サイトで確認できます。

www.jetbrains.com

Sassファイルの分割にあたって考慮すべき要因

Sassファイルを分割する際に考慮すべきいくつかの要因です。

  1. プロジェクトの構造に基づく分割 プロジェクトの構造に基づく分割は、特定のフォルダ内に関連するファイルをグループ化することを意味します。たとえば、ヘッダーやフッターといったセクションは、それぞれ別々のファイルに分割することができます。

  2. リセット、ベース、ユーティリティクラス リセット、ベース、ユーティリティクラスは、Sassファイルを分割する上で非常に重要です。これらのクラスは、CSSのプロパティを定義するための基本的なスタイルを提供します。これらのファイルを分割することで、コードの整理や再利用が可能になります。

  3. 構成要素の分割 Webサイトやアプリケーションの特定の構成要素に基づいてファイルを分割することもできます。たとえば、フォーム、ナビゲーション、タイポグラフィなどの構成要素に基づく分割が考えられます。

  4. レスポンシブデザインに基づく分割 レスポンシブデザインを採用する場合、Sassファイルをブレークポイントに基づいて分割することができます。これにより、モバイル、タブレット、デスクトップなど、異なるデバイスに対応したスタイルを適用することができます。

以上のように、Sassファイルを適切に分割することで、コードの可読性とメンテナンス性を向上させることができます。ただし、プロジェクトによって最適な分割方法は異なるため、状況に応じて最適な方法を選択することが重要です。

マークダウンで連番を振る際、改行しても連番を維持するには

マークダウンで連番を振る際、途中で改行や別の要素を挟むと、通常は連番がリセットされます。しかし、スペースを入れることで、連番を続けることができます。

以下に例を示します。

1. これは項目1です。
1. これは項目2です。
1. これは項目3です。
1. これは項目4です。
1. これは項目5です。
 
    hogehoge

1. これは項目6です。
1. これは項目7です。
1. これは項目8です。
  1. これは項目1です。
  2. これは項目2です。
  3. これは項目3です。
  4. これは項目4です。
  5. これは項目5です。

    hogehoge

  6. これは項目6です。

  7. これは項目7です。
  8. これは項目8です。

上記の例では、項目5と項目6の間に改行を入れ、項目6からはじめるためにスペースを入れました。このようにすることで、項目6以降の番号がリセットされず、連番を維持することができます。

この方法は、文章の読みやすさや美しさを損なうことなく、意味のある構造を保ったまま連番を続けることができます。また、手動で番号を変更する必要もなく、簡単に行うことができます。

Mac + Google 日本語入力 + IntelliJ + IdeaVim環境で IMEを無効化する

キーバインドの記事が色々出てくるけどMacだと動かないので結局IME設定を変更する

Google日本語入力で「ESC」キーを押すとIMEを無効化する設定

  1. Google日本語入力の設定画面を開きます。

  2. 「環境設定」をクリックします。

  3. 「キー設定」の「編集」をクリックします。

  4. エントリーを追加

    必要に応じて編集 or 追加します

モード 入力キー コマンド
変換前入力中 ESC(Escape) キャンセル後にIMEを無効化
変換中 ESC(Escape) キャンセル後にIMEを無効化
入力文字なし ESC(Escape) キャンセル後にIMEを無効化
  1. 「OK」をクリックして設定を保存します。

以上の手順に従って設定を行うと、Google日本語入力で「ESC」キーを押すとIMEが無効化されます。