<?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: kaede</title>
    <description>The latest articles on DEV Community by kaede (@kaede_io).</description>
    <link>https://dev.to/kaede_io</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%2F193513%2F03a87f5f-e188-46f8-a1d1-c9fb3b876007.jpg</url>
      <title>DEV Community: kaede</title>
      <link>https://dev.to/kaede_io</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kaede_io"/>
    <language>en</language>
    <item>
      <title>Excel 基礎 Part 04 -- 表示系のショートカットを学習する</title>
      <dc:creator>kaede</dc:creator>
      <pubDate>Sun, 23 Mar 2025 08:53:54 +0000</pubDate>
      <link>https://dev.to/kaede_io/excel-ji-chu-part-04-biao-shi-xi-nosiyotokatutowoxue-xi-suru-1n58</link>
      <guid>https://dev.to/kaede_io/excel-ji-chu-part-04-biao-shi-xi-nosiyotokatutowoxue-xi-suru-1n58</guid>
      <description>&lt;h2&gt;
  
  
  表示系のショートカット
&lt;/h2&gt;

&lt;h3&gt;
  
  
  表示倍率を 25 % 拡大する
&lt;/h3&gt;

&lt;p&gt;JIS キーの場合&lt;br&gt;
Ctrl Alt Shift -&lt;/p&gt;

&lt;p&gt;US キーの場合&lt;br&gt;
Ctrl Alt +&lt;/p&gt;

&lt;h3&gt;
  
  
  表示倍率を 25 % 拡大する
&lt;/h3&gt;

&lt;p&gt;JIS キーの場合&lt;br&gt;
Ctrl Alt -&lt;/p&gt;

&lt;p&gt;US キーの場合&lt;br&gt;
Ctrl Alt -&lt;/p&gt;

&lt;p&gt;＝＝＝＝＝＝＝＝＝＝＝＝&lt;/p&gt;

&lt;h2&gt;
  
  
  ビューの変更系のショートカット
&lt;/h2&gt;

&lt;p&gt;・Alt → w が起点&lt;/p&gt;

&lt;h3&gt;
  
  
  改ページプレビューなどの切り替え
&lt;/h3&gt;

&lt;p&gt;・Alt → w →  L or I or P&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw8d8zi6sl06n6gvfiiho.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw8d8zi6sl06n6gvfiiho.png" alt="Image description" width="229" height="111"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ウインドウ枠の固定
&lt;/h3&gt;

&lt;p&gt;・Alt → w → F → F&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyx8pltbmn02tuktzk8vs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyx8pltbmn02tuktzk8vs.png" alt="Image description" width="482" height="272"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;下記の例では、B2 にカーソルがある状態で固定すると、スクロール時に行数も列タイトルも固定される。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftona3b6wzangseym8z3j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftona3b6wzangseym8z3j.png" alt="Image description" width="268" height="219"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>microsoft</category>
      <category>excel</category>
    </item>
    <item>
      <title>Excel 基礎 Part 03 -- 作成したマクロ関数を開発タブから実行する</title>
      <dc:creator>kaede</dc:creator>
      <pubDate>Sun, 17 Nov 2024 03:53:07 +0000</pubDate>
      <link>https://dev.to/kaede_io/excel-ji-chu-part-03-zuo-cheng-sitamakuroguan-shu-wokai-fa-tabukarashi-xing-suru-22pb</link>
      <guid>https://dev.to/kaede_io/excel-ji-chu-part-03-zuo-cheng-sitamakuroguan-shu-wokai-fa-tabukarashi-xing-suru-22pb</guid>
      <description>&lt;h2&gt;
  
  
  やること
&lt;/h2&gt;

&lt;p&gt;作成済みのマクロを、どのファイルにおいても、エクセルのリボンからクリックで実行できるようにする&lt;/p&gt;

&lt;h2&gt;
  
  
  手順
&lt;/h2&gt;

&lt;p&gt;関数の存在するシートを、Excel アドイン(*.xlam) として保存する&lt;br&gt;
以下の通り。F12 で。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxojwbwamde881jqxow9c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxojwbwamde881jqxow9c.png" alt="Image description" width="800" height="389"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;エクセルのオプションからアドインを開くと、自分の作った関数が確認できる&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp32x5xnfhvjr4nuwgxbp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp32x5xnfhvjr4nuwgxbp.png" alt="Image description" width="639" height="344"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;設定(G)をクリックする&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmh08mlu398o88ait6pm8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmh08mlu398o88ait6pm8.png" alt="Image description" width="800" height="304"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;自分の作ったアドインはデフォルトではオフになっている。&lt;br&gt;
オンにする。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpxswmomqihchk9cf9oqf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpxswmomqihchk9cf9oqf.png" alt="Image description" width="354" height="208"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;これをリボンに追加する&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foo72xusslhuj18dqczlu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foo72xusslhuj18dqczlu.png" alt="Image description" width="800" height="575"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;すると、リボンから実行できる&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftrlkvhy0rrenoe0lfvwo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftrlkvhy0rrenoe0lfvwo.png" alt="Image description" width="800" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;以上&lt;/p&gt;

</description>
      <category>microsoft</category>
      <category>excel</category>
      <category>vba</category>
    </item>
    <item>
      <title>Excel 基礎 Part 02 -- マクロで Hello World</title>
      <dc:creator>kaede</dc:creator>
      <pubDate>Wed, 23 Oct 2024 14:27:55 +0000</pubDate>
      <link>https://dev.to/kaede_io/excel-ji-chu-part-02-makurode-hello-world-1915</link>
      <guid>https://dev.to/kaede_io/excel-ji-chu-part-02-makurode-hello-world-1915</guid>
      <description>&lt;h2&gt;
  
  
  概要
&lt;/h2&gt;

&lt;p&gt;エクセルのマクロの書き方として、以下を説明する&lt;/p&gt;

&lt;p&gt;・エクセルのマクロのエディタを表示する&lt;br&gt;
・メッセージボックスで文字を出力する&lt;br&gt;
・デバック用のウインドウに文字を出力する&lt;br&gt;
・セル内のボタンの押下でマクロを実行する&lt;/p&gt;

&lt;h2&gt;
  
  
  開発タブの表示
&lt;/h2&gt;

&lt;p&gt;Alt &amp;gt; F &amp;gt; T でエクセルのオプションが開く。&lt;/p&gt;

&lt;p&gt;エクセルのオプションを開くと、リボンのユーザー設定がある。&lt;br&gt;
デフォルトでは以下の画像のように、開発タブの表示のチェックボックスが非表示になっている&lt;/p&gt;

&lt;p&gt;これにチェックを入れると、エクセルの上部のタブに、開発タブが表示される。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjigwxiylmm6sfn1dmaye.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjigwxiylmm6sfn1dmaye.png" alt="Image description" width="800" height="630"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftqumy4pvwooouzq9j3ti.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftqumy4pvwooouzq9j3ti.png" alt="Image description" width="674" height="178"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  マクロのモジュールの作成
&lt;/h2&gt;

&lt;p&gt;Alt &amp;gt; L &amp;gt; V &lt;br&gt;
or&lt;br&gt;
Alt F11 で Visual Basic のエディタを開く&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjakyy379s25go264tvj2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjakyy379s25go264tvj2.png" alt="Image description" width="800" height="179"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fljev1pm1kbs4xdctnwnv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fljev1pm1kbs4xdctnwnv.png" alt="Image description" width="754" height="247"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Alt + I &amp;gt; M でモジュールを作成する&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft5djn28jud12b1t09n33.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft5djn28jud12b1t09n33.png" alt="Image description" width="178" height="114"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;モジュール名はここで変更できる&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbtgm8v1b4uag6bqshskb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbtgm8v1b4uag6bqshskb.png" alt="Image description" width="178" height="114"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Hello World (MsgBox)
&lt;/h2&gt;

&lt;p&gt;Sub と MsgBox で HTML の alert のようなコードを書く&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff9inp3584hwb6yuuuckz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff9inp3584hwb6yuuuckz.png" alt="Image description" width="178" height="114"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;F5 を押すと、実行できる&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr3db82t6d572ybl5djo9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr3db82t6d572ybl5djo9.png" alt="Image description" width="299" height="334"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Debug.Print
&lt;/h2&gt;

&lt;p&gt;HTML の console.log 相当は Debug.Print で行う&lt;/p&gt;

&lt;p&gt;まず、表示＞イミディエイトウィンドウをクリックする&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmslwxateke5kdqge06db.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmslwxateke5kdqge06db.png" alt="Image description" width="593" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;イミディエイトウィンドウが表示される&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmmzjozcdzxow33o8mibm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmmzjozcdzxow33o8mibm.png" alt="Image description" width="800" height="291"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;関数内部に Debug.Print を記載し、F5 で実行すると、イミディエイトウィンドウに表示される。&lt;br&gt;
これでデバックが楽にできる。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkcn3bifnhwra3wsmnuga.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkcn3bifnhwra3wsmnuga.png" alt="Image description" width="800" height="319"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  セル内のボタンの押下でマクロを実行する
&lt;/h2&gt;

