<?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: koki-takishita</title>
    <description>The latest articles on DEV Community by koki-takishita (@kokitakishita).</description>
    <link>https://dev.to/kokitakishita</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%2F704785%2F204b35ad-b72f-47b2-8615-df60bb7bee1d.png</url>
      <title>DEV Community: koki-takishita</title>
      <link>https://dev.to/kokitakishita</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kokitakishita"/>
    <language>en</language>
    <item>
      <title>[JS]forではなくmapを使う</title>
      <dc:creator>koki-takishita</dc:creator>
      <pubDate>Sun, 04 Dec 2022 05:23:01 +0000</pubDate>
      <link>https://dev.to/kokitakishita/jsfordehanakumapwoshi-u-4jb5</link>
      <guid>https://dev.to/kokitakishita/jsfordehanakumapwoshi-u-4jb5</guid>
      <description>&lt;h2&gt;
  
  
  ドキュメント
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/map" rel="noopener noreferrer"&gt;map&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;for&lt;/code&gt;と&lt;code&gt;map&lt;/code&gt;コード例
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;cartItems&lt;/code&gt;に商品の税込み価格(&lt;code&gt;includeTax&lt;/code&gt;)を追加する.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;before&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cartItems&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;掃除機&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
   &lt;span class="na"&gt;price&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10000&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;電子レンジ&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;price&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;8000&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;冷蔵庫&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;price&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;30000&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;after&lt;/code&gt; 税込価格である&lt;code&gt;includeTax&lt;/code&gt;を追加する
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cartItems&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;掃除機&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
   &lt;span class="na"&gt;price&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
   &lt;span class="na"&gt;includeTax&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;11000&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;電子レンジ&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;price&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;8000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;includeTax&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;8800&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;冷蔵庫&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;price&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;30000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;includeTax&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;33000&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;code&gt;for&lt;/code&gt;と&lt;code&gt;map&lt;/code&gt;比較
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;for&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cartItems&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[...]&lt;/span&gt; &lt;span class="c1"&gt;// 長いので省略&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;index&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;index&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;cartItems&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;taxRate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;  
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;tax&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;cartItems&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;price&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;taxRate&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="nx"&gt;cartItems&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;includeTax&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;cartItems&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;price&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;tax&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;for&lt;/code&gt;のイケてない点&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;for&lt;/code&gt;では、下記のように&lt;code&gt;index&lt;/code&gt;を指定する必要があります.&lt;br&gt;
助長になりますし、可読性も良いとは思えません.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;tax&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;cartItems&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;price&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;taxRate&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;cartItems&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;includeTax&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;cartItems&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;price&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;tax&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;map&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cartItems&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[...]&lt;/span&gt; &lt;span class="c1"&gt;// 長いので省略&lt;/span&gt;
&lt;span class="nx"&gt;cartItems&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;taxRate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;tax&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;price&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;taxRate&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;includeTax&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;price&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;tax&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;for&lt;/code&gt;と比べてイケている点&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;それに比べて&lt;code&gt;map&lt;/code&gt;はどうでしょうか？&lt;br&gt;
&lt;code&gt;map&lt;/code&gt;では下記のように複数の要素を順番に取り出します.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;cartItems&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{...}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;順番に取り出したオブジェクトは&lt;code&gt;item&lt;/code&gt;という変数に渡され下記のように各パラメーターにアクセスできます.※名前は自由に決められます.&lt;br&gt;
&lt;code&gt;for&lt;/code&gt;のように&lt;code&gt;index&lt;/code&gt;を指定する必要はありません.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;tax&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;price&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;taxRate&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;includeTax&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;price&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;tax&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;可読性も&lt;code&gt;for&lt;/code&gt;よりかなりよいかと個人的には感じます.&lt;br&gt;
ケースバイケースですが、積極的に&lt;code&gt;map&lt;/code&gt;を使っていきましょう！&lt;/p&gt;

&lt;h2&gt;
  
  
  最後に
&lt;/h2&gt;

&lt;p&gt;2022年4月から新潟県佐渡島でwebエンジニアとして働いています！&lt;br&gt;
普段は、幹事が得するグルメ予約サイト&lt;a href="https://rizakuru.com/" rel="noopener noreferrer"&gt;リザくる&lt;/a&gt;の開発しています！&lt;br&gt;
お店によりますが還元される金額の単位は&lt;code&gt;万〜&lt;/code&gt;です!&lt;br&gt;
開発や、個人学習していくなかで「おっ」と思ったことを記事として発信しています.&lt;/p&gt;

</description>
      <category>watercooler</category>
    </item>
    <item>
      <title>rails generators 制限設定</title>
      <dc:creator>koki-takishita</dc:creator>
      <pubDate>Mon, 10 Jan 2022 15:49:23 +0000</pubDate>
      <link>https://dev.to/kokitakishita/rails-generators-zhi-xian-she-ding-2baa</link>
      <guid>https://dev.to/kokitakishita/rails-generators-zhi-xian-she-ding-2baa</guid>
      <description>&lt;h3&gt;
  
  
  rails g コマンドで生成されるファイルを制限する
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://api.rubyonrails.org/classes/Rails/Generators.html"&gt;ドキュメント&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;code&gt;config/application.rb&lt;/code&gt;内に下記のように設定する
&lt;/h4&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;generators&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;g&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
  &lt;span class="n"&gt;g&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;jbuilder&lt;/span&gt;       &lt;span class="kp"&gt;false&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="err"&gt;①&lt;/span&gt; &lt;span class="c1"&gt;# p config.generators&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;各種設定項目はドキュメント内で確認できた &lt;code&gt;Rails::Generators&lt;/code&gt;
