<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.7.4">Jekyll</generator><link href="https://tech.xeres.jp/feed.xml" rel="self" type="application/atom+xml" /><link href="https://tech.xeres.jp/" rel="alternate" type="text/html" /><updated>2018-12-13T15:28:35+09:00</updated><id>https://tech.xeres.jp/feed.xml</id><title type="html">451 Unavailable For Legal Reasons</title><subtitle></subtitle><author><name>Xeres</name></author><entry><title type="html">バージョニングを有効にした S3 バケットの削除方法</title><link href="https://tech.xeres.jp/2018/12/13/how-to-delete-s3-bucket-versioning-enabled/" rel="alternate" type="text/html" title="バージョニングを有効にした S3 バケットの削除方法" /><published>2018-12-13T15:26:00+09:00</published><updated>2018-12-13T15:26:00+09:00</updated><id>https://tech.xeres.jp/2018/12/13/how-to-delete-s3-bucket-versioning-enabled</id><content type="html" xml:base="https://tech.xeres.jp/2018/12/13/how-to-delete-s3-bucket-versioning-enabled/">&lt;h2 id=&quot;tl-dr&quot;&gt;tl; dr&lt;/h2&gt;

&lt;p&gt;バージョニングを有効にした S3 バケットを削除する際、事前に全てのバージョンのオブジェクトを削除する必要がある。&lt;/p&gt;

&lt;h2 id=&quot;確認&quot;&gt;確認&lt;/h2&gt;

&lt;p&gt;バージョニングを有効にしたバケットを作成し、その中にファイルを作成した後、バケットを空にしてからバケットの削除を試す。&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ aws s3api create-bucket --bucket BUCKET-NAME
$ aws s3api put-bucket-versioning --bucket BUCKET-NAME --versioning-configuration Status=Enabled
$ echo &quot;hello, world&quot; &amp;gt; KEY-NAME
$ aws s3 cp KEY-NAME s3://BUCKET-NAME
upload: ./KEY-NAME to s3://BUCKET-NAME/KEY-NAME
$ aws s3 rm s3://BUCKET-NAME --recursive
delete: s3://BUCKET-NAME/KEY-NAME
$ aws s3 rb s3://BUCKET-NAME --force
remove_bucket failed: s3://BUCKET-NAME An error occurred (BucketNotEmpty) when calling the DeleteBucket operation: The bucket you tried to delete is not empty. You must delete all versions in the bucket.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;当たり前だが、面倒くさい…。&lt;/p&gt;

&lt;p&gt;試しにバージョニングを無効にしてたら削除できないかしら…？&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ aws s3api get-bucket-versioning --bucket BUCKET-NAME
{
    &quot;Status&quot;: &quot;Enabled&quot;,
    &quot;MFADelete&quot;: &quot;Disabled&quot;
}
$ aws s3api put-bucket-versioning --bucket BUCKET-NAME --versioning-configuration Status=Suspended

An error occurred (InvalidBucketState) when calling the PutBucketVersioning operation: A WORM configuration is present on this bucket, so the versioning state cannot be changed.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;はい、ダメでした。&lt;/p&gt;

&lt;p&gt;仕方がないのでバージョニングされたオブジェクトを全て削除する。&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ aws s3api list-object-versions --bucket BUCKET-NAME
{
    &quot;Versions&quot;: [
        {
            &quot;ETag&quot;: &quot;\&quot;ETAG-ID\&quot;&quot;,
            &quot;Size&quot;: 4,
            &quot;StorageClass&quot;: &quot;STANDARD&quot;,
            &quot;Key&quot;: &quot;KEY-NAME&quot;,
            &quot;VersionId&quot;: &quot;VERSION-ID-OLD&quot;,
            &quot;IsLatest&quot;: false,
            &quot;LastModified&quot;: &quot;2018-12-13T06:00:19.000Z&quot;,
            &quot;Owner&quot;: {
                &quot;DisplayName&quot;: &quot;OWNER-NAME&quot;,
                &quot;ID&quot;: &quot;OWNER-ID&quot;
            }
        }
    ],
    &quot;DeleteMarkers&quot;: [
        {
            &quot;Owner&quot;: {
                &quot;DisplayName&quot;: &quot;OWNER-NAME&quot;,
                &quot;ID&quot;: &quot;OWNER-ID&quot;
            },
            &quot;Key&quot;: &quot;KEY-NAME&quot;,
            &quot;VersionId&quot;: &quot;VERSION-ID-LATEST&quot;,
            &quot;IsLatest&quot;: true,
            &quot;LastModified&quot;: &quot;2018-12-13T06:00:24.000Z&quot;
        }
    ]
}
$ aws s3api delete-object --bucket BUCKET-NAME --key &quot;KEY-NAME&quot; --version-id &quot;VERSION-ID-OLD&quot;
{
    &quot;VersionId&quot;: &quot;VERSION-ID-OLD&quot;
}
$ aws s3api delete-object --bucket BUCKET-NAME --key &quot;KEY-NAME&quot; --version-id &quot;VERSION-ID-LATEST&quot;
{
    &quot;DeleteMarker&quot;: true,
    &quot;VersionId&quot;: &quot;VERSION-ID-LATEST&quot;
}
$ aws s3api list-object-versions --bucket BUCKET-NAME
$ aws s3 rb s3://BUCKET-NAME
remove_bucket: BUCKET-NAME
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;べ、別に忘れてウッカリしてたわけじゃないんだからね！(白状&lt;/p&gt;</content><author><name>Xeres</name></author><category term="AWS" /><category term="S3" /><category term="awscli" /><summary type="html">tl; dr</summary></entry><entry><title type="html">なぜ Zone Apex に CNAME を設定できないのか</title><link href="https://tech.xeres.jp/2018/11/06/why-can-t-i-use-cname-for-zone-apex/" rel="alternate" type="text/html" title="なぜ Zone Apex に CNAME を設定できないのか" /><published>2018-11-06T21:40:00+09:00</published><updated>2018-11-06T21:40:00+09:00</updated><id>https://tech.xeres.jp/2018/11/06/why-can-t-i-use-cname-for-zone-apex</id><content type="html" xml:base="https://tech.xeres.jp/2018/11/06/why-can-t-i-use-cname-for-zone-apex/">&lt;h2 id=&quot;発端&quot;&gt;発端&lt;/h2&gt;

&lt;p&gt;ELB の話をしていて、Zone Apex に CNAME を設定できないのは何故かという話になった。&lt;/p&gt;

&lt;iframe src=&quot;//www.slideshare.net/slideshow/embed_code/key/sm3ZFfLpee1hxt?startSlide=19&quot; width=&quot;595&quot; height=&quot;485&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot; style=&quot;border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;&quot; allowfullscreen=&quot;&quot;&gt; &lt;/iframe&gt;
&lt;div style=&quot;margin-bottom:5px&quot;&gt; &lt;strong&gt; &lt;a href=&quot;//www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-online-seminar-2016-elastic-load-balancing&quot; title=&quot;AWS Black Belt Online Seminar 2016 Elastic Load Balancing&quot; target=&quot;_blank&quot;&gt;AWS Black Belt Online Seminar 2016 Elastic Load Balancing&lt;/a&gt; &lt;/strong&gt; from &lt;strong&gt;&lt;a href=&quot;//www.slideshare.net/AmazonWebServicesJapan&quot; target=&quot;_blank&quot;&gt;Amazon Web Services Japan&lt;/a&gt;&lt;/strong&gt; &lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;Zone Apex (www.example.com ではなく example.com を指定)の場合
    &lt;ul&gt;
      &lt;li&gt;通常の DNS サーバーでは CNAME 設定不可&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;結論&quot;&gt;結論&lt;/h2&gt;

&lt;p&gt;結論から言うと ELB の仕様は関係なく、DNS の仕様が理由みたい。&lt;/p&gt;

&lt;p&gt;DNS の一般的な運用や設定の誤りを記載した &lt;a href=&quot;rfc1912&quot;&gt;RFC1912&lt;/a&gt; に、ずばりの記載がある。&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;2.4 CNAME records&lt;/p&gt;

  &lt;p&gt;A CNAME record is not allowed to coexist with any other data.  In
other words, if suzy.podunk.xx is an alias for sue.podunk.xx, you
can’t also have an MX record for suzy.podunk.edu, or an A record, or
even a TXT record.  Especially do not try to combine CNAMEs and NS
records like this!:&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;(拙訳)&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;2.4 CNAME レコード&lt;/p&gt;

  &lt;p&gt;CNAME レコードはいかなる他のデータとも共存できません。言い換えれば、もし
suzy.podunk.xx が sue.podunk.xx のための別名であるなら、あなたは suzy.podunk.edu に
対して、MX レコード、Aレコードまたは TXT レコードを設定することはできません。
特に CNAME と NS レコードをこのように組み合わせないでください。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Zone Apex (aka “naked domain”, “bare domain”) は、そのドメインに対しての
権威 DNS サーバーを指定するために NS レコードの設定が必須となるので、
Zone Apex に同時に CNAME を設定してはいけない、ということみたい。&lt;/p&gt;

&lt;p&gt;じゃあ「CNAME レコードはいかなる他のデータとも共存できない」ってのは
DNS 自体の仕様の RFC に記載があるのかと思ったけど、ちょっと見つけられなかった。&lt;/p&gt;

&lt;p&gt;DNS のコンセプト、仕様や実装を記載した RFC1034 や RFC1035 あたりに
“MUST NOT” な記載があるかと思ったが、自分には見つけられなかった
(どちらも既に Update されているので注意)。&lt;/p&gt;

&lt;h2 id=&quot;route-53-でエイリアスの設定をすると回避できるのは何故&quot;&gt;Route 53 でエイリアスの設定をすると回避できるのは何故？&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;alias&quot;&gt;Route 53 のエイリアス&lt;/a&gt; は実際には A/AAAA レコードを返すため。&lt;/p&gt;

&lt;h2 id=&quot;エイリアスレコードのお得なところ&quot;&gt;エイリアスレコードのお得なところ&lt;/h2&gt;

&lt;p&gt;Zone Apex とか全然関係ないところで、Route 53 の仕様に「AWS リソースに対する
エイリアスクエリに課金されない」というものがあるので、何らかの理由で
CNAME レコードを設定したいケース以外ではエイリアスを利用したほうが良さそう。&lt;/p&gt;</content><author><name>Xeres</name></author><summary type="html">発端</summary></entry><entry><title type="html">翁長雄志、津川雅彦、両氏の死についてのツイートを Google Cloud Natural Language API にぶち込んでみたけど、特に何も得られなかった</title><link href="https://tech.xeres.jp/2018/08/12/sentiment-analysis-with-left-wing-and-right-wing/" rel="alternate" type="text/html" title="翁長雄志、津川雅彦、両氏の死についてのツイートを Google Cloud Natural Language API にぶち込んでみたけど、特に何も得られなかった" /><published>2018-08-12T17:01:00+09:00</published><updated>2018-08-12T17:01:00+09:00</updated><id>https://tech.xeres.jp/2018/08/12/sentiment-analysis-with-left-wing-and-right-wing</id><content type="html" xml:base="https://tech.xeres.jp/2018/08/12/sentiment-analysis-with-left-wing-and-right-wing/">&lt;p&gt;&lt;a href=&quot;http://www.po-jama-people.info/entry/2018/08/12/113435&quot;&gt;翁長雄志、津川雅彦、両氏の死についてのツイートを分析し、左右どちらのほうがクズなのか計量的に分析してみました - 雑記（主に政治や時事について）&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;上記の記事を読んで面白いと思ったのだけど、&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;最終的な選り分けは結局主観に頼るものだったので偏っている可能性がある&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;という記載が気になって、試しに &lt;a href=&quot;https://cloud.google.com/natural-language/&quot;&gt;Google Cloud Natural Language API&lt;/a&gt; に
ぶち込んだら客観的な分析になるのでは？…と思って試してみた。&lt;/p&gt;

&lt;h2 id=&quot;ソースコード&quot;&gt;ソースコード&lt;/h2&gt;

&lt;p&gt;ほぼ、Google Cloud Natural Language API のサンプルどおり。
CSV を読み込んで API に食わせて、分析結果と原文を別の CSV に保存する感じにしてみた。&lt;/p&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c&quot;&gt;#!/usr/bin/python3&lt;/span&gt;

&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;sys&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;csv&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;google.cloud&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;language&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;google.cloud.language&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;enums&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;google.cloud.language&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;types&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;client&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;language&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;LanguageServiceClient&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;out_file&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;sys&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;argv&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;'w'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;writer&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;csv&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;writer&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;out_file&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;lineterminator&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;with&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;open&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;sys&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;argv&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;'r'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;in_file&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;reader&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;csv&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;reader&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;in_file&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

    &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;row&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;reader&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;document&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;types&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Document&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;language&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;ja&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;row&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;
            &lt;span class=&quot;nb&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;enums&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Document&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Type&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;PLAIN_TEXT&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

        &lt;span class=&quot;n&quot;&gt;sentiment&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;client&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;analyze_sentiment&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;document&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;document&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;document_sentiment&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;writer&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;writerow&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;([&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;sentiment&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;score&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;sentiment&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;magnitude&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;row&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]])&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;out_file&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;close&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;こうやって使う。&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;python3 script.py onaga.csv onaga_result.csv
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;課金についての注意&quot;&gt;課金についての注意&lt;/h2&gt;