&lt;p&gt;Alt &amp;gt; L &amp;gt; I &amp;gt; B でボタンを作成できる&lt;/p&gt;

&lt;p&gt;右クリック &amp;gt; マクロの登録で、作成済みのマクロのモジュールをボタンに登録できる&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fojmjj24lmdwxs6646wwr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fojmjj24lmdwxs6646wwr.png" alt="Image description" width="672" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;その後にボタンを押すと、登録したマクロが実行される。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4x9ceyacld2f5n3zimv9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4x9ceyacld2f5n3zimv9.png" alt="Image description" width="800" height="620"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;以上、マクロを動かすまでの方法でした。&lt;/p&gt;

</description>
      <category>excel</category>
      <category>microsoft</category>
    </item>
    <item>
      <title>Excel 基礎 Part 01 -- シート系のショートカット</title>
      <dc:creator>kaede</dc:creator>
      <pubDate>Fri, 15 Mar 2024 05:15:13 +0000</pubDate>
      <link>https://dev.to/kaede_io/excel-ji-chu-part-01-sitoxi-nosiyotokatuto-313i</link>
      <guid>https://dev.to/kaede_io/excel-ji-chu-part-01-sitoxi-nosiyotokatuto-313i</guid>
      <description>&lt;h1&gt;
  
  
  シート系のショートカット（連続コマンド）
&lt;/h1&gt;

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

&lt;p&gt;以下をカエデは頻繁に使っています&lt;br&gt;
・シートのコピー ← Alt &amp;gt; h &amp;gt; o &amp;gt; m &amp;gt; Alt + c &amp;gt; Alt + b &amp;gt; ↓&lt;br&gt;
・シートの名前のコピー ← Alt &amp;gt; h &amp;gt; o &amp;gt; r &amp;gt; ctrl c &amp;gt; esc&lt;br&gt;
・現在のシートの移動 ← ctrl PageUp/PageDown&lt;/p&gt;

&lt;h2&gt;
  
  
  現在の（アクティブ）なシートの移動
&lt;/h2&gt;

&lt;p&gt;・Ctrl (PageUp or PageDown)&lt;/p&gt;

&lt;h2&gt;
  
  
  シートの複数選択
&lt;/h2&gt;

&lt;p&gt;・Shift Ctrl + (PageUp or PageDown)&lt;/p&gt;

&lt;p&gt;選択後は、以下の画像のようになります&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8o0zwbvl92scqoe1j34l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8o0zwbvl92scqoe1j34l.png" alt="Image description" width="486" height="60"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  シートの挿入
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Shift F11
&lt;/h3&gt;

&lt;p&gt;一発で、現在のシートの直前に新規シートが挿入される。&lt;br&gt;
挿入以外では、シート操作を一発で行うキーは存在しない。&lt;/p&gt;

&lt;p&gt;挿入前&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F856vchbbpcfteyx31pj1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F856vchbbpcfteyx31pj1.png" alt="Image description" width="383" height="78"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;挿入後&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhoak95prkonn4jw1jf3a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhoak95prkonn4jw1jf3a.png" alt="Image description" width="442" height="70"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Alt H I S
&lt;/h3&gt;

&lt;p&gt;順を追ってシートが挿入される。&lt;/p&gt;

&lt;p&gt;Alt&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw75sgj8xd54ak3m3cyk7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw75sgj8xd54ak3m3cyk7.png" alt="Image description" width="800" height="152"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;H&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn35lsi5pokk7uhpqbmoh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn35lsi5pokk7uhpqbmoh.png" alt="Image description" width="800" height="166"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmj7ahoils8709ag0xbfb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmj7ahoils8709ag0xbfb.png" alt="Image description" width="800" height="174"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;S&lt;/p&gt;

&lt;p&gt;挿入後&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvsz7gj5dbase63bfcgj7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvsz7gj5dbase63bfcgj7.png" alt="Image description" width="615" height="86"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  シートの削除
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Alt H D S
&lt;/h3&gt;

&lt;p&gt;シートの挿入の Alt H I S と同じ手順。&lt;/p&gt;

&lt;p&gt;Alt H D S&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkr3hwng6zgy4axuthqz9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkr3hwng6zgy4axuthqz9.png" alt="Image description" width="800" height="195"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;削除後&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4bwpxbah6bszhk9u9klg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4bwpxbah6bszhk9u9klg.png" alt="Image description" width="534" height="76"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  シートの名前変更
&lt;/h2&gt;

&lt;p&gt;概ね、上記と同じ手順。&lt;/p&gt;

&lt;p&gt;Alt H O R&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3ro0x8g33mbyw1q9x1hu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3ro0x8g33mbyw1q9x1hu.png" alt="Image description" width="800" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;名前変更後&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs1x98c26kgri0vh803xz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs1x98c26kgri0vh803xz.png" alt="Image description" width="546" height="70"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  シートの(位置の)移動
&lt;/h2&gt;

&lt;p&gt;概ね、上記と同じ手順。&lt;/p&gt;

&lt;p&gt;Alt H O M で以下のモーダルが開く&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsm3d99lf7fhxb9cwg6hv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsm3d99lf7fhxb9cwg6hv.png" alt="Image description" width="307" height="342"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;挿入先を決め、OK をクリック or Enter&lt;/p&gt;

&lt;p&gt;移動後&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhq39418f167fta30zkao.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhq39418f167fta30zkao.png" alt="Image description" width="524" height="57"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  シートのコピー(の挿入)
&lt;/h2&gt;

&lt;p&gt;上記の操作でモーダルを開き挿入先を決める&lt;br&gt;
Alt C でコピーを有効化する&lt;/p&gt;

&lt;p&gt;OK を選択して Enter&lt;/p&gt;

&lt;p&gt;コピー作成後&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwvhgbwx2g2clexz6esph.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwvhgbwx2g2clexz6esph.png" alt="Image description" width="620" height="53"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  シート名をシート内部に表示する
&lt;/h2&gt;

&lt;p&gt;=MID(CELL("filename"),FIND("]",CELL("filename"))+1,255)&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;格納フォルダの絶対パス / [ファイル名]シート名 の取得&lt;/li&gt;
&lt;li&gt;1. の ] の次の位置の取得&lt;/li&gt;
&lt;li&gt;1. の中身を 2. の位置から 255 文字まで取得する&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;これで、シート名が取得できる&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fogrmx8prbodr14946q0a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fogrmx8prbodr14946q0a.png" alt="Image description" width="800" height="119"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ファイル名をシート内部に表示する
&lt;/h2&gt;