&lt;a href="https://gyazo.com/6ba8469df8413ab6db83a2e7b4a2328b"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4cwnvtq1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.gyazo.com/6ba8469df8413ab6db83a2e7b4a2328b.png" alt="Image from Gyazo" width="880" height="641"&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;コード①を有効化して、サーバログを確認すると下記のように設定項目を確認できる
&lt;a href="https://gyazo.com/d73274b33ba0798d4e9327de61fa1a05"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GVF5itkD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.gyazo.com/d73274b33ba0798d4e9327de61fa1a05.png" alt="Image from Gyazo" width="880" height="148"&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  ドキュメントに記述されていない項目...
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/rails/rails/blob/d5b9618da1ac60c674e8a27c3ab4e33742e9aa9b/railties/lib/rails/generators/rails/controller/controller_generator.rb"&gt;skip_routesソース&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;
  
  
  わからなかったこと
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;ルーティング生成の有無の設定項目である&lt;code&gt;skip_routes&lt;/code&gt;は、&lt;code&gt;railsガイド&lt;/code&gt;、&lt;code&gt;APIドキュメント&lt;/code&gt;、&lt;code&gt;その他の公式と思われるリソース&lt;/code&gt;を調べたが見つからず&lt;code&gt;個人ブログ&lt;/code&gt;などの2次、3次などのリソースでしか知ることができなかった。&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;
  
  
  分かったこと
&lt;/h5&gt;

&lt;p&gt;&lt;code&gt;rails&lt;/code&gt;のリポジトリにて、&lt;code&gt;Rails::ControllerGenerator::ControllerGenerator&lt;/code&gt;オブジェクト&lt;code&gt;class_option&lt;/code&gt;の引数に&lt;code&gt;skip_routes&lt;/code&gt;が記述されていることを確認できた。上記のコードとどのように絡んでくるかはわかっていないが、&lt;code&gt;skip_routes true or false&lt;/code&gt;を記述することで、&lt;code&gt;rails g controller&lt;/code&gt;実行の際に設定を読み込み、&lt;code&gt;config.generators.skip_routes false&lt;/code&gt;ならば、ルーティング生成を無効にするという動きをすると思われる。&lt;/p&gt;

&lt;h5&gt;
  
  
  感想
&lt;/h5&gt;

&lt;p&gt;&lt;code&gt;APIドキュメント&lt;/code&gt;などの公式リソースから情報を読み取っているが、もし公式リソースに情報がない、もしくは見つけられない時の調べ方に課題を感じた。&lt;/p&gt;

</description>
      <category>rails</category>
      <category>generator</category>
      <category>ruby</category>
    </item>
    <item>
      <title>Vueコンポーネント一例</title>
      <dc:creator>koki-takishita</dc:creator>
      <pubDate>Wed, 27 Oct 2021 18:01:37 +0000</pubDate>
      <link>https://dev.to/kokitakishita/vuekonponento-li-3bnh</link>
      <guid>https://dev.to/kokitakishita/vuekonponento-li-3bnh</guid>
      <description>&lt;h2&gt;
  
  
  はじめに
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;vue.jsの公式サイトで学んだことをアウトプット&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://jp.vuejs.org/v2/guide/index.html"&gt;vue.js 公式&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  コンポーネントとは
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;ある機能を持った付け外し可能な、部品(スクリプト)のことで、Vue.jsでは部品を組み合わせてページを完成させる.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  例　順番付きリストのコンポーネント
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;html&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;link rel="stylesheet" href="index.css"&amp;gt;
    &amp;lt;script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"&amp;gt;&amp;lt;/script&amp;gt;
  &amp;lt;/head&amp;gt;
  &amp;lt;body&amp;gt;
    &amp;lt;div id="app"&amp;gt;
      &amp;lt;ol&amp;gt;
        &amp;lt;order_lists
          v-for="ol in order_lists"
          v-bind:item="ol"
          v-bind:key="ol.id"&amp;gt;
        &amp;lt;/order_lists&amp;gt;
      &amp;lt;/ol&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;script src="index.js"&amp;gt;&amp;lt;/script&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;

Vue.component('order_lists', {
  props:    ['item'],
  template: '&amp;lt;li&amp;gt;{{item.text}}&amp;lt;/li&amp;gt;'
})

var app = new Vue ({
  el: '#app',
  data: {
    order_lists: [
      { id: 0, text: 'aiueo' },
      { id: 1, text: 'kakikukeko' },
      { id: 2, text: 'sasisuseso' }
    ]
  }
})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  出力
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://gyazo.com/f6268cb6725b8954101283f84618f475"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XBHcxXez--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.gyazo.com/f6268cb6725b8954101283f84618f475.png" alt="Image from Gyazo" width="146" height="84"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;属性値を設定することで、コンポーネントの値を変化させる
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;div id="app"&amp;gt;
  &amp;lt;ol&amp;gt;
    &amp;lt;order_lists

      // 配列を一つずつ取り出してolに代入
      v-for="ol in order_lists"

      // item(変数)にolを代入
      v-bind:item="ol"

      // kyeを設定
      // 順番付きリストを扱う際はkeyを設定するのがベターらしい
      v-bind:key="ol.id"&amp;gt;
    &amp;lt;/order_lists&amp;gt;
  &amp;lt;/ol&amp;gt;
&amp;lt;/div&amp;gt;