&lt;p&gt;Google Cloud Natural Language API の感情分析は API の呼び出し1回を1ユニットとして、
1ヶ月あたり5000〜100万ユニット以内の使用状況だと1000ユニットあたり1ドル
(ただし月5000ユニットまでは無料)という課金体型なのだが、元データは5万ツイートくらい
あって、そのままぶっ込むと50ドルくらい掛かってお財布に優しくないので、気をつけようね！&lt;/p&gt;

&lt;h2 id=&quot;結果&quot;&gt;結果&lt;/h2&gt;

&lt;p&gt;よく分からなかった。&lt;/p&gt;

&lt;p&gt;…いや、違うんです、ちょっと待って、帰らないで。&lt;/p&gt;

&lt;p&gt;例えばこういうツイートがあるとするじゃないすか。これが感情分析にかけると &lt;code class=&quot;highlighter-rouge&quot;&gt;score&lt;/code&gt; が
0.3、&lt;code class=&quot;highlighter-rouge&quot;&gt;magnitude&lt;/code&gt; が &lt;code class=&quot;highlighter-rouge&quot;&gt;0.7&lt;/code&gt; くらいのポジティブ扱いなんすよ。哀悼の意だぞ？&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;○○、亡くなられたんですね。心から哀悼の意を捧げます。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;かと思えば、こういう人の死を貶めるような発言が &lt;code class=&quot;highlighter-rouge&quot;&gt;score&lt;/code&gt; が &lt;code class=&quot;highlighter-rouge&quot;&gt;0.0&lt;/code&gt;、&lt;code class=&quot;highlighter-rouge&quot;&gt;magnitude&lt;/code&gt; が &lt;code class=&quot;highlighter-rouge&quot;&gt;0.1&lt;/code&gt;
くらいのニュートラルな扱いになる。&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;○○、逝ったのか。ざまあああｗｗｗｗｗ&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;前半の「○○、逝ったのか。」と「ざまあああｗｗｗｗ」に切って食わせても、どちらの文も
score は &lt;code class=&quot;highlighter-rouge&quot;&gt;0.0&lt;/code&gt;。&lt;/p&gt;

&lt;p&gt;あ…やっぱ…日本語は難しいんやなって…。&lt;/p&gt;

&lt;h2 id=&quot;その他&quot;&gt;その他&lt;/h2&gt;

&lt;p&gt;最後になりましたが、翁長雄志氏、津川雅彦氏、両氏のご冥福をお祈りいたします。&lt;/p&gt;</content><author><name>Xeres</name></author><summary type="html">翁長雄志、津川雅彦、両氏の死についてのツイートを分析し、左右どちらのほうがクズなのか計量的に分析してみました - 雑記（主に政治や時事について）</summary></entry><entry><title type="html">Visual Studio Code for Linux を WSL 上の Ubuntu 18.04 LTS にインストールする</title><link href="https://tech.xeres.jp/2018/08/01/installing-vscode-for-linux-in-wsl-ubuntu-18.04-lts/" rel="alternate" type="text/html" title="Visual Studio Code for Linux を WSL 上の Ubuntu 18.04 LTS にインストールする" /><published>2018-08-01T02:00:00+09:00</published><updated>2018-08-01T02:00:00+09:00</updated><id>https://tech.xeres.jp/2018/08/01/installing-vscode-for-linux-in-wsl-ubuntu-18.04-lts</id><content type="html" xml:base="https://tech.xeres.jp/2018/08/01/installing-vscode-for-linux-in-wsl-ubuntu-18.04-lts/">&lt;h2 id=&quot;wsl-を有効にする--ubuntu-1804-lts-をインストールする&quot;&gt;WSL を有効にする → Ubuntu 18.04 LTS をインストールする&lt;/h2&gt;

&lt;p&gt;基本的には&lt;a href=&quot;https://blogs.msdn.microsoft.com/commandline/2017/10/11/whats-new-in-wsl-in-windows-10-fall-creators-update/&quot;&gt;公式ブログ&lt;/a&gt;の手順に沿って導入すれば問題ない。
Windows 10 バージョン 1709 (Fall Creators Update) 以降、開発者モードは不要となっているし、
&lt;code class=&quot;highlighter-rouge&quot;&gt;lxrun.exe /install&lt;/code&gt; を叩く手順も非推奨となっている。&lt;/p&gt;

&lt;p&gt;以降の手順は Ubuntu 18.04 LTS で動作を確認した。&lt;/p&gt;

&lt;h2 id=&quot;windows-側に-x-サーバーをインストールする&quot;&gt;Windows 側に X サーバーをインストールする&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://sourceforge.net/projects/vcxsrv/&quot;&gt;VcXsrv&lt;/a&gt;とか適当に入れてちょうだい。&lt;/p&gt;

&lt;h2 id=&quot;vs-code-をインストールする&quot;&gt;VS Code をインストールする&lt;/h2&gt;

&lt;p&gt;残念ながら&lt;a href=&quot;https://code.visualstudio.com/docs/setup/linux&quot;&gt;公式ドキュメント&lt;/a&gt;通りにやると上手くいかなかった。
上手くいっている人もいるみたいなのだが、なぜか手元の環境では日本語化後に
VS Code が応答なしになってしまう現象が発生して2ヶ月くらいハマっていた。&lt;/p&gt;

&lt;p&gt;&lt;del&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;code&lt;/code&gt; を &lt;code class=&quot;highlighter-rouge&quot;&gt;--no-install-recommends&lt;/code&gt; で入れると大丈夫っぽい。&lt;/del&gt;&lt;/p&gt;

&lt;p&gt;(2018-09-13追記) &lt;a href=&quot;#補足-GPU-との相性問題&quot;&gt;補足: GPU との相性問題&lt;/a&gt;を参照のこと。&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;curl &lt;span class=&quot;nt&quot;&gt;-L&lt;/span&gt; https://packages.microsoft.com/keys/microsoft.asc | &lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;apt-key add -
&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;sh &lt;span class=&quot;nt&quot;&gt;-c&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'echo &quot;deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main&quot; &amp;gt; /etc/apt/sources.list.d/vscode.list'&lt;/span&gt;

&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;apt update
&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;apt upgrade &lt;span class=&quot;nt&quot;&gt;-y&lt;/span&gt;

&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;apt install &lt;span class=&quot;nt&quot;&gt;-y&lt;/span&gt; code &lt;span class=&quot;nt&quot;&gt;--no-install-recommends&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;apt install &lt;span class=&quot;nt&quot;&gt;-y&lt;/span&gt; lib&lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;xss1,gtk2.0-0,asound2,x11-xcb1,xtst6&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;c&quot;&gt;# ついでにデフォルトの umask を変更しておく&lt;/span&gt;
sed &lt;span class=&quot;nt&quot;&gt;-i&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-e&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'/^#umask/s/^#//g'&lt;/span&gt; ~/.profile

&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'export DISPLAY=&quot;localhost:0.0&quot;'&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/.profile
&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'export LIBGL_ALWAYS_INDIRECT=&quot;1&quot;'&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/.profile

&lt;span class=&quot;nb&quot;&gt;source&lt;/span&gt; ~/.profile

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

&lt;p&gt;この時点では英語版で起動する。当然、日本語入力もできない。&lt;/p&gt;

&lt;h2 id=&quot;日本語化を実施する&quot;&gt;日本語化を実施する&lt;/h2&gt;

&lt;p&gt;次に日本語化を行う。&lt;/p&gt;

&lt;p&gt;フォントは Google がオープンソースで提供している &lt;a href=&quot;https://www.google.com/get/noto/&quot;&gt;Google Noto Fonts&lt;/a&gt; を
利用しているが、&lt;code class=&quot;highlighter-rouge&quot;&gt;fontconfig&lt;/code&gt; で制御されているので好きなものでよい。&lt;/p&gt;

&lt;p&gt;ちょっと調べた感じだと、日本語環境では &lt;code class=&quot;highlighter-rouge&quot;&gt;fonts-noto-cjk&lt;/code&gt; があれば良い。
絵文字が必要な場合は &lt;code class=&quot;highlighter-rouge&quot;&gt;fonts-noto-color-emoji&lt;/code&gt; を追加で入れる。
普通・太字以外の weight の文字が必要な場合は &lt;code class=&quot;highlighter-rouge&quot;&gt;fonts-noto-cjk-extra&lt;/code&gt; を追加で入れる。
&lt;code class=&quot;highlighter-rouge&quot;&gt;fonts-noto-hinted&lt;/code&gt; には CJK フォントが含まれていないので、日本語圏では入れるだけ無駄。&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;apt install &lt;span class=&quot;nt&quot;&gt;-y&lt;/span&gt; fonts-noto-&lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;cjk&lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;,-extra&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;,color-emoji&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;apt install &lt;span class=&quot;nt&quot;&gt;-y&lt;/span&gt; language-pack-ja

&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'export LANG=&quot;ja_JP.UTF-8&quot;'&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/.profile
&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'export LC_ALL=&quot;$LANG&quot;'&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/.profile

&lt;span class=&quot;nb&quot;&gt;source&lt;/span&gt; ~/.profile
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;システムのデフォルトロケールを日本語にしてしまってもいい場合には、
&lt;code class=&quot;highlighter-rouge&quot;&gt;~/.profile&lt;/code&gt; に環境変数を追記するのではなく、
&lt;code class=&quot;highlighter-rouge&quot;&gt;update-locale LANG=ja_JP.UTF-8&lt;/code&gt; すると良い。&lt;/p&gt;

&lt;p&gt;これで VS Code が日本語化され、メニューや Welcome ページが日本語で表示されるようになる。
この時点ではまだ日本語入力はできない。&lt;/p&gt;

&lt;h2 id=&quot;日本語入力を有効にする&quot;&gt;日本語入力を有効にする&lt;/h2&gt;

&lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;fcitx-mozc&lt;/code&gt; が動作した。&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;apt install &lt;span class=&quot;nt&quot;&gt;-y&lt;/span&gt; dbus-x11
&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;sh &lt;span class=&quot;nt&quot;&gt;-c&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'dbus-uuidgen &amp;gt; /var/lib/dbus/machine-id'&lt;/span&gt;

&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;apt install &lt;span class=&quot;nt&quot;&gt;-y&lt;/span&gt; fcitx-mozc

&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'export XIM=&quot;fcitx&quot;'&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/.profile
&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'export GTK_IM_MODULE=&quot;$XIM&quot;'&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/.profile
&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'export QT_IM_MODULE=&quot;$XIM&quot;'&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/.profile
&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'export XMODIFIERS=&quot;@im=$XIM&quot;'&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/.profile
&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'export DefaultIMModule=&quot;$XIM&quot;'&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/.profile

&lt;span class=&quot;nb&quot;&gt;source&lt;/span&gt; ~/.profile