&lt;p&gt;=MID(CELL("filename"), FIND("[", CELL("filename")) + 1, FIND("]", CELL("filename")) - FIND("[", CELL("filename")) - 1)&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;FIND("[", CELL("filename")) + 1 &lt;br&gt;
フルパス中の [ の直後の位置を取得&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;FIND("]", CELL("filename")) - FIND("[", CELL("filename")) - 1 &lt;br&gt;
[ と ] の間の文字数(ファイル名の文字数)を取得&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;MID(CELL("filename"), FIND("[", CELL("filename")) + 1,&lt;br&gt;&lt;br&gt;
FIND("]", CELL("filename")) - FIND("[", CELL("filename")) - 1 )&lt;br&gt;
「フルパス」の「 [ の直後の位置」から、「ファイル名の文字数」を取得&lt;br&gt;
よって、ファイル名が過不足なく取得できる。&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc45bt6yc4mgoju8c4wg4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc45bt6yc4mgoju8c4wg4.png" alt="Image description" width="800" height="130"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>windows</category>
      <category>microsoft</category>
      <category>excel</category>
    </item>
    <item>
      <title>Excel 基礎 Part 00 - Mac のプログラマーから Win のエクセルのプロへ</title>
      <dc:creator>kaede</dc:creator>
      <pubDate>Fri, 15 Mar 2024 04:51:43 +0000</pubDate>
      <link>https://dev.to/kaede_io/excel-ji-chu-part-00-mac-nopuroguramakara-win-noekuserunopurohe-dno</link>
      <guid>https://dev.to/kaede_io/excel-ji-chu-part-00-mac-nopuroguramakara-win-noekuserunopurohe-dno</guid>
      <description>&lt;h1&gt;
  
  
  Mac のプログラマーから Win のエクセルのプロへ
&lt;/h1&gt;




&lt;h2&gt;
  
  
  前提
&lt;/h2&gt;

&lt;p&gt;ベンチャーの Web エンジニアから、大手 SIer にキャリアチェンジする際に、必要となったもの備忘録。&lt;/p&gt;

&lt;p&gt;SIer としてキーボード周りどうするべきかを記載する&lt;/p&gt;




&lt;h2&gt;
  
  
  キーボード
&lt;/h2&gt;

&lt;p&gt;結論：Windows の フルキーボードを使うこと。&lt;/p&gt;

&lt;p&gt;SIer では JIS キーボードユーザーが 99% 。US キーボードへの理解がない。&lt;br&gt;
（Web エンジニアでは、US キーボードや 自作キーボードを使っていても問題がないのとは真逆。）&lt;/p&gt;

&lt;p&gt;また、SIer は 90% 以上の業務をエクセルで行う。&lt;br&gt;
エクセルの操作には F1~F9 キーや PageUp/Down Home/End キーが必須となる。&lt;br&gt;
それらのキーを省いているコンパクトな HHKB では速度が出せない。&lt;/p&gt;

&lt;p&gt;よって、US キーボードの HHKB US モデルをあきらめ、エクセルの為に Realforce JIS モデルを購入した。&lt;/p&gt;

&lt;p&gt;追記：コンサルではモニター・キーボードを使わない派閥も多い。（最初の上司がそれだった）&lt;br&gt;
会議室やタクシー内部でもパフォーマンスを最大化する為だと思われる。&lt;/p&gt;




&lt;h2&gt;
  
  
  キーバインド
&lt;/h2&gt;

&lt;p&gt;結論：Excel最適の為、Shift &amp;amp; Space と Ctrl &amp;amp; Space は割り当てナシとする&lt;/p&gt;

&lt;p&gt;以下、Windows 11 の設定画面より&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7fhwypve4sf0jd2rpnwq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7fhwypve4sf0jd2rpnwq.png" alt=" " width="661" height="693"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Web エンジニア時代は Ctrl Space で かな/英 の変換を行ってきた。&lt;br&gt;
（Mac がメインとなるため、互換性を持つため）&lt;/p&gt;

&lt;p&gt;一方 SIer では Ctrl Space は封印する&lt;br&gt;
（Windows 及び Excel がメインツールとなり、Ctrl Space を変換に割り当てていると、Excel で Ctrl Space を押下した時に 列選択が機能せず、作業効率が落ちる為）&lt;/p&gt;

&lt;p&gt;同様に Shift Space（半角スペース）も封印する。&lt;br&gt;
Excel の行選択の機能を優先する為&lt;/p&gt;

&lt;p&gt;※話題が逸れるが、スペースは全角を多めに使う。体裁を整えるのに都合がいいため。&lt;br&gt;
Webエンジニアではバグを恐れ、基本半角が流行っていたのとは対称的だ。&lt;/p&gt;




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

&lt;p&gt;Mac のプログラマーから Win のエクセルのプロへ転身するため、以下のことを行った&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;キーボード：HHKB(US) -&amp;gt; Realforce(JIS)&lt;/li&gt;
&lt;li&gt;英かな変換：Ctrl Space -&amp;gt; 半角/全角&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>windows</category>
      <category>microsoft</category>
      <category>excel</category>
    </item>
    <item>
      <title>Windows 基礎 Part 02 -- CTRL + SPACE で英かな切り替えする</title>
      <dc:creator>kaede</dc:creator>
      <pubDate>Mon, 13 Nov 2023 02:12:41 +0000</pubDate>
      <link>https://dev.to/kaede_io/windows-ji-chu-part-02-ctrl-space-deying-kanaqie-riti-esuru-512m</link>
      <guid>https://dev.to/kaede_io/windows-ji-chu-part-02-ctrl-space-deying-kanaqie-riti-esuru-512m</guid>
      <description>&lt;h2&gt;
  
  
  前提
&lt;/h2&gt;

&lt;p&gt;SSD に 120 GB のソフトを入れる必要があった。&lt;br&gt;
windows の SSD が 60/256 GB しか空いていなかった。&lt;br&gt;
余分なアプリを消しても、容量は大きく変わらなかった。&lt;/p&gt;

&lt;p&gt;なので、クリーンインストールした。(5h待機)&lt;/p&gt;

&lt;p&gt;その後の初期設定で、英かな切り替えで 2h ハマった。&lt;br&gt;
その解決策の記事。&lt;/p&gt;




&lt;h2&gt;
  
  
  要件
&lt;/h2&gt;

&lt;p&gt;CTRL + SPACE キーで 英かな 変換がしたい。&lt;/p&gt;




&lt;h2&gt;
  
  
  問題
&lt;/h2&gt;

&lt;p&gt;検索すると、以下の位置の Windows IME から設定するようだ。&lt;br&gt;
しかし、該当の項目がない。&lt;/p&gt;

&lt;p&gt;設定 / 時刻と言語 / 日本語 / オプション / キーボード / MicroSoft IME&lt;/p&gt;

&lt;p&gt;参考サイト&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.ipentec.com/document/windows-switch-microsogt-ime-using-ctrl-and-space-key#google_vignette:%7E:text=%E5%8F%B3%E5%81%B4%E3%81%AE%E3%82%A8%E3%83%AA%E3%82%A2%E3%82%92%E4%B8%8B%E3%81%AB%E3%82%B9%E3%82%AF%E3%83%AD%E3%83%BC%E3%83%AB%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%5B%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%5D%E3%81%AE%E3%82%BB%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%5BMicrosoft%20IME%5D%E3%81%AE%E3%82%BF%E3%82%A4%E3%83%AB%E3%82%92%E6%8E%A2%E3%81%97%E3%80%81%E5%8F%B3%E5%81%B4%E3%81%AE%5B...%5D%E3%83%9C%E3%82%BF%E3%83%B3%E3%82%92%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF%E3%81%97%E3%81%BE%E3%81%99"&gt;https://www.ipentec.com/document/windows-switch-microsogt-ime-using-ctrl-and-space-key#google_vignette:~:text=%E5%8F%B3%E5%81%B4%E3%81%AE%E3%82%A8%E3%83%AA%E3%82%A2%E3%82%92%E4%B8%8B%E3%81%AB%E3%82%B9%E3%82%AF%E3%83%AD%E3%83%BC%E3%83%AB%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%5B%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%5D%E3%81%AE%E3%82%BB%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%5BMicrosoft%20IME%5D%E3%81%AE%E3%82%BF%E3%82%A4%E3%83%AB%E3%82%92%E6%8E%A2%E3%81%97%E3%80%81%E5%8F%B3%E5%81%B4%E3%81%AE%5B...%5D%E3%83%9C%E3%82%BF%E3%83%B3%E3%82%92%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF%E3%81%97%E3%81%BE%E3%81%99&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DaOl95N_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z5lj99vx05rht80x9upz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DaOl95N_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z5lj99vx05rht80x9upz.png" alt="Image description" width="800" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;この画像は解決後。&lt;/p&gt;




&lt;h2&gt;
  
  
  解決策
&lt;/h2&gt;

&lt;p&gt;「キーボードの追加」ボタンを押すことで、Microsoft IME が現れた。その後、上記の記事の通りの操作で、英かな変換を CTRL SPACE でカスタマイズできた。&lt;/p&gt;




&lt;h2&gt;
  
  
  Tips
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---BK4E99e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gmb8n483v878lprlddy8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---BK4E99e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gmb8n483v878lprlddy8.png" alt="Image description" width="668" height="339"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Preferred Language で Japanese を上に持ってくれば、起動直後から日本語で入力できる。&lt;/p&gt;

&lt;p&gt;Englishが上だと、alt shit で起動時に変更する手間がかかる&lt;/p&gt;

</description>
      <category>windows11</category>
    </item>
    <item>
      <title>基本情報 Part 04 -- 2 進数の左右シフトと余りの扱い</title>
      <dc:creator>kaede</dc:creator>
      <pubDate>Sun, 12 Nov 2023 08:55:12 +0000</pubDate>
      <link>https://dev.to/kaede_io/ji-ben-qing-bao-part-04-2-jin-shu-nozuo-you-sihutotoyu-rinoxi-i-1n6h</link>
      <guid>https://dev.to/kaede_io/ji-ben-qing-bao-part-04-2-jin-shu-nozuo-you-sihutotoyu-rinoxi-i-1n6h</guid>
      <description>&lt;h2&gt;
  
  
  左右シフトとは？
&lt;/h2&gt;

&lt;p&gt;( 今回は符号ビットは省略するが、符号ビットがある場合、右シフトの挙動は異なることがある。)&lt;/p&gt;

&lt;p&gt;2 進数の数値を左右に動かすこと。動かした後には 0 が入る。&lt;/p&gt;

&lt;p&gt;左シフトすると数値が大きくなり、右シフトでは数値が小さくなる&lt;/p&gt;

&lt;p&gt;例1&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;0010 を左に 2 つシフトする&lt;/li&gt;
&lt;li&gt;1000 になる&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;10 進数だと、2 が 8 になっている。&lt;/p&gt;

&lt;p&gt;例2&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1010 を右に 2 つシフトする&lt;/li&gt;
&lt;li&gt;0010 になる&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;10 進数だと、10 が 2 になっている。&lt;/p&gt;




&lt;h2&gt;
  
  
  左シフト ( *2^n )
&lt;/h2&gt;

&lt;p&gt;n つ 左にシフトさせる場合、2^n をかける。&lt;/p&gt;

&lt;p&gt;0010 を 左に 2 つシフトさせたい。&lt;br&gt;
そのためには、2^2 をかける必要がある。&lt;br&gt;
2^2 = 4 をかけると、左に 2 つシフトして、1000 になる。&lt;/p&gt;

&lt;p&gt;掛け算なので、余りはない。&lt;/p&gt;




&lt;h2&gt;
  
  
  右シフト ( /2^n )
&lt;/h2&gt;

&lt;p&gt;n つ 右にシフトさせる場合、2^n で割る。&lt;/p&gt;

&lt;p&gt;1001 を 右に 2 つシフトさせたい。&lt;br&gt;
そのためには、2^2 で割る必要がある。&lt;br&gt;
2^2 = 4 で割ると、右に 2 つシフトして、0010 になる。&lt;/p&gt;

&lt;p&gt;割り算なので、余りが現れる。&lt;/p&gt;

&lt;p&gt;しかし、余りはビットシフト操作では直接考慮されず、シフトされたビットは単に破棄される。&lt;/p&gt;

&lt;p&gt;なので、1001 を 右に 2 つシフトさせた場合は 0010 で終わり。&lt;/p&gt;

&lt;p&gt;しかし、余りを必要とする場合もある。&lt;/p&gt;

&lt;p&gt;その場合、余りは追い出された 01 になる。&lt;/p&gt;




&lt;h2&gt;
  
  
  実例
&lt;/h2&gt;

&lt;p&gt;読みやすくするために、個人ルールとして 4 桁でカンマをつける。&lt;/p&gt;

&lt;p&gt;以下の 16 ビットの 2 進数がある&lt;/p&gt;

&lt;p&gt;1111,0000,0000,1111&lt;/p&gt;

&lt;p&gt;これを 8 つ右シフトする。&lt;/p&gt;

&lt;p&gt;すると&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;答え: 0000,0000,1111,0000&lt;/li&gt;
&lt;li&gt;余り: 0000,1111 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;になる&lt;/p&gt;

</description>
      <category>基本情報</category>
      <category>2進数</category>
      <category>左右シフト</category>
    </item>
    <item>
      <title>Rails 基礎 Part 06 -- devise でログインをした上で、API UT を叩く</title>
      <dc:creator>kaede</dc:creator>
      <pubDate>Sun, 13 Aug 2023 12:29:56 +0000</pubDate>
      <link>https://dev.to/kaede_io/rails-ji-chu-part-05-devise-deren-zheng-ji-pan-wozuo-ru-5ab4</link>
      <guid>https://dev.to/kaede_io/rails-ji-chu-part-05-devise-deren-zheng-ji-pan-wozuo-ru-5ab4</guid>
      <description>&lt;h2&gt;
  
  
  why
&lt;/h2&gt;

&lt;p&gt;Kotlin で API を作った時、ログイン機能まで作らなかった。Rails では作って、認証認可に強くなりたい。&lt;/p&gt;




&lt;h2&gt;
  
  
  ライブラリ選定
&lt;/h2&gt;

&lt;p&gt;devise という gem を使う。&lt;br&gt;
一通り機能が揃っているらしい。&lt;/p&gt;

&lt;p&gt;新規登録でお礼メールや、パスワードリセットなど。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/heartcombo/devise#getting-started"&gt;https://github.com/heartcombo/devise#getting-started&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  devise 活用
&lt;/h1&gt;




&lt;h2&gt;
  
  
  devise をプロジェクトに入れる
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/heartcombo/devise#getting-started"&gt;https://github.com/heartcombo/devise#getting-started&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;bundle&lt;/span&gt; &lt;span class="n"&gt;add&lt;/span&gt; &lt;span class="n"&gt;devise&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;bundle add で Gemfile に書き込み&lt;/p&gt;




&lt;h2&gt;
  
  
  devise の設定を書き込む
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;rails&lt;/span&gt; &lt;span class="n"&gt;generate&lt;/span&gt; &lt;span class="n"&gt;devise&lt;/span&gt;&lt;span class="ss"&gt;:install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;rails generate で設定を開始する。&lt;/p&gt;

&lt;p&gt;設定値がデフォルトで、設定ファイルが生成される。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;config/initializers/devise.rb&lt;/li&gt;
&lt;li&gt;config/environments/development.rb&lt;/li&gt;
&lt;li&gt;config/locales/devise.en.yml&lt;/li&gt;
&lt;li&gt;config/routes.rb&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;など。&lt;br&gt;
パスワードリセットのメールのリンク先などが設定できる。&lt;/p&gt;


&lt;h2&gt;
  
  
  User モデルと Migration ファイルの生成
&lt;/h2&gt;

&lt;p&gt;devise を使って簡単に Model が作成できる。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="n"&gt;rails&lt;/span&gt; &lt;span class="n"&gt;generate&lt;/span&gt; &lt;span class="n"&gt;devise&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt; 
      &lt;span class="n"&gt;invoke&lt;/span&gt;  &lt;span class="n"&gt;active_record&lt;/span&gt;
      &lt;span class="n"&gt;create&lt;/span&gt;    &lt;span class="n"&gt;db&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;migrate&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;20230813062406_&lt;/span&gt;&lt;span class="n"&gt;devise_create_users&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rb&lt;/span&gt;
      &lt;span class="n"&gt;create&lt;/span&gt;    &lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rb&lt;/span&gt;
      &lt;span class="n"&gt;invoke&lt;/span&gt;    &lt;span class="n"&gt;rspec&lt;/span&gt;
&lt;span class="nc"&gt;Migrations&lt;/span&gt; &lt;span class="n"&gt;are&lt;/span&gt; &lt;span class="n"&gt;pending&lt;/span&gt;&lt;span class="mf"&gt;.&lt;/span&gt; &lt;span class="nc"&gt;To&lt;/span&gt; &lt;span class="n"&gt;resolve&lt;/span&gt; &lt;span class="n"&gt;this&lt;/span&gt; &lt;span class="n"&gt;issue&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;

        &lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;rails&lt;/span&gt; &lt;span class="n"&gt;db&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;migrate&lt;/span&gt; &lt;span class="no"&gt;RAILS_ENV&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;development&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;これで models/user.rb ができる&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ApplicationRecord&lt;/span&gt;
  &lt;span class="c1"&gt;# Include default devise modules. Others available are:&lt;/span&gt;
  &lt;span class="c1"&gt;# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable&lt;/span&gt;
  &lt;span class="n"&gt;devise&lt;/span&gt; &lt;span class="ss"&gt;:database_authenticatable&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:registerable&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
         &lt;span class="ss"&gt;:recoverable&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:rememberable&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:validatable&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;また、migration ファイルもできる&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;AddDeviseToUsers&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ActiveRecord&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Migration&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mf"&gt;7.0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nc"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;up&lt;/span&gt;
    &lt;span class="n"&gt;create_table&lt;/span&gt; &lt;span class="ss"&gt;:users&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
      &lt;span class="c1"&gt;## Database authenticatable&lt;/span&gt;
      &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;string&lt;/span&gt; &lt;span class="ss"&gt;:email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;              &lt;span class="ss"&gt;null: &lt;/span&gt;&lt;span class="kp"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;default: &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;
      &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;string&lt;/span&gt; &lt;span class="ss"&gt;:encrypted_password&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;null: &lt;/span&gt;&lt;span class="kp"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;default: &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;

      &lt;span class="c1"&gt;## Recoverable&lt;/span&gt;
      &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;string&lt;/span&gt;   &lt;span class="ss"&gt;:reset_password_token&lt;/span&gt;
      &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;datetime&lt;/span&gt; &lt;span class="ss"&gt;:reset_password_sent_at&lt;/span&gt;

      &lt;span class="c1"&gt;## Rememberable&lt;/span&gt;
      &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;datetime&lt;/span&gt; &lt;span class="ss"&gt;:remember_created_at&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;migration ファイルにはコメントアウトされている行もある&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;      &lt;span class="c1"&gt;## Trackable&lt;/span&gt;
      &lt;span class="c1"&gt;# t.integer  :sign_in_count, default: 0, null: false&lt;/span&gt;
      &lt;span class="c1"&gt;# t.datetime :current_sign_in_at&lt;/span&gt;
      &lt;span class="c1"&gt;# t.datetime :last_sign_in_at&lt;/span&gt;
      &lt;span class="c1"&gt;# t.string   :current_sign_in_ip&lt;/span&gt;
      &lt;span class="c1"&gt;# t.string   :last_sign_in_ip&lt;/span&gt;

      &lt;span class="c1"&gt;## Lockable&lt;/span&gt;
      &lt;span class="c1"&gt;# t.integer  :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts&lt;/span&gt;
      &lt;span class="c1"&gt;# t.string   :unlock_token # Only if unlock strategy is :email or :both&lt;/span&gt;
      &lt;span class="c1"&gt;# t.datetime :locked_at&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;これらのコメントアウトを外すと、最後のログインの情報を保存したり、頻繁なログイン失敗をロックしたりできる。&lt;/p&gt;




&lt;h2&gt;
  
  
  schema
&lt;/h2&gt;

&lt;p&gt;同様に schema.rb をみると users が追加されている&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;  &lt;span class="n"&gt;create_table&lt;/span&gt; &lt;span class="s2"&gt;"users"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;force: :cascade&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
    &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;string&lt;/span&gt; &lt;span class="s2"&gt;"email"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;default: &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;null: &lt;/span&gt;&lt;span class="kp"&gt;false&lt;/span&gt;
    &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;string&lt;/span&gt; &lt;span class="s2"&gt;"encrypted_password"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;default: &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;null: &lt;/span&gt;&lt;span class="kp"&gt;false&lt;/span&gt;
    &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;string&lt;/span&gt; &lt;span class="s2"&gt;"reset_password_token"&lt;/span&gt;
    &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;datetime&lt;/span&gt; &lt;span class="s2"&gt;"reset_password_sent_at"&lt;/span&gt;
    &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;datetime&lt;/span&gt; &lt;span class="s2"&gt;"remember_created_at"&lt;/span&gt;
    &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;index&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"email"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="ss"&gt;name: &lt;/span&gt;&lt;span class="s2"&gt;"index_users_on_email"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;unique: &lt;/span&gt;&lt;span class="kp"&gt;true&lt;/span&gt;
    &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;index&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"reset_password_token"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="ss"&gt;name: &lt;/span&gt;&lt;span class="s2"&gt;"index_users_on_reset_password_token"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;unique: &lt;/span&gt;&lt;span class="kp"&gt;true&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;









&lt;h1&gt;
  
  
  既存の bankTransaction コントローラーの Rspec にログインを導入する
&lt;/h1&gt;

&lt;p&gt;bankTransaction でログインを入れる&lt;/p&gt;




&lt;h2&gt;
  
  
  rails_helper.rb に device の読み込み設定を記載
&lt;/h2&gt;

&lt;p&gt;rspec を動かす時には、rails_helper が先に動く。&lt;br&gt;
なので、rails_helper に設定を書いておけば、rspec で動いてくれる。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;  &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;include&lt;/span&gt; &lt;span class="no"&gt;FactoryBot&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Syntax&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Methods&lt;/span&gt;
  &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;include&lt;/span&gt; &lt;span class="no"&gt;Devise&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Test&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;IntegrationHelpers&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;type: :controller&lt;/span&gt;
  &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;include&lt;/span&gt; &lt;span class="no"&gt;Devise&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Test&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;ControllerHelpers&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;type: :controller&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://github.com/heartcombo/devise#test-helpers"&gt;https://github.com/heartcombo/devise#test-helpers&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  実際に動かす
&lt;/h2&gt;

&lt;p&gt;rspec --fail-fast を使うと、落ちたところで止まってくれるので便利。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;BankTransactionsController&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ApplicationController&lt;/span&gt;

  &lt;span class="n"&gt;before_action&lt;/span&gt; &lt;span class="ss"&gt;:authenticate_user!&lt;/span&gt;
&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 ruby"&gt;&lt;code&gt;  &lt;span class="n"&gt;context&lt;/span&gt; &lt;span class="s1"&gt;'ログインしているとき'&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="n"&gt;before&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
      &lt;span class="n"&gt;user_email&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"kaede0902@gmail.com"&lt;/span&gt;
      &lt;span class="n"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;User&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find_by&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;email: &lt;/span&gt;&lt;span class="n"&gt;user_email&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; 
        &lt;span class="no"&gt;FactoryBot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;email: &lt;/span&gt;&lt;span class="n"&gt;user_email&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

      &lt;span class="n"&gt;sign_in&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;
      &lt;span class="c1"&gt;# spec/factories/bank_tranksactions.rb の内容が実行される&lt;/span&gt;
      &lt;span class="no"&gt;FactoryBot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:bank_transaction&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;get リクエストの前に、指定のメールアドレスでユーザーを検索。&lt;/p&gt;

&lt;p&gt;ユーザーがあればそのユーザーのインスタンスを取得。&lt;br&gt;
ユーザーがなければそのユーザーを登録。&lt;/p&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;kaede0902@V bank_transactions_api % rspec --fail-fast

BankTransactionsController
  ログインしているとき
    GET #index
      取引明細の口座番号が正しく取得できること
      取引明細の金額が正しく取得できること
      取引明細の明細名が正しく取得できること
    POST #create
      取引データが作成できること

Finished in 0.11026 seconds (files took 1.74 seconds to load)
4 examples, 0 failures
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;これでログイン認証した上で、API UT を動かせた！&lt;/p&gt;




&lt;h2&gt;
  
  
  伸び代
&lt;/h2&gt;

&lt;p&gt;ログインしていない時の挙動をテストする。&lt;/p&gt;

&lt;p&gt;API なのでリダイレクトにはしないほうが自然&lt;/p&gt;

</description>
      <category>ruby</category>
      <category>rails</category>
      <category>devise</category>
    </item>
    <item>
      <title>基本情報 Part 03 -- 2, 10, 16 進数の相互変換</title>
      <dc:creator>kaede</dc:creator>
      <pubDate>Sun, 02 Jul 2023 11:00:16 +0000</pubDate>
      <link>https://dev.to/kaede_io/ji-ben-qing-bao-part-03-2jin-shu-kara-10-16jin-shu-henobian-huan-5e8n</link>
      <guid>https://dev.to/kaede_io/ji-ben-qing-bao-part-03-2jin-shu-kara-10-16jin-shu-henobian-huan-5e8n</guid>
      <description>&lt;h1&gt;
  
  
  2 進数 と 10 進数間の相互変換 ( Binary &amp;lt;-&amp;gt; Decimal )
&lt;/h1&gt;




&lt;h2&gt;
  
  
  2 進数 から 10 進数 への変換
&lt;/h2&gt;

&lt;p&gt;2 ^ (桁数 -1) を桁分繰り返して足す。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://xtech.nikkei.com/atcl/learning/lecture/19/00007/00002/#:%7E:text=%E3%81%BF%E3%81%BE%E3%81%97%E3%82%87%E3%81%86%E3%80%82-,2%E9%80%B2%E6%95%B0%E3%81%8B%E3%82%8910%E9%80%B2%E6%95%B0%E3%81%B8%E3%81%AE%E5%A4%89%E6%8F%9B,-%E3%81%BE%E3%81%9A%E3%80%812%E9%80%B2%E6%95%B0" rel="noopener noreferrer"&gt;https://xtech.nikkei.com/atcl/learning/lecture/19/00007/00002/#:~:text=%E3%81%BF%E3%81%BE%E3%81%97%E3%82%87%E3%81%86%E3%80%82-,2%E9%80%B2%E6%95%B0%E3%81%8B%E3%82%8910%E9%80%B2%E6%95%B0%E3%81%B8%E3%81%AE%E5%A4%89%E6%8F%9B,-%E3%81%BE%E3%81%9A%E3%80%812%E9%80%B2%E6%95%B0&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;1001 の場合 &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;2^3 * 1 -&amp;gt; 8 * 1 -&amp;gt; 8&lt;/li&gt;
&lt;li&gt;2^2 * 0 -&amp;gt; 4 * 0 -&amp;gt; 0&lt;/li&gt;
&lt;li&gt;2^1 * 0 -&amp;gt; 2 * 0 -&amp;gt; 0&lt;/li&gt;
&lt;li&gt;2^0 * 1 -&amp;gt; 1 * 1 -&amp;gt; 1&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;これで合計 9 &lt;/p&gt;




&lt;h2&gt;
  
  
  10 進数 から 2 進数 への変換
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.infraexpert.com/study/ip1.html#:%7E:text=%E6%95%B0%E5%80%A4%E3%82%92%E3%80%8C%200%20%E3%80%8D-,%E3%81%AB,-%E3%81%AA%E3%82%8B%E3%81%BE%E3%81%A7%E3%80%8C%202" rel="noopener noreferrer"&gt;https://www.infraexpert.com/study/ip1.html#:~:text=%E6%95%B0%E5%80%A4%E3%82%92%E3%80%8C%200%20%E3%80%8D-,%E3%81%AB,-%E3%81%AA%E3%82%8B%E3%81%BE%E3%81%A7%E3%80%8C%202&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2 で割って商と余りを出す。&lt;br&gt;
余りをその桁の bit として、商を再度割り続ける&lt;/p&gt;

&lt;h3&gt;
  
  
  9 の場合
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;9/2 -&amp;gt; 4 + 1&lt;/li&gt;
&lt;li&gt;4/2 -&amp;gt; 2 + 0&lt;/li&gt;
&lt;li&gt;2/2 -&amp;gt; 1 + 0&lt;/li&gt;
&lt;li&gt;1/2 -&amp;gt; 0 + 1&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;逆から並べて 1001&lt;/p&gt;

&lt;h3&gt;
  
  
  252 の場合（紙を使う場合）
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0eg5cvcnhvxnf2hu93on.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0eg5cvcnhvxnf2hu93on.png" alt="Image description" width="246" height="279"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  別解1
&lt;/h3&gt;

&lt;p&gt;9 -&amp;gt; 8 + 1 -&amp;gt; 2^3 + 2^2*0 + 2^1*0 + 2^0&lt;br&gt;
-&amp;gt; 1001&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;160&lt;/li&gt;
&lt;li&gt;128 + 32&lt;/li&gt;
&lt;li&gt;2^7 + 2^6*0 + 2^5 + 2^4*0 + ...&lt;/li&gt;
&lt;li&gt;1010,0000&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;というように、2 の累乗の数の足し算に分解する。&lt;br&gt;
2^n 乗で割やすい数だと、このやり方の方が速い。&lt;/p&gt;

&lt;h3&gt;
  
  
  別解2 ( 4, 8, 16, 128, 256 ) などの場合
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.infraexpert.com/study/ip1.html#:%7E:text=%E3%81%AE%E5%A4%89%E6%8F%9B%E6%96%B9%E6%B3%95-,10%E9%80%B2%E6%95%B0%E3%81%A82%E9%80%B2%E6%95%B0%E3%81%AE%E5%AF%BE%E5%BF%9C%E8%A1%A8,-%E3%81%AF%E4%BB%A5%E4%B8%8B%E3%81%AE%E9%80%9A%E3%82%8A" rel="noopener noreferrer"&gt;https://www.infraexpert.com/study/ip1.html#:~:text=%E3%81%AE%E5%A4%89%E6%8F%9B%E6%96%B9%E6%B3%95-,10%E9%80%B2%E6%95%B0%E3%81%A82%E9%80%B2%E6%95%B0%E3%81%AE%E5%AF%BE%E5%BF%9C%E8%A1%A8,-%E3%81%AF%E4%BB%A5%E4%B8%8B%E3%81%AE%E9%80%9A%E3%82%8A&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;10 進数と 2 進数で桁が上がるところを覚える&lt;br&gt;
キリがいい数なら、一撃で出せる&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;2: 10&lt;/li&gt;
&lt;li&gt;4: 100&lt;/li&gt;
&lt;li&gt;8: 1,000&lt;/li&gt;
&lt;li&gt;16: 10,000&lt;/li&gt;
&lt;li&gt;128: 1000_0000 (2^7, 8bit)&lt;/li&gt;
&lt;li&gt;256: 1_0000_0000 (2^8, 9bit) &lt;/li&gt;
&lt;li&gt;1024: 2^10&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;※ 255: 1111_1111 (2^8 - 2^0, 8bit)&lt;br&gt;
（計算には 8 ビットが良くつかわれる&lt;/p&gt;







&lt;h1&gt;
  
  
  2 進数 &amp;lt;-&amp;gt; 16 進数 ( Binary &amp;lt;-&amp;gt; Hexdecimal )
&lt;/h1&gt;




&lt;h2&gt;
  
  
  2 進数 -&amp;gt; 16 進数
&lt;/h2&gt;

&lt;p&gt;4 桁ずつに分割して、各自 10 進数に変換する。&lt;br&gt;
その後、16 進数に変換する。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.infraexpert.com/study/ip2.html#:%7E:text=10-,%E2%97%86%E3%80%802%E9%80%B2%E6%95%B0%E3%81%8B%E3%82%8916%E9%80%B2%E6%95%B0%E3%81%B8%E3%81%AE%E5%A4%89%E6%8F%9B%E6%96%B9%E6%B3%95,-2%E9%80%B2%E6%95%B0%E3%81%AE" rel="noopener noreferrer"&gt;https://www.infraexpert.com/study/ip2.html#:~:text=10-,%E2%97%86%E3%80%802%E9%80%B2%E6%95%B0%E3%81%8B%E3%82%8916%E9%80%B2%E6%95%B0%E3%81%B8%E3%81%AE%E5%A4%89%E6%8F%9B%E6%96%B9%E6%B3%95,-2%E9%80%B2%E6%95%B0%E3%81%AE&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;1011,0110 の場合&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;1011 を 10 進数に変換する。

&lt;ul&gt;
&lt;li&gt;2^3 + 2^2*0 + 2^1 + 2^1&lt;/li&gt;
&lt;li&gt;8 + 0 + 2 + 1 -&amp;gt; 11&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;11 を 16 進数に変換する。

&lt;ul&gt;
&lt;li&gt;16 進数では 16 まで 0 ~ F の一桁で表現する&lt;/li&gt;
&lt;li&gt;だから 9 -&amp;gt; A -&amp;gt; B になる。&lt;/li&gt;
&lt;li&gt;よって 11 は B&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;0110 を 10 進数に変換する。

&lt;ul&gt;
&lt;li&gt;8*0 + 4 + 2 + 0 -&amp;gt; 6&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;6 を 16 進数に変換する

&lt;ul&gt;
&lt;li&gt;9 未満なのでそのまま 6&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;2 と 4 をくっつける

&lt;ul&gt;
&lt;li&gt;B6&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  16 進数 -&amp;gt; 2 進数
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.infraexpert.com/study/ip2.html#:%7E:text=%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82-,%E2%97%86%E3%80%8016%E9%80%B2%E6%95%B0%E3%81%8B%E3%82%892%E9%80%B2%E6%95%B0%E3%81%B8%E3%81%AE%E5%A4%89%E6%8F%9B%E6%96%B9%E6%B3%95,-16%E9%80%B2%E6%95%B0%E3%81%AE" rel="noopener noreferrer"&gt;https://www.infraexpert.com/study/ip2.html#:~:text=%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82-,%E2%97%86%E3%80%8016%E9%80%B2%E6%95%B0%E3%81%8B%E3%82%892%E9%80%B2%E6%95%B0%E3%81%B8%E3%81%AE%E5%A4%89%E6%8F%9B%E6%96%B9%E6%B3%95,-16%E9%80%B2%E6%95%B0%E3%81%AE&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;1 桁ずつ 10 進数 -&amp;gt; 2 進数に変換する。&lt;br&gt;
9 の次が a になるだけなので、1 桁なら 10 進数 -&amp;gt; 2進数の変換は楽&lt;/p&gt;

&lt;p&gt;B6 の場合&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;16 進数で B

&lt;ol&gt;
&lt;li&gt;10 進数で 11&lt;/li&gt;
&lt;li&gt;2 進数にする&lt;/li&gt;
&lt;li&gt;8 + 2 + 1&lt;/li&gt;
&lt;li&gt;2^3 * 1 + 2^2 * 0 + 2^1 * 1 + 2^0 * 1&lt;/li&gt;
&lt;li&gt;1011&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;

&lt;li&gt;16 進数で 6

&lt;ol&gt;
&lt;li&gt;10 進数でも 6&lt;/li&gt;
&lt;li&gt;2 進数にする&lt;/li&gt;
&lt;li&gt;4 + 2&lt;/li&gt;
&lt;li&gt;2^3 * 0 + 2^2 + 2^1 + 2^0 * 0&lt;/li&gt;
&lt;li&gt;0110&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;

&lt;li&gt;合算する

&lt;ol&gt;
&lt;li&gt;10110110&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;

&lt;/ol&gt;







&lt;h1&gt;
  
  
  10 進数 &amp;lt;-&amp;gt; 16 進数
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;いったん 2 進数を挟む。&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  16 進数 -&amp;gt; 10 進数
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.infraexpert.com/study/ip2.html" rel="noopener noreferrer"&gt;https://www.infraexpert.com/study/ip2.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;B6 の場合&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;2 進数で 1011,0110&lt;/li&gt;
&lt;li&gt;10 進数で

&lt;ol&gt;
&lt;li&gt;前半: 2^7 + 0 + 2^5 + 2^4 &lt;/li&gt;
&lt;li&gt;128 + 0 + 32 + 16&lt;/li&gt;
&lt;li&gt;176&lt;/li&gt;
&lt;li&gt;後半: 2^3*0 + 2^2*1 + 2^1*1 + 2^0*0 &lt;/li&gt;
&lt;li&gt;0 + 4 + 2 + 0&lt;/li&gt;
&lt;li&gt;6&lt;/li&gt;
&lt;li&gt;合計: 182&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;

&lt;li&gt;結論、182&lt;/li&gt;

&lt;/ol&gt;




&lt;h2&gt;
  
  
  10 進数 -&amp;gt; 16 進数
&lt;/h2&gt;

&lt;p&gt;182 の場合&lt;/p&gt;

&lt;p&gt;2 進数にする&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;128 + 54&lt;/li&gt;
&lt;li&gt;128 + 0 + 32 + 16   + 0 +  4 + 2 + 0&lt;/li&gt;
&lt;li&gt;1011,0110&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;1011,0110 になる&lt;/p&gt;

&lt;p&gt;前半、後半と別々の 10 進数にする&lt;/p&gt;

&lt;p&gt;8 + 0 + 2 + 1&lt;br&gt;
-&amp;gt; 11&lt;/p&gt;

&lt;p&gt;0 + 4 + 2 + 0&lt;br&gt;
-&amp;gt; 6&lt;/p&gt;

&lt;p&gt;それぞれ 16 進数にして桁をずらして足す&lt;/p&gt;

&lt;p&gt;結論、B6&lt;/p&gt;

</description>
      <category>基本情報</category>
    </item>
    <item>
      <title>Windows 基礎 Part 01 -- キーボード変更</title>
      <dc:creator>kaede</dc:creator>
      <pubDate>Mon, 19 Jun 2023 09:30:00 +0000</pubDate>
      <link>https://dev.to/kaede_io/windows-ji-chu-part-01-kibodobian-geng-3o7b</link>
      <guid>https://dev.to/kaede_io/windows-ji-chu-part-01-kibodobian-geng-3o7b</guid>
      <description>&lt;h2&gt;
  
  
  why
&lt;/h2&gt;

&lt;p&gt;US キーボードをつないでも反映されず、設定で検索してもでなかったので。&lt;/p&gt;

&lt;h2&gt;
  
  
  結論
&lt;/h2&gt;

&lt;p&gt;日付と時刻のメニューから言語ごとにキーボードを選択できた。&lt;/p&gt;

&lt;p&gt;設定 &amp;gt; 時間と言語 / 言語 / 言語を選択 / ハードウェアキーボードの変更 &amp;gt; 日本語キーボード(106/109キー) or 英語キーボード(101/102キー)&lt;/p&gt;

&lt;h2&gt;
  
  
  やりかた
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2950l5cjyojrcn9foell.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2950l5cjyojrcn9foell.png" alt="Image description" width="643" height="228"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;settings / Time &amp;amp; Language / &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy8vbr98ez57suo9h3ahm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy8vbr98ez57suo9h3ahm.png" alt="Image description" width="637" height="542"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Japanese / options /&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhbeyklgc4e3uyldpybni.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhbeyklgc4e3uyldpybni.png" alt="Image description" width="636" height="295"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hardware Keyboard Layout / &lt;/p&gt;

&lt;p&gt;ここで US キーボードを選択できる。&lt;/p&gt;




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

&lt;p&gt;imagingsolution さん&lt;/p&gt;

&lt;p&gt;&lt;a href="https://imagingsolution.net/program/windows11/switch_japanese_english_keyboards/"&gt;https://imagingsolution.net/program/windows11/switch_japanese_english_keyboards/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ドズパラさん&lt;br&gt;
&lt;a href="http://faq3.dospara.co.jp/faq/show/3224?site_domain=default#anc04"&gt;http://faq3.dospara.co.jp/faq/show/3224?site_domain=default#anc04&lt;/a&gt;&lt;/p&gt;

</description>
      <category>windows</category>
      <category>uskey</category>
    </item>
    <item>
      <title>Rails 基礎 Part 05 -- create の単体テストを追加する</title>
      <dc:creator>kaede</dc:creator>
      <pubDate>Sun, 28 May 2023 14:58:10 +0000</pubDate>
      <link>https://dev.to/kaede_io/rails-ji-chu-part-05-create-nodan-ti-tesutowozhui-jia-suru-3p3i</link>
      <guid>https://dev.to/kaede_io/rails-ji-chu-part-05-create-nodan-ti-tesutowozhui-jia-suru-3p3i</guid>
      <description>&lt;h2&gt;
  
  
  why
&lt;/h2&gt;

&lt;p&gt;最初の単体テストを作るのに時間がかかった。&lt;br&gt;
続きを一気に書く。&lt;/p&gt;


&lt;h2&gt;
  
  
  テスト実行結果の詳細を見せるための設定
&lt;/h2&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 ruby"&gt;&lt;code&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;rspec&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="n"&gt;rails_helper&lt;/span&gt;
&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nb"&gt;format&lt;/span&gt; &lt;span class="n"&gt;documentation&lt;/span&gt;
&lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;color&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;









&lt;h1&gt;
  
  
  create
&lt;/h1&gt;

&lt;p&gt;create は、レスポンスではなくデータベースをテストする。&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://qiita.com/kagesumi3m/items/10244978273ffffa9b92"&gt;https://qiita.com/kagesumi3m/items/10244978273ffffa9b92&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  rspec
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;let で bank_transaction を
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;describe&lt;/span&gt; &lt;span class="no"&gt;BankTransactionsController&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;

  &lt;span class="n"&gt;let&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:request_params&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt; 
      &lt;span class="ss"&gt;bank_transaction: &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="ss"&gt;account_number: &lt;/span&gt;&lt;span class="mi"&gt;111&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="ss"&gt;amount: &lt;/span&gt;&lt;span class="mi"&gt;222&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="ss"&gt;description: &lt;/span&gt;&lt;span class="mi"&gt;333&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="n"&gt;context&lt;/span&gt; &lt;span class="s1"&gt;'ログインしているとき'&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
      &lt;span class="n"&gt;before&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
        &lt;span class="no"&gt;FactoryBot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:bank_transaction&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="k"&gt;end&lt;/span&gt;

      &lt;span class="n"&gt;it&lt;/span&gt; &lt;span class="s1"&gt;'1つの取引データの金額が取得できること'&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
        &lt;span class="c1"&gt;# ....&lt;/span&gt;
      &lt;span class="k"&gt;end&lt;/span&gt;

      &lt;span class="n"&gt;it&lt;/span&gt; &lt;span class="s1"&gt;'取引データが作成できること'&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
        &lt;span class="n"&gt;post&lt;/span&gt; &lt;span class="ss"&gt;:create&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;params: &lt;/span&gt;&lt;span class="n"&gt;request_params&lt;/span&gt;

        &lt;span class="n"&gt;created_bank_transaction&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;BankTransaction&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;last&lt;/span&gt;

        &lt;span class="n"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;created_bank_transaction&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;account_number&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;to&lt;/span&gt; &lt;span class="n"&gt;eq&lt;/span&gt; &lt;span class="s1"&gt;'111'&lt;/span&gt;
        &lt;span class="n"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;created_bank_transaction&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;to&lt;/span&gt; &lt;span class="n"&gt;eq&lt;/span&gt; &lt;span class="mi"&gt;222&lt;/span&gt;
        &lt;span class="n"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;created_bank_transaction&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;description&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;to&lt;/span&gt; &lt;span class="n"&gt;eq&lt;/span&gt; &lt;span class="s1"&gt;'333'&lt;/span&gt;

      &lt;span class="k"&gt;end&lt;/span&gt;

      &lt;span class="n"&gt;after&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
        &lt;span class="no"&gt;BankTransaction&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;destroy_all&lt;/span&gt;
      &lt;span class="k"&gt;end&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

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

&lt;/div&gt;






&lt;h2&gt;
  
  
  失敗した時（わざと変えている）
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DlrCWM5J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4hqx0wnaqw4wx1du1q4s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DlrCWM5J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4hqx0wnaqw4wx1du1q4s.png" alt="Image description" width="800" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  成功した時
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;rspec&lt;/span&gt; &lt;span class="n"&gt;spec&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;controllers&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bank_transactions_controller_spec&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;rb&lt;/span&gt;

&lt;span class="no"&gt;BankTransactionsController&lt;/span&gt;
  &lt;span class="err"&gt;ログインしているとき&lt;/span&gt;
    &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="err"&gt;つの取引データの金額が取得できること&lt;/span&gt;
    &lt;span class="err"&gt;取引データが作成できること&lt;/span&gt;

&lt;span class="no"&gt;Finished&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="mf"&gt;0.07932&lt;/span&gt; &lt;span class="n"&gt;seconds&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;files&lt;/span&gt; &lt;span class="n"&gt;took&lt;/span&gt; &lt;span class="mf"&gt;1.68&lt;/span&gt; &lt;span class="n"&gt;seconds&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="nb"&gt;load&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="n"&gt;examples&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="n"&gt;failures&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>ruby</category>
      <category>rails</category>
      <category>rspec</category>
      <category>factorybot</category>
    </item>
    <item>
      <title>Rails 基礎 Part 04 -- index の単体テストを RSpec と FactoryBot で作る</title>
      <dc:creator>kaede</dc:creator>
      <pubDate>Sun, 21 May 2023 23:06:01 +0000</pubDate>
      <link>https://dev.to/kaede_io/rails-ji-chu-part-04-dan-ti-tesutowo-factorybot-dezuo-ru-3dch</link>
      <guid>https://dev.to/kaede_io/rails-ji-chu-part-04-dan-ti-tesutowo-factorybot-dezuo-ru-3dch</guid>
      <description>&lt;h2&gt;
  
  
  why
&lt;/h2&gt;

&lt;p&gt;コーチングを受けて、テストピラミッドを学んだ。&lt;br&gt;
これにより、単体テストを絶対に書くべきだと考えた。&lt;/p&gt;

&lt;p&gt;単体テストを全て書くためには、スピードを上げる必要があると考えた。&lt;br&gt;
テストを作るスピードが遅ければ、テストだけどんどん別チケットになってたまってしまうからだ。&lt;/p&gt;

&lt;p&gt;テストを作るスピードを上げるために、プライベートで一から作ってみることにした。&lt;/p&gt;


&lt;h2&gt;
  
  
  テストピラミッドについて
&lt;/h2&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;               /\
              /  \
             / UI \
            / テスト \
           /---------\
          / 統合テスト  \
         /-------------\
        / ユニットテスト   \
       /------------------\

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

&lt;/div&gt;



&lt;p&gt;参考は下記 URL&lt;/p&gt;

&lt;p&gt;&lt;a href="https://thinkit.co.jp/article/13346"&gt;https://thinkit.co.jp/article/13346&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  今回の作業に必要なもの
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Controller の実装本体。index メソッド。前回の記事で作成ずみ&lt;/li&gt;
&lt;li&gt;Rspec ライブラリ。Rails にビルドインされている。&lt;/li&gt;
&lt;li&gt;FactoryBot のライブラリ。&lt;/li&gt;
&lt;li&gt;FactoryBot でのテストデータ生成用のファクトリー定義ファイル&lt;/li&gt;
&lt;li&gt;RSpec と ファクトリー定義ファイル を使った単体テストのファイル&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  ファクトリーとは？
&lt;/h2&gt;

&lt;p&gt;データを生成する場所のこと。&lt;/p&gt;

&lt;p&gt;現実世界の具体例で考えてみよう。&lt;/p&gt;

&lt;p&gt;僕らはコンビニで食べ物を買う。&lt;br&gt;
しかしコンビニでは基本的に物を製造しない。&lt;br&gt;
製品は別の場所、工場でで作られる。&lt;br&gt;
それからコンビニに運ばれて売られる。&lt;/p&gt;

&lt;p&gt;これをデータに置き換えよう。&lt;br&gt;
データを生成する「工場」がまさに「ファクトリー」。&lt;br&gt;
そして今回、このファクトリーを単体テストフレームワークである RSpec で使用する。&lt;/p&gt;




&lt;h1&gt;
  
  
  前回作った API の GET から UT を作っていく
&lt;/h1&gt;


&lt;h2&gt;
  
  
  Gemfile でライブラリのインストール
&lt;/h2&gt;

&lt;p&gt;単体テスト専用のデータを作るため、&lt;code&gt;FactoryBot&lt;/code&gt; というライブラリをインストールする。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;Gemfile&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;group&lt;/span&gt; &lt;span class="ss"&gt;:development&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:test&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="c1"&gt;# See https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem&lt;/span&gt;
  &lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s2"&gt;"debug"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;platforms: &lt;/span&gt;&lt;span class="sx"&gt;%i[ mri mingw x64_mingw ]&lt;/span&gt;
  &lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s1"&gt;'rspec-rails'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'~&amp;gt; 6.0.0'&lt;/span&gt;
  &lt;span class="n"&gt;gem&lt;/span&gt; &lt;span class="s1"&gt;'factory_bot_rails'&lt;/span&gt;

&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;これで development or test でのみ動く&lt;/p&gt;

&lt;p&gt;FactoryBot の README は下記。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/thoughtbot/factory_bot/blob/master/GETTING_STARTED.md#update-your-gemfile"&gt;https://github.com/thoughtbot/factory_bot/blob/master/GETTING_STARTED.md#update-your-gemfile&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;bundle install でプロジェクトに入る&lt;/p&gt;




&lt;h2&gt;
  
  
  データ挿入の factries
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;spec&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;factories&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bank_tranksactions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;rb&lt;/span&gt;
&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 ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;FactoryBot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;define&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;factory&lt;/span&gt; &lt;span class="ss"&gt;:bank_transaction&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="n"&gt;account_number&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="s1"&gt;'1234567'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="n"&gt;amount&lt;/span&gt;  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="mi"&gt;250_000&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="n"&gt;description&lt;/span&gt;  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;"おちんぎん"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="c1"&gt;#     sequence(:username) { |n| "user#{n}" }&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;呼ばれるとデータが入る factories を作る&lt;/p&gt;




&lt;h2&gt;
  
  
  Controller のテスト本体
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;spec&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;controllers&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bank_transactions_controller_spec&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;rb&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;describe&lt;/span&gt; &lt;span class="no"&gt;BankTransactionsController&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;context&lt;/span&gt; &lt;span class="s1"&gt;'when logged in'&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
      &lt;span class="n"&gt;before&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
        &lt;span class="no"&gt;FactoryBot&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:bank_transaction&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="k"&gt;end&lt;/span&gt;
      &lt;span class="n"&gt;it&lt;/span&gt; &lt;span class="s1"&gt;'get all bank transactions'&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
        &lt;span class="c1"&gt;# FactoryBot.build(:bank_transaction)&lt;/span&gt;
        &lt;span class="c1"&gt;# FactoryBot.create(:bank_transaction)&lt;/span&gt;
        &lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="ss"&gt;:index&lt;/span&gt;

        &lt;span class="c1"&gt;# pp response.body&lt;/span&gt;
        &lt;span class="n"&gt;amount&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;body&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;first&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'amount'&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;to_i&lt;/span&gt;
        &lt;span class="n"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;to&lt;/span&gt; &lt;span class="n"&gt;eq&lt;/span&gt; &lt;span class="mi"&gt;250000&lt;/span&gt;
      &lt;span class="k"&gt;end&lt;/span&gt;

      &lt;span class="n"&gt;after&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
        &lt;span class="no"&gt;BankTransaction&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;destroy_all&lt;/span&gt;
      &lt;span class="k"&gt;end&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;describe ControllerName でコントローラー指定&lt;/li&gt;
&lt;li&gt;before FactoryBot.create でテスト実行前にデータを作成して DB に入れる。

&lt;ul&gt;
&lt;li&gt;build では DB には入らない。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;get :methodName でメソッドを指定&lt;/li&gt;
&lt;li&gt;json が返ってくるのでパースしてキーを指定&lt;/li&gt;
&lt;li&gt;expect(key).to eq value で比較&lt;/li&gt;
&lt;li&gt;after でデータを破棄&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;このサイクル。&lt;/p&gt;




&lt;h2&gt;
  
  
  実際の実行
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Terminal
&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 ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;rspec&lt;/span&gt; &lt;span class="n"&gt;spec&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;controllers&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bank_transactions_controller_spec&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;rb&lt;/span&gt;
&lt;span class="no"&gt;F&lt;/span&gt;

&lt;span class="no"&gt;Failures&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

  &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="no"&gt;BankTransactionsController&lt;/span&gt; &lt;span class="k"&gt;when&lt;/span&gt; &lt;span class="n"&gt;logged&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="n"&gt;all&lt;/span&gt; &lt;span class="n"&gt;bank&lt;/span&gt; &lt;span class="n"&gt;transactions&lt;/span&gt;
     &lt;span class="no"&gt;Failure&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="no"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;body&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;first&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;to_i&lt;/span&gt;

     &lt;span class="no"&gt;NoMethodError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
       &lt;span class="n"&gt;undefined&lt;/span&gt; &lt;span class="nb"&gt;method&lt;/span&gt; &lt;span class="sb"&gt;`to_i' for {"id"=&amp;gt;1, "account_number"=&amp;gt;"1234567", "amount"=&amp;gt;"250000.0", "description"=&amp;gt;"おちんぎん", "created_at"=&amp;gt;"2023-05-21T05:23:39.241Z", "updated_at"=&amp;gt;"2023-05-21T05:23:39.241Z"}:Hash
     # ./spec/controllers/bank_transactions_controller_spec.rb:12:in `&lt;/span&gt;&lt;span class="n"&gt;block&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="n"&gt;levels&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;
&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 ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;kaede0902&lt;/span&gt;&lt;span class="vi"&gt;@V&lt;/span&gt; &lt;span class="n"&gt;bank_transactions_api&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;rspec&lt;/span&gt; &lt;span class="n"&gt;spec&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;controllers&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;bank_transactions_controller_spec&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;rb&lt;/span&gt;
&lt;span class="o"&gt;.&lt;/span&gt;

&lt;span class="no"&gt;Finished&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="mf"&gt;0.08155&lt;/span&gt; &lt;span class="n"&gt;seconds&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;files&lt;/span&gt; &lt;span class="n"&gt;took&lt;/span&gt; &lt;span class="mf"&gt;1.77&lt;/span&gt; &lt;span class="n"&gt;seconds&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="nb"&gt;load&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="n"&gt;failure&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>ruby</category>
      <category>rails</category>
      <category>factorybot</category>
      <category>rspec</category>
    </item>
  </channel>
</rss>
