<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Tsuyoshi Tokuda</title>
    <description>The latest articles on DEV Community by Tsuyoshi Tokuda (@tokuda109).</description>
    <link>https://dev.to/tokuda109</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F43398%2F8e970a1c-bc4d-4cbb-8910-166fb16615a6.png</url>
      <title>DEV Community: Tsuyoshi Tokuda</title>
      <link>https://dev.to/tokuda109</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tokuda109"/>
    <language>en</language>
    <item>
      <title>Github Sponsor機能を使ってESLintに支援した</title>
      <dc:creator>Tsuyoshi Tokuda</dc:creator>
      <pubDate>Thu, 14 May 2020 05:34:02 +0000</pubDate>
      <link>https://dev.to/tokuda109/github-sponsor-eslint-383j</link>
      <guid>https://dev.to/tokuda109/github-sponsor-eslint-383j</guid>
      <description>&lt;p&gt;コードによる貢献もすばらしいとは思いつつ、色々な貢献の方法もあることはいいなぁと思っていました。&lt;br&gt;
今回は以前からずっとやってみたいと思っていた金銭的貢献をGithub Sponsor機能を使って行いました。毎月$5をこのプロジェクトに貢献して、さらに素晴らしいパッケージになることを望みます。&lt;/p&gt;

&lt;p&gt;なぜ&lt;a href="https://eslint.org/"&gt;ESLint&lt;/a&gt;かというと、普段のフロントエンド開発をする時に必ずインストールするパッケージの一番上位のものがESLintだったからです。&lt;br&gt;
しかも、自分の開発スタイルはLintやテストをキチンと通した方法を好んでいるので、ESLintは欠かせません(インストールしないことはありません)。&lt;br&gt;
仕事でもプライベートでも、このライブラリを使っています。&lt;/p&gt;

&lt;p&gt;今回僕からは微々たる貢献ですが、ESLintのさらなる発展に寄与できたら本当に嬉しいです(^o^)&lt;/p&gt;