fcitx-autostart
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;fcitx-の設定を変更する&quot;&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;fcitx&lt;/code&gt; の設定を変更する&lt;/h2&gt;

&lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;fcitx-autostart&lt;/code&gt; した状態で下記のコマンドを使用する。&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;fcitx-config-gtk3
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;mozc-の設定を変更する&quot;&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;mozc&lt;/code&gt; の設定を変更する&lt;/h2&gt;

&lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;fcitx-autostart&lt;/code&gt; した状態で下記のコマンドを使用する。&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;/usr/lib/mozc/mozc_tool &lt;span class=&quot;nt&quot;&gt;--mode&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;config_dialog
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;全角半角キーを押し下げただけで連打された状態になる不具合に対処する-オプション&quot;&gt;全角/半角キーを押し下げただけで連打された状態になる不具合に対処する (オプション)&lt;/h2&gt;

&lt;p&gt;手元の環境では再現率100%だったので対処。&lt;code class=&quot;highlighter-rouge&quot;&gt;xset -r 49&lt;/code&gt; で修正できるようだ。&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;apt install &lt;span class=&quot;nt&quot;&gt;-y&lt;/span&gt; x11-xserver-utils

xset &lt;span class=&quot;nt&quot;&gt;-r&lt;/span&gt; 49
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;タイムゾーンを-jst-にする&quot;&gt;タイムゾーンを JST にする&lt;/h2&gt;

&lt;p&gt;デフォルトのタイムゾーンは DST になっているので JST にする。&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;sh &lt;span class=&quot;nt&quot;&gt;-c&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'echo Asia/Tokyo &amp;gt; /etc/timezone'&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;dpkg-reconfigure &lt;span class=&quot;nt&quot;&gt;--frontend&lt;/span&gt; noninteractive tzdata
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;os起動後の-wsl-初回起動時に自動的に-ime-が使えるようにする&quot;&gt;OS起動後の WSL 初回起動時に自動的に IME が使えるようにする&lt;/h2&gt;

&lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;~/.profile&lt;/code&gt; の最後に下記を追記&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;!&lt;/span&gt; pgrep mozc_server &lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; /dev/null&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;then
    &lt;/span&gt;fcitx-autostart &lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; /dev/null
    xset &lt;span class=&quot;nt&quot;&gt;-r&lt;/span&gt; 49
&lt;span class=&quot;k&quot;&gt;fi&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;os起動時にやること&quot;&gt;OS起動時にやること&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;Xサーバーの起動&lt;/li&gt;
  &lt;li&gt;WSL の起動&lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;del&gt;下記のコマンドを入力する&lt;/del&gt; &lt;code class=&quot;highlighter-rouge&quot;&gt;~/.profile&lt;/code&gt; (編集で不要になった)&lt;/p&gt;

    &lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt; &lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;sh &lt;span class=&quot;nt&quot;&gt;-c&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'dbus-uuidgen &amp;gt; /var/lib/dbus/machine-id'&lt;/span&gt;
 fcitx-autostart
 xset &lt;span class=&quot;nt&quot;&gt;-r&lt;/span&gt; 49
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;WSL 上で &lt;code class=&quot;highlighter-rouge&quot;&gt;code&lt;/code&gt; を実行&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;これで日本語化＋日本語入力可能な VS Code が使える状態になる。&lt;/p&gt;

&lt;p&gt;&lt;del&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;dbus-uuidgen --ensure&lt;/code&gt; じゃダメなのかと思ったが、2回目以降の起動で上手くいかなかった。&lt;/del&gt;&lt;/p&gt;

&lt;p&gt;(2018-09-13追記) OS起動の度に実施する必要はなかった。多分、勘違い。&lt;/p&gt;

&lt;h2 id=&quot;補足-gpu-との相性問題&quot;&gt;補足: GPU との相性問題&lt;/h2&gt;

&lt;p&gt;Windows 10 1803 (Build 17134.228) + GTX 1080 で、&lt;code class=&quot;highlighter-rouge&quot;&gt;code&lt;/code&gt; を実行すると「応答なし」になり、
VcXsrv ごとハングアップしてしまう事象に遭遇。同じ Windows バージョンでハードウェアが
異なる環境(VAIO S11 2015年モデル)では発生せず。&lt;/p&gt;

&lt;p&gt;どうも昔からある GPU との相性問題らしい。&lt;/p&gt;

&lt;p&gt;起動時に &lt;code class=&quot;highlighter-rouge&quot;&gt;code --disable-gpu&lt;/code&gt; とオプションを付けると治った。&lt;code class=&quot;highlighter-rouge&quot;&gt;~/.bash_profile&lt;/code&gt; で &lt;code class=&quot;highlighter-rouge&quot;&gt;alias&lt;/code&gt; にして難を逃れた。&lt;/p&gt;</content><author><name>Xeres</name></author><summary type="html">WSL を有効にする → Ubuntu 18.04 LTS をインストールする</summary></entry><entry><title type="html">聴講レポート: ノンコーディングで業務アプリ開発！「PowerApps」と「Microsoft Flow」とは #MSInteract18 #T13</title><link href="https://tech.xeres.jp/2018/06/30/powerapps-and-microsoft-flow/" rel="alternate" type="text/html" title="聴講レポート: ノンコーディングで業務アプリ開発！「PowerApps」と「Microsoft Flow」とは #MSInteract18 #T13" /><published>2018-06-30T16:23:00+09:00</published><updated>2018-06-30T16:23:00+09:00</updated><id>https://tech.xeres.jp/2018/06/30/powerapps-and-microsoft-flow</id><content type="html" xml:base="https://tech.xeres.jp/2018/06/30/powerapps-and-microsoft-flow/">&lt;h2 id=&quot;pwoerapps-とは&quot;&gt;PwoerApps とは&lt;/h2&gt;

&lt;h3 id=&quot;背景-it担当が開発するアプリは需要よりも5倍遅い&quot;&gt;背景: IT担当が開発するアプリは需要よりも5倍遅い&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;課題
    &lt;ul&gt;
      &lt;li&gt;Dynamics 365 のゆなパッケージソフトを導入することが一番早い&lt;/li&gt;
      &lt;li&gt;提供されているアプリは全ての要素を満たしていない&lt;/li&gt;
      &lt;li&gt;場合によっては必要なアプリが存在しない&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;ソリューション
    &lt;ul&gt;
      &lt;li&gt;ノンコーディング&lt;/li&gt;
      &lt;li&gt;ローコーディング&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;メリット
    &lt;ul&gt;
      &lt;li&gt;最小限の学習時間&lt;/li&gt;
      &lt;li&gt;IT の負荷を減らす (非開発者でも携わることができる)&lt;/li&gt;
      &lt;li&gt;システム間の連携の手間を減らす&lt;/li&gt;
      &lt;li&gt;短い開発期間&lt;/li&gt;
      &lt;li&gt;経費削減&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;ビジネスアプリケーションプラットフォーム
    &lt;ul&gt;
      &lt;li&gt;PowerBI&lt;/li&gt;
      &lt;li&gt;PowerApps&lt;/li&gt;
      &lt;li&gt;Microsoft Flow&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;コンセプト
    &lt;ul&gt;
      &lt;li&gt;クラウド ファースト&lt;/li&gt;
      &lt;li&gt;統一されたデータ&lt;/li&gt;
      &lt;li&gt;シームレスに連携 (Common Data Service)&lt;/li&gt;
      &lt;li&gt;マルチ デバイス (Xamarin よりも簡単に)&lt;/li&gt;
      &lt;li&gt;集中管理 (Active Directory / Azure AD との連携)&lt;/li&gt;
      &lt;li&gt;「制限のない」開発
        &lt;ul&gt;
          &lt;li&gt;こうならないように
            &lt;ul&gt;
              &lt;li&gt;結局、サードパーティのパッケージを買わないと…&lt;/li&gt;
              &lt;li&gt;結局、最後はゴリゴリとコードを書かないとできない&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;非開発者が開発
    &lt;ul&gt;
      &lt;li&gt;アプリ画面: PowerApps&lt;/li&gt;
      &lt;li&gt;システム連携: Microsoft Flow&lt;/li&gt;
      &lt;li&gt;データの保管先: Common Dta Service&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;IT担当／開発者が開発／運用
    &lt;ul&gt;
      &lt;li&gt;外部システム API/DB&lt;/li&gt;
      &lt;li&gt;社内システム API/DB&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;powerapps-の特徴&quot;&gt;PowerApps の特徴&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;キャンバスに描くようなアプリ開発&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;200 種類のコネクター
    &lt;ul&gt;
      &lt;li&gt;オンプレミスデータゲートウェイを利用することでオンプレミスのシステムにもアクセス可能&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;コネクターは様々なアプリケーションをサポート
    &lt;ul&gt;
      &lt;li&gt;Kintone や Salesforce は競合だけサポート&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Swagger / Postman をカスタムコネクターにもできる&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;複数のデータ ソースを1つのアプリで&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;例: 出張したい！
    &lt;ul&gt;
      &lt;li&gt;これらを一つの画面から提供
        &lt;ul&gt;
          &lt;li&gt;案件情報&lt;/li&gt;
          &lt;li&gt;乗り換え案内&lt;/li&gt;
          &lt;li&gt;Outlook 予定表&lt;/li&gt;
          &lt;li&gt;承認プロセス&lt;/li&gt;
          &lt;li&gt;経費システム&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;連携プラットフォーム
    &lt;ul&gt;
      &lt;li&gt;Tableau みたいな他の BI ツールは可視化できてもその先のアクションがない&lt;/li&gt;
      &lt;li&gt;PowerApps、PowerBI、Microsoft Flow で相互に連携できる&lt;/li&gt;
      &lt;li&gt;Excel もできるようになるぞ！&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Microsoft Flow → Logic Apps への変換もできる
    &lt;ul&gt;
      &lt;li&gt;最初は Microsoft Flow で作って、あとで複雑になったら Logic Apps にできる&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;ワークフローと業務プロセスの自動化
    &lt;ul&gt;
      &lt;li&gt;Trigger/Action ではなく、業務プロセス(承認とか)も反映できる&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;コミュニティープランなら無料
    &lt;ul&gt;
      &lt;li&gt;http://aka.ms/powerapps-jp-free&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;demo-1&quot;&gt;Demo #1&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;実際にマイクロソフトで使ってるやつ&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;会議室予約
    &lt;ul&gt;
      &lt;li&gt;日付と時間を入れたら会議室の一覧が出てくる&lt;/li&gt;
      &lt;li&gt;会議室を選択して OK ボタンを押すと、簡単に会議室予約&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;従業員検索
    &lt;ul&gt;
      &lt;li&gt;名前で検索&lt;/li&gt;
      &lt;li&gt;その人が所属しているチームのメンバー(上司／部下)が表示&lt;/li&gt;
      &lt;li&gt;プロフィール画面からそのままメールや電話も可能&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;demo-2&quot;&gt;Demo #2&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;参考情報
    &lt;ul&gt;
      &lt;li&gt;初心者向けのウェビナー: 備品管理、初心者向け
        &lt;ul&gt;
          &lt;li&gt;http://aka.ms/powerapps180614&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;de:code 2018 のセッション YouTube: IT担当と非開発者が連携して経費清算システムを作成
        &lt;ul&gt;
          &lt;li&gt;http://aka.s/powerapps-decode18&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;今日は応用編！&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;某会社さんの車のモデルや色を選んで紹介動画や製品情報などが見れるやつ
    &lt;ul&gt;
      &lt;li&gt;お客様の顔写真を撮影して年齢や性別の文責を Cognitive に投げたり&lt;/li&gt;
      &lt;li&gt;どんな店舗でどんな車種の情報を見てるか、とかもリアルタイムでテレメトリーで見れる&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;ロード画面の作り方&quot;&gt;ロード画面の作り方&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Common Data Service
    &lt;ul&gt;
      &lt;li&gt;エンティティ(テーブル)をクリックだけで作れる
        &lt;ul&gt;
          &lt;li&gt;SQL は不要&lt;/li&gt;
          &lt;li&gt;もちろん Excel のインポート/エクスポート/更新もサポート&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;データソース
    &lt;ul&gt;
      &lt;li&gt;Office365 連携
        &lt;ul&gt;
          &lt;li&gt;Graph API とかよく分からなくても大丈夫&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;ロード画面
    &lt;ul&gt;
      &lt;li&gt;データソースを読み込む前後に ShowLoading フラグ立てる処理を入れておく&lt;/li&gt;
      &lt;li&gt;ぐるぐる回る画像&lt;/li&gt;
      &lt;li&gt;Visible を ShowLoading フラグにしておく&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;ギャラリー機能の応用&quot;&gt;ギャラリー機能の応用&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;エンティティの列に色を入れておいて、それをオブジェクトから参照する&lt;/li&gt;
  &lt;li&gt;対応する画像とかも入れておけば、クリックしたら画像を表示とかできる&lt;/li&gt;
  &lt;li&gt;ギャラリーをクリックしたときに別のギャラリーを表示する、みたいなことをやると簡単にビジュアルの映える breadcrumb メニューが作れる&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;スライダー機能の追う湯&quot;&gt;スライダー機能の追う湯&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;画像を36枚用意して非表示なスライダーを作り、スライダーの値と画像を応用することで360度ビューに&lt;/li&gt;
  &lt;li&gt;スライダーの選択箇所を大きくしておくとマウスで適当にドラッグするといい感じに&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;power-bi-連携&quot;&gt;Power BI 連携&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Azure Event Hub 経由で Power BI にデータを送る Microsoft Flow を作っておいて、アクションに割り当てる&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;cognitive-連携&quot;&gt;Cognitive 連携&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;[メディア] - [カメラ] で、互換性とか気にすることなくカメラ機能が使える&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;お知らせ&quot;&gt;お知らせ&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Facebook コミュニティ
    &lt;ul&gt;
      &lt;li&gt;http://aka.ms/powerappsjp-fb&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;</content><author><name>Xeres</name></author><summary type="html">PwoerApps とは</summary></entry><entry><title type="html">聴講レポート: 今からはじめる Kubernetes 入門 #MSInteract18 #T41</title><link href="https://tech.xeres.jp/2018/06/30/a-kubernetes-primer-in-interact-2018/" rel="alternate" type="text/html" title="聴講レポート: 今からはじめる Kubernetes 入門 #MSInteract18 #T41" /><published>2018-06-30T13:54:00+09:00</published><updated>2018-06-30T13:54:00+09:00</updated><id>https://tech.xeres.jp/2018/06/30/a-kubernetes-primer-in-interact-2018</id><content type="html" xml:base="https://tech.xeres.jp/2018/06/30/a-kubernetes-primer-in-interact-2018/">&lt;h2 id=&quot;kubernetes-以降k8s-とは&quot;&gt;Kubernetes (以降、K8s) とは&lt;/h2&gt;