Vue.component('order_lists', {

  // itemを取得後、テンプレートをレンダリング
  // propsでデータを受け取ることができる.
  props:    ['item'],
  template: '&amp;lt;li&amp;gt;{{item.text}}&amp;lt;/li&amp;gt;'
})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>vue</category>
      <category>javascript</category>
    </item>
    <item>
      <title>vue サーバーからデータを取得して表示する</title>
      <dc:creator>koki-takishita</dc:creator>
      <pubDate>Fri, 15 Oct 2021 15:43:41 +0000</pubDate>
      <link>https://dev.to/kokitakishita/vue-sabakaradetawoqu-de-sitebiao-shi-suru-4eae</link>
      <guid>https://dev.to/kokitakishita/vue-sabakaradetawoqu-de-sitebiao-shi-suru-4eae</guid>
      <description>&lt;h2&gt;
  
  
  前提条件
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;バックエンドは&lt;code&gt;Rails&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;自作のAPIサーバーからデータを取る&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;vue_cli&lt;/code&gt;で作成&lt;/li&gt;
&lt;li&gt;パッケージ管理は&lt;code&gt;npm&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  一次情報
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/axios"&gt;axios公式&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://vuejs.org/"&gt;vue.js.org&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ol&gt;
  &lt;li&gt;
&lt;strong&gt;axios&lt;/strong&gt;インストール&lt;/li&gt;
  &lt;li&gt;
&lt;strong&gt;export default {}内&lt;/strong&gt;にサーバーとやり取りするコードを記述&lt;/li&gt;
  &lt;li&gt;
&lt;strong&gt;Rails&lt;/strong&gt;側設定&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  axiosインストール(HTTP通信ができるようになる)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;pakage.jsonがあるディレクリに移動後下記のコマンド実行
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ npm install axios --save
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  サーバーとやり取りするコードを記述
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;コンポーネント&lt;code&gt;methods&lt;/code&gt;内に&lt;code&gt;axios&lt;/code&gt;のコード追記
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="o"&gt;-----------&lt;/span&gt;
  &lt;span class="nx"&gt;template&lt;/span&gt;
&lt;span class="o"&gt;-----------&lt;/span&gt;

&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;axios&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;インストール先パス&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

  &lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;test&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;test&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="nx"&gt;methods&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// メソッドreadが発火したら取りにいくという想定&lt;/span&gt;
    &lt;span class="nx"&gt;read&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
      &lt;span class="nx"&gt;axios&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kd"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://取得したいサーバドメイン名&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

        &lt;span class="c1"&gt;// responseが実際に取得するデータ&lt;/span&gt;
        &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="c1"&gt;// responseの中のdata属性に取得したいデータが格納されている.&lt;/span&gt;
        &lt;span class="c1"&gt;// thisはvuecomponentオブジェクト 配列であるtestに格納している.&lt;/span&gt;
        &lt;span class="c1"&gt;// 取得するデータがJSONだとdataでいいっぽい APIそんな触らないから他のパターンもあるかも&lt;/span&gt;
        &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;test&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&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="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// handle error&lt;/span&gt;
        &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&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="p"&gt;};&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/script&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;長々と書いたが、実際に気にするのはどこから取得するかと、取得したデータの格納先
今回記述したコードは&lt;code&gt;axios&lt;/code&gt;のサンプルコードとほぼ同じ.サンプルコードを下記に示す.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;axios&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;axios&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Make a request for a user with a given ID&lt;/span&gt;
&lt;span class="nx"&gt;axios&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="kd"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/user?ID=12345&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// handle success&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&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="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// handle error&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&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="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// always executed&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Rails側設定
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;CORS対策でRails側の設定が必要
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gem 'rack-cors'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;config/initializers/cors.rb&lt;/code&gt;コメントアウトを有効に
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Be sure to restart your server when you modify this file.&lt;/span&gt;

&lt;span class="c1"&gt;# Avoid CORS issues when API is called from the frontend app.&lt;/span&gt;
&lt;span class="c1"&gt;# Handle Cross-Origin Resource Sharing (CORS) in order to accept cross-origin AJAX requests.&lt;/span&gt;

&lt;span class="c1"&gt;# Read more: https://github.com/cyu/rack-cors&lt;/span&gt;

&lt;span class="no"&gt;Rails&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;application&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;middleware&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;insert_before&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;Rack&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Cors&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
  &lt;span class="n"&gt;allow&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="n"&gt;origins&lt;/span&gt; &lt;span class="s1"&gt;'http://データを贈りたいパス'&lt;/span&gt;

    &lt;span class="n"&gt;resource&lt;/span&gt; &lt;span class="s1"&gt;'*'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="ss"&gt;headers: :any&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="ss"&gt;methods: &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:get&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:post&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:put&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:patch&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:delete&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:options&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:head&lt;/span&gt;&lt;span class="p"&gt;]&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;ul&gt;
&lt;li&gt;&lt;p&gt;変更するのは&lt;code&gt;origins&lt;/code&gt;の指定のみ&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Railsサーバーを再起動させて、データをこれで取得できるはず.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>vue</category>
      <category>api</category>
    </item>
    <item>
      <title>TCP/IPとは</title>
      <dc:creator>koki-takishita</dc:creator>
      <pubDate>Wed, 29 Sep 2021 17:22:04 +0000</pubDate>
      <link>https://dev.to/kokitakishita/tcp-ip-51de</link>
      <guid>https://dev.to/kokitakishita/tcp-ip-51de</guid>
      <description>&lt;h1&gt;
  
  
  TCP/IPとは
&lt;/h1&gt;