&lt;p&gt;(&lt;a href="https://github.com/tokuda109"&gt;https://github.com/tokuda109&lt;/a&gt; のSponsoringのところから確認できます。)&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>eslint</category>
      <category>opensource</category>
    </item>
    <item>
      <title>npm version でできること</title>
      <dc:creator>Tsuyoshi Tokuda</dc:creator>
      <pubDate>Tue, 22 Oct 2019 00:40:16 +0000</pubDate>
      <link>https://dev.to/tokuda109/npm-version-l7</link>
      <guid>https://dev.to/tokuda109/npm-version-l7</guid>
      <description>&lt;p&gt;最近 &lt;code&gt;npm version&lt;/code&gt; というコマンドを教えてもらいました。&lt;br&gt;
npm は Node.js のバージョン管理ツールで、&lt;code&gt;npm install&lt;/code&gt; くらいしか使っていないので、こういう使い方があるんだぁと感心しました。そもそもこのコマンド自体を教えてもらって初めて知りました。&lt;br&gt;
ここでは、&lt;code&gt;npm version&lt;/code&gt; の使い方を紹介します(解説は&lt;a href="https://docs.npmjs.com/cli/version"&gt;公式ドキュメント&lt;/a&gt;を元に行います)。&lt;/p&gt;
&lt;h2&gt;
  
  
  npm version
&lt;/h2&gt;

&lt;p&gt;今手元の環境で &lt;code&gt;npm version&lt;/code&gt; を実行すると以下のような出力が得られます。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ npm version
{
  npm: '6.9.0',
  ares: '1.15.0',
  brotli: '1.0.7',
  cldr: '35.1',
  http_parser: '2.8.0',
  icu: '64.2',
  llhttp: '1.1.1',
  modules: '72',
  napi: '4',
  nghttp2: '1.38.0',
  node: '12.1.0',
  openssl: '1.1.1b',
  tz: '2019a',
  unicode: '12.1',
  uv: '1.28.0',
  v8: '7.4.288.21-node.16',
  zlib: '1.2.11'
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  バージョンの更新
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;npm version&lt;/code&gt; は、サブコマンドで以下のものを渡して実行することでバージョンをインクリメントすることができます。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/vuejs/vue"&gt;Vue.js&lt;/a&gt; のリポジトリを手元にダウンロードしてきてリポジトリのルートで実行してみます。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ npm version
{
  vue: '2.6.10',
  npm: '6.9.0',
  ares: '1.15.0',
  brotli: '1.0.7',
  cldr: '35.1',
  http_parser: '2.8.0',
  icu: '64.2',
  llhttp: '1.1.1',
  modules: '72',
  napi: '4',
  nghttp2: '1.38.0',
  node: '12.1.0',
  openssl: '1.1.1b',
  tz: '2019a',
  unicode: '12.1',
  uv: '1.28.0',
  v8: '7.4.288.21-node.16',
  zlib: '1.2.11'
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Git リポジトリ内でじっこうすること、先程のものから &lt;code&gt;package.json&lt;/code&gt; に記載したパッケージのバージョンの表記も追加されています。&lt;/p&gt;

&lt;p&gt;このバージョンをインクリメントすることができます。&lt;br&gt;
バージョンの仕様は &lt;a href="https://semver.org/lang/ja/"&gt;semver&lt;/a&gt; に準拠していて、対象のバージョンナンバーを指定して以下のように実行します(引き続き Vue.js のリポジトリで行っています)。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ npm version patch
v2.6.11
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;バージョン情報を出力してみると:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ npm version
{
  vue: '2.6.11',
  npm: '6.9.0',
  ares: '1.15.0',
  brotli: '1.0.7',
  cldr: '35.1',
  http_parser: '2.8.0',
  icu: '64.2',
  llhttp: '1.1.1',
  modules: '72',
  napi: '4',
  nghttp2: '1.38.0',
  node: '12.1.0',
  openssl: '1.1.1b',
  tz: '2019a',
  unicode: '12.1',
  uv: '1.28.0',
  v8: '7.4.288.21-node.16',
  zlib: '1.2.11'
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;バージョンのインクリメント以外に、Gitのコミット、タグ付けも行われているので確認してみます。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git log
commit 2a5fabccf2199ba09ac5f32f0b73df0bca5462be (HEAD -&amp;gt; dev, tag: v2.6.11)
Author: tokuda109 &amp;lt;example@gmail.com&amp;gt;
Date:   Tue Oct 22 09:32:58 2019 +0900

    2.6.11

... (省略)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;コミット履歴があります。&lt;br&gt;
コミットメッセージを指定する場合は以下のようにします。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ npm version patch -m "Upgrade to %s for reasons"
v2.6.11
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;%s&lt;/code&gt; の部分にバージョンが展開されてコミットされます。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git log
commit 8762348dfa78e420314158c14530fd43241e7d29 (HEAD -&amp;gt; dev, tag: v2.6.11)
Author: tokuda109 &amp;lt;example@gmail.com&amp;gt;
Date:   Tue Oct 22 09:38:51 2019 +0900

    Upgrade to 2.6.11 for reasons

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;以下を実行してタグの一覧を確認してみます。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git tag
0.10.0-rc
0.11.0
... (省略)
v2.6.10
v2.6.11
... (省略)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;タグ付けもされていることが確認できました。&lt;/p&gt;

&lt;p&gt;次にメジャーバージョンを上げてみます。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ npm version major
v3.0.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;再度バージョン情報を出力してみると:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ npm version
{
  vue: '3.0.0',
  npm: '6.9.0',
  ares: '1.15.0',
  brotli: '1.0.7',
  cldr: '35.1',
  http_parser: '2.8.0',
  icu: '64.2',
  llhttp: '1.1.1',
  modules: '72',
  napi: '4',
  nghttp2: '1.38.0',
  node: '12.1.0',
  openssl: '1.1.1b',
  tz: '2019a',
  unicode: '12.1',
  uv: '1.28.0',
  v8: '7.4.288.21-node.16',
  zlib: '1.2.11'
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;期待どおりの動作をしていることが確認できました。&lt;/p&gt;

&lt;p&gt;今回紹介した以外にも以下のバージョンナンバーを指定してインクリメントすることができます。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;major (&lt;code&gt;v2.6.10&lt;/code&gt; -&amp;gt; &lt;code&gt;v3.0.0&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;minor (&lt;code&gt;v2.6.10&lt;/code&gt; -&amp;gt; &lt;code&gt;v2.7.0&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;patch (&lt;code&gt;v2.6.10&lt;/code&gt; -&amp;gt; &lt;code&gt;v2.6.11&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;premajor (&lt;code&gt;v2.6.10&lt;/code&gt; -&amp;gt; &lt;code&gt;v3.0.0-0&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;preminor (&lt;code&gt;v2.6.10&lt;/code&gt; -&amp;gt; &lt;code&gt;v2.7.0-0&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;prepatch (&lt;code&gt;v2.6.10&lt;/code&gt; -&amp;gt; &lt;code&gt;v2.6.11-0&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  npm version prerelease
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;npm version prerelease&lt;/code&gt; は &lt;code&gt;premajor&lt;/code&gt;、&lt;code&gt;preminor&lt;/code&gt;、&lt;code&gt;prepatch&lt;/code&gt; によって付与されたプレリリースバージョンをインクリメントするためのサブコマンドです。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ npm version prepatch
v2.6.11-0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;次に以下のように実行してみます:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ npm version prerelease
v2.6.11-1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  参考
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.npmjs.com/cli/version"&gt;npm-version&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://semver.org/lang/ja/"&gt;セマンティック バージョニング&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://qiita.com/minamo173/items/8b8b27bc6ecd17ad925e"&gt;npm versionコマンドで出来ること。 - Qiita&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>npm</category>
      <category>node</category>
      <category>git</category>
    </item>
    <item>
      <title>background-size を使って画像を適切な枠に収めるのは object-fit を使ったらとても簡単だった</title>
      <dc:creator>Tsuyoshi Tokuda</dc:creator>
      <pubDate>Wed, 31 Jul 2019 00:08:56 +0000</pubDate>
      <link>https://dev.to/tokuda109/background-size-object-fit-k00</link>
      <guid>https://dev.to/tokuda109/background-size-object-fit-k00</guid>
      <description>&lt;p&gt;CSS のプロパティに &lt;code&gt;object-fit&lt;/code&gt; というのがあるのは知っていたけど便利だと思ったので調べてみた。&lt;/p&gt;

&lt;p&gt;アイテムが複数カラムで一覧上にレイアウトされている場合、画像サイズの違いから段違いにならないようにするために画像が表示されている部分の枠のサイズを固定していることが多いと思う。&lt;br&gt;
固定した枠に対して画像をアスペクト比を保ったまま、枠サイズに隙間が出ないようにしたり、隙間が出ても画像の切り捨て部分がないように伸縮させて表示させたりする。&lt;/p&gt;
&lt;h2&gt;
  
  
  background-size を使った方法
&lt;/h2&gt;

&lt;p&gt;今までは以下のようなマークアップで表示させていた。&lt;code&gt;img&lt;/code&gt; 要素で一般的に表示する方法だと、JavaScript で画像ダウンロードしたものを枠に対してサイズ調整をしてはめていかなければいけません。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;ul class="items"&amp;gt;
  &amp;lt;li class="item"&amp;gt;
    &amp;lt;a&amp;gt;
      &amp;lt;img
        class="item__img"
        src="&amp;lt;base64エンコードした1pxの透明なダミー画像&amp;gt;"
        style="background-image: url(&amp;lt;画像URL&amp;gt;);" /&amp;gt;
    &amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.item__img {
  background-position: center center;
  background-repeat: no-repeat;
  background-size: contain;
  height: 200px;
  width: 200px;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;このように、HTML では &lt;code&gt;img&lt;/code&gt; 要素の &lt;code&gt;src&lt;/code&gt; 属性にbase64エンコードした1pxの透明なダミー画像で表示させて、&lt;code&gt;style&lt;/code&gt; 属性で &lt;code&gt;background-image&lt;/code&gt; を指定する。次に CSS で &lt;code&gt;background-size: contain;&lt;/code&gt; を指定することで、img 要素で指定した背景画像に対してサイズの伸縮をさせているので、手数としては多すぎる。&lt;/p&gt;

&lt;h2&gt;
  
  
  object-fit を使った方法
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;object-fit&lt;/code&gt; を使う場合は、もっと簡単になる。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;ul class="items"&amp;gt;
  &amp;lt;li class="item"&amp;gt;
    &amp;lt;a&amp;gt;
      &amp;lt;img
        class="item__img"
        src="&amp;lt;画像URL&amp;gt;" /&amp;gt;
    &amp;lt;/a&amp;gt;
  &amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.item__img {
  height: 200px;
  object-fit: contain;
  width: 200px;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;img 要素の CSS のクラスで &lt;code&gt;object-fit: contain;&lt;/code&gt; と宣言すればいい。&lt;br&gt;
このような宣言を書くことで、img 要素の中身(この場合は画像)がどのように枠に対して伸縮されて表示されるかを指定することができる。&lt;/p&gt;

&lt;h2&gt;
  
  
  まとめ
&lt;/h2&gt;

&lt;p&gt;すごく便利なプロパティだが、Internet Explorerは使えないので、採用する場合はターゲットブラウザを確認する必要がある。&lt;/p&gt;

&lt;p&gt;また、今回用いたコードは&lt;a href="https://github.com/tokuda109/playground/tree/master/object-fit"&gt;Github&lt;/a&gt;で公開している。&lt;/p&gt;

&lt;h2&gt;
  
  
  参照
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/ja/docs/Web/CSS/object-fit"&gt;object-fit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>css</category>
    </item>
  </channel>
</rss>