&lt;h3 id=&quot;なんでコンテナ&quot;&gt;なんでコンテナ？&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;イメージ＝アプリケーション＋ミドルウェア
    &lt;ul&gt;
      &lt;li&gt;イメージの可搬性&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;仮想マシンよりも小さい
    &lt;ul&gt;
      &lt;li&gt;起動が早い&lt;/li&gt;
      &lt;li&gt;オーバーヘッドが小さい&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;コンテナリポジトリから pull することでイメージを共有できる&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;Dockerfile のシンプルさ
    &lt;ul&gt;
      &lt;li&gt;ただのテキスト&lt;/li&gt;
      &lt;li&gt;スタッキングでのカスタマイズの容易さ&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;k8s-とは&quot;&gt;K8s とは&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;役割: コンテナオーケストレーション
    &lt;ul&gt;
      &lt;li&gt;デファクトスタンダード&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;オーケストレーションとは？
    &lt;ul&gt;
      &lt;li&gt;複数のコンテナをノードに配置して1つのプラットフォームとして扱うことができる&lt;/li&gt;
      &lt;li&gt;どこのノードに配置されるかは意識する必要がない&lt;/li&gt;
      &lt;li&gt;自動でスケールイン、スケールアウト&lt;/li&gt;
      &lt;li&gt;たくさんのアプリやサービスをデプロイするのに適している&lt;/li&gt;
      &lt;li&gt;障害を検知すると自動で新しいコンテナーが起動し、指定した台数を常に維持してくれる
        &lt;ul&gt;
          &lt;li&gt;“落ちない” ありきの今までの考え方と異なる&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;更新は自動でローリングアップデート&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;構成要素&quot;&gt;構成要素&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Master Node
    &lt;ul&gt;
      &lt;li&gt;各ノードの稼働状況やリソース消費を管理する&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Agent Node
    &lt;ul&gt;
      &lt;li&gt;実際にワークロードが配置されるノード&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Pod
    &lt;ul&gt;
      &lt;li&gt;複数のコンテナをまとめて管理する単位&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;アーキテクチャ&quot;&gt;アーキテクチャ&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Pod は通常、外部からアクセスできない&lt;/li&gt;
  &lt;li&gt;外部 IP アドレスを持つ Service を作成し、コンテナでサービス提供ができるようになる&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;死活監視&quot;&gt;死活監視&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Deployment
    &lt;ul&gt;
      &lt;li&gt;複数の Replica Set を管理する&lt;/li&gt;
      &lt;li&gt;バージョンアップなどで使う&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Replica Set
    &lt;ul&gt;
      &lt;li&gt;Pod の Replica を管理する&lt;/li&gt;
      &lt;li&gt;Pod の数を保証する (最低2台とか)&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Pod&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;クラウドで提供される-kubernetes&quot;&gt;クラウドで提供される Kubernetes&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;サービス提供内容
    &lt;ul&gt;
      &lt;li&gt;Master Node は隠蔽されており、無料で提供&lt;/li&gt;
      &lt;li&gt;課金対象は Agent のみ&lt;/li&gt;
      &lt;li&gt;Agent Node のスケールアウト、スケールインが可能&lt;/li&gt;
      &lt;li&gt;Kubernetes Cluster のバージョンアップが可能&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;何がうれしい？
    &lt;ul&gt;
      &lt;li&gt;K8s の運用が大変なので、管理の手間が減る&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;代表的なサービス
    &lt;ul&gt;
      &lt;li&gt;GKE/AKS/EKS&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;k8s-を構築する&quot;&gt;K8s を構築する&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;アプリケーション開発に注力できるのでクラウドの利用推奨&lt;/li&gt;
  &lt;li&gt;今日は Azure K8s Service (AKS) で&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;azure-k8s-service-以下aks&quot;&gt;Azure K8s Service (以下、AKS)&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;東日本リージョンで GA&lt;/li&gt;
  &lt;li&gt;アクセス方法
    &lt;ul&gt;
      &lt;li&gt;Azure Portal&lt;/li&gt;
      &lt;li&gt;Azure CLI 2.0&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;kubectl&quot;&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;kubectl&lt;/code&gt;&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;クラスタの作成は Azure Portal/CLI からだが、その後は &lt;code class=&quot;highlighter-rouge&quot;&gt;kubectl&lt;/code&gt; を使う&lt;/li&gt;
  &lt;li&gt;.kube/config は Azure CLI で取得する
    &lt;ul&gt;
      &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;az aks get-credentials --resource-group=&amp;lt;リソースグループ名&amp;gt; --name=&amp;lt;AKS名&amp;gt;&lt;/code&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;あとは大体どこのサービスも同じ&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;k8s-にアプリケーションをデプロイする&quot;&gt;K8s にアプリケーションをデプロイする&lt;/h2&gt;

&lt;h3 id=&quot;コマンドを使ったデプロイ&quot;&gt;コマンドを使ったデプロイ&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;kubectl run&lt;/code&gt; コマンド&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;kubectl run &amp;lt;アプリ名&amp;gt; --image &amp;lt;コンテナリポジトリ名&amp;gt;
kubectl expose deployments &amp;lt;アプリ名&amp;gt; --port=80 --type=LoadBalancer
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;kubectl apply&lt;/code&gt; コマンド&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;helm-charts&quot;&gt;Helm Charts&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;K8s のパッケージマネージャー
    &lt;ul&gt;
      &lt;li&gt;複数の YAML ファイルをパッケージ管理できる&lt;/li&gt;
      &lt;li&gt;値を YAML にハードコーディングするのではなくパラメータとして与えることができる&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;構成
    &lt;ul&gt;
      &lt;li&gt;Client (helm)&lt;/li&gt;
      &lt;li&gt;Server&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;KubeApps Hub
    &lt;ul&gt;
      &lt;li&gt;https://hub.kubeapps.com/&lt;/li&gt;
      &lt;li&gt;既にパッケージングされたファイルが提供されている&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;demo&quot;&gt;Demo&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;ASP.NET Core アプリケーションをデプロイ&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;dotnet new mvc -o jazapp
cd jazapp
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;Dockrfile を作成
    &lt;ul&gt;
      &lt;li&gt;Multi-staging 使ってる&lt;/li&gt;
      &lt;li&gt;より小さいサイズで docker image が作れる&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Docker イメージを作成し、リポジトリに登録&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;docker build -t user/repos:v14
docker push user/repos:14
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;Helm パッケージを作成してインストールする&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;mkdir charts
helm create jazapp
code values.yaml
helm install jazapp -n &amp;lt;名前&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;動作確認
    &lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;kubectl get pod,svc
kubectl proxy
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;インスタンスを増やしてみる&lt;/li&gt;
  &lt;li&gt;あえて Pod を 1つ削除してみる
    &lt;ul&gt;
      &lt;li&gt;代わりが数秒で立ち上がる&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;k8s-を運用監視する&quot;&gt;K8s を運用監視する&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Prometheus
    &lt;ul&gt;
      &lt;li&gt;K8s と親和性の高い pull 型の監視ツール&lt;/li&gt;
      &lt;li&gt;メトリックがしきい値を越えたら、、Slack やメールでアラート可能&lt;/li&gt;
      &lt;li&gt;一応、UI があるけどイケてない(笑)ので Grafana を利用するのがオススメ&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Grafana
    &lt;ul&gt;
      &lt;li&gt;Prometheus が取得した戸陸すをダッシュボードで可視化&lt;/li&gt;
      &lt;li&gt;プラグインを追加すると色々なデータソースを利用可能&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;k8s-にサービスメッシュを導入する&quot;&gt;K8s にサービスメッシュを導入する&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Istio
    &lt;ul&gt;
      &lt;li&gt;Blue / Green Deployment&lt;/li&gt;
      &lt;li&gt;Canaria Release&lt;/li&gt;
      &lt;li&gt;Circuit Breaker&lt;/li&gt;
      &lt;li&gt;Bulkhead&lt;/li&gt;
      &lt;li&gt;分散トレーシング&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;K8s 単体で頑張ることもできるが、Istio を使う簡単にできる&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;istio-アーキテクチャ&quot;&gt;Istio アーキテクチャ&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Envoy 大事
    &lt;ul&gt;
      &lt;li&gt;サイドカーパターン&lt;/li&gt;
      &lt;li&gt;Istio Proxy コンテナーをインジェクションできる&lt;/li&gt;
      &lt;li&gt;アプリケーションに修正を加える必要ない&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;分散トレーシング&quot;&gt;分散トレーシング&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Demo&lt;/li&gt;
  &lt;li&gt;アプリ側に手を入れなくても分散トレーシングできる&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;まとめ&quot;&gt;まとめ&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;K8s は複数のコンテナを複数のノードに配置して1つのプラットフォームとして利用できる
    &lt;ul&gt;
      &lt;li&gt;アプリケーション1つだとあんまり向いてない&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;自分で運用してもいいけど手間が多いのでマネージドサービスがオススメ&lt;/li&gt;
  &lt;li&gt;デファクトスタンダードになった K8s と、それを取り巻く OSS の進化の恩恵を受けることができる&lt;/li&gt;