&lt;h2&gt;
  
  
  はじめに
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;TCP/IPの理解があやふやで毎回調べているので、一度まとめてみます.&lt;br&gt;
この記事ではアプリケーション層に関して深堀ります.&lt;br&gt;
他の層に関しては簡略化します.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;図は参考サイトの図を使用しています.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;a href="https://www.itmanage.co.jp/column/tcp-ip-protocol/"&gt;TCP/IPとは&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  TCP/IPとは
&lt;/h2&gt;

&lt;p&gt;インターネットを通してデバイス同士の通信を確立する際のルール(通信プロトコルともいう).&lt;br&gt;
TCPがルール、IPがIPアドレスを示している.&lt;/p&gt;

&lt;h3&gt;
  
  
  なぜ必要か
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;下記のようにデバイス同士の通信の際、個々のハードの構成、メーカー、OSが異なっていても通信できるようにするため.
通信の手順を統一することで、異なるデバイス同士の通信が可能になる.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;【図引用】&lt;a href="https://www.itmanage.co.jp/column/tcp-ip-protocol/"&gt;TCP/IPとは&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://gyazo.com/99915f7fc658f1d0f3f5990afd93460a"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nyp90gj4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.gyazo.com/99915f7fc658f1d0f3f5990afd93460a.png" alt="Image from Gyazo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  仕組み
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;TCP/IPは通信の際に４工程を経て、通信を確立している.
下記に工程の図を示す.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;【図引用】&lt;a href="https://www.itmanage.co.jp/column/tcp-ip-protocol/"&gt;TCP/IPとは&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://gyazo.com/549b20bd52db46a448862fd1a644c890"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jQtprMvu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.gyazo.com/549b20bd52db46a448862fd1a644c890.png" alt="Image from Gyazo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;図の通り物理的なEhernet(有線接続技術)からアプリケーションでのデータのやり取りまでのルールが決まっている.
１層〜4層までの工程ひとつひとつに通信プロトコルがあり、これらの工程すべてを総称してTCPと言っていると思う.(自信なさげ)
今回は４層を詳しく見ていく.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ４層を深ぼる
&lt;/h2&gt;

&lt;h3&gt;
  
  
  4層・アプリケーション層とは
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;webサーバー(アプリケーション・サーバー)とアプリケーション間の通信時の決まりごと(通信プロトコル) &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;【図引用】&lt;a href="https://www.itmanage.co.jp/column/tcp-ip-protocol/"&gt;TCP/IPとは&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://gyazo.com/c50acdc3654af5fdf7117e6498791579"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0VlSzF6Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.gyazo.com/c50acdc3654af5fdf7117e6498791579.png" alt="Image from Gyazo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Railsを使用すると実際は下記の通りになる.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  webサーバー ⇔  アプリケーションサーバー ⇔ Rack   ⇔ Rails
&lt;/h3&gt;

&lt;h3&gt;
  
  
  アプリケーション層プロトコル
&lt;/h3&gt;

&lt;h4&gt;
  
  
  webサイト上のやりとりはHTTP・HTTPS
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;HTTPはwebサーバーとアプリケーションの通信時のプロトコル.
ブラウザからのリクエストである&lt;code&gt;GET・POST・PUTCH・UPDATE・DELETE&lt;/code&gt;がこれに当たる.
リソース取得は&lt;code&gt;GET&lt;/code&gt;データの送信は&lt;code&gt;POST&lt;/code&gt;といったルールがある.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  メールのやり取りはSMTP・P0P3
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;メールのやり取りを行う際はSMTP・P0P3というプロトコルになる.&lt;/p&gt;

&lt;p&gt;Railsでは使用する物によっては設定が必要.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://railsguides.jp/action_mailer_basics.html#action-mailer%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B"&gt;Mailer設定&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  DHCP・DNSはアプリケーション通信をするための準備を行うプロトコル
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;DNSはドメインサーバーへアクセスし、ドメインのIPアドレスを取得することが目的です.&lt;/p&gt;

&lt;p&gt;あくまでIPアドレスがなければ、webサイトへアクセスすることはできません.&lt;br&gt;
DNSサーバは目的のドメインが見つかるまで、各DNSサーバーへアクセスしますが、毎回行っていると時間がかかるのでアクセスした情報をキャッシュに保存しておき、キャッシュの情報から目的のDNSサーバーへ直接アクセスすることができる.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;【図引用】&lt;a href="https://www.itmanage.co.jp/column/tcp-ip-protocol/"&gt;TCP/IPとは&lt;/a&gt;&lt;br&gt;
 &lt;a href="https://gyazo.com/cc1a85ee4f33135644c670c3816e1826"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--a1p-cU9s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.gyazo.com/cc1a85ee4f33135644c670c3816e1826.png" alt="Image from Gyazo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  終わりに
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;TCP/IPの理解度としては全体の20%程でしょうか.
インフラを構築する際に知見が必要だと思うので、引き続き学習していきます.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>インフラ</category>
      <category>アプリケーション層</category>
      <category>rails</category>
    </item>
    <item>
      <title>dockerファイル作成</title>
      <dc:creator>koki-takishita</dc:creator>
      <pubDate>Fri, 24 Sep 2021 02:51:45 +0000</pubDate>
      <link>https://dev.to/kokitakishita/doker-1no4</link>
      <guid>https://dev.to/kokitakishita/doker-1no4</guid>
      <description>&lt;h2&gt;
  
  
  dockerファイルとは
&lt;/h2&gt;