&lt;/ul&gt;</content><author><name>Xeres</name></author><summary type="html">Kubernetes (以降、K8s) とは</summary></entry><entry><title type="html">「マルチクラウド対応「Terraform」で、ITインフラを簡単にプロビジョニングしよう」に参加してきた #hashicorp #terraformjp</title><link href="https://tech.xeres.jp/2018/06/15/easily-provision-it-infrastructure-with-terraform/" rel="alternate" type="text/html" title="「マルチクラウド対応「Terraform」で、ITインフラを簡単にプロビジョニングしよう」に参加してきた #hashicorp #terraformjp" /><published>2018-06-15T21:00:00+09:00</published><updated>2018-06-15T21:00:00+09:00</updated><id>https://tech.xeres.jp/2018/06/15/easily-provision-it-infrastructure-with-terraform</id><content type="html" xml:base="https://tech.xeres.jp/2018/06/15/easily-provision-it-infrastructure-with-terraform/">&lt;p&gt;&lt;a href=&quot;https://hashicorp.connpass.com/event/89569/&quot;&gt;マルチクラウド対応「Terraform」で、ITインフラを簡単にプロビジョニングしよう&lt;/a&gt; に参加してきました。&lt;/p&gt;

&lt;h2 id=&quot;タイムテーブル&quot;&gt;タイムテーブル&lt;/h2&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;時間&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;18:30 - 19:00&lt;/td&gt;
      &lt;td&gt;受付、ネットワーキング&lt;/td&gt;
      &lt;td&gt; &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;19:00 - 19:10&lt;/td&gt;
      &lt;td&gt;ご挨拶、HashiCorp についてご紹介&lt;/td&gt;
      &lt;td&gt;Brian Burns, HashiCorp Japan株式会社 ゼネラルマネージャ&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;19:10 - 19:40&lt;/td&gt;
      &lt;td&gt;Terraform Enterprise ユーザー事例&lt;/td&gt;
      &lt;td&gt;河野 隆志様, GMOメディア株式会社 サービス開発部 シニアエンジニア&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;19:40 - 20:00&lt;/td&gt;
      &lt;td&gt;Terraform Enterprise 紹介・デモ&lt;/td&gt;
      &lt;td&gt;森 英悟, HashiCorp Japan株式会社 ソリューションエンジニア&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;20:00 - 20:30&lt;/td&gt;
      &lt;td&gt;Lightning Talk セッション&lt;/td&gt;
      &lt;td&gt; &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt; &lt;/td&gt;
      &lt;td&gt;Terraform と Azure を組み合わせて使うときの勘所&lt;/td&gt;
      &lt;td&gt;森山 京平様, 日本マイクロソフト株式会社&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt; &lt;/td&gt;
      &lt;td&gt;Terraform だって YAML で書きたい&lt;/td&gt;
      &lt;td&gt;羽深 修 様, 伊藤忠テクノソリューションズ株式会社&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt; &lt;/td&gt;
      &lt;td&gt;InSpec を使った Terraform のテスト&lt;/td&gt;
      &lt;td&gt;古川 貴朗様,　楽天株式会社&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;20:30 - 21:30&lt;/td&gt;
      &lt;td&gt;ネットワーキング&lt;/td&gt;
      &lt;td&gt; &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id=&quot;ご挨拶hashicorpについてご紹介&quot;&gt;ご挨拶、HashiCorpについてご紹介&lt;/h2&gt;

&lt;p&gt;ちゃんとしたカンファレンスじゃないので同時通訳無しを覚悟していたが、日本語がめっちゃ上手くてビビった。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;元々、創業者がアドテク企業で働いており、そこで担っていたミッションが下記のようなものだった
    &lt;ul&gt;
      &lt;li&gt;アジャイルにする&lt;/li&gt;
      &lt;li&gt;クラウドに移行する&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;これを実現するために自分たちで使うために作ったツールが terraform の元になっている&lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;マルチクラウドを共通のインターフェースで実現&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;日本法人
    &lt;ul&gt;
      &lt;li&gt;今年から株式会社になった&lt;/li&gt;
      &lt;li&gt;7名
        &lt;ul&gt;
          &lt;li&gt;GM: 日本、韓国を兼務&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;今日のタイムテーブルについて&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;terraform-enterprise-ユーザー事例&quot;&gt;Terraform Enterprise ユーザー事例&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;採用時期: 昨年から&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;GMO メディア株式会社
    &lt;ul&gt;
      &lt;li&gt;20個のサービス、500台くらいのサーバー&lt;/li&gt;
      &lt;li&gt;オンプレ300、プライベートクラウド100、パブリッククラウド100 (主に AWS)&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;GMO メディアにおけるインフラエンジニアの役割
    &lt;ul&gt;
      &lt;li&gt;サーバーの保守対応&lt;/li&gt;
      &lt;li&gt;構築、運用&lt;/li&gt;
      &lt;li&gt;パフォーマンスチューニング&lt;/li&gt;
      &lt;li&gt;社内システム&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Terraform とは
    &lt;ul&gt;
      &lt;li&gt;いわゆる Infrastructure as Code (IaC) を実現するためのツール&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Terraform の利用状況
    &lt;ul&gt;
      &lt;li&gt;主にパブリッククラウドの100台が管理対象&lt;/li&gt;
      &lt;li&gt;サービスあたり多くても20台くらい&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;リポジトリ構成
    &lt;ul&gt;
      &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;terraform&lt;/code&gt; の workspace 機能は使っていない&lt;/li&gt;
      &lt;li&gt;サービスA.git
        &lt;ul&gt;
          &lt;li&gt;production/
            &lt;ul&gt;
              &lt;li&gt;main.cf&lt;/li&gt;
              &lt;li&gt;variables.cf&lt;/li&gt;
              &lt;li&gt;outputs.tf&lt;/li&gt;
              &lt;li&gt;web-server.tf&lt;/li&gt;
              &lt;li&gt;ap-server.tf&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
          &lt;li&gt;development/&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;サービスB.git
        &lt;ul&gt;
          &lt;li&gt;同上&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;サービスC.git
        &lt;ul&gt;
          &lt;li&gt;以下省略&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Terraform になってできるようになったこと
    &lt;ul&gt;
      &lt;li&gt;インフラにもコードレビューの文化
        &lt;ul&gt;
          &lt;li&gt;GitHub の private repository に push して PR みたいな&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;チーム開発
        &lt;ul&gt;
          &lt;li&gt;RBAC によるロール管理&lt;/li&gt;
          &lt;li&gt;GitHub 連携 (GitHub 以外のバージョン管理ツールも OK)&lt;/li&gt;
          &lt;li&gt;tfstate ファイルの管理
            &lt;ul&gt;
              &lt;li&gt;共有&lt;/li&gt;
              &lt;li&gt;世代管理&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
          &lt;li&gt;Private Module Registry の利用&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;tfstate ファイルの保存先
        &lt;ul&gt;
          &lt;li&gt;Amazon S3 とかに保存ができるけど、複数名開発をするには State Lock するのに MongoDB とかが必要でめんどい&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Terraform Enterprise でできること
    &lt;ul&gt;
      &lt;li&gt;アカウント作成
        &lt;ul&gt;
          &lt;li&gt;Role 付与&lt;/li&gt;
          &lt;li&gt;Personal Access Token の発行
            &lt;ul&gt;
              &lt;li&gt;ローカルから &lt;code class=&quot;highlighter-rouge&quot;&gt;terraform plan&lt;/code&gt; できるように&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
          &lt;li&gt;API の利用&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;チーム
        &lt;ul&gt;
          &lt;li&gt;アカウントを紐付け&lt;/li&gt;
          &lt;li&gt;workspace はアカウント、チーム単位で割り当て可能&lt;/li&gt;
          &lt;li&gt;チームへの Role や Team Access Token
            &lt;ul&gt;
              &lt;li&gt;具体的なユースケースは思いつかない&lt;/li&gt;
              &lt;li&gt;感想: 他ツールと連携するときとかかな？&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;Role
        &lt;ul&gt;
          &lt;li&gt;Read: &lt;code class=&quot;highlighter-rouge&quot;&gt;terraform plan&lt;/code&gt; のみ&lt;/li&gt;
          &lt;li&gt;Write: &lt;code class=&quot;highlighter-rouge&quot;&gt;terraform apply&lt;/code&gt; できる&lt;/li&gt;
          &lt;li&gt;Admin: Write + workspace の設定変更&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;旨味
        &lt;ul&gt;
          &lt;li&gt;デプロイ(&lt;code class=&quot;highlighter-rouge&quot;&gt;terraform apply&lt;/code&gt;)が被ることがない
            &lt;ul&gt;
              &lt;li&gt;ローカルからデプロイするのではなく、&lt;code class=&quot;highlighter-rouge&quot;&gt;master&lt;/code&gt; ブランチへの変更をトリガーにして Terraform Enteprise がデプロイする&lt;/li&gt;
              &lt;li&gt;必ずマージした順番にデプロイされる
                &lt;ul&gt;
                  &lt;li&gt;複数名開発でリポジトリを利用せずに Amazon S3 に tfstate を置くだけだとデプロイが同時に走る可能性がある&lt;/li&gt;
                  &lt;li&gt;単に CI/CD を使うだけだとマージ自体は  Git でアトミックな操作になるけど、デプロイ中に別のマージが行われると同様
                    &lt;ul&gt;
                      &lt;li&gt;感想: CI/CD パイプライン側の設定で並列デプロイを防げばいいのでは…&lt;/li&gt;
                    &lt;/ul&gt;
                  &lt;/li&gt;
                &lt;/ul&gt;
              &lt;/li&gt;
              &lt;li&gt;管理画面から State Lock が可能
                &lt;ul&gt;
                  &lt;li&gt;State Lock 中はマージされてもデプロイできない&lt;/li&gt;
                &lt;/ul&gt;
              &lt;/li&gt;
              &lt;li&gt;誰がいつデプロイしたか分かる&lt;/li&gt;
              &lt;li&gt;二要素認証&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;対応する VCS
        &lt;ul&gt;
          &lt;li&gt;GitHub (含む Enterprise)&lt;/li&gt;
          &lt;li&gt;GitLab CE/EE&lt;/li&gt;
          &lt;li&gt;BitBucket&lt;/li&gt;
          &lt;li&gt;etc. メジャーなのは対応してる&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;画面: GitHub の PR からリンクで Terraform Enterprise に飛べる&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;tfstate の管理
        &lt;ul&gt;
          &lt;li&gt;backend として atlas というのが使えるようになる
            &lt;ul&gt;
              &lt;li&gt;普通に使う分には Amazon S3 とかと使用感は変わらない&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
          &lt;li&gt;Terraform Enterpise から tfstate の変更履歴が見れる&lt;/li&gt;
          &lt;li&gt;Personal Access Token を使ってアクセスする&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;Private Module Registry
        &lt;ul&gt;
          &lt;li&gt;サービス毎に workspace を分けたい&lt;/li&gt;
          &lt;li&gt;コードの共通化は Module でやりたい&lt;/li&gt;
          &lt;li&gt;でも Module を Public に公開したくないので Terraform Registry は使えない&lt;/li&gt;
          &lt;li&gt;タグによるバージョニングをしたい&lt;/li&gt;
          &lt;li&gt;セキュアに保ちたい&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;Private Module Registry の置き先
        &lt;ul&gt;
          &lt;li&gt;Local file Paths&lt;/li&gt;
          &lt;li&gt;Terraform Registry
            &lt;ul&gt;
              &lt;li&gt;タグによるバージョニングができる&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
          &lt;li&gt;GitHub
            &lt;ul&gt;
              &lt;li&gt;Private リポジトリは参照できるけど、credntial 情報をどこかに持たないといけないのでセキュアじゃない&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
          &lt;li&gt;BitBucket, Generic Git, HTTP URLs, Amazon S3 etc.&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;Private Module Registry の旨味
        &lt;ul&gt;
          &lt;li&gt;使用感は Terraform Registry と同じ&lt;/li&gt;
          &lt;li&gt;タグによるバージョニング&lt;/li&gt;
          &lt;li&gt;GitHub の Repository がセキュアに参照できる
            &lt;ul&gt;
              &lt;li&gt;Terraform Enterprise 側で credential を保持するので .tf の中などに Git の credential 情報を持つ必要がない&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;よかったこと
        &lt;ul&gt;
          &lt;li&gt;コードレビュー文化&lt;/li&gt;
          &lt;li&gt;インフラエンジニア以外でもインフラ構築
            &lt;ul&gt;
              &lt;li&gt;開発者でも教育すればちょっとした変更などができる&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
          &lt;li&gt;インフラ環境の複製など、スピードアップを実感&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;ハマったこと
        &lt;ul&gt;
          &lt;li&gt;大量のリソースを管理すると遅い
            &lt;ul&gt;
              &lt;li&gt;1 workspace に 2000 リソース → &lt;code class=&quot;highlighter-rouge&quot;&gt;terraform plan&lt;/code&gt; だけで 20-30 分掛かる&lt;/li&gt;
              &lt;li&gt;workspace を分割して対応した&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
          &lt;li&gt;terraform 自体や provider のバージョンアップが早いので、追いつくのが大変
            &lt;ul&gt;
              &lt;li&gt;何もしてないのにバージョンアップしただけで tfstate の差分が発生したり…
                &lt;ul&gt;
                  &lt;li&gt;最近はさすがになくなったかな&lt;/li&gt;
                &lt;/ul&gt;
              &lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
          &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;value of 'count' cannot be computed&lt;/code&gt;
            &lt;ul&gt;
              &lt;li&gt;Module 分けるとたまになるっぽい&lt;/li&gt;
              &lt;li&gt;issue もあるけど、まだちゃんと治ってないと思われる&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;Q&amp;amp;A
        &lt;ul&gt;
          &lt;li&gt;Q. なんで terraform の workspace 使ってないの？
            &lt;ul&gt;
              &lt;li&gt;A. Terraform Enteprise が未対応くさい。試せてない。1 つの workspace に複数の tfstate を持たせられないかも。 (あとで森さんから補足あり)&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
          &lt;li&gt;Q. モジュール、何個ぐらい使ってんの？
            &lt;ul&gt;
              &lt;li&gt;A. 30-40個くらい。&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
          &lt;li&gt;Q. モジュールにしてよかったもの、悪かったものがあったら教えて？
            &lt;ul&gt;
              &lt;li&gt;A. EC2 とか SG とかはよかった。ELB とかは、ターゲットグループに入れたり外したりしたいときがあるので微妙かも。&lt;/li&gt;
              &lt;li&gt;注釈: Terraform は状態を宣言してその状態にするものなので、操作をモジュール化すると良くないんだろうな、と思った。&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
          &lt;li&gt;Q. 何人くらいで使ってる？
            &lt;ul&gt;
              &lt;li&gt;A. 10数人。インフラエンジニア、開発メンバーで半々くらい。&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
          &lt;li&gt;Q. Terraform Enteprise 自体の管理はどうしてる？
            &lt;ul&gt;
              &lt;li&gt;A. Terraform Enteprise 自体の管理は今のところ手作業でやってる。workspace 作ったりとかも手動だよ。&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;terraform-enterprise-紹介デモ&quot;&gt;Terraform Enterprise 紹介・デモ&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;アマチュアボクサーの選手だそうで…すごい&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;CI/CD の流れでデモンストレーション&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;前セッションの Q&amp;amp;A に関する補足
    &lt;ul&gt;
      &lt;li&gt;Terraform Enteprise の提供方法は GitHub Enteprise と同様に SaaS と Private Install がある&lt;/li&gt;
      &lt;li&gt;SaaS で利用してもらえれば管理は楽&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;管理単位について
    &lt;ul&gt;
      &lt;li&gt;organization
        &lt;ul&gt;
          &lt;li&gt;workspace
            &lt;ul&gt;
              &lt;li&gt;workspace がリポジトリ(つまり .tf のセット)と紐づく&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;1 organization = 1プロジェクトにすると、複数の workspace を持てるので、production と staging を上手く管理できるかも
        &lt;ul&gt;
          &lt;li&gt;注釈: organization - project - workspace という管理単位になるといいな、エンタープライズ開発を想定した作りになってないだけかも&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;機能紹介: Sentinel Policy (Policy as Code)
    &lt;ul&gt;
      &lt;li&gt;“本番適用は土日にしかできない”、”開発環境では t2.micro しか使わせない” みたいなポリシーもコード化できる&lt;/li&gt;
      &lt;li&gt;git で merge しても Terraform Enteprise が plan/deploy する前にポリシーに適合してるかチェックしてくれる&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;機能紹介: Variable Store
    &lt;ul&gt;
      &lt;li&gt;Terraform Enteprise 側で変数を持つことができる&lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;credential 情報など、開発者にバラ撒きたくない値に使うと良さそう&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;OSS の Terraform を使ってくれる人めっちゃいるけど、Terraform Enteprise もよろしくな！
        &lt;ul&gt;
          &lt;li&gt;トライアル30日無料&lt;/li&gt;
          &lt;li&gt;営業に言ってもらえると長くできると思うよ！笑&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;lt-terraform-と-azure-を組み合わせて使うときの勘所&quot;&gt;LT: Terraform と Azure を組み合わせて使うときの勘所&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;2018/06/15追記: スライド上がってた
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://www.slideshare.net/kyoheim/terraformazure-102448779&quot;&gt;TerraformとAzureを組み合わせて使うときの勘所&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Terraform で指定する値の正しい表記が知りたい
    &lt;ul&gt;
      &lt;li&gt;ロケーション: &lt;code class=&quot;highlighter-rouge&quot;&gt;az account list-locations&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;インスタンスサイズ: &lt;code class=&quot;highlighter-rouge&quot;&gt;az vm list-sizes&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;インスタンスをリサイズしたい: &lt;code class=&quot;highlighter-rouge&quot;&gt;az vm list-vm-resize-options&lt;/code&gt;&lt;/li&gt;
      &lt;li&gt;イメージを指定したい:
        &lt;ul&gt;
          &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;az vm image list-offers&lt;/code&gt;&lt;/li&gt;
          &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;az vm image list-publishers&lt;/code&gt;&lt;/li&gt;
          &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;az vm image list-skus&lt;/code&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;tfstate
    &lt;ul&gt;
      &lt;li&gt;もちろん Blob Storage に置けます&lt;/li&gt;
      &lt;li&gt;Blob Storage も Terraform で作れるよ&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;terraform deploy&lt;/code&gt; するときに、いちいち &lt;code class=&quot;highlighter-rouge&quot;&gt;az login&lt;/code&gt; するのめんどい
    &lt;ul&gt;
      &lt;li&gt;RBAC service principal 使ってね！&lt;/li&gt;
      &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;az ad sp create-for-rbac&lt;/code&gt; のあれ&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;CI/CD で Secure Token を使いたくない、セキュアなやり方はないの？
    &lt;ul&gt;
      &lt;li&gt;Managed Service Identity (Preview)
        &lt;ul&gt;
          &lt;li&gt;要は IAM Role のインスタンスプロファイル&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Terraform 環境作るのダルい
    &lt;ul&gt;
      &lt;li&gt;Azure Marketplae から全部入りの Terraform VM をデプロイできるよ&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Azure Kubernetes Services (AKS)が GA しました
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/azure/terraform/terraform-create-k8s-cluster-with-tf-and-aks&quot;&gt;Terraform 使ったチュートリアル&lt;/a&gt;があるので、ぜひ使ってね&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;lt-terraform-だって-yaml-で書きたい&quot;&gt;LT: Terraform だって YAML で書きたい&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;2018/06/15追記: スライド上がってた
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://speakerdeck.com/habuka036/terraformdatuteyamldeshu-kitai&quot;&gt;Terraform だって YAML で書きたい&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;スライド中にタイマーあるのいいなと思った、真似したい。&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;宣伝
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://www.ignite.ci/&quot;&gt;Ignite&lt;/a&gt; やってます&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;http://www.amazon.co.jp/o/ASIN/B07D2YCMJ5/xeres-22/&quot;&gt;インフラCI実践ガイド&lt;/a&gt; 6/18発売&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;好きなツール
    &lt;ul&gt;
      &lt;li&gt;Henchman&lt;/li&gt;
      &lt;li&gt;Goss&lt;/li&gt;
      &lt;li&gt;要は Go と YAML が大好きだ
        &lt;ul&gt;
          &lt;li&gt;ツール自体の利便性は二の次!笑&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Terraform
    &lt;ul&gt;
      &lt;li&gt;HCL と JSON に対応している&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;JSON
    &lt;ul&gt;
      &lt;li&gt;ハッシュの最後の要素に &lt;code class=&quot;highlighter-rouge&quot;&gt;,&lt;/code&gt; (カンマ) が打てないのがダメ&lt;/li&gt;
      &lt;li&gt;ハッシュのキーを &lt;code class=&quot;highlighter-rouge&quot;&gt;&quot;&quot;&lt;/code&gt; で囲う必要があるのがダメ&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;YAML
    &lt;ul&gt;
      &lt;li&gt;Terraform のページで dis られてるらしい&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;仕事で CloudFormation を YAML で書くか JSON で書くか検討した際も YAML 推しだった&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;Terraform のソースコードに手を入れようと思ったが…
    &lt;ul&gt;
      &lt;li&gt;yaml2json になりました
        &lt;ul&gt;
          &lt;li&gt;LT のために手を入れるにはボリュームが大きくなりそうだった…&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;いつかちゃんとパーサーを書いて contribute するぞ!笑&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;lt-inspec-を使った-terraform-のテスト&quot;&gt;LT: InSpec を使った Terraform のテスト&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;2018/06/15追記: スライド上がってた
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://talks.godoc.org/github.com/tkak/talks/2018/06/testing-terraform-code-with-inspec.slide#1&quot;&gt;InSpec を使った Terraform のテスト&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Terraform は便利だが、一歩間違うと大惨事
    &lt;ul&gt;
      &lt;li&gt;Terraform 自体や Provider のバージョンアップ&lt;/li&gt;
      &lt;li&gt;モジュールやプラグイン開発で手を加えたとき&lt;/li&gt;
      &lt;li&gt;変更をくわえるとき&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;テストの重要性
    &lt;ul&gt;
      &lt;li&gt;動作確認のためにマネージメントコンソールを触りたくない&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;InSpec の紹介
    &lt;ul&gt;
      &lt;li&gt;serverspec と一緒じゃね？
        &lt;ul&gt;
          &lt;li&gt;serverspec にインスピレーションを受けたツール&lt;/li&gt;
          &lt;li&gt;DSL は serverspec に類似しているが、Ruby に詳しくない人でも使えるように、という思想
            &lt;ul&gt;
              &lt;li&gt;例えば、&lt;code class=&quot;highlighter-rouge&quot;&gt;Rakefile&lt;/code&gt; や &lt;code class=&quot;highlighter-rouge&quot;&gt;spec_helper.rb&lt;/code&gt; を用意しなくても使える&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;InSpec で書かれたテストケースの例&lt;/li&gt;
      &lt;li&gt;テストの実効結果の例&lt;/li&gt;
      &lt;li&gt;対応しているリソースは、まだ Azure より AWS の方が多い&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;InSpec は便利だけど…
    &lt;ul&gt;
      &lt;li&gt;一からテストケース(Profile)を書くのが辛い&lt;/li&gt;
      &lt;li&gt;Azure だと Azure Resource Exporter と睨めっこ&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;inspec-iggy
    &lt;ul&gt;
      &lt;li&gt;tfstate から InSpec の Profile が生成される&lt;/li&gt;
      &lt;li&gt;やってみた
        &lt;ul&gt;
          &lt;li&gt;AWS だといけるけど、Azure は未対応&lt;/li&gt;
          &lt;li&gt;contribute するならチャンス!&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;ネットワーキング&quot;&gt;ネットワーキング&lt;/h2&gt;

&lt;p&gt;所用につき、未出席。ピザとビールがあったのに…ぐぬぬ。&lt;/p&gt;