&lt;p&gt;Docker イメージというコンテナの土台となるファイルのこと.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.docker.jp/engine/userguide/dockerimages.html"&gt;イメージに関するドキュメント(ja)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  dockerファイルの基本的なコマンド
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.docker.jp/engine/reference/builder.html"&gt;コマンドに関するドキュメント(ja)&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;FROM&lt;br&gt;
OSを指定する.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FROM ubuntu:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;RUN&lt;br&gt;
使用するパッケージの指定とパッケージ保守プログラムを記載.&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;RUN apt-get update &amp;amp;&amp;amp; apt-get install -y ruby ruby-dev
RUN gem install sinatra
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;CMD&lt;br&gt;
Dockerを起動した時に走らせるプログラム&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CMD ["/bin/bash"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;COPY&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;COPY something /new_dir/
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  実際に作成してみる
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ディレクトリ作成
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir docker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  dockerファイル作成
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;touch Dockerfile

# 今回の実習でCOPYするファイル
touch something
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  dockerファイルにプログラムを書き込む
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# OSを指定する
FROM ubuntu:latest

# パッケージをインストール 「\」は改行しても１行とみなされる.
# 「&amp;amp;&amp;amp;」は複数のコマンドを同時実行 １行でまとめることでレイヤーを少なくする.
RUN apt-get update &amp;amp;&amp;amp; apt-get install -y \
    bzr \
    cvs \
    git \

RUN mkdir app
COPY something /app/

# run後に走らせるプログラム shellを起動させている
CMD ["/bin/bash"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  buildしてイメージを作成
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# .はカレントディレクトリを指定している.
docker build .

# 作成できているか確認
docker images
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  runしてパッケージがインストールされているか &amp;amp;&amp;amp; somethingファイルが存在するか確認
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run -it &amp;lt;image id&amp;gt;

# docker内でパッケージとファイルを確認 パッケージはbin/〜
ls
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  キャッシュをうまく使う
&lt;/h3&gt;

&lt;p&gt;下記のように１行で記述すると、レイヤーの数を削減できるがパッケージの追加や編集の際にいちからbuildしてるとインストールに時間がかかってしまう。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;RUN apt-get update &amp;amp;&amp;amp; apt-get install -y \
    bzr \
    cvs \
    git \
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ファイル編集時や構築時にはすべて１行づつ記述する.&lt;br&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;RUN apt-get update
RUN apt-get install -y bzr
RUN apt-get install -y cvs
RUN apt-get install -y git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  exit code :100
&lt;/h3&gt;

&lt;p&gt;一度buildした後、再度ファイルを編集してbuildすると、エラーが起こる.&lt;br&gt;
理由は不明だが、updateを記述しない状態でbuildするとエラーが発生する.&lt;br&gt;
updateを記述することで解決する.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;RUN apt-get update
RUN apt-get install -y bzr
RUN apt-get install -y cvs
RUN apt-get install -y git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>docker</category>
      <category>環境構築</category>
      <category>キャッシュ</category>
    </item>
    <item>
      <title>GitHub flowとは</title>
      <dc:creator>koki-takishita</dc:creator>
      <pubDate>Sun, 19 Sep 2021 02:17:09 +0000</pubDate>
      <link>https://dev.to/kokitakishita/github-flow-4h4a</link>
      <guid>https://dev.to/kokitakishita/github-flow-4h4a</guid>
      <description>&lt;h1&gt;
  
  
  はじめに
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;GitHubFlowについてまとめてみました。&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  GitHubFlowとは
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;GitHub Flowは「GitHub」の開発で使用されているワークフローであり、「git-flow」
に比べてシンプルな構成になっています。&lt;/li&gt;
&lt;li&gt;参考記事

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://atmarkit.itmedia.co.jp/ait/articles/1708/01/news015.html"&gt;詳細な解説記事&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nvie.com/posts/a-successful-git-branching-model/"&gt;git-flowとは(英語)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  開発の流れ
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://gyazo.com/ee3d505e997fbcc818aee7acd5dd254e"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QN8wKj4t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.gyazo.com/ee3d505e997fbcc818aee7acd5dd254e.png" alt="Image from Gyazo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;作業を開始する際は、mainブランチから開発ブランチを切る。
※ mainブランチは常にリリース可能な状態のこと&lt;/li&gt;
&lt;li&gt;開発が完了したらリモートへpushし、PRを依頼する。&lt;/li&gt;
&lt;li&gt;PRがOKならば、mainへマージする&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  実際にやってみる
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;リポジトリ作成&lt;/li&gt;
&lt;li&gt;ローカルへclone&lt;/li&gt;
&lt;li&gt;ブランチを切って編集&lt;/li&gt;
&lt;li&gt;作業内容をpush&lt;/li&gt;
&lt;li&gt;PRを依頼&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  リポジトリ作成
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;リポジトリを作成します。自分のGiuHubへアクセスしてリポジトリを作成しましょう。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://gyazo.com/928775809b505183f5dd6a625da905b0"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--n3DBe4Mf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.gyazo.com/928775809b505183f5dd6a625da905b0.png" alt="Image from Gyazo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTTPSかSSHどちらかコピーしましょう。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://gyazo.com/928775809b505183f5dd6a625da905b0"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--n3DBe4Mf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.gyazo.com/928775809b505183f5dd6a625da905b0.png" alt="Image from Gyazo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ローカルでcloneしましょう。
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git clone &amp;lt;コピーしたurl&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;cloneしたら&lt;code&gt;cd&lt;/code&gt;コマンドでcloneしたディレクトリへ移動します。
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ cd git-proactice
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  ブランチを切って編集
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;feature/add_sample.txt&lt;/code&gt;ブランチを切リます。
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git checkout -b feature/add_sample.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;ファイルを追加して、ファイルを更新します。
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# ファイル追加
$ touch sample.txt

# ファイル編集
$ vim sample.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://gyazo.com/7d6aaba019e3540a1bf3b6606e8b0a7f"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--a7wVkddb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.gyazo.com/7d6aaba019e3540a1bf3b6606e8b0a7f.gif" alt="Image from Gyazo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ステージングエリアへ追加し、コミットします。
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# 更新されていること確認
$ git status

# ステージングエリアへ追加
$ git add sample.txt

# コミット
$ git commit -m "new file add sample.txt"

# コミットされたことを確認
$ git log --oneline
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  作業内容をpush
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# pushする前にリモートの変更がないか確認します。
$ git pull origin main

# push先はmainではなく、ローカルで作成したブランチです。
# mainは常にリリース可能状態にするためです。
$ git push origin feature/add_sample.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  PRを依頼
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;github上でPRを贈ります。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://gyazo.com/fd53842a7593fd848e6e870c926e07e3"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fplnzKMV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.gyazo.com/fd53842a7593fd848e6e870c926e07e3.png" alt="Image from Gyazo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;マージして完了(実際はレビューした人が行います。)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://gyazo.com/d605a29feaf9ffcc42a165e45dbc8365"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eocBJVUR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.gyazo.com/d605a29feaf9ffcc42a165e45dbc8365.gif" alt="Image from Gyazo"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>github</category>
      <category>git</category>
      <category>githubflow</category>
    </item>
    <item>
      <title>cookieとセッションのアウトプット</title>
      <dc:creator>koki-takishita</dc:creator>
      <pubDate>Fri, 17 Sep 2021 14:47:51 +0000</pubDate>
      <link>https://dev.to/kokitakishita/cookie-2ko1</link>
      <guid>https://dev.to/kokitakishita/cookie-2ko1</guid>
      <description>&lt;h1&gt;
  
  
  はじめに
&lt;/h1&gt;

&lt;p&gt;cookieとセッションの理解が曖昧なのでアウトプット&lt;br&gt;
今回は概要のみで具体的にどこに、なんのデータが入ってくるかは書かない&lt;/p&gt;

&lt;h2&gt;
  
  
  ブラウザとwebサーバー間の通信時は、前回の情報を保持しない
&lt;/h2&gt;

&lt;p&gt;ブラウザとwebサーバー間のデータのやり取り(HTTP通信)はステートレスで、前回の情報を保持しません。&lt;br&gt;
 つまり、ECサイトでショッピングカートに商品を入れ、購入ボタンを押し、確認ページに飛ぶ際にはショッピングカートの情報を保持しなければなりません。&lt;br&gt;
 しかしステートレスな通信では前回の情報を保持できないため、商品の情報を次のリクエスト時には忘れてしまいます。&lt;/p&gt;

&lt;h2&gt;
  
  
  ECサイトでのステートレスな流れ
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://gyazo.com/9c5da80994c89d67dd1f4ea54fb2398f"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--N0a8cu2P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.gyazo.com/9c5da80994c89d67dd1f4ea54fb2398f.png" alt="Image from Gyazo"&gt;&lt;/a&gt;&lt;br&gt;
 &lt;a href="https://gyazo.com/59303811437bd7ffcca55cd4240c8f98"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--S9G8VUcR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.gyazo.com/59303811437bd7ffcca55cd4240c8f98.png" alt="Image from Gyazo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;上記のようにステートレスだと、前回のカートの中に入っていた情報を覚えていません。&lt;br&gt;
 そのため２回目のレスポンス時には、カートに何も入ってない状態で返ってきてしまいます。&lt;br&gt;
 これでは、ECサイトので購入の処理、ログイン状態の保持ができなくなってしまいます。&lt;/p&gt;

&lt;h2&gt;
  
  
  cookieのおかげで前回の情報を保持できる
&lt;/h2&gt;

&lt;p&gt;状態を保持するためにcookieという仕組みがあります。&lt;br&gt;
 cookieとはサーバーとwebサーバー間の状態を管理することができます。&lt;br&gt;
 順序を下記に示します。&lt;br&gt;
 1.webサーバーがwebブラウザに状態を区別するidを割り当てHTTPヘッダーに含め、レスポンスを返す&lt;br&gt;
 2.ブラウザはリクエストを送るたびに、webサーバーから受け取ったidをHTTPヘッダに含めリクエストする&lt;br&gt;
 3.サーバーはそのidからコンテンツの内容に紐付いている情報をもとに、内容を変化させユーザーに返す&lt;br&gt;
 2,3を繰り返すことによって、状態を保持する事ができる。&lt;/p&gt;

&lt;h2&gt;
  
  
  cookieを用いたステートフルな流れ
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://gyazo.com/c8c8fbf12460d43d6f0f569f2c3717f2"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EhxI2KLc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.gyazo.com/c8c8fbf12460d43d6f0f569f2c3717f2.png" alt="Image from Gyazo"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://gyazo.com/d72db35d6dd91778ce5086f58246a809"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UX5ot8Yo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.gyazo.com/d72db35d6dd91778ce5086f58246a809.png" alt="Image from Gyazo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;最初のリクエスト時にwebサーバーはidを発行します。&lt;br&gt;
 それをcookieとしてブラウザに返します。&lt;br&gt;
 ブラウザは受け取ったcookieをヘッダーに含めリクエストします。&lt;br&gt;
 ブラウザから受け取ったcookieのデータから、ブラウザを識別します。&lt;br&gt;
 識別後、ブラウザごとに内容をカスマイズしてブラウザに返します。&lt;/p&gt;

&lt;h2&gt;
  
  
  セッションとは
&lt;/h2&gt;

&lt;p&gt;セッションとはwebサーバーとブラウザ間の関連のある、一連の処理流れのことを指します。&lt;br&gt;
 ECサイトの「商品をカートに入れる」→「購入確認ボタンを押す」→「注文を確定する」といった一連の処理流れのことです&lt;br&gt;
 複数のブラウザから、一連のセッションを管理するにはセッションIDを用いて管理します。&lt;br&gt;
 セッションIDとはブラウザを識別するためのIDのことです。&lt;br&gt;
 ブラウザからwebサーバーにリクエストが来た際に、webサーバーが発行しcookieに格納後、ヘッダーに含めてレスポンスとして返します。&lt;br&gt;
 セッションIDはどのブラウザがセッションのどこまで処理が進んだか管理することができます。&lt;br&gt;
 セッションデータを用いて、ログイン情報や、ECサイトならカートに商品は入っているのかなどを参照します。&lt;br&gt;
 セッションデータはセッションIDに紐付いているため、セッションIDさえ識別できればデータを取り出せます。&lt;/p&gt;

&lt;h2&gt;
  
  
  おわりに
&lt;/h2&gt;

&lt;p&gt;まだ理解があやふやです。&lt;br&gt;
特にセッションまわり&lt;br&gt;
今回は概要のみにしましたが、次回は厳密にどこにデータが入るかコードで示した記事を書きます。&lt;/p&gt;

</description>
      <category>login</category>
      <category>session</category>
      <category>cookie</category>
    </item>
    <item>
      <title>tmux コマンドリスト</title>
      <dc:creator>koki-takishita</dc:creator>
      <pubDate>Wed, 15 Sep 2021 17:10:24 +0000</pubDate>
      <link>https://dev.to/kokitakishita/tmux-cmd-list-4ilc</link>
      <guid>https://dev.to/kokitakishita/tmux-cmd-list-4ilc</guid>
      <description>&lt;h1&gt;
  
  
  はじめに
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;tmuxの頻出コマンドリスト + 用語説明&lt;/li&gt;
&lt;li&gt;()内に筆者の&lt;code&gt;イメージ&lt;/code&gt;を書いてます。&lt;code&gt;厳密&lt;/code&gt;には異なるのであくまで&lt;code&gt;参考程度&lt;/code&gt;に&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  新規セッション作成
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;セッション&lt;/code&gt;とは言い換えると&lt;code&gt;作業エリア&lt;/code&gt;(セッション)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;セッション&lt;/code&gt;の中では&lt;code&gt;画面分割&lt;/code&gt;、&lt;code&gt;タブ切替&lt;/code&gt;など&lt;code&gt;キーボード&lt;/code&gt;のみで操作可能&lt;/li&gt;
&lt;li&gt;また複数の&lt;code&gt;セッション&lt;/code&gt;を作成可能、&lt;code&gt;プロジェクト&lt;/code&gt;ごとに&lt;code&gt;セッション&lt;/code&gt;(作業エリア)を&lt;code&gt;切替&lt;/code&gt;可能
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;# セッション作成&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;tmux&lt;/span&gt; &lt;span class="n"&gt;new&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="err"&gt;セッション名&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;任意の名前&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# セッション名変更&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="err"&gt;キー&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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="c1"&gt;# 指定して削除&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;tmux&lt;/span&gt; &lt;span class="n"&gt;kill&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;session&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="err"&gt;セッション名&lt;/span&gt;
&lt;span class="c1"&gt;# すべてのセッション削除&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;tumx&lt;/span&gt; &lt;span class="n"&gt;kill&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;server&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  アタッチ
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;作成した&lt;code&gt;セッション&lt;/code&gt;に&lt;code&gt;アタッチ&lt;/code&gt;する(接続する)
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;# セッション一覧取得&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;tmux&lt;/span&gt; &lt;span class="n"&gt;ls&lt;/span&gt;
&lt;span class="c1"&gt;# セッションにアタッチ(接続という表現がしっくりくる)&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;tmux&lt;/span&gt; &lt;span class="n"&gt;attach&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="err"&gt;名前&lt;/span&gt;
&lt;span class="c1"&gt;# 上記と等価&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;tmux&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="err"&gt;名前&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  デタッチ
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;アタッチ&lt;/code&gt;(接続)中の&lt;code&gt;セッション&lt;/code&gt;(作業エリア)から&lt;code&gt;デタッチ&lt;/code&gt;(ログアウト)する
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;# セッションデタッチ(接続中のセッションからログアウトする)&lt;/span&gt;
&lt;span class="c1"&gt;# prefixキーは設定ファイルで変更可能(デフォルトは CTR+q)&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="err"&gt;キー&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ウィンドウ
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;セッション内でタブのような役割をする。&lt;/li&gt;
&lt;li&gt;タブごとに役割を分けるなど結構使う
&lt;a href="https://gyazo.com/817a23c78d3f88d1635fef2c0c983801"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6vj-irEV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.gyazo.com/817a23c78d3f88d1635fef2c0c983801.gif" alt="Image from Gyazo"&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="c1"&gt;# 新規作成&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="err"&gt;キー&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;

&lt;span class="c1"&gt;# ウィンドウ名前変更&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="err"&gt;キー&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt;

&lt;span class="c1"&gt;# ウィンドウ切替&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="err"&gt;キー&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="err"&gt;インデックス番号&lt;/span&gt;
&lt;span class="c1"&gt;# 次のウィンドウ 1→2 &lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="err"&gt;キー&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;
&lt;span class="c1"&gt;# 戻る 2→1&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="err"&gt;キー&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nb"&gt;p&lt;/span&gt;

&lt;span class="c1"&gt;# ウィンドウ削除&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="err"&gt;キー&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;

&lt;span class="c1"&gt;# ウィンドウリスト&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="err"&gt;キー&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;w&lt;/span&gt;

&lt;span class="c1"&gt;# ウィンドウ検索&lt;/span&gt;
&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;prefix&lt;/span&gt;&lt;span class="err"&gt;キー&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  パネル
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;画面分割ができる&lt;/li&gt;
&lt;li&gt;ターミナル専用などにして使ったりする&lt;/li&gt;
&lt;li&gt;筆者はvimで分割しがちなので正直あまり使わない...
&lt;a href="https://gyazo.com/b4a1e69a644865eb488cc6f77842d978"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CqIoWrI2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i.gyazo.com/b4a1e69a644865eb488cc6f77842d978.gif" alt="Image from Gyazo"&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# 画面分割(横)
$ prefixキー + "

# 画面分割（縦）
$ prefixキー + %

# 削除
$ prefixキー + x

# 画面切替
prefixキー + o

# 番号が表示されている間に押す
prefixキー + q 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  おわりに
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;バッファと設定ファイルはまた別記事で書きます。&lt;/li&gt;
&lt;li&gt;正直筆者自身上記の２つはほとんど使ってないので、使いこなしだしたら記事を書ます。&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>tmux</category>
      <category>terminal</category>
      <category>cmd</category>
      <category>コマンドリスト</category>
    </item>
    <item>
      <title>NERDTree コマンドリスト</title>
      <dc:creator>koki-takishita</dc:creator>
      <pubDate>Tue, 14 Sep 2021 11:15:28 +0000</pubDate>
      <link>https://dev.to/kokitakishita/nerdtree-cmd-list-1bni</link>
      <guid>https://dev.to/kokitakishita/nerdtree-cmd-list-1bni</guid>
      <description>&lt;p&gt;&lt;u&gt;&lt;h2&gt;ファイル操作&lt;/h2&gt;&lt;/u&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;cmd&lt;/th&gt;
&lt;th&gt;分割&lt;/th&gt;
&lt;th&gt;カーソル&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;o&lt;/td&gt;
&lt;td&gt;なし&lt;/td&gt;
&lt;td&gt;ファイル&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;i&lt;/td&gt;
&lt;td&gt;あり(横)&lt;/td&gt;
&lt;td&gt;ファイル&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;s&lt;/td&gt;
&lt;td&gt;あり(縦)&lt;/td&gt;
&lt;td&gt;ファイル&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;go&lt;/td&gt;
&lt;td&gt;なし&lt;/td&gt;
&lt;td&gt;Tree&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gi&lt;/td&gt;
&lt;td&gt;あり（横）&lt;/td&gt;
&lt;td&gt;Tree&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gs&lt;/td&gt;
&lt;td&gt;あり（縦）&lt;/td&gt;
&lt;td&gt;Tree&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;u&gt;&lt;h2&gt;ディレクトリ操作&lt;/h2&gt;&lt;/u&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;cmd&lt;/th&gt;
&lt;th&gt;動作説明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;O&lt;/td&gt;
&lt;td&gt;子要素をすべて展開&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;x&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;カーソル上&lt;/code&gt;の親要素を閉じる&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;X&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;カーソル上&lt;/code&gt;の子孫要素すべて閉じる&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;u&gt;&lt;h2&gt;Tree間移動&lt;/h2&gt;&lt;/u&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;cmd&lt;/th&gt;
&lt;th&gt;動作説明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;P&lt;/td&gt;
&lt;td&gt;ルートディレクトリへカーソル移動&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;p&lt;/td&gt;
&lt;td&gt;親ディレクトリへカーソル移動&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;K&lt;/td&gt;
&lt;td&gt;子要素間で一番最初の要素へカーソル移動&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;J&lt;/td&gt;
&lt;td&gt;Kと反対の動き&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;u&gt;&lt;h2&gt;Tree構造操作&lt;/h2&gt;&lt;/u&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;cmd&lt;/th&gt;
&lt;th&gt;動作説明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;td&gt;ルートディレクトリを&lt;code&gt;カーソル上&lt;/code&gt;のディレクトリに変更&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;u&lt;/td&gt;
&lt;td&gt;ルートディレクトリを、現在のルートディレクトリ一つ上のディレクトリへ変更&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;U&lt;/td&gt;
&lt;td&gt;tree構造は展開したまま、uの動作をする&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;m&lt;/td&gt;
&lt;td&gt;カーソル上のファイル、ディレクトリの操作(コピー、移動、削除など)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;u&gt;&lt;h2&gt;ブックマーク&lt;/h2&gt;&lt;/u&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;cmd&lt;/th&gt;
&lt;th&gt;動作説明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;td&gt;ブックマーク表示&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;:Bookmark [任意の名前]&lt;/td&gt;
&lt;td&gt;カーソル上の要素をブックマークへ登録&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;:OpenBookmark [ブックマーク指定]&lt;/td&gt;
&lt;td&gt;指定したブックマークを開く&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;:ClearBookmarks [ブックマーク指定]&lt;/td&gt;
&lt;td&gt;ブックマーク削除&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>vim</category>
      <category>nerdtree</category>
      <category>plugin</category>
      <category>コマンドリスト</category>
    </item>
  </channel>
</rss>