&lt;h2 id=&quot;その他&quot;&gt;その他&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;会場について
    &lt;ul&gt;
      &lt;li&gt;GMO Yours&lt;/li&gt;
      &lt;li&gt;オフィス入り口は遅い時間(20:00だったかな？)になると閉まる&lt;/li&gt;
      &lt;li&gt;遅い時間は B1F から出る&lt;/li&gt;
      &lt;li&gt;改札みたいになってるんで、入館カードはゲートの口に入れて返却&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;HashiCorp 主催 Webiner
    &lt;ul&gt;
      &lt;li&gt;7/9(月) 18:00〜&lt;/li&gt;
      &lt;li&gt;詳細は Web で!!&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;主催の HashiCorp Japan 様、会場提供をしていただいた GMO 様、ありがとうございました!&lt;/p&gt;</content><author><name>Xeres</name></author><summary type="html">マルチクラウド対応「Terraform」で、ITインフラを簡単にプロビジョニングしよう に参加してきました。</summary></entry><entry><title type="html">Visual Studio Code for Linux を WSL 上の Ubuntu 16.04 LTS にインストールする</title><link href="https://tech.xeres.jp/2018/05/30/installing-vscode-for-linux-in-wsl-ubuntu-16.04-lts/" rel="alternate" type="text/html" title="Visual Studio Code for Linux を WSL 上の Ubuntu 16.04 LTS にインストールする" /><published>2018-05-30T23:19:00+09:00</published><updated>2018-05-30T23:19:00+09:00</updated><id>https://tech.xeres.jp/2018/05/30/installing-vscode-for-linux-in-wsl-ubuntu-16.04-lts</id><content type="html" xml:base="https://tech.xeres.jp/2018/05/30/installing-vscode-for-linux-in-wsl-ubuntu-16.04-lts/">&lt;h2 id=&quot;wsl-を有効にする--ubuntu-1604-lts-をインストールする&quot;&gt;WSL を有効にする → Ubuntu 16.04 LTS をインストールする&lt;/h2&gt;

&lt;p&gt;基本的には&lt;a href=&quot;https://blogs.msdn.microsoft.com/commandline/2017/10/11/whats-new-in-wsl-in-windows-10-fall-creators-update/&quot;&gt;公式ブログ&lt;/a&gt;の手順に沿って導入すれば問題ない。
Windows 10 バージョン 1709 (Fall Creators Update) 以降、開発者モードは不要となっているし、
&lt;code class=&quot;highlighter-rouge&quot;&gt;lxrun.exe /install&lt;/code&gt; を叩く手順も非推奨となっている。&lt;/p&gt;

&lt;p&gt;以降の手順は Ubuntu 16.04 LTS で動作を確認した。&lt;/p&gt;

&lt;p&gt;&lt;del&gt;本当は Ubuntu 18.04 LTS を使いたかったのだが、X Imput Method がうまく動作せず、
Visual Studio Code (VS Code) を起動すると X サーバーごと応答なしになってしまう。
要調査。&lt;/del&gt;&lt;/p&gt;

&lt;p&gt;(2018/08/01追記)
Ubuntu 18.04 LTS でも &lt;code class=&quot;highlighter-rouge&quot;&gt;fcitx-mozc&lt;/code&gt; で日本語入力ができるようになった。
https://tech.xeres.jp/2018/08/01/installing-vscode-for-linux-in-wsl-ubuntu-18.04-lts/&lt;/p&gt;

&lt;h2 id=&quot;windows-側に-x-サーバーをインストールする&quot;&gt;Windows 側に X サーバーをインストールする&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://sourceforge.net/projects/vcxsrv/&quot;&gt;VcXsrv&lt;/a&gt;とか適当に入れてちょうだい。&lt;/p&gt;

&lt;h2 id=&quot;vs-code-をインストールする&quot;&gt;VS Code をインストールする&lt;/h2&gt;

&lt;p&gt;基本的には&lt;a href=&quot;https://code.visualstudio.com/docs/setup/linux&quot;&gt;公式ドキュメント&lt;/a&gt;を参照でよいが、一部の修正が必要。&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;sudo mv&lt;/code&gt; を利用した手順だと &lt;code class=&quot;highlighter-rouge&quot;&gt;/etc/apt/trusted.gpg.d/microsoft.gpg&lt;/code&gt; のオーナーが一般ユーザーになってしまうので &lt;code class=&quot;highlighter-rouge&quot;&gt;sudo cp&lt;/code&gt; を利用する&lt;/li&gt;
  &lt;li&gt;依存しているが不足しているライブラリがあるので &lt;code class=&quot;highlighter-rouge&quot;&gt;libgtk2.0-0&lt;/code&gt;, &lt;code class=&quot;highlighter-rouge&quot;&gt;libxss1&lt;/code&gt;, &lt;code class=&quot;highlighter-rouge&quot;&gt;libasound2&lt;/code&gt; をインストールする&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;最後に &lt;code class=&quot;highlighter-rouge&quot;&gt;DISPLAY&lt;/code&gt; 環境変数を設定して起動すれば問題なし。一旦 VS Code を閉じる。
Windows 側で X サーバーの起動を忘れないように。&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;curl https://packages.microsoft.com/keys/microsoft.asc | gpg &lt;span class=&quot;nt&quot;&gt;--dearmor&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; microsoft.gpg
&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;cp microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
rm microsoft.gpg
&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;sh &lt;span class=&quot;nt&quot;&gt;-c&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'echo &quot;deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main&quot; &amp;gt; /etc/apt/sources.list.d/vscode.list'&lt;/span&gt;

&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;apt update

&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;apt install &lt;span class=&quot;nt&quot;&gt;-y&lt;/span&gt; lib&lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;gtk2.0-0,xss1,asound2&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;apt install &lt;span class=&quot;nt&quot;&gt;-y&lt;/span&gt; code

&lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;DISPLAY&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;:0.0&quot;&lt;/span&gt;
code
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;日本語化を実施する&quot;&gt;日本語化を実施する&lt;/h2&gt;

&lt;p&gt;次に日本語化を行う。&lt;/p&gt;

&lt;p&gt;フォントは Google がオープンソースで提供している &lt;a href=&quot;https://www.google.com/get/noto/&quot;&gt;Google Noto Fonts&lt;/a&gt; を
利用しているが、&lt;code class=&quot;highlighter-rouge&quot;&gt;fontconfig&lt;/code&gt; で制御されているので好きなものでよい。&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;apt install &lt;span class=&quot;nt&quot;&gt;-y&lt;/span&gt; language-pack-ja
&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;apt install &lt;span class=&quot;nt&quot;&gt;-y&lt;/span&gt; fonts-noto-cjk

&lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;LANG&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;ja_JP.UTF-8&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;LC_ALL&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$LANG&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;export LC_ALL&lt;/code&gt; した際にロケールが正常に反映できない旨のエラーが出た場合、
一度ターミナルを再起動すると良い。&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;DISPLAY&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;:0.0&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;LANG&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;ja_JP.UTF-8&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;LC_ALL&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$LANG&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
code
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;これで日本語化されたメニューや Welcome ページが表示される。
この時点ではまだ日本語入力はできない。&lt;/p&gt;

&lt;h2 id=&quot;日本語入力を有効にする&quot;&gt;日本語入力を有効にする&lt;/h2&gt;

&lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;uim-mozc&lt;/code&gt; とかも試したのだが上手く動作させることができず、妥協して &lt;code class=&quot;highlighter-rouge&quot;&gt;uim-anthy&lt;/code&gt; となった。
これで日本語入力が可能となった。&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;apt install &lt;span class=&quot;nt&quot;&gt;-y&lt;/span&gt; uim&lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;,-&lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;xim,anthy&lt;span class=&quot;o&quot;&gt;}}&lt;/span&gt;

&lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;XIM&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;uim&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;XMODIFIERS&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;@im=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$XIM&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;GTK_IM_MODULE&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$XIM&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;QT_IM_MODULE&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$XIM&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;UIM_CANDWIN_PROG&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;uim-candwin-gtk&quot;&lt;/span&gt;

uim-xim &amp;amp;
code
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;日本語入力自体の設定を変えたい場合は &lt;code class=&quot;highlighter-rouge&quot;&gt;uim-pref-gtk&lt;/code&gt; で普通に設定できる。&lt;/p&gt;

&lt;h2 id=&quot;全角半角キーを押し下げただけで連打された状態になる不具合に対処する-オプション&quot;&gt;全角/半角キーを押し下げただけで連打された状態になる不具合に対処する (オプション)&lt;/h2&gt;

&lt;p&gt;なんか割と有名な事例らしいのだが、&lt;code class=&quot;highlighter-rouge&quot;&gt;xset -r 49&lt;/code&gt; で修正できるようだ。&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;apt install &lt;span class=&quot;nt&quot;&gt;-y&lt;/span&gt; x11-xserver-utils

xset &lt;span class=&quot;nt&quot;&gt;-r&lt;/span&gt; 49
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;タイムゾーンを-jst-にする&quot;&gt;タイムゾーンを JST にする&lt;/h2&gt;

&lt;p&gt;デフォルトのタイムゾーンは DST になっているので JST にする。&lt;/p&gt;

&lt;div class=&quot;language-shell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;sh &lt;span class=&quot;nt&quot;&gt;-c&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'echo Asia/Tokyo &amp;gt; /etc/timezone'&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;dpkg-reconfigure &lt;span class=&quot;nt&quot;&gt;--frontend&lt;/span&gt; noninteractive tzdata
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;profile-に環境変数や起動時コマンドを追記する&quot;&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;~/.profile&lt;/code&gt; に環境変数や起動時コマンドを追記する&lt;/h2&gt;

&lt;p&gt;ざっとこんな感じ。&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;$SHLVL&lt;/code&gt; を見て、&lt;code class=&quot;highlighter-rouge&quot;&gt;uim-xim&lt;/code&gt; や &lt;code class=&quot;highlighter-rouge&quot;&gt;xset&lt;/code&gt; が不要に実行されないようにしている。&lt;/p&gt;

&lt;p&gt;また、どうも WSL は正常なログインプロセスを経ていないようで &lt;code class=&quot;highlighter-rouge&quot;&gt;/etc/login.defs&lt;/code&gt; の
&lt;code class=&quot;highlighter-rouge&quot;&gt;UMASK&lt;/code&gt; が無視されるようなので、ついでに &lt;code class=&quot;highlighter-rouge&quot;&gt;umask 022&lt;/code&gt; をコメントアウトするとよい。&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c&quot;&gt;# ~/.profile: executed by the command interpreter for login shells.&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# exists.&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# see /usr/share/doc/bash/examples/startup-files for examples.&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# the files are located in the bash-doc package.&lt;/span&gt;

&lt;span class=&quot;c&quot;&gt;# the default umask is set in /etc/profile; for setting the umask&lt;/span&gt;
&lt;span class=&quot;c&quot;&gt;# for ssh logins, install and configure the libpam-umask package.&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;umask &lt;/span&gt;022 &lt;span class=&quot;c&quot;&gt;# ついでにコメントアウト&lt;/span&gt;

&lt;span class=&quot;c&quot;&gt;# if running bash&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-n&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$BASH_VERSION&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;then&lt;/span&gt;
    &lt;span class=&quot;c&quot;&gt;# include .bashrc if it exists&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-f&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$HOME&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;/.bashrc&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;then&lt;/span&gt;
        &lt;span class=&quot;nb&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$HOME&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;/.bashrc&quot;&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;fi
fi&lt;/span&gt;

&lt;span class=&quot;c&quot;&gt;# set PATH so it includes user's private bin directories&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;PATH&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$HOME&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;/bin:&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$HOME&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;/.local/bin:&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$PATH&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;

&lt;span class=&quot;c&quot;&gt;# ---- 以降追記 ----&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;DISPLAY&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;:0.0&quot;&lt;/span&gt;

&lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;LANG&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;ja_JP.UTF-8&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;LC_ALL&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$LANG&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;

&lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;XIM&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;uim&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;XMODIFIERS&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;@im=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$XIM&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;GTK_IM_MODULE&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$XIM&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;QT_IM_MODULE&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$XIM&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;UIM_CANDWIN_PROG&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;uim-candwin-gtk&quot;&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$SHLVL&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-eq&lt;/span&gt; 1 &lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;then
    &lt;/span&gt;uim-xim &lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt;/dev/null &amp;amp;
    xset &lt;span class=&quot;nt&quot;&gt;-r&lt;/span&gt; 49
&lt;span class=&quot;k&quot;&gt;fi&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content><author><name>Xeres</name></author><summary type="html">WSL を有効にする → Ubuntu 16.04 LTS をインストールする</summary></entry><entry><title type="html">行人坂.tech #0 に参加して AWS Fargate のハンズオンをやってみた #gyoninzaka_tech</title><link href="https://tech.xeres.jp/2018/05/09/gyoninzaka-tech-0-aws-fargate-hands-on/" rel="alternate" type="text/html" title="行人坂.tech #0 に参加して AWS Fargate のハンズオンをやってみた #gyoninzaka_tech" /><published>2018-05-09T23:30:00+09:00</published><updated>2018-05-09T23:30:00+09:00</updated><id>https://tech.xeres.jp/2018/05/09/gyoninzaka-tech-0-aws-fargate-hands-on</id><content type="html" xml:base="https://tech.xeres.jp/2018/05/09/gyoninzaka-tech-0-aws-fargate-hands-on/">&lt;p&gt;&lt;a href=&quot;https://gyoninzaka-tech.connpass.com/event/85527/&quot;&gt;行人坂.tech #0&lt;/a&gt; に行って、AWS Fargate を触ってきました。&lt;/p&gt;

&lt;h2 id=&quot;行人坂tech-について&quot;&gt;行人坂.tech について&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;スピーカー: &lt;a href=&quot;https://twitter.com/hamburger_kid&quot;&gt;@hamburgerkid&lt;/a&gt;さん&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;目的&lt;/p&gt;
    &lt;ul&gt;
      &lt;li&gt;AWS のマネージドサービスをハンズオンで体験してもらいたい&lt;/li&gt;
      &lt;li&gt;マネージドサービスを体験して、その利便性を業務で活かしてほしい&lt;/li&gt;
      &lt;li&gt;勉強会自体が成熟してきたら、AWS のマネージドサービス以外も取り上げるかも&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;aws-fargate-とは-座学&quot;&gt;AWS Fargate とは (座学)&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;スピーカー: &lt;a href=&quot;https://twitter.com/afukui&quot;&gt;@afukui&lt;/a&gt;さん&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;コンテナのいいところ&quot;&gt;コンテナのいいところ&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;3つの利点
    &lt;ul&gt;
      &lt;li&gt;パッケージング&lt;/li&gt;
      &lt;li&gt;配布&lt;/li&gt;
      &lt;li&gt;イミュータブル インフラストラクチャ&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;得られるもの
    &lt;ul&gt;
      &lt;li&gt;アプリケーションの高速なデプロイ&lt;/li&gt;
      &lt;li&gt;CI/CD を用いた、高速かつ高いポータビリティ性を生かしたテスト環境の構築&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;結果
    &lt;ul&gt;
      &lt;li&gt;アプリケーションの質とデプロイ速度が向上&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;amazon-ecs&quot;&gt;Amazon ECS&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;growth
    &lt;ul&gt;
      &lt;li&gt;年間アクティブ ユーザー 450+% (2016/2017年の比較)&lt;/li&gt;
      &lt;li&gt;毎週、数億コンテナが起動&lt;/li&gt;
      &lt;li&gt;数百万ものインスタンス上で&lt;/li&gt;
      &lt;li&gt;2015年の GA 以降、50+ の新機能&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;他 AWS サービスとの連携
    &lt;ul&gt;
      &lt;li&gt;AWS VPC ネットワーク&lt;/li&gt;
      &lt;li&gt;Auto-Scaling&lt;/li&gt;
      &lt;li&gt;CloudWatch&lt;/li&gt;
      &lt;li&gt;ELB&lt;/li&gt;
      &lt;li&gt;…etc.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;フィードバックで一番多かった要望&quot;&gt;フィードバックで一番多かった要望&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;アプリケーション開発だけをしたい&lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;インスタンスの管理なんかしたくない&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;それができるのが AWS Fargate&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;aws-fargate-の特徴&quot;&gt;AWS Fargate の特徴&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;インスタンス管理なし&lt;/li&gt;
  &lt;li&gt;タスクネイティブAPI&lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;使用リソースベース課金&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;結果
    &lt;ul&gt;
      &lt;li&gt;シンプルで、使いやすく、協力な新しいリソース利用モデル&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;コンテナのユースケース&quot;&gt;(コンテナの)ユースケース&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;マイクロサービスアーキテクチャ
    &lt;ul&gt;
      &lt;li&gt;多数のマイクロサービスを同じように管理&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;非同期ジョブ実行 (バッチ処理)
    &lt;ul&gt;
      &lt;li&gt;柔軟にスケール&lt;/li&gt;
      &lt;li&gt;Lambda と違って実行時間に制約がない
        &lt;ul&gt;
          &lt;li&gt;(メモ) Azure Functions だと App Service プランにすると実行時間については
ある意味気にしなくていいので「ほへー」と思った&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;継続的インテグレーション、継続的デプロイ (CI/CD)
    &lt;ul&gt;
      &lt;li&gt;開発、テスト、本番まで一貫したイメージを利用&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;クラウドへのマイグレーション
    &lt;ul&gt;
      &lt;li&gt;レガシーシステムでもコンテナにさえしてしまえば容易にクラウドに持っていける
        &lt;ul&gt;
          &lt;li&gt;(メモ) 各クラウド プロバイダーが提供しているマイグレーション サービスで
非コンテナのまま持ってく方が楽なのではといつも思うのだが、偉い人どうすか&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;コンテナ管理環境の変遷&quot;&gt;コンテナ管理環境の変遷&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;ローカル実行&lt;/li&gt;
  &lt;li&gt;各 EC2 インスタンス上で実行&lt;/li&gt;
  &lt;li&gt;Amazon ECS&lt;/li&gt;
  &lt;li&gt;AWS Fargate ← 今ココ&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;amazon-ecs-の構造&quot;&gt;Amazon ECS の構造&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Scheduling and Orchestration
    &lt;ul&gt;
      &lt;li&gt;Cluster Manager&lt;/li&gt;
      &lt;li&gt;Placement Engine&lt;/li&gt;
      &lt;li&gt;結局、こいつらが裏で EC2 を動かしている&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Amazon ECS 用 EC2 インスタンスの AMI (ECS AMI)
    &lt;ul&gt;
      &lt;li&gt;ECS agent&lt;/li&gt;
      &lt;li&gt;Docker agent&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;AWS Fargate だと…
    &lt;ul&gt;
      &lt;li&gt;EC2 インスタンスは見なくてよい&lt;/li&gt;
      &lt;li&gt;フロントの Scheduling and Orchestration はそのまま&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;ecs-を使用した-fargate-コンテナの実行&quot;&gt;ECS を使用した Fargate コンテナの実行&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;同じ Task Definition スキーマ&lt;/li&gt;
  &lt;li&gt;ECS API を使ってアクセス可能&lt;/li&gt;
  &lt;li&gt;AWS Fargate と Amazon ECS の共存が可能
    &lt;ul&gt;
      &lt;li&gt;(メモ) クラスターAは Amazon ECS、クラスターB は AWS Fargate というだけで、
同一クラスタで共存できるわけではないと思われる&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;aws-fargate-を利用した場合の-auto-scaling-の違い&quot;&gt;AWS Fargate を利用した場合の Auto Scaling の違い&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Amazon ECS では EC2 Auto-Scaling と Task Auto-Scaling を設定していた&lt;/li&gt;
  &lt;li&gt;AWS Fargate では Task Auto-Scaling だけを設定すればいい&lt;/li&gt;
  &lt;li&gt;Task の実行で問題が出ないように EC2 Auto-Scaling 側で余裕を持たせる、
などの工夫は不要なので無駄な課金がない&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;ネットワーク&quot;&gt;ネットワーク&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;AWS VPC ネットワークモードのみ
    &lt;ul&gt;
      &lt;li&gt;(メモ) 要は bridge は使えないってことだと思われる&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Task 毎に ENI を自動割り当て
    &lt;ul&gt;
      &lt;li&gt;Security Group を Task 毎に設定可能
        &lt;ul&gt;
          &lt;li&gt;同一クラスタ内であればツーツー&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Task 内のコンテナは localhost を共有
    &lt;ul&gt;
      &lt;li&gt;Link 不要で互いにアクセス可能&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;VPC ないの他のリソースへ Private IP で通信が可能
    &lt;ul&gt;
      &lt;li&gt;AWS Fargate では Public IP の割り当ても可能&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;ロードバランサー&quot;&gt;ロードバランサー&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;ALB / NLB どちらにも対応&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;セキュリティ&quot;&gt;セキュリティ&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;クラスタ単位での分離が可能&lt;/li&gt;
  &lt;li&gt;IAM Role を Task 毎に設定可能&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;可視化とモニタリング&quot;&gt;可視化とモニタリング&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;CloudWatch Logs&lt;/li&gt;
  &lt;li&gt;CloudWatch Events&lt;/li&gt;
  &lt;li&gt;Service-level metrics&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;ストレージ&quot;&gt;ストレージ&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;クラスターと同じライフサイクルのストレージサービス
    &lt;ul&gt;
      &lt;li&gt;Ephemeral は EBS サポート&lt;/li&gt;
      &lt;li&gt;コンテナストレージ領域 10GB&lt;/li&gt;
      &lt;li&gt;コンテナ間の共有ストレージ 4GB&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;永続化したい場合は別途で他のストレージサービスを利用すること&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;レジストリサポート&quot;&gt;レジストリサポート&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Amazon ECR&lt;/li&gt;
  &lt;li&gt;Public Repositry&lt;/li&gt;
  &lt;li&gt;3rd-Party Private Repositry (comming soon)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;料金体系&quot;&gt;料金体系&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;CPU/メモリ×実行時間&lt;/li&gt;
  &lt;li&gt;ストレージは不要&lt;/li&gt;
  &lt;li&gt;データ転送量は標準&lt;/li&gt;
  &lt;li&gt;CloudWatch を使う場合はその分は別途で&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;slaコンプライアンス&quot;&gt;SLA/コンプライアンス&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;99.99% (Amazon ECSと同様)&lt;/li&gt;
  &lt;li&gt;HIPAA など、他サービスと同様のコンプライアンス認定&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;aws-fargate-for-amazon-eks&quot;&gt;AWS Fargate for Amazon EKS&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;comming soon&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;(メモ) &lt;a href=&quot;https://aws.amazon.com/jp/fargate/&quot;&gt;AWS Fargate&lt;/a&gt; のページを見ると下記のように記載あり&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;AWS Fargate での Amazon EKS のサポートは 2018 年に開始される予定です。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;使い分けも可能&quot;&gt;使い分けも可能&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;こんなことも可能
    &lt;ul&gt;
      &lt;li&gt;リリース当初は AWS Fargate で簡易にスタート&lt;/li&gt;
      &lt;li&gt;GPU が使いたい等、何らかの事情で一時的に Amazon ECS に&lt;/li&gt;
      &lt;li&gt;リファクタリングしてコンテナ利用に最適化したら AWS Fargate に戻す&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;(メモ) 多分、同じレジストリを参照して別クラスターにデプロイするだけ&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;ハンズオン&quot;&gt;ハンズオン&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;スピーカー: &lt;a href=&quot;https://twitter.com/hamburger_kid&quot;&gt;@hamburgerkid&lt;/a&gt;さん&lt;/li&gt;
  &lt;li&gt;資料が private Qiita だったので URL は割愛&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
  &lt;li&gt;マネジメントコンソールから AWS Fargate の sample-app + ALB をデプロイ&lt;/li&gt;
  &lt;li&gt;アプリケーションの更新&lt;/li&gt;
  &lt;li&gt;Blue/Green デプロイ&lt;/li&gt;
  &lt;li&gt;スケールアウト&lt;/li&gt;
  &lt;li&gt;スケールイン&lt;/li&gt;
  &lt;li&gt;クリーンアップ&lt;/li&gt;
&lt;/ol&gt;</content><author><name>Xeres</name></author><summary type="html">行人坂.tech #0 に行って、AWS Fargate を触ってきました。</summary></entry></feed>