<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Engineers on すてきな太陽になりたい</title><link>https://blog.sei-yo.jp/engineer/</link><description>Recent content in Engineers on すてきな太陽になりたい</description><generator>Hugo</generator><language>ja-JP</language><lastBuildDate>Sun, 18 May 2025 21:32:31 +0900</lastBuildDate><atom:link href="https://blog.sei-yo.jp/engineer/index.xml" rel="self" type="application/rss+xml"/><item><title>自宅のKubernetesサーバ用にメモリがたくさんほしい</title><link>https://blog.sei-yo.jp/engineer/2025/05/posts/home_kubernetes_requires_much_memories/</link><pubDate>Sun, 18 May 2025 21:32:31 +0900</pubDate><guid>https://blog.sei-yo.jp/engineer/2025/05/posts/home_kubernetes_requires_much_memories/</guid><description>&lt;p&gt;おうちでKubernetesクラスタを作って動かしているとメモリがたくさん欲しくなります。&lt;/p&gt;
&lt;p&gt;あるアプリケーションを動かしたいというような場合にKubernetes流にやろうとすると便利な管理機能も一緒に動かすのでリソース的にはオーバーヘッドがあります。冗長構成のためのオーバーヘッドや監視や管理のためのオーバーヘッドなどがあります。&lt;/p&gt;
&lt;p&gt;そういうものをなるべく使わないようにすることもできますが、それはそれで面倒ですし、それらを使うのは勉強の観点からも必要です。&lt;/p&gt;
&lt;p&gt;そういうわけで、あれもこれもやろうとするとどんどんメモリが欲しくなります。
足りないとOOM-Killerが発動してしまってこれも面倒なのでなんとかしたいものです。&lt;/p&gt;</description></item><item><title>MovableTypeからHugoへ移行</title><link>https://blog.sei-yo.jp/engineer/2025/05/posts/hugo/</link><pubDate>Thu, 15 May 2025 23:15:21 +0900</pubDate><guid>https://blog.sei-yo.jp/engineer/2025/05/posts/hugo/</guid><description>&lt;h1 id="背景"&gt;背景&lt;/h1&gt;
&lt;p&gt;MovableTypeを使ってこれまでブログを公開していましたが、以下に示すような理由でHugoに移行しました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;管理を省力化したかった&lt;/li&gt;
&lt;li&gt;kubernetes上に移行したかった&lt;/li&gt;
&lt;li&gt;MovableTypeの豊富な機能を全く使いこなしていなかった&lt;/li&gt;
&lt;li&gt;コンテンツをgitで管理したかった&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;きっかけはMovableTypeを動かしていたサーバがCentOS7だったので退役させたかったことでした。
そこで以前からやりたかったことを実行に移しました。&lt;/p&gt;
&lt;h1 id="hugoとは"&gt;Hugoとは&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://gohugo.io/"&gt;Hugo&lt;/a&gt;はスタティックサイトジェネレータなので、htmlファイルなどを出力するためのツールです。
出力されたファイルをWebサーバ上において公開する仕組みです。
Kubernetes上で公開する際はNginxのコンテナにファイルをコピーして、そのコンテナをPodで動かします。&lt;/p&gt;
&lt;h1 id="移行の方法"&gt;移行の方法&lt;/h1&gt;
&lt;p&gt;MovableTypeの記事をテキストファイルに出力する機能があるのでそれを使って記事データをエクスポートします。
Hugoでは1記事1ファイルなのでエクスポートしたテキストファイルを記事毎に分割します。
ChatGPTに手伝ってもらって変換ツールを作って記事ファイルを用意できました。
記事中で参照する画像ファイルもあったのですが、以前の移行のときにサボって消してしまったので画像などのことは気にせず記事本文だけを気にすれば良かったのでそれほど難しくありませんでした。&lt;/p&gt;
&lt;p&gt;ただ、アフィリエイトリンクやSNSへの共有ボタンなど一部移行していないものもあります。&lt;/p&gt;
&lt;h1 id="今後"&gt;今後&lt;/h1&gt;
&lt;p&gt;記事の移行はできましたが、デザイン含めほぼデフォルトのままなのでHugoの機能も勉強しつつ、充実していきたいと思います。&lt;/p&gt;
&lt;h1 id="変換ツール"&gt;変換ツール&lt;/h1&gt;
&lt;p&gt;ChatGPTさんと協力して作ったMovableTypeのエクスポートデータをHugo用のファイルに変換するツールを紹介しておきます。
MovableTypeのときのURLからリダイレクトするためのNginx向けコンフィグも併せて生成します。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/hseiyo/Movabletype2Hugo"&gt;MovableType2Hugo&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Unable to find Gradle tasks to build [:app] build mode ASSEMBLE</title><link>https://blog.sei-yo.jp/engineer/2024/05/posts/unable_to_find_gradle_tasks_to_build_app_build_mode_assemble/</link><pubDate>Wed, 22 May 2024 05:25:13 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2024/05/posts/unable_to_find_gradle_tasks_to_build_app_build_mode_assemble/</guid><description>&lt;p&gt;Android Studio Koala 2024.1.1 Canary 4で、Run &amp;lsquo;app&amp;rsquo;としたら、以下のメッセージが出てビルドできない事象が発生した。 特に何も変更した覚えがないので、Build CleanしてMakeしたらまたBuildできるようになりました。 &lt;code&gt;Unable to find Gradle tasks to build [:app] build mode ASSEMBLE&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Unable to install Docker Desktop 4.19.0 (106363)</title><link>https://blog.sei-yo.jp/engineer/2023/05/posts/unable_to_install_docker_desktop_4190_106363/</link><pubDate>Tue, 02 May 2023 11:53:42 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2023/05/posts/unable_to_install_docker_desktop_4190_106363/</guid><description>&lt;h3 id="概要"&gt;概要&lt;/h3&gt;
&lt;p&gt;以前インストールしていたDocker Desktop（4.3くらい）が起動しないと気付いたので、新しいものを入れようとしたらインストール失敗してしまい、その後試行錯誤してどうにかインストールできました。&lt;br&gt;
古いものをアンインストールしようにもアプリの一覧等にも表示されずおかしな状態になっていました。&lt;/p&gt;
&lt;h3 id="失敗時のログ"&gt;失敗時のログ&lt;/h3&gt;
&lt;p&gt;インストールに失敗していた頃のログは以下のような感じでした。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Version: 4.19.0 (106363)
Sha1: 
Started on: 2023/05/02 01:51:29.285
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>最強のLinuxコマンドは何？</title><link>https://blog.sei-yo.jp/engineer/2023/03/posts/linux/</link><pubDate>Thu, 23 Mar 2023 00:29:18 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2023/03/posts/linux/</guid><description>&lt;p&gt;最強のコマンドって何だろう？と、最強のなんとかっていう見出しのある本を見かけて疑問に思ったので考えてみました。&lt;/p&gt;
&lt;p&gt;まずは出場選手について考えてみたいと思います。&lt;/p&gt;
&lt;h3 id="出場選手--いかにも強そうなコマンド-"&gt;出場選手 ～ いかにも強そうなコマンド ～&lt;/h3&gt;
&lt;p&gt;どういうコマンドが強いんですかね。\ いかにも強そうな感じのするコマンドたちはこちら。&lt;/p&gt;
&lt;h4 id="kill"&gt;kill&lt;/h4&gt;
&lt;p&gt;殺し屋ですね。強そうです。&lt;/p&gt;
&lt;p&gt;以下のオプションが特に強いです。実際に使うときは最後にpidを指定します。&lt;/p&gt;
&lt;p&gt;kill -KILL&lt;/p&gt;
&lt;p&gt;pid を調べるのが面倒という方のための killall というコマンドもあります。&lt;/p&gt;
&lt;h4 id="rm"&gt;rm&lt;/h4&gt;
&lt;p&gt;消しちゃうのでこれも強そうです。&lt;/p&gt;
&lt;p&gt;以下のオプションが基本ですが、今どきのGNUの rm コマンドだと消せないことも多いです。&lt;/p&gt;
&lt;p&gt;rm -rf /&lt;/p&gt;
&lt;p&gt;そんなときはこちら。これでも消せないという噂もありますが、試していません。&lt;/p&gt;
&lt;p&gt;rm -rf &amp;ndash;no-preserve-root /&lt;/p&gt;
&lt;h4 id="poweroff"&gt;poweroff&lt;/h4&gt;
&lt;p&gt;電源落としちゃうので有無を言わせない感じですね。&lt;/p&gt;
&lt;p&gt;shutdown コマンドも同じです。shutdown コマンドの場合は以下のような感じになります。&lt;/p&gt;
&lt;p&gt;shutdown -h now&lt;/p&gt;
&lt;h3 id="出場選手--なんでもできちゃうコマンド-"&gt;出場選手 ～ なんでもできちゃうコマンド ～&lt;/h3&gt;
&lt;p&gt;なんでもできちゃうコマンドはなんでもできちゃうから強いよね？&lt;/p&gt;
&lt;h4 id="bash"&gt;bash&lt;/h4&gt;
&lt;p&gt;シェルだけどコマンドでもあるのでこれはコマンド。 引数次第で何でも実行できちゃうので、いかにも強そうなコマンドたちも実行できちゃいます。&lt;/p&gt;
&lt;p&gt;以下のような感じで使います。&lt;/p&gt;
&lt;p&gt;bash -c &amp;lsquo;poweroff&amp;rsquo;&lt;/p&gt;
&lt;h4 id="perl"&gt;perl&lt;/h4&gt;
&lt;p&gt;プログラミング言語のインタプリタも引数次第で何でもできちゃいます。&lt;/p&gt;
&lt;p&gt;以下のような感じで使います。&lt;/p&gt;
&lt;p&gt;perl -e &amp;ldquo;system(&amp;lsquo;poweroff&amp;rsquo;);&amp;rdquo;&lt;/p&gt;
&lt;p&gt;他にもたくさんあります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ruby&lt;/li&gt;
&lt;li&gt;awk&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="find"&gt;find&lt;/h4&gt;
&lt;p&gt;findコマンドはファイルを探すだけじゃありません。\ コマンドも実行できちゃいます。&lt;/p&gt;
&lt;p&gt;以下のような感じで使います。&lt;/p&gt;
&lt;p&gt;find -exec poweroff ;&lt;/p&gt;
&lt;h4 id="su"&gt;su&lt;/h4&gt;
&lt;p&gt;使い勝手は bash に似ています。&lt;/p&gt;
&lt;p&gt;以下のような感じで使います。&lt;/p&gt;
&lt;p&gt;su -c poweroff&lt;/p&gt;</description></item><item><title>気になるニュース記事（2023年2月6日）</title><link>https://blog.sei-yo.jp/engineer/2023/02/posts/202326/</link><pubDate>Mon, 06 Feb 2023 10:47:36 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2023/02/posts/202326/</guid><description>&lt;p&gt;気になるニュース記事です。 ### サイバー空間での安全保障強化へ「体制整備準備室」を設置 ｜ NHK ｜ サイバー攻撃 &lt;a href="https://www3.nhk.or.jp/news/html/20230131/k10013966711000.html"&gt;サイバー空間での安全保障強化へ「体制整備準備室」を設置 ｜ NHK ｜ サイバー攻撃&lt;/a&gt; ### 経済産業省、全ECサイトが義務化対象 セキュリティー対策で脆弱性対策と本人認証導入を義務化 ｜ 日本ネット経済新聞｜新聞×ウェブでEC＆流通のデジタル化をリード &lt;a href="https://netkeizai.com/articles/detail/7922/1/1/1"&gt;経済産業省、全ECサイトが義務化対象 セキュリティー対策で脆弱性対策と本人認証導入を義務化 ｜ 日本ネット経済新聞｜新聞×ウェブでEC＆流通のデジタル化をリード&lt;/a&gt; ### 情報セキュリティ10大脅威 2023：IPA 独立行政法人 情報処理推進機構 &lt;a href="https://www.ipa.go.jp/security/vuln/10threats2023.html"&gt;情報セキュリティ10大脅威 2023：IPA 独立行政法人 情報処理推進機構&lt;/a&gt; ### IPAがデジタルスキル標準を公開、DXに必要なスキルを総合的に示す ｜ 日経クロステック（xTECH） &lt;a href="https://xtech.nikkei.com/atcl/nxt/news/18/14360/"&gt;IPAがデジタルスキル標準を公開、DXに必要なスキルを総合的に示す ｜ 日経クロステック（xTECH）&lt;/a&gt; ### 暗号アルゴリズム「SHA-1」の廃止を発表、NIST ｜ TECH+（テックプラス） &lt;a href="https://news.mynavi.jp/techplus/article/20221219-2540657/"&gt;暗号アルゴリズム「SHA-1」の廃止を発表、NIST ｜ TECH+（テックプラス）&lt;/a&gt; ### 1位は寿司チェーンの情報持ち出し トレリックス、10大セキュリティー事件発表（電波新聞デジタル） - Yahoo!ニュース &lt;a href="https://news.yahoo.co.jp/articles/df7d3cff7082c05caff0cef8ea7585553711ef94"&gt;1位は寿司チェーンの情報持ち出し トレリックス、10大セキュリティー事件発表（電波新聞デジタル） - Yahoo!ニュース&lt;/a&gt; ### 経団連：経団連サイバーセキュリティ経営宣言 2.0 （2022-10-11） &lt;a href="https://www.keidanren.or.jp/policy/2022/087.html?s=09"&gt;経団連：経団連サイバーセキュリティ経営宣言 2.0 （2022-10-11）&lt;/a&gt; ### 全銀システム、フィンテック企業に開放 正式発表： 日本経済新聞 &lt;a href="https://www.nikkei.com/article/DGKKZO64373360V10C22A9EE9000/?unlock=1"&gt;全銀システム、フィンテック企業に開放 正式発表： 日本経済新聞&lt;/a&gt; ### 「積極的サイバー防御」重要インフラ対象に導入へ&amp;hellip;政府、攻撃元に侵入や無力化検討 ： 読売新聞オンライン &lt;a href="https://www.yomiuri.co.jp/politics/20220912-OYT1T50308/?s=09"&gt;「積極的サイバー防御」重要インフラ対象に導入へ&amp;hellip;政府、攻撃元に侵入や無力化検討 ： 読売新聞オンライン&lt;/a&gt; ### 職員室をIT化 文科省、新校務システム導入へ 切れ目ない指導にも ｜ 毎日新聞 &lt;a href="https://mainichi.jp/articles/20220827/k00/00m/040/195000c"&gt;職員室をIT化 文科省、新校務システム導入へ 切れ目ない指導にも ｜ 毎日新聞&lt;/a&gt; ### 米国版GDPR策定へ 個人情報の扱いに忠実義務求める： 日本経済新聞 &lt;a href="https://www.nikkei.com/article/DGXZQOCD125BI0S2A810C2000000/?unlock=1&amp;amp;s;=09"&gt;米国版GDPR策定へ 個人情報の扱いに忠実義務求める： 日本経済新聞&lt;/a&gt; ### 防衛省の新セキュリティー基準、「一般企業こそ注目すべきだ」と専門家が勧めるわけ ｜ 日経クロステック（xTECH） &lt;a href="https://xtech.nikkei.com/atcl/nxt/column/18/02143/072600001/"&gt;防衛省の新セキュリティー基準、「一般企業こそ注目すべきだ」と専門家が勧めるわけ ｜ 日経クロステック（xTECH）&lt;/a&gt; ### 総務省が&amp;quot;クラウド設定ミス&amp;quot;対策のガイドライン公開 まずは素案、パブコメも募集 - ITmedia NEWS &lt;a href="https://www.itmedia.co.jp/news/articles/2207/25/news185.html"&gt;総務省が&amp;quot;クラウド設定ミス&amp;quot;対策のガイドライン公開 まずは素案、パブコメも募集 - ITmedia NEWS&lt;/a&gt; ### IPAが「サイバーセキュリティ経営ガイドライン Ver 2.0実践のためのプラクティス集 第3版」を発行：ガイドラインを実践する際に参考になる事例を追加 - ＠IT &lt;a href="https://atmarkit.itmedia.co.jp/ait/articles/2204/01/news043.html"&gt;IPAが「サイバーセキュリティ経営ガイドライン Ver 2.0実践のためのプラクティス集 第3版」を発行：ガイドラインを実践する際に参考になる事例を追加 - ＠IT&lt;/a&gt; ### IPAが「組織における内部不正防止ガイドライン」を5年ぶりに改訂：内部不正対策にAIを使う場合の注意点などを追記 - ＠IT &lt;a href="https://atmarkit.itmedia.co.jp/ait/articles/2204/11/news037.html"&gt;IPAが「組織における内部不正防止ガイドライン」を5年ぶりに改訂：内部不正対策にAIを使う場合の注意点などを追記 - ＠IT&lt;/a&gt; &lt;a href="https://japan.zdnet.com/article/35185943/"&gt;IPA、「内部不正防止ガイド」を改訂&amp;ndash;テレワークや検知技術を追加 - ZDNET Japan&lt;/a&gt; ### EUの「協調的脆弱性開示」の実態、そこから見る先行事例としての日本の取り組み【海外セキュリティ】 - INTERNET Watch &lt;a href="https://internet.watch.impress.co.jp/docs/column/security/1408080.html"&gt;EUの「協調的脆弱性開示」の実態、そこから見る先行事例としての日本の取り組み【海外セキュリティ】 - INTERNET Watch&lt;/a&gt; ### 韓国 ＮＡＴＯサイバー防衛協力センターの正会員に＝アジア初 ｜ 聯合ニュース &lt;a href="https://jp.yna.co.kr/view/AJP20220505000900882"&gt;韓国 ＮＡＴＯサイバー防衛協力センターの正会員に＝アジア初 ｜ 聯合ニュース&lt;/a&gt; ### データセンター 大規模災害に備え地方分散へ 候補地78か所公表 ｜ NHK ｜ IT・ネット &lt;a href="https://www3.nhk.or.jp/news/html/20220412/k10013578511000.html"&gt;データセンター 大規模災害に備え地方分散へ 候補地78か所公表 ｜ NHK ｜ IT・ネット&lt;/a&gt; ### ベリタス、新ブランド「Veritas Alta」でSaaS製品を展開へ（ZDNet Japan） - Yahoo!ニュース &lt;a href="https://news.yahoo.co.jp/articles/a68e23c8d0ba7d66bb69f4dc20b5c100a98becbc"&gt;ベリタス、新ブランド「Veritas Alta」でSaaS製品を展開へ（ZDNet Japan） - Yahoo!ニュース&lt;/a&gt; ### 野村総研のIaaSが&amp;quot;政府認定クラウド&amp;quot;入り - ITmedia NEWS &lt;a href="https://www.itmedia.co.jp/news/articles/2212/20/news102.html"&gt;野村総研のIaaSが&amp;quot;政府認定クラウド&amp;quot;入り - ITmedia NEWS&lt;/a&gt; ### Cloudflare、WAFやDDoS攻撃対策を無料提供 中小企業向けにセキュリティ支援 - ITmedia NEWS &lt;a href="https://www.itmedia.co.jp/news/articles/2212/14/news089.html"&gt;Cloudflare、WAFやDDoS攻撃対策を無料提供 中小企業向けにセキュリティ支援 - ITmedia NEWS&lt;/a&gt; ### AWSがLinux関連OSSを特許リスクから守る「Open Invention Network」に加盟を発表 － Publickey &lt;a href="https://www.publickey1.jp/blog/22/awslinuxossopen_invention_network.html?s=09"&gt;AWSがLinux関連OSSを特許リスクから守る「Open Invention Network」に加盟を発表 － Publickey&lt;/a&gt; ### セキュリティー「総合商社」席巻 パロアルトは17社買収： 日本経済新聞 &lt;a href="https://www.nikkei.com/article/DGXZQOUC04A6L0U2A001C2000000/"&gt;セキュリティー「総合商社」席巻 パロアルトは17社買収： 日本経済新聞&lt;/a&gt; ### マイクロソフト「警告を受けなかったと言わせない」Basic 認証無効化期限迫る ｜ ScanNetSecurity &lt;a href="https://s.netsecurity.ne.jp/article/2022/09/07/48152.html"&gt;マイクロソフト「警告を受けなかったと言わせない」Basic 認証無効化期限迫る ｜ ScanNetSecurity&lt;/a&gt;&lt;/p&gt;</description></item><item><title>自宅サーバと自宅パソコンの役割と構成</title><link>https://blog.sei-yo.jp/engineer/2023/01/posts/post_7/</link><pubDate>Sun, 22 Jan 2023 15:03:45 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2023/01/posts/post_7/</guid><description>&lt;p&gt;以前から自宅で常時稼働のサーバを動かしています。 でも、サーバはクラウドで動かしても良いかもしれないし、どうせあるなら自宅パソコンを仮想化してサーバで動かしても良いよね、と思ったりして悩んだので改めて目的と期待するスペックについてここで整理しようと思います。 ### 自宅サーバの目的 メールサーバ、Webサーバ、アプリケーションサーバなど色々な目的で使っています。以前はコスト的に自宅サーバしか選択肢が無かったのですが今ではクラウドサービスで賄えそうな気がします。 それでも自宅サーバがやっぱり良いかなと思うのは、色々いじって遊ぶことで身につく知識の習得です。身につくのは主にOSやNgnxなどのミドルウェアの知識です。 クラウドに移行する場合IaaSだと費用が高いのでPaaSやSaaSの利用がメインになると思います。でもそうするとOSやミドルウェアを自分で準備しないのでその辺の知識習得ができません。 ### IaaSの費用 IaaSは高いから自宅サーバを選ぶというのは正しい判断でしょうか。 計算してみましょう。 AWS EC2のa1.xlargeの場合、東京リージョンで0.1284USD/hです。1USDが130円として、月720時間とすると12018円/月です。 それ以外は掛からないとします。 自宅サーバの場合、初期費として本体購入費用が150000円とします。電気代が4000円/月とします。 この場合、19ヶ月でIaaSの費用が自宅サーバの費用を超えます。 ・・・自宅サーバ安いですね。 もちろん、IaaSの方が冗長構成となっていたり、HW故障の対応もしてくれたりするので条件が全く異なるのですが、その辺は認識しています。 ### 自宅サーバの可用性 自宅サーバは安いと言いました。本当でしょうか。（2回目） 自宅サーバは使えば使うほど重要性が高まってきます。 そして気になってくるのが可用性です。 大事なデータが消えたらどうしようとか、このサービス止まると困るんだよねとか。 では、サーバを2台にすることを考えましょう。 これで費用2倍です。 1台の時は19ヶ月でしたので38ヶ月くらいですね。3年ちょっと。まだ自宅サーバ安いですね。 ちなみに今は冗長にせずに運用しているのでいつもドキドキしてますし、メンテで止めるときは、仕方ないと割り切ってやってます。 ### クラウドの勉強 クラウドの勉強はしなくて良いの？と心配してくれあなた。ありがとうございます！ でも大丈夫です。 基本的に無料の範囲くらいで色々と使って勉強しています。 ### ん？勉強費用にしては高くない？ IaaSよりは安いという主張はわかるけども、つまりは勉強のために毎月1万円くらい支出しているということ？ ・・・そういうことかもしれません。 ま、でも、勉強以外の各種サーバとしても機能しているし、ずっと続けてきているものという可愛さもあるし、勉強のためだけに支出しているのではないので良しとします。 ### 自宅PCの目的 自宅PCはWindowsで、スマホアプリの開発や動画編集がまれにあるくらいであとは大した事していません。 となると、自宅サーバをそこそこ性能良いものにして自宅PCも仮想化してしまうという手もあります。 ・・・なるほど。それで良さそうですね。 ### まとめ 自宅サーバが2台あれば可用性も安心でおすすめ。IaaS（AWS EC2 a1.xlarge）よりも安いのでおすすめ。 ただし、おすすめできるのはインフラの勉強したい方のみです。 2台分でも3年くらいでIaaSより割安になるはずなので、インフラのあれこれを楽しみたいなら問題ないと思います。 自宅PCの仮想化はまだ試してないのでこれから試してみます。&lt;/p&gt;</description></item><item><title>気になるニュース記事（2022年12月11日）</title><link>https://blog.sei-yo.jp/engineer/2022/12/posts/20221211/</link><pubDate>Sun, 11 Dec 2022 23:45:46 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2022/12/posts/20221211/</guid><description>&lt;p&gt;気になるニュース記事です。&lt;/p&gt;
&lt;h3 id="デルテクノロジーズit-as-a-serviceapexの最新状況を解説---クラウド-watch"&gt;デル・テクノロジーズ、IT-as-a-Service「APEX」の最新状況を解説 - クラウド Watch&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://cloud.watch.impress.co.jp/docs/news/1461550.html"&gt;デル・テクノロジーズ、IT-as-a-Service「APEX」の最新状況を解説 - クラウド Watch&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;オンプレからクラウドへ、クラウドからオンプレへ。&lt;br&gt;
そのどっちも対応できますよ！的な発表。&lt;/p&gt;
&lt;h3 id="エッジもマルチクラウド化が進むデルのグローバルctoが説くトレンド---zdnet-japan"&gt;エッジもマルチクラウド化が進む&amp;ndash;デルのグローバルCTOが説くトレンド - ZDNet Japan&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://japan.zdnet.com/article/35194686/"&gt;エッジもマルチクラウド化が進む&amp;ndash;デルのグローバルCTOが説くトレンド - ZDNet Japan&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="次にオープン化の波が向かうのはクラウドデルctoに次の戦略を聞く---zdnet-japan"&gt;次にオープン化の波が向かうのはクラウド&amp;ndash;デルCTOに次の戦略を聞く - ZDNet Japan&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://japan.zdnet.com/article/35194191/"&gt;次にオープン化の波が向かうのはクラウド&amp;ndash;デルCTOに次の戦略を聞く - ZDNet Japan&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="nvidiaがmicrosoftと協力して大規模なクラウドaiコンピューターを構築すると発表---gigazine"&gt;NVIDIAがMicrosoftと協力して大規模なクラウドAIコンピューターを構築すると発表 - GIGAZINE&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://gigazine.net/news/20221117-nvidia-microsoft-ai-cloud-computer/"&gt;NVIDIAがMicrosoftと協力して大規模なクラウドAIコンピューターを構築すると発表 - GIGAZINE&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;NVIDIAとMicrosoftは世界で最も強力なAIスーパーコンピューターの1つにすることを目指すしているそうです。&lt;/p&gt;
&lt;h3 id="ntt2023年3月にiownサービスを提供開始従来比200分の1以下の低遅延---ee-times-japan"&gt;NTT、2023年3月に「IOWN」サービスを提供開始：従来比200分の1以下の低遅延 - EE Times Japan&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://eetimes.itmedia.co.jp/ee/articles/2211/22/news103.html"&gt;NTT、2023年3月に「IOWN」サービスを提供開始：従来比200分の1以下の低遅延 - EE Times Japan&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;光でつなぐ！&lt;/p&gt;
&lt;h3 id="okta新id基盤customer-identity-cloudを発表idaasをさらに拡大---zdnet-japan"&gt;Okta、新ID基盤「Customer Identity Cloud」を発表&amp;ndash;IdaaSをさらに拡大 - ZDNet Japan&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://japan.zdnet.com/article/35195918/"&gt;Okta、新ID基盤「Customer Identity Cloud」を発表&amp;ndash;IdaaSをさらに拡大 - ZDNet Japan&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;記事と関係ないが、会員登録しようとしたけれど、登録できなかったので登録を諦めました。&lt;/p&gt;
&lt;h3 id="海賊版サイトにパブリックdnsリゾルバ1111から接続できなくするよう裁判所がcloudflareに命令---gigazine"&gt;海賊版サイトにパブリックDNSリゾルバ「1.1.1.1」から接続できなくするよう裁判所がCloudflareに命令 - GIGAZINE&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://gigazine.net/news/20221110-public-dns-1111-blocking-order/"&gt;海賊版サイトにパブリックDNSリゾルバ「1.1.1.1」から接続できなくするよう裁判所がCloudflareに命令 - GIGAZINE&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;日本でもこんな判決はあり得るのだろうか。これは通信の秘密なのだろうか。&lt;/p&gt;
&lt;h3 id="ヨドバシの中の人が初めて語るヨドバシcomを支える内製プライベートクラウドの中身--publickey"&gt;ヨドバシの中の人が初めて語る、ヨドバシ.comを支える内製プライベートクラウドの中身 － Publickey&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.publickey1.jp/blog/22/com.html?s=09"&gt;ヨドバシの中の人が初めて語る、ヨドバシ.comを支える内製プライベートクラウドの中身 － Publickey&lt;/a&gt;&lt;/p&gt;</description></item><item><title>気になるニュース記事（2022年10月12日）</title><link>https://blog.sei-yo.jp/engineer/2022/10/posts/20221012/</link><pubDate>Thu, 13 Oct 2022 00:50:59 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2022/10/posts/20221012/</guid><description>&lt;p&gt;気になるニュース記事です。&lt;/p&gt;
&lt;h3 id="量子コンピューティングで公開鍵暗号が破られる-cisaが警鐘を鳴らす"&gt;量子コンピューティングで「公開鍵暗号」が破られる？ CISAが警鐘を鳴らす&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://atmarkit.itmedia.co.jp/ait/articles/2208/30/news126.html"&gt;量子コンピューティングで「公開鍵暗号」が破られる？ CISAが警鐘を鳴らす&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="ネットの安全へ世界標準の新暗号-ibmなどの技術選定-日本経済新聞"&gt;ネットの安全へ世界標準の新暗号 IBMなどの技術選定： 日本経済新聞&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.nikkei.com/article/DGXZQOUC252OW0V20C22A2000000/"&gt;ネットの安全へ世界標準の新暗号 IBMなどの技術選定： 日本経済新聞&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="ソフトバンク量子コンピュータでも解けない暗号をvpnに適用へ-米ベンダーと共同で---itmedia-news"&gt;ソフトバンク、&amp;ldquo;量子コンピュータでも解けない暗号&amp;quot;をVPNに適用へ 米ベンダーと共同で - ITmedia NEWS&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.itmedia.co.jp/news/articles/2203/23/news114.html"&gt;ソフトバンク、&amp;ldquo;量子コンピュータでも解けない暗号&amp;quot;をVPNに適用へ 米ベンダーと共同で - ITmedia NEWS&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="ネットに接続していないpcをハッキング-超音波で機密データを盗む攻撃-イスラエルの研究者が発表"&gt;ネットに接続していないPCをハッキング 超音波で機密データを盗む攻撃 イスラエルの研究者が発表&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.itmedia.co.jp/news/articles/2209/01/news040.html"&gt;ネットに接続していないPCをハッキング 超音波で機密データを盗む攻撃 イスラエルの研究者が発表&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="スマホをうつ伏せに置くとハッキングされる-直接触らずタッチ操作を行う攻撃ghosttouch"&gt;スマホを&amp;quot;うつ伏せ&amp;quot;に置くとハッキングされる？ 直接触らずタッチ操作を行う攻撃「GhostTouch」&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.itmedia.co.jp/news/articles/2208/19/news033.html"&gt;スマホを&amp;quot;うつ伏せ&amp;quot;に置くとハッキングされる？ 直接触らずタッチ操作を行う攻撃「GhostTouch」&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="検出難しいファイルレスマルウェア企業にとって無視できない脅威---記事詳細"&gt;検出難しい「ファイルレスマルウェア」、企業にとって無視できない脅威 - 記事詳細&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://news.infoseek.co.jp/article/mynavi_2478390/"&gt;検出難しい「ファイルレスマルウェア」、企業にとって無視できない脅威 - 記事詳細&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="awsslackで相談できる有償サポートaws-support-app開始---itmedia-news"&gt;AWS、Slackで相談できる有償サポート「AWS Support App」開始 - ITmedia NEWS&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.itmedia.co.jp/news/articles/2208/29/news086.html"&gt;AWS、Slackで相談できる有償サポート「AWS Support App」開始 - ITmedia NEWS&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="s3互換のcloudflare-r2が正式サービスにデータ転送料無料10gbまで無料の分散型オブジェクトストレージ--publickey"&gt;S3互換の「Cloudflare R2」が正式サービスに。データ転送料無料、10GBまで無料の分散型オブジェクトストレージ － Publickey&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.publickey1.jp/blog/22/s3cloudflare_r210gb.html?s=09"&gt;S3互換の「Cloudflare R2」が正式サービスに。データ転送料無料、10GBまで無料の分散型オブジェクトストレージ － Publickey&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="awsazuregcp上のvmware-cloudが単一のサブスクリプションで利用可能にvmwareのマルチクラウド構想の一環---it"&gt;AWS、Azure、GCP上のVMware Cloudが、単一のサブスクリプションで利用可能に：VMwareのマルチクラウド構想の一環 - ＠IT&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://atmarkit.itmedia.co.jp/ait/articles/2208/31/news090.html"&gt;AWS、Azure、GCP上のVMware Cloudが、単一のサブスクリプションで利用可能に：VMwareのマルチクラウド構想の一環 - ＠IT&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="nvidia製dpu搭載のdellサーバ年末に発売-ai開発ゼロトラスト基盤などに対応---itmedia-news"&gt;NVIDIA製「DPU」搭載のDellサーバ、年末に発売 AI開発、ゼロトラスト基盤などに対応 - ITmedia NEWS&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.itmedia.co.jp/news/articles/2208/31/news125.html"&gt;NVIDIA製「DPU」搭載のDellサーバ、年末に発売 AI開発、ゼロトラスト基盤などに対応 - ITmedia NEWS&lt;/a&gt;&lt;/p&gt;</description></item><item><title>気になるニュース記事（2022年9月21日）</title><link>https://blog.sei-yo.jp/engineer/2022/09/posts/2022921/</link><pubDate>Wed, 21 Sep 2022 08:17:09 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2022/09/posts/2022921/</guid><description>&lt;p&gt;気になるニュース記事です。&lt;/p&gt;
&lt;h3 id="nttデータなど4社電子blとデジタル通貨を用いた新たな貿易決済の実現に向けた実証実験を実施"&gt;NTTデータなど4社、電子B/Lとデジタル通貨を用いた新たな貿易決済の実現に向けた実証実験を実施&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://cloud.watch.impress.co.jp/docs/news/1377456.html"&gt;NTTデータなど4社、電子B/Lとデジタル通貨を用いた新たな貿易決済の実現に向けた実証実験を実施&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="nttデータとaws2022年からdx事業の戦略的協業を開始"&gt;NTTデータとAWS、2022年からDX事業の戦略的協業を開始&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://japan.zdnet.com/article/35180969/"&gt;NTTデータとAWS、2022年からDX事業の戦略的協業を開始&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="クラウド業界特化型激戦-amazonは金融車向け"&gt;クラウド「業界特化型」激戦 Amazonは金融・車向け&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.nikkei.com/article/DGXZQOGN01EWN0R01C21A2000000/"&gt;クラウド「業界特化型」激戦 Amazonは金融・車向け&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="日本でもsaasが当たり前に日本オラクルのsaas責任者が語る顧客実態"&gt;日本でもSaaSが当たり前に&amp;ndash;日本オラクルのSaaS責任者が語る顧客実態&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://japan.zdnet.com/article/35185533/"&gt;日本でもSaaSが当たり前に&amp;ndash;日本オラクルのSaaS責任者が語る顧客実態&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="セールスフォースが開発者イベントmulesoftやslacktableauと統合強化"&gt;セールスフォースが開発者イベント、MuleSoftやSlack、Tableauと統合強化&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://japan.zdnet.com/article/35186925/"&gt;セールスフォースが開発者イベント、MuleSoftやSlack、Tableauと統合強化&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="awsとrkkcs政府基準の自治体基幹システムパッケージの展開などで協業"&gt;AWSとRKKCS、政府基準の自治体基幹システムパッケージの展開などで協業&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://japan.zdnet.com/article/35189919/"&gt;AWSとRKKCS、政府基準の自治体基幹システムパッケージの展開などで協業&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="awsとrkkcs政府基準の自治体基幹システムパッケージの展開などで協業-1"&gt;AWSとRKKCS、政府基準の自治体基幹システムパッケージの展開などで協業&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://techtarget.itmedia.co.jp/tt/news/2206/30/news07.html"&gt;AWSとRKKCS、政府基準の自治体基幹システムパッケージの展開などで協業&lt;/a&gt;&lt;/p&gt;</description></item><item><title>気になるニュース記事（2022年8月8日）</title><link>https://blog.sei-yo.jp/engineer/2022/08/posts/202288/</link><pubDate>Mon, 08 Aug 2022 12:24:10 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2022/08/posts/202288/</guid><description>&lt;p&gt;気になるニュース記事です。&lt;/p&gt;
&lt;h3 id="速報googleamazon-auroraに対抗する高性能dballoydb-for-postgresql発表通常のpostgresqlよりoltpが4倍高速olapが100倍高速と"&gt;［速報］Google、Amazon Auroraに対抗する高性能DB「AlloyDB for PostgreSQL」発表。通常のPostgreSQLよりOLTPが4倍高速、OLAPが100倍高速と&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.publickey1.jp/blog/22/googleamazon_auroradballoydb_for_postgresqlpostgresqloltp4olap100.html?s=09"&gt;［速報］Google、Amazon Auroraに対抗する高性能DB「AlloyDB for PostgreSQL」発表。通常のPostgreSQLよりOLTPが4倍高速、OLAPが100倍高速と&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;「Amazon Aurora」の対抗だそうです。&lt;/p&gt;
&lt;h3 id="red-hat-ansible-automation-platformのマネージドサービスmicrosoft-azure上で提供開始クラウドもオンプレミスも構成管理可能"&gt;Red Hat Ansible Automation Platformのマネージドサービス、Microsoft Azure上で提供開始。クラウドもオンプレミスも構成管理可能&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.publickey1.jp/blog/22/red_hat_ansible_automation_platformmicrosoft_azure.html"&gt;Red Hat Ansible Automation Platformのマネージドサービス、Microsoft Azure上で提供開始。クラウドもオンプレミスも構成管理可能&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ansibleのマネージドサービスです。&lt;/p&gt;
&lt;h3 id="日本オラクルがociの最新アップデートを解説配置の柔軟性セキュリティなど4つの観点から強化を進める"&gt;日本オラクルがOCIの最新アップデートを解説、「配置の柔軟性」「セキュリティ」など4つの観点から強化を進める&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://cloud.watch.impress.co.jp/docs/news/1412868.html"&gt;日本オラクルがOCIの最新アップデートを解説、「配置の柔軟性」「セキュリティ」など4つの観点から強化を進める&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;個人的にはOCIの最初のリリースはまだまだという感じであったが、AWS、Azure、GCPのようなクラウドサービスと同じように幅広いサービスを提供してきている印象。&lt;/p&gt;
&lt;h3 id="aws-iamがwebauthnに対応多要素認証の要素として利用可能に記事訂正"&gt;AWS IAMがWebAuthnに対応。多要素認証の要素として利用可能に（記事訂正）&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.publickey1.jp/blog/22/aws_iamwebauthnaws.html"&gt;AWS IAMがWebAuthnに対応。多要素認証の要素として利用可能に（記事訂正）&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Azure、GCPも同様の対応をした認識です。&lt;/p&gt;
&lt;h3 id="ibmのソフトウェアをaws上のsaasとして提供ibmとawsが提携"&gt;IBMのソフトウェアをAWS上のSaaSとして提供、IBMとAWSが提携&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://atmarkit.itmedia.co.jp/ait/articles/2205/12/news113.html"&gt;IBMのソフトウェアをAWS上のSaaSとして提供、IBMとAWSが提携&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;IBMのSaaSをAWS上で稼働させるということです。IBM Cloudを持っていてもAWS上でのビジネスも行うようです。&lt;/p&gt;
&lt;h3 id="ピュアストレージモジュラー構成をさらに進めたflashbladesなどを発表"&gt;ピュア・ストレージ、モジュラー構成をさらに進めた「FlashBlade//S」などを発表&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://japan.zdnet.com/article/35188731/"&gt;ピュア・ストレージ、モジュラー構成をさらに進めた「FlashBlade//S」などを発表&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;データマイグレーションしなくても最新のストレージを利用できるという響きは魅力的。&lt;/p&gt;
&lt;h3 id="oracle-cloudのリージョンを社内に持てるoci-dedicated-region最小12ラック年間1億3000万円からの対応をオラクルが発表"&gt;Oracle Cloudのリージョンを社内に持てる「OCI Dedicated Region」、最小12ラック、年間1億3000万円からの対応をオラクルが発表&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.publickey1.jp/blog/22/oracle_cloudoci_dedicated_region1213000.html"&gt;Oracle Cloudのリージョンを社内に持てる「OCI Dedicated Region」、最小12ラック、年間1億3000万円からの対応をオラクルが発表&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;オンプレで利用できるクラウドサービスというのは各社から出ていますね。&lt;/p&gt;
&lt;h3 id="idcフロンティアメガクラウドとの閉域ネットワーク接続サービスを提供"&gt;IDCフロンティア、メガクラウドとの閉域ネットワーク接続サービスを提供&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://cloud.watch.impress.co.jp/docs/news/1424865.html"&gt;IDCフロンティア、メガクラウドとの閉域ネットワーク接続サービスを提供&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;最近、この手のクラウド接続サービスが増えてきているように思います。 クラウド事業者側もそういう戦略なのでしょうか。&lt;/p&gt;
&lt;h3 id="awsクラウド上に企業のwanを構築できるaws-cloud-wanの一般提供を開始"&gt;AWS、クラウド上に企業のWANを構築できる「AWS Cloud WAN」の一般提供を開始&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://atmarkit.itmedia.co.jp/ait/articles/2207/14/news086.html"&gt;AWS、クラウド上に企業のWANを構築できる「AWS Cloud WAN」の一般提供を開始&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;AWSのバックボーンネットワークを、企業のWANの一部として利用できるらしい。&lt;/p&gt;
&lt;h3 id="tls-12-がすべての-aws-api-エンドポイントへの接続に必要な最小バージョンになります"&gt;TLS 1.2 がすべての AWS API エンドポイントへの接続に必要な最小バージョンになります&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://aws.amazon.com/jp/blogs/news/tls-1-2-required-for-aws-endpoints/?s=09"&gt;TLS 1.2 がすべての AWS API エンドポイントへの接続に必要な最小バージョンになります&lt;/a&gt;&lt;/p&gt;</description></item><item><title>気になるニュース記事（2022年7月11日）</title><link>https://blog.sei-yo.jp/engineer/2022/07/posts/2022711/</link><pubDate>Tue, 12 Jul 2022 03:22:28 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2022/07/posts/2022711/</guid><description>&lt;p&gt;気になるニュース記事です。&lt;/p&gt;
&lt;h3 id="デジタル田園都市国家インフラ整備計画の公表"&gt;「デジタル田園都市国家インフラ整備計画」の公表&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.soumu.go.jp/menu_news/s-news/01kiban01_02000042.html"&gt;「デジタル田園都市国家インフラ整備計画」の公表&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;以下について記載されています。 (1)光ファイバ (2)5G (3)データセンター/海底ケーブル等 (4)Beyond 5G（いわゆる6G）&lt;/p&gt;
&lt;h3 id="政府認定クラウドサービスにソフトバンクの国産クラウドなど追加-全7サービスがリスト入り"&gt;&amp;ldquo;政府認定クラウドサービス&amp;quot;にソフトバンクの国産クラウドなど追加 全7サービスがリスト入り&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.itmedia.co.jp/news/articles/2207/04/news099.html"&gt;&amp;ldquo;政府認定クラウドサービス&amp;quot;にソフトバンクの国産クラウドなど追加 全7サービスがリスト入り&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2022年6月29日に追加がありました。&lt;/p&gt;
&lt;h3 id="政府認定saasが誕生へ-政府のクラウドサービス認定制度に新しい枠組み-パブリックコメント募集中"&gt;&amp;ldquo;政府認定SaaS&amp;quot;が誕生へ 政府のクラウドサービス認定制度に新しい枠組み パブリックコメント募集中&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.itmedia.co.jp/news/articles/2206/15/news210.html"&gt;&amp;ldquo;政府認定SaaS&amp;quot;が誕生へ 政府のクラウドサービス認定制度に新しい枠組み パブリックコメント募集中&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;既に募集は締め切られましたが、新しい枠組みを策定しようとしています。&lt;/p&gt;
&lt;h3 id="米メガ勢が一段と有利にデジタル庁がクラウド利用方針をスマートさ重視で改定へ"&gt;米メガ勢が一段と有利に、デジタル庁がクラウド利用方針を「スマートさ」重視で改定へ&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://xtech.nikkei.com/atcl/nxt/column/18/00001/06957/"&gt;米メガ勢が一段と有利に、デジタル庁がクラウド利用方針を「スマートさ」重視で改定へ&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;スマートに使えることが評価の点になるようです。&lt;/p&gt;
&lt;h3 id="機密情報載せる政府クラウドの利用方針が判明カギは国産ベンダーの育成"&gt;機密情報載せる政府クラウドの利用方針が判明、カギは国産ベンダーの「育成」&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://xtech.nikkei.com/atcl/nxt/column/18/00001/06938/"&gt;機密情報載せる政府クラウドの利用方針が判明、カギは国産ベンダーの「育成」&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;機密性の高いものというのは扱いを適切にしようというのと、国産ベンダーの育成も視野に入れたいということのようです。&lt;br&gt;
以下を受けてということかもしれません。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://xtech.nikkei.com/atcl/nxt/column/18/00001/06849/"&gt;機密情報は国産で管理を、自民党がデジタル庁に迫る「セキュリティクラウド」の正体&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="政府クラウドで脱外資依存-経済安保と産業育成両立"&gt;政府、クラウドで脱・外資依存 経済安保と産業育成両立&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.nikkei.com/article/DGXZQOUC16AUB0W2A610C2000000/"&gt;政府、クラウドで脱・外資依存 経済安保と産業育成両立&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;最近、安全保障というキーワードがかなり脚光を浴びるようになりました。&lt;/p&gt;
&lt;h3 id="防衛産業サイバーセキュリティ基準の整備について"&gt;防衛産業サイバーセキュリティ基準の整備について&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.mod.go.jp/atla/cybersecurity.html"&gt;防衛産業サイバーセキュリティ基準の整備について&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2023年度から適用開始だそうです。&lt;/p&gt;
&lt;h3 id="独自医療界がサイバー攻撃対策で新組織-厚労省と協力年内にも"&gt;〈独自〉医療界がサイバー攻撃対策で新組織 厚労省と協力、年内にも&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.sankei.com/article/20220626-T7QQAODO7JPJNPZJBU4OHMG2UI/"&gt;〈独自〉医療界がサイバー攻撃対策で新組織 厚労省と協力、年内にも&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;医療ISACとは別に新組織を作るようです。&lt;/p&gt;
&lt;h3 id="円安でも安くawsを使う方法-saasスタートアップが弾き出した意外な試算"&gt;円安でも安くAWSを使う方法 SaaSスタートアップが弾き出した意外な試算&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.itmedia.co.jp/news/articles/2207/04/news030.html"&gt;円安でも安くAWSを使う方法 SaaSスタートアップが弾き出した意外な試算&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;予約による割引の仕組みなどがありますが、それよりも円安の方が影響大きいので、予約せずに円高になることを期待した方が全体としては安上がりになる可能性もあるので、そういうことを考えましょうという内容です。&lt;/p&gt;
&lt;h3 id="オンプレミスにamazon-eksと同等の環境を構築するamazon-eks-anywhereがベアメタルサーバに対応vmware環境が不要に"&gt;オンプレミスにAmazon EKSと同等の環境を構築する「Amazon EKS Anywhere」がベアメタルサーバに対応。VMware環境が不要に&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.publickey1.jp/blog/22/amazon_eksamazon_eks_anywherevmware.html"&gt;オンプレミスにAmazon EKSと同等の環境を構築する「Amazon EKS Anywhere」がベアメタルサーバに対応。VMware環境が不要に&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;AWS Outposts より気軽に使えそうな雰囲気がします。 ただ、開発やテスト用にと記事にあるので、本番向けには要注意かもしれません。&lt;/p&gt;
&lt;h3 id="レノボエッジ専用端末thinkedge-se70を発表高まるエッジai需要で製品拡充"&gt;レノボ、エッジ専用端末「ThinkEdge SE70」を発表&amp;ndash;高まるエッジAI需要で製品拡充&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://japan.zdnet.com/article/35189593/"&gt;レノボ、エッジ専用端末「ThinkEdge SE70」を発表&amp;ndash;高まるエッジAI需要で製品拡充&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;専用端末が盛り上がってきているような気がしています。 「稼働温度は－20～60度、24時間の連続稼働、IP51相当の防塵・防滴機能を備え」となっていて、稼働温度、IP51というのが個人的には驚きです。&lt;/p&gt;
&lt;h3 id="vmwareがvsphereを発表サブスクリプション制アドオンサービスによる機能追加など"&gt;VMwareが「vSphere+」を発表。サブスクリプション制、アドオンサービスによる機能追加など&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.publickey1.jp/blog/22/vmwarevsphere_652022101512.html"&gt;VMwareが「vSphere+」を発表。サブスクリプション制、アドオンサービスによる機能追加など&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;7月29日までに提供予定だそうです。 時代はサブスク。&lt;/p&gt;
&lt;h3 id="6月webサーバシェアcloudflareとlitespeedが増加"&gt;6月Webサーバシェア、CloudflareとLiteSpeedが増加&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://news.infoseek.co.jp/article/mynavi_2440032"&gt;6月Webサーバシェア、CloudflareとLiteSpeedが増加&lt;/a&gt;&lt;/p&gt;</description></item><item><title>W/DynamiteModule: Local module descriptor class for com.google.android.gms.googlecertificates not found.</title><link>https://blog.sei-yo.jp/engineer/2022/06/posts/wdynamitemodule_local_module_descriptor_class_for_comgoogleandroidgmsgooglecertificates_not_found/</link><pubDate>Sun, 12 Jun 2022 18:18:48 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2022/06/posts/wdynamitemodule_local_module_descriptor_class_for_comgoogleandroidgmsgooglecertificates_not_found/</guid><description>&lt;p&gt;Google Map SDKを使ったAndroidアプリを作っていて、以下の警告が出た場合の対処について紹介します。&lt;br&gt;
このエラーが出る場合は地図のコントロールの表示はあっても地図そのものが表示されない状態になりました。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;W/DynamiteModule: Local module descriptor class for com.google.android.gms.googlecertificates not found.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href="https://stackoverflow.com/questions/40561373/android-error-w-dynamitemodule-local-module-descriptor-class-for-com-google-an"&gt;stackoverflowの記事&lt;/a&gt;ではエミュレータを再作成する案が載っていましたが、エミュレータをCold Bootしたところ直りました。&lt;br&gt;
結局原因がなんなのかわかりませんが、とりあえずCold Bootしてみるのは一つの手かもしれません。&lt;/p&gt;</description></item><item><title>気になるニュース記事（2022年6月9日）</title><link>https://blog.sei-yo.jp/engineer/2022/06/posts/202269/</link><pubDate>Thu, 09 Jun 2022 16:23:15 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2022/06/posts/202269/</guid><description>&lt;p&gt;気になるニュース記事です。&lt;/p&gt;
&lt;h3 id="電算システムデータセンターとクラウドサービスの閉域網接続サービスを提供"&gt;電算システム、データセンターとクラウドサービスの閉域網接続サービスを提供&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://cloud.watch.impress.co.jp/docs/news/1414854.html"&gt;電算システム、データセンターとクラウドサービスの閉域網接続サービスを提供&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Google Cloud等のパブリッククラウドサービスとの接続サービスです。 最近色々発表されてます。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://cloud.watch.impress.co.jp/docs/news/1414032.html"&gt;SCSK、データセンターとGoogle Cloudの接続サービス「USiZE プレミアコネクトサービス for Google Cloud」を提供&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://cloud.watch.impress.co.jp/docs/news/1413103.html"&gt;BBIX、データセンター間接続やクラウド接続をオンデマンドで提供する「Open Connectivity eXchange」を開始&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="量子超越性を持つ光量子コンピュータawsで利用可能に-スパコン富岳で9000年かかる計算を36マイクロ秒で"&gt;「量子超越性」を持つ光量子コンピュータ、AWSで利用可能に スパコン富岳で9000年かかる計算を36マイクロ秒で&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.itmedia.co.jp/news/articles/2206/03/news172.html"&gt;「量子超越性」を持つ光量子コンピュータ、AWSで利用可能に スパコン富岳で9000年かかる計算を36マイクロ秒で&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;量子コンピュータがAWS上で気軽に（？）使えるようになったようです。&lt;br&gt;
暗号解読などに使われる懸念がありますが、実用的になるのが思っているより早いかもしれません。&lt;/p&gt;
&lt;h3 id="announcing-azure-stack-hci-support-for-single-node-clusters"&gt;Announcing Azure Stack HCI support for single-node clusters&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://techcommunity.microsoft.com/t5/azure-stack-blog/announcing-azure-stack-hci-support-for-single-node-clusters/ba-p/3408431"&gt;Announcing Azure Stack HCI support for single-node clusters&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Azure Stack HCIがシングルノードでも利用可能になったようです。&lt;br&gt;
シングルから始めて拡張することもできるようです。&lt;/p&gt;
&lt;p&gt;Azure Arcというハブになるサービスがあるので、Azureの管理対象範囲は今後ますます広がっていくのでしょう。&lt;/p&gt;
&lt;h3 id="ossを安全に-openssfらがセキュリティ改善に動員計画"&gt;「OSSを安全に」 OpenSSFらがセキュリティ改善に動員計画&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://cloud.watch.impress.co.jp/docs/column/infostand/1411106.html"&gt;「OSSを安全に」 OpenSSFらがセキュリティ改善に動員計画&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.sei-yo.jp/blog/engineer/2022/02/2022215.html"&gt;以前の記事&lt;/a&gt;でも紹介したアルファ、オメガプロジェクトというのが始まりましたがそれの一環でしょうか。&lt;br&gt;
関係性を確認できていませんが、OSSのセキュリティ向上に向けた取り組みが最近盛り上がってきています。&lt;/p&gt;
&lt;h3 id="マイクロソフト欧州で懸念されていたクラウドライセンシングのルールを緩和へ"&gt;マイクロソフト、欧州で懸念されていたクラウドライセンシングのルールを緩和へ&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://japan.zdnet.com/article/35187712/"&gt;マイクロソフト、欧州で懸念されていたクラウドライセンシングのルールを緩和へ&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Azure上ではWindowsが安い、というのを解消するのでしょうか。&lt;/p&gt;
&lt;h3 id="マイクロソフトテクノロジーと人の専門性を組み合わせた新セキュリティサービスsecurity-experts"&gt;マイクロソフト、テクノロジーと人の専門性を組み合わせた新セキュリティサービス「Security Experts」&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://japan.zdnet.com/article/35187242/"&gt;マイクロソフト、テクノロジーと人の専門性を組み合わせた新セキュリティサービス「Security Experts」&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;専門家を売るような雰囲気のネーミングと記事の見出しですが、中身を見るとSOCサービスを提供するようにも見えます。&lt;br&gt;
ソフトウェアとソフトウェアサービスを売る会社のイメージでしたが、幅を広げてきた印象があります。&lt;/p&gt;
&lt;h3 id="awsジャパンデジタル人材育成で企業を個別に支援するaws-skills-guildを国内発表"&gt;AWSジャパン、デジタル人材育成で企業を個別に支援する「AWS Skills Guild」を国内発表&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://atmarkit.itmedia.co.jp/ait/articles/2204/12/news078.html"&gt;AWSジャパン、デジタル人材育成で企業を個別に支援する「AWS Skills Guild」を国内発表&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;AWSが直接顧客企業の教育を行うことになるので、AWSによる囲い込みができそうです。&lt;br&gt;
内製方針の企業はクラウドベンダーと直接やりとりすることになるので、SIベンダーの出る幕がなくなりそうです。&lt;br&gt;
今後内製方針の企業は増えてくるのでしょう。&lt;/p&gt;
&lt;h3 id="applegooglemicrosoftがパスワードなしサインイン標準サポート拡大"&gt;Apple、Google、Microsoftがパスワードなしサインイン標準サポート拡大&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.itmedia.co.jp/news/articles/2205/06/news042.html"&gt;Apple、Google、Microsoftがパスワードなしサインイン標準サポート拡大&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;FIDOの利用が拡大するそうです。どんどん広まってほしいです。&lt;/p&gt;</description></item><item><title>Android Developersサイトの歩き方 2022</title><link>https://blog.sei-yo.jp/engineer/2022/05/posts/android_developers_2022/</link><pubDate>Sun, 29 May 2022 16:07:55 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2022/05/posts/android_developers_2022/</guid><description>&lt;p&gt;Androidアプリを作成するのに公式ドキュメントを参照しますが、どこにどんなことが書いてあるのかや、初心者が知っておくと良いかもしれないことについて書きます。&lt;br&gt;
場合により記事公開後にも修正や加筆するかもしれません。&lt;/p&gt;
&lt;h3 id="公式サイト"&gt;公式サイト&lt;/h3&gt;
&lt;p&gt;公式サイトは以下です。 基本的にすべてのリンクは日本語（向け）ページになっています。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://developer.android.com/?hl=ja"&gt;Android デベロッパー&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;画面上部（PCの場合）にプラットフォーム、Android Studio、Google Play、Jetpack、Kotlin、ドキュメント、ニュースとあります。&lt;br&gt;
よく見ることになるのはドキュメントだと思います。&lt;/p&gt;
&lt;h3 id="ドキュメント"&gt;ドキュメント&lt;/h3&gt;
&lt;p&gt;では、さっそく見ていきましょう。&lt;br&gt;
勉強の中心になるのは「ドキュメント」の中でも、「ガイド」というところです。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://developer.android.com/guide?hl=ja"&gt;ガイド&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ここには「アプリの基本」から始まり、多様な内容について説明があります。&lt;br&gt;
初心者が見て理解できるかはさておき、理解しておくべき概念から実際のコードまで一通り記載されていると思います。&lt;/p&gt;
&lt;p&gt;「アプリの基本」と「主要トピック」を見るとなんとなくアプリの全体像がわかってくるんじゃないかと思います。&lt;/p&gt;
&lt;p&gt;ちなみにアプリを公開しようという段階になるとここの説明だけだと足りずほかのところも見ることになると思います。&lt;br&gt;
また、ここにないライブラリを使おうと思ったりすると別のところを見る必要が出てきます。&lt;br&gt;
GoogleのライブラリのGoogle Map SDKとかFirebaseとか。ほかにも色々。&lt;/p&gt;
&lt;h3 id="アプリの基本"&gt;アプリの基本&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://developer.android.com/guide?hl=ja"&gt;アプリの基本&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hello World的な感じでなんとなくの全体像をつかめれば良いと思います。 色々わかってくると後で戻って読むことになるとも思いますが、まずはなんとなくわかれば十分かと思います。&lt;/p&gt;
&lt;h3 id="主要トピック"&gt;主要トピック&lt;/h3&gt;
&lt;p&gt;主要トピックは、&lt;a href="https://developer.android.com/guide/components/activities/intro-activities?hl=ja"&gt;アクティビティの概要&lt;/a&gt;から始まります。&lt;br&gt;
ここは重要な概念の説明が多く説明されているので理解すべきですが、最初は理解できないと思います。 なんとなくの用語がわかるようになればまずは良いような気がします。&lt;/p&gt;
&lt;h4 id="フラグメント"&gt;フラグメント&lt;/h4&gt;
&lt;p&gt;とても重要な用語、概念のフラグメントは、「アクティビティの概要」の中の一節となっているのでフラグメントを探すときはアクティビティのところを探しましょう。&lt;br&gt;
ちなみになぜか日本語化されていないドキュメントが多いです。重要なのに。&lt;/p&gt;
&lt;h3 id="android-アーキテクチャ-コンポーネント"&gt;Android アーキテクチャ コンポーネント&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://developer.android.com/topic/libraries/architecture?hl=ja"&gt;Android アーキテクチャ コンポーネント&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;これはJetpackの一部ということになっています。&lt;br&gt;
Android デベロッパーのトップレベルに「Jetpack」というのがありましたが、それです。&lt;br&gt;
比較的新しいライブラリ群のことです。基本的にこれを使いましょう。&lt;/p&gt;
&lt;p&gt;以下の項目はここにありますが、これらがアーキテクチャ コンポーネントだと知らないとわからないので難しいです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DataStore&lt;/li&gt;
&lt;li&gt;ビューバインディング&lt;/li&gt;
&lt;li&gt;データバインディング&lt;/li&gt;
&lt;li&gt;ライフサイクル（Lifecycleライブラリ、クラス）&lt;/li&gt;
&lt;li&gt;LiveData&lt;/li&gt;
&lt;li&gt;ViewModel&lt;/li&gt;
&lt;li&gt;Work Manager&lt;/li&gt;
&lt;li&gt;ページングライブラリ など&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="navigation-コンポーネント"&gt;Navigation コンポーネント&lt;/h3&gt;
&lt;p&gt;これも比較的新しいライブラリです。&lt;br&gt;
フラグメントのところで&lt;a href="https://developer.android.com/guide/fragments/fragmentmanager?hl=ja"&gt;Fragment Managerの使い方が紹介&lt;/a&gt;されていますが、これをラップしてくれるライブラリなのでこちらを使いましょう。&lt;br&gt;
フラグメントのところのFragment Managerの使い方はどんなことができるのかの概念として知っておくと良いと思いますが、こちらを使う場合は直接使うことはないか少ないでしょう。&lt;/p&gt;
&lt;h3 id="インテント"&gt;インテント&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://developer.android.com/guide/components/intents-filters?hl=ja"&gt;インテントとインテントフィルタ&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ここにインテントについて説明がありますが、アクティビティの中の以下でも言及があります。両方見ましょう。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://developer.android.com/guide/components/activities/parcelables-and-bundles?hl=ja"&gt;Parcelable と Bundle&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Local module descriptor class for com.google.android.gms.googlecertificates not found.</title><link>https://blog.sei-yo.jp/engineer/2022/05/posts/local_module_descriptor_class_for_comgoogleandroidgmsgooglecertificates_not_found/</link><pubDate>Fri, 20 May 2022 00:08:48 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2022/05/posts/local_module_descriptor_class_for_comgoogleandroidgmsgooglecertificates_not_found/</guid><description>&lt;p&gt;Google Map APIを使ってAndroidで地図を表示しようとしたあたりのタイミングで以下のメッセージが出たが、動作に問題はなさそう。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;W/DynamiteModule: Local module descriptor class for com.google.android.gms.googlecertificates not found.
I/DynamiteModule: Considering local module com.google.android.gms.googlecertificates:0 and remote module com.google.android.gms.googlecertificates:6
I/DynamiteModule: Selected remote version of com.google.android.gms.googlecertificates, version &amp;gt;= 6
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>気になるニュース記事（2022年5月18日）</title><link>https://blog.sei-yo.jp/engineer/2022/05/posts/2022518/</link><pubDate>Wed, 18 May 2022 12:14:24 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2022/05/posts/2022518/</guid><description>&lt;p&gt;気になるニュース記事です。&lt;/p&gt;
&lt;h3 id="速報-サーバーレス実行環境である-cloudflare-workers-のオープンソース化が発表されました"&gt;[速報] サーバーレス実行環境である Cloudflare Workers のオープンソース化が発表されました！&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://dev.classmethod.jp/articles/cloudflare-workers-a-serverless-runtime-environment-is-now-open-source/"&gt;[速報] サーバーレス実行環境である Cloudflare Workers のオープンソース化が発表されました！&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Javascriptの実行環境（Runtime）がオープンソース化されるそうです。&lt;/p&gt;
&lt;p&gt;Cloudflareは「The Forrester New Wave for Edge Development Platforms, Q4 2021」でリーダーに選ばれています。&lt;/p&gt;
&lt;h3 id="cloudflareamazon-s3互換のオブジェクトストレージcloudflare-r2のオープンベータを開始10gb以下ならずっと無料"&gt;Cloudflare、Amazon S3互換のオブジェクトストレージ「Cloudflare R2」のオープンベータを開始。10GB以下ならずっと無料&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.publickey1.jp/blog/22/cloudflareamazon_s3cloudflare_r210gb.html"&gt;Cloudflare、Amazon S3互換のオブジェクトストレージ「Cloudflare R2」のオープンベータを開始。10GB以下ならずっと無料&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Edge領域で強みを持つCloudflareからS3互換のオブジェクトストレージが発表されました。&lt;/p&gt;
&lt;h3 id="cloudflarecdnエッジで稼働するsqliteベースのrdbcloudflare-d1発表ユーザーの近接cdnエッジに自動でレプリカを分散配置高速アクセスを実現"&gt;Cloudflare、CDNエッジで稼働するSQLiteベースのRDB「Cloudflare D1」発表。ユーザーの近接CDNエッジに自動でレプリカを分散配置、高速アクセスを実現&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.publickey1.jp/blog/22/cloudflarecdnsqliterdbcloudflare_d1cdn.html"&gt;Cloudflare、CDNエッジで稼働するSQLiteベースのRDB「Cloudflare D1」発表。ユーザーの近接CDNエッジに自動でレプリカを分散配置、高速アクセスを実現&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;さらにSQLiteのRDBサービスを発表。&lt;br&gt;
最近話題のLitestream使って冗長にしたり分散したりする使い方にも適していると思います。&lt;/p&gt;
&lt;p&gt;以下でその旨説明している方がいます。&lt;br&gt;
&lt;a href="https://zenn.dev/mizchi/articles/cloudflare-d1"&gt;Cloudflare D1 がヤバい&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="クラウドフレア日本でのビジネスを本格化新社長佐藤氏が事業戦略など明らかに"&gt;クラウドフレア、日本でのビジネスを本格化&amp;ndash;新社長・佐藤氏が事業戦略など明らかに&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://japan.zdnet.com/article/35184939/?s=09"&gt;クラウドフレア、日本でのビジネスを本格化&amp;ndash;新社長・佐藤氏が事業戦略など明らかに&lt;/a&gt; そんな中、日本でのパートナー協業を推進していくそう。その一環としてクラスメソッドとの協業強化を発表。&lt;/p&gt;
&lt;h3 id="microsoft-365全製品のデータバックアップサービス月額700円から"&gt;Microsoft 365全製品のデータバックアップサービス‐月額700円から&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://news.mynavi.jp/techplus/article/20220510-2342277/"&gt;Microsoft 365全製品のデータバックアップサービス‐月額700円から&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Microsoft 365のバックアップサービスが定額で提供されるとのこと。&lt;br&gt;
Dropboxのサービスを意識したタイミング、金額のように思います。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://ascii.jp/elem/000/004/089/4089350/"&gt;Dropbox、容量無制限の安価なクラウドバックアップ新プラン&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="地方ならではのクラウドvdiの落とし穴"&gt;地方ならではのクラウドVDIの落とし穴&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://eng-blog.iij.ad.jp/archives/13332"&gt;地方ならではのクラウドVDIの落とし穴&lt;/a&gt; なかなか興味深い話でした。オンラインゲームのロールバック方式にも通じる話と感じました。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://flash-m.jp/gaming-environment/roleback/"&gt;格闘ゲームのネット対戦を快適にするロールバック方式とは？&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="リコーとサイボウズが協業リコーブランド版kintoneを国内海外で展開へ"&gt;リコーとサイボウズが協業、「リコーブランド版kintone」を国内・海外で展開へ&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://cloud.watch.impress.co.jp/docs/news/1406141.html"&gt;リコーとサイボウズが協業、「リコーブランド版kintone」を国内・海外で展開へ&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;なかなか面白い組み合わせと感じた。&lt;/p&gt;
&lt;h3 id="グーグルcloud-tpu-vmを一般提供"&gt;グーグル、「Cloud TPU VM」を一般提供&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://japan.zdnet.com/article/35187401/"&gt;グーグル、「Cloud TPU VM」を一般提供&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;機械学習に特価したVMを提供とのことで、今後、こうした特化型のサービスも充実していくのだろうと思う。&lt;/p&gt;
&lt;h3 id="intel小型コンピュータnucをエッジサーバーとして販売へ"&gt;Intel、小型コンピュータ「NUC」をエッジサーバーとして販売へ&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://pc.watch.impress.co.jp/docs/news/1408770.html"&gt;Intel、小型コンピュータ「NUC」をエッジサーバーとして販売へ&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Intelが参入とみるべきか。AWS、Azure、GCPもエッジサーバーを提供していますが、半導体メーカーとしての強みが活きるか。。&lt;/p&gt;
&lt;h3 id="cohesityが2022年gartnerr-peer-insightstmの分散ファイルシステムとオブジェクトストレージ部門のcustomers-choiceに選出"&gt;Cohesityが2022年Gartner(R) Peer Insights(TM)の分散ファイルシステムとオブジェクトストレージ部門のCustomers&amp;rsquo; Choiceに選出&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://wmr.tokyo/startup/2022/143251/"&gt;Cohesityが2022年Gartner(R) Peer Insights(TM)の分散ファイルシステムとオブジェクトストレージ部門のCustomers&amp;rsquo; Choiceに選出&lt;/a&gt; 2年連続だそうです。&lt;/p&gt;</description></item><item><title>CISSPになるメリットとデメリット</title><link>https://blog.sei-yo.jp/engineer/2022/05/posts/cissp/</link><pubDate>Thu, 05 May 2022 00:03:49 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2022/05/posts/cissp/</guid><description>&lt;p&gt;CISSPでない方が、CISSPになった場合のメリットとデメリットについて書きます。&lt;/p&gt;
&lt;h3 id="cisspとは"&gt;CISSPとは&lt;/h3&gt;
&lt;p&gt;(ISC)²の日本語版サイトによると以下の通りです。&lt;br&gt;
&lt;a href="https://japan.isc2.org/cissp_about.html"&gt;https://japan.isc2.org/cissp_about.html&lt;/a&gt;に説明があります。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;CISSP(Certified Information Systems Security Professional)とは、(ISC)² （International Information Systems Security Certification Consortium）が認定を行っている国際的に認められた情報セキュリティ・プロフェッショナル認定資格です。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;なお、 (ISC)² は、安全で安心なサイバー世界の実現に向けて活動する国際的な非営利会員団体です。 &lt;a href="https://japan.isc2.org/"&gt;https://japan.isc2.org/&lt;/a&gt;に記載があります。&lt;/p&gt;
&lt;p&gt;試験に合格するだけでは会員として認められず、以下が追加が必要ですが、詳しくは上記サイト等を確認してください。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;会員からの推薦&lt;/li&gt;
&lt;li&gt;5年以上のセキュリティ分野の実務経験&lt;/li&gt;
&lt;li&gt;年会費&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;なお、実務経験のみが不足する場合、アソシエイトとして登録することができ、実務経験を積んで正会員になることができます。&lt;/p&gt;
&lt;h3 id="メリット"&gt;メリット&lt;/h3&gt;
&lt;p&gt;CISSPは国際的な資格ですので、世界中で知名度があり、信頼も得られます。&lt;br&gt;
発言の説得力が増したり、相手の信頼を得やすくなる可能性があります。&lt;br&gt;
日本にはまだ数千人しかいませんので国内での希少価値もあると思います。（2022年1月1日現在で3339人）&lt;/p&gt;
&lt;p&gt;資格維持のためには3年間のうちに120時間相当（120CPE）の学習が必要ですので、継続的な学習が半強制的に行われます。&lt;br&gt;
1CPEが1時間の学習に相当します。ウェビナーの受講で自動的にカウントされるものがありますが、読書等でも自己申告でCPEを獲得できます。&lt;br&gt;
申告内容は監査対象となるので追加の証拠を求められることもありますが、幅広い活動がCPEの対象になります。&lt;/p&gt;
&lt;p&gt;会員向けのPDIコース（オンライン学習コンテンツ）が無償で提供されていたり、セキュリティ系のイベントの割引を受けられたりと学習の機会やその案内を受けられます。&lt;/p&gt;
&lt;p&gt;日本チャプターという支部があり、日本向けの情報提供や国内での有志による活動等も行われています。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.jasa.jp/qualification/acquisition/info_secure_supporter/"&gt;情報セキュリティ監査人補の資格取得の特例&lt;/a&gt;を受けて、簡単に資格取得することができます。 受講期間が通常5日間のところ、1日だけで済みます。&lt;/p&gt;
&lt;p&gt;情報セキュリティの専門家として自信がつきます。国際的な資格で権威ある資格と言って良いと思います。 また、発言に責任を持つような意識が芽生えるので、成長にもつながると思います。&lt;/p&gt;
&lt;p&gt;CISSPが担当することを求める案件に対応することができます。 入札条件等として制限がある場合があるかもしれません。&lt;/p&gt;
&lt;h3 id="デメリット"&gt;デメリット&lt;/h3&gt;
&lt;p&gt;資格の登録、維持に費用と時間が掛かります。&lt;br&gt;
資格維持のためには120CPEの獲得が必要で、3年で120時間相当です。 年会費は125 USDです。今後変わるかもしれません。&lt;/p&gt;</description></item><item><title>情報処理安全確保支援士になるメリットとデメリット</title><link>https://blog.sei-yo.jp/engineer/2022/05/posts/riss/</link><pubDate>Mon, 02 May 2022 02:37:49 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2022/05/posts/riss/</guid><description>&lt;p&gt;情報処理安全確保支援士でない方が、情報処理安全確保支援士になった場合のメリットとデメリットについて書きます。&lt;/p&gt;
&lt;h3 id="情報処理安全確保支援士とは"&gt;情報処理安全確保支援士とは&lt;/h3&gt;
&lt;p&gt;IPA（情報処理推進機構）が実施する「情報処理安全確保支援士試験」に合格した後で、情報処理安全確保支援士として登録を受けるための申請をして受理された方を指す名称（国家資格）です。 IPAの情報処理技術者試験と位置づけが異なるため、別の名前で試験を実施していますが受検方法等は同じです。国家資格としての取得のためには登録手続きが追加で必要です。&lt;/p&gt;
&lt;p&gt;以下に説明があります。&lt;br&gt;
&lt;a href="https://www.ipa.go.jp/siensi/"&gt;国家資格「情報処理安全確保支援士（登録セキスペ）」とは&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;法律は以下で読めます。&lt;br&gt;
&lt;a href="https://elaws.e-gov.go.jp/document?lawid=345AC0000000090"&gt;情報処理の促進に関する法律&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="メリット"&gt;メリット&lt;/h3&gt;
&lt;p&gt;情報処理安全確保支援士は国家資格ですので、日本国内においてはある程度の知名度があり、信頼も得られます。&lt;br&gt;
発言の説得力が増したり、相手の信頼を得やすくなる可能性があります。&lt;/p&gt;
&lt;p&gt;3年間のうちに1回受講する必要のある研修（実践講習または特定講習）において、情報処理安全確保支援士同士の交流の機会があります。&lt;br&gt;
集合型の研修（オンライン含む）であり、他の受講者と交流できる場合があります。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.jasa.jp/qualification/acquisition/info_secure_supporter/"&gt;情報セキュリティ監査人補の資格取得の特例&lt;/a&gt;を受けて、簡単に資格取得することができます。&lt;br&gt;
受講期間が通常5日間のところ、1日だけで済みます。&lt;/p&gt;
&lt;p&gt;情報セキュリティの専門家として自信がつきます。国家資格でもあり、日本国内では認知度がある程度高いと思います。&lt;br&gt;
また、発言に責任を持つような意識が芽生えるので、成長にもつながると思います。&lt;/p&gt;
&lt;p&gt;情報処理安全確保支援士が担当することを求める案件に対応することができます。&lt;br&gt;
入札条件等として制限がある場合があります。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.jp-rissa.or.jp/"&gt;情報処理安全確保支援士会&lt;/a&gt;に入会することができます。&lt;/p&gt;
&lt;h3 id="デメリット"&gt;デメリット&lt;/h3&gt;
&lt;p&gt;資格の登録、維持に費用と時間が掛かります。&lt;br&gt;
資格維持のためには毎年受講が必要な共通研修と、3年に1回の受講が必要な実践講習または特定講習があり、どちらも有償です。&lt;br&gt;
IPAが実施する研修を受講する場合、共通研修が20000円/1回、実践講習が80000円/1回のため（2021年時点）、3年で140000円必要です。 また、初回登録時にも費用が掛かります。これらの費用を所属組織が負担してくれる場合もあるかもしれません。&lt;/p&gt;
&lt;p&gt;研修については以下に説明があります。&lt;br&gt;
&lt;a href="https://www.ipa.go.jp/siensi/lecture/index.html"&gt;情報処理安全確保支援士（登録セキスペ）の受講する講習について&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;費用負担が結構大きいので、個人で負担する場合には資格取得を躊躇する理由になるかもしれません。&lt;/p&gt;
&lt;p&gt;国際的な知名度が低いです。&lt;br&gt;
国際的な知名度が必要な場合はCISSP等、他の資格取得を目指した方が良いと思います。&lt;/p&gt;</description></item><item><title>資格の使い方</title><link>https://blog.sei-yo.jp/engineer/2022/05/posts/usage_of_certification/</link><pubDate>Mon, 02 May 2022 01:35:35 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2022/05/posts/usage_of_certification/</guid><description>&lt;p&gt;資格を持っていても何にも使わなければ、あまり意味がありません。&lt;br&gt;
できることなら、取得した資格を何かに活かせると良いですよね。&lt;br&gt;
もちろん、資格取得のために勉強したことはその後の人生の役にも立つと思いますが、ここで言いたいのは資格を役立たせるということです。&lt;/p&gt;
&lt;h3 id="資格の分類"&gt;資格の分類&lt;/h3&gt;
&lt;p&gt;資格にも色々なものがあります。まずは分類について見てみます。&lt;/p&gt;
&lt;p&gt;日本では国家資格と民間資格に大きく分けられます。&lt;br&gt;
国家資格は、&lt;a href="https://www.mext.go.jp/b_menu/shingi/chousa/shougai/014/shiryo/07012608/003.htm"&gt;文部科学省の資料&lt;/a&gt;では以下の4つに分類されています。&lt;/p&gt;
&lt;ol&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;/ol&gt;
&lt;p&gt;国家資格の場合は法律で規制が設けられているために、上記のように分類ができます。&lt;br&gt;
資格がないと特定の業務ができないとか、名称が利用できないというような制約があります。&lt;/p&gt;
&lt;p&gt;民間資格は国家資格に該当しない資格です。民間企業が認定する資格等です。&lt;/p&gt;
&lt;h3 id="資格の用途1"&gt;資格の用途1&lt;/h3&gt;
&lt;p&gt;資格の分類として挙げた最初の3つは、資格を法律で定義された特定の業務遂行のために使用します。これが1つ目の用途です。&lt;/p&gt;
&lt;h3 id="資格の用途2"&gt;資格の用途2&lt;/h3&gt;
&lt;p&gt;2つ目の用途は、1つ目と似ていますが法律以外の何らかの規則（入札規則等）で特定の資格保持を求めている場合の業務遂行のための使用です。 法律以外の規則というところが、資格の用途1と異なっているだけです。&lt;/p&gt;
&lt;h3 id="資格の用途3"&gt;資格の用途3&lt;/h3&gt;
&lt;p&gt;ここからは法律や規則による制限がない場合の用途について考えていきます。 つまり技能検定に分類されるような特定の技能を持つことまたはある水準を超えていることを示す資格について考えます。&lt;/p&gt;
&lt;h4 id="資格の用途3-1"&gt;資格の用途3-1&lt;/h4&gt;
&lt;p&gt;資格名称を伝えて、アピールする。 資格名称を伝えるるだけで、自分の能力を簡単に対外的に示すことができます。&lt;/p&gt;
&lt;p&gt;入社のための履歴書だけでなく、上司や業務上の関係者に対してアピールすることができ、チャンスが広がります。 初めての取引先に対して、自分の技能を示すことで信頼度を上げることにも利用できます。&lt;/p&gt;
&lt;p&gt;単に資格名称を相手に伝えるだけで、その資格のカバーする技能の範囲や深さについての概要を間接的に伝えることができるのはとても効率的です。&lt;br&gt;
たとえ相手がその資格のことを知らなくても後で調べることができたり、資格名称から推測することもできます。&lt;/p&gt;
&lt;p&gt;資格を取得していないのに、その資格相当の技能があると言ってもなかなか信じてもらいにくいですし、その範囲をいちいち説明して、これができる、あれもできると言うのも面倒です。&lt;br&gt;
資格名称の一言だけで伝わるのは簡単で、余計な装飾も必要ありません。&lt;br&gt;
名刺やメール署名等に記載して伝えることができるという意味でも便利です。&lt;/p&gt;
&lt;h4 id="資格の用途3-2"&gt;資格の用途3-2&lt;/h4&gt;
&lt;p&gt;資格を使って様々な情報を入手する。&lt;/p&gt;
&lt;p&gt;これには複数のパターンがあります。&lt;/p&gt;
&lt;p&gt;単に同じ資格保持者のコミュニティに参加して、情報交換を可能とします。&lt;br&gt;
資格保持者であることが条件になっているコミュニティでの議論ができたり、資格保持者向けの情報発信を受け取ることができます。 中には&lt;a href="https://www.isc2.org/"&gt;ISC²&lt;/a&gt;のようにPDIコース（オンライン学習コンテンツ）を提供しているケースもあります。&lt;/p&gt;
&lt;p&gt;資格維持のために必要な研修の受講やセミナーの参加により情報を入手します。&lt;br&gt;
情報処理安全確保支援士やCISSP、PMP等、資格維持のために研修受講等を必須としている資格があります。 これは資格維持のための作業で、資格の活用とは違いますが、この強制力を活かすという捉え方もできるのでここに挙げています。&lt;/p&gt;
&lt;h4 id="資格の用途3-3"&gt;資格の用途3-3&lt;/h4&gt;
&lt;p&gt;資格を使って割引を受ける。&lt;/p&gt;
&lt;p&gt;別の資格の受検費の割引やセミナーの受講費割引を受けられるものがあります。 たとえば、情報処理安全確保支援士やCISSPの方は、情報セキュリティ監査人補の資格取得に特例制度があります。&lt;a href="https://www.jasa.jp/qualification/acquisition/info_secure_supporter/"&gt;高度情報セキュリティ資格特例制度&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="資格を使ったアピール方法"&gt;資格を使ったアピール方法&lt;/h3&gt;
&lt;p&gt;実際にアピールしようと思う場合にどう使えるかについて考えます。&lt;/p&gt;
&lt;ol&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;li&gt;バッジ（デジタル）をSNSに紐づける&lt;/li&gt;
&lt;li&gt;バッジ（デジタル）をWebに掲載する&lt;/li&gt;
&lt;li&gt;口頭で伝える&lt;/li&gt;
&lt;li&gt;認定証（紙）を相手の目に入るところに飾る（置く）&lt;/li&gt;
&lt;li&gt;認定組織のWebに氏名等の情報を掲載する&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;今後、特定の資格について取得したくなるかもしれない情報について書きたいと思います。&lt;/p&gt;</description></item><item><title>気になるニュース記事（2022年4月20日）</title><link>https://blog.sei-yo.jp/engineer/2022/04/posts/2022420/</link><pubDate>Wed, 20 Apr 2022 12:19:59 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2022/04/posts/2022420/</guid><description>&lt;p&gt;気になるニュース記事です。&lt;/p&gt;
&lt;h3 id="みずほgoogleと提携-dxで顧客サービス抜本見直し"&gt;みずほ、Googleと提携 DXで顧客サービス抜本見直し&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.nikkei.com/article/DGXZQOUB182BH0Y2A310C2000000/"&gt;みずほ、Googleと提携 DXで顧客サービス抜本見直し&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;障害が続くみずほはGoogleと提携して立て直すようです。&lt;/p&gt;
&lt;h3 id="基幹系をoracle-cloudに移行-自ら完遂ベンダー依存脱却へ"&gt;基幹系をOracle Cloudに移行 自ら完遂、ベンダー依存脱却へ&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://xtech.nikkei.com/atcl/nxt/mag/nc/18/020600004/030800099/"&gt;基幹系をOracle Cloudに移行 自ら完遂、ベンダー依存脱却へ&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;エディオンは、内製化を進めているようです。&lt;/p&gt;
&lt;h3 id="セブン銀行atmシステムなど基幹システムをクラウドazureに移行"&gt;セブン銀行、ATMシステムなど基幹システムをクラウド「Azure」に移行&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://news.mynavi.jp/techplus/article/20220316-2294833/"&gt;セブン銀行、ATMシステムなど基幹システムをクラウド「Azure」に移行&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;セブン銀行はAzureへ。 と、いいつつ、NRIのDCも併用のハイブリッド。 CO2 排出量の完全ゼロ化を目指す。とあるので、こちらも目的の一つとしているよう。&lt;/p&gt;
&lt;h3 id="セブンアイawsをグループ共通のクラウド基盤に-サイロ化解消でデータ活用加速"&gt;セブン＆アイ、AWSをグループ共通のクラウド基盤に &amp;ldquo;サイロ化&amp;quot;解消でデータ活用加速&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.itmedia.co.jp/news/articles/2111/30/news160.html"&gt;セブン＆アイ、AWSをグループ共通のクラウド基盤に &amp;ldquo;サイロ化&amp;quot;解消でデータ活用加速&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;セブン＆アイはAWSへ。&lt;/p&gt;
&lt;h3 id="セブンアイhdがハイブリッドクラウドを選択し使い分ける理由"&gt;セブン＆アイHDが「ハイブリッドクラウド」を選択し、使い分ける理由&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://atmarkit.itmedia.co.jp/ait/articles/2201/07/news002.html"&gt;セブン＆アイHDが「ハイブリッドクラウド」を選択し、使い分ける理由&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;AWSを採用と言いつつ、実態はハイブリッド。&lt;/p&gt;
&lt;h3 id="他市の教員にうらやましがられる小中学校のict基盤をクラウド化教員もpc持ち出し可能に-独自施策でazure移行した埼玉県鴻巣市"&gt;「他市の教員にうらやましがられる」──小中学校のICT基盤をクラウド化、教員もPC持ち出し可能に 独自施策でAzure移行した埼玉県鴻巣市&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.itmedia.co.jp/news/articles/2111/29/news026.html"&gt;「他市の教員にうらやましがられる」──小中学校のICT基盤をクラウド化、教員もPC持ち出し可能に 独自施策でAzure移行した埼玉県鴻巣市&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;鴻巣市はAzureへ。&lt;/p&gt;
&lt;h3 id="自社のdb破壊しceoに身代金要求freeeが本当にやったクラウド障害訓練の舞台裏-従業員はトラウマに"&gt;自社のDB破壊しCEOに身代金要求、freeeが本当にやったクラウド障害訓練の舞台裏 「従業員はトラウマに」&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.itmedia.co.jp/news/articles/2203/17/news038.html"&gt;自社のDB破壊しCEOに身代金要求、freeeが本当にやったクラウド障害訓練の舞台裏 「従業員はトラウマに」&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;カオスエンジニアリングにも近い。&lt;/p&gt;
&lt;h3 id="oracle-cloud開発環境やテスト環境に使いやすいシンプルなコンテナ環境container-instancesoracle-cloud自身によるcdnサービスなど発表"&gt;Oracle Cloud、開発環境やテスト環境に使いやすいシンプルなコンテナ環境「Container Instances」、Oracle Cloud自身によるCDNサービスなど発表&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.publickey1.jp/blog/22/oracle_cloudcontainer_instancesoracle_cloudcdn.html"&gt;Oracle Cloud、開発環境やテスト環境に使いやすいシンプルなコンテナ環境「Container Instances」、Oracle Cloud自身によるCDNサービスなど発表&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;新サービスの発表がありました。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.itmedia.co.jp/enterprise/articles/2203/31/news034.html"&gt;CDNもOracleが自前で提供 OCIの大幅アップデートの詳細は&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="euと米国無効にされたプライバシーシールドに代わるデータ移転協定に基本合意"&gt;EUと米国、無効にされたプライバシーシールドに代わるデータ移転協定に基本合意&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://jp.techcrunch.com/2022/03/26/2022-03-25-eu-and-us-agree-data-transfer-deal-to-replace-defunct-privacy-shield/?3=&amp;amp;s=09&amp;amp;guccounter=1"&gt;EUと米国、無効にされたプライバシーシールドに代わるデータ移転協定に基本合意&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;GDPRに対応できるかという話です。&lt;/p&gt;
&lt;h3 id="さくらインターネットiotプラットフォームさくらのモノプラットフォームの正式サービスを開始"&gt;さくらインターネット、IoTプラットフォーム「さくらのモノプラットフォーム」の正式サービスを開始&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://cloud.watch.impress.co.jp/docs/news/1397791.html"&gt;さくらインターネット、IoTプラットフォーム「さくらのモノプラットフォーム」の正式サービスを開始&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;完全月額性。&lt;/p&gt;
&lt;h3 id="ラスボスメインフレームもクラウドへawsやgoogleが移行支援に本腰"&gt;ラスボス「メインフレーム」もクラウドへ、AWSやGoogleが移行支援に本腰&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://xtech.nikkei.com/atcl/nxt/column/18/01984/031600003/"&gt;ラスボス「メインフレーム」もクラウドへ、AWSやGoogleが移行支援に本腰&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;SIerが担っていたような移行部分についてもパブリッククラウドベンダーが担うようになってきている。&lt;/p&gt;
&lt;h3 id="クラウドの巨人の進撃が続く中nutanixが提供する価値とは何か"&gt;「クラウドの巨人」の進撃が続く中、Nutanixが提供する価値とは何か&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://atmarkit.itmedia.co.jp/ait/articles/2203/22/news029.html"&gt;「クラウドの巨人」の進撃が続く中、Nutanixが提供する価値とは何か&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;それぞれのベンダーの立ち位置を考えることは重要だが、連携していくというのも一つの立ち位置である。&lt;/p&gt;</description></item><item><title>気になるニュース記事（2022年3月23日）</title><link>https://blog.sei-yo.jp/engineer/2022/03/posts/2022323/</link><pubDate>Wed, 23 Mar 2022 12:00:27 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2022/03/posts/2022323/</guid><description>&lt;p&gt;気になるニュース記事です。&lt;/p&gt;
&lt;h3 id="ロシアのウクライナ侵攻が半導体市場に与える影響は"&gt;ロシアのウクライナ侵攻が半導体市場に与える影響は&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://eetimes.itmedia.co.jp/ee/articles/2202/28/news093.html"&gt;ロシアのウクライナ侵攻が半導体市場に与える影響は&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;半導体の供給状況に悪影響を与える内容です。&lt;/p&gt;
&lt;h3 id="google-cloudもロシアでの新規契約停止-3大クラウドで足並みそろう"&gt;Google Cloudもロシアでの新規契約停止 &amp;ldquo;3大クラウド&amp;quot;で足並みそろう&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.itmedia.co.jp/news/articles/2203/11/news123.html?msclkid=64d6167faa5311eca4bc35716d64683f"&gt;Google Cloudもロシアでの新規契約停止 &amp;ldquo;3大クラウド&amp;quot;で足並みそろう&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;新規の契約だけ停止したようです。&lt;/p&gt;
&lt;h3 id="日本初導入-aws-outposts-ラックを徹底解説-第1回-導入利用方法の概要"&gt;【日本初導入】 AWS Outposts ラックを徹底解説 第1回 〜導入・利用方法の概要〜&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://engineers.ntt.com/entry/2022/03/15/102459"&gt;【日本初導入】 AWS Outposts ラックを徹底解説 第1回 〜導入・利用方法の概要〜&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Outposts初導入だそうです。 中身が具体的に書いてあるので参考になります。&lt;/p&gt;
&lt;h3 id="ドコモとawsが接近クラウドで5gインフラ"&gt;ドコモとAWSが接近、クラウドで5Gインフラ&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.nikkei.com/article/DGXZQOUC021YX0S2A300C2000000/"&gt;ドコモとAWSが接近、クラウドで5Gインフラ&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ここでもOutpostsを利用するそうです。&lt;/p&gt;
&lt;h3 id="google-cloudが大幅値上げ2022年10月1日から実施"&gt;Google Cloudが大幅値上げ、2022年10月1日から実施&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://jp.techcrunch.com/2022/03/15/2022-03-14-inflation-is-real-google-cloud-raises-its-storage-prices/"&gt;Google Cloudが大幅値上げ、2022年10月1日から実施&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;大手パブリッククラウドとしては珍しい値上げです。&lt;/p&gt;
&lt;p&gt;Googleのblog記事は以下です。利用サービスを変更するなどして全体としては値下げできるとも言っています。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://cloud.google.com/blog/products/infrastructure/updates-to-google-clouds-infrastructure-pricing"&gt;Unlock more choice with updates to Google Cloud&amp;rsquo;s infrastructure capabilities and pricing&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="マイクロソフトazureがawsしのぐ側面もflexeraのクラウドレポート"&gt;マイクロソフト「Azure」がAWSしのぐ側面も&amp;ndash;Flexeraのクラウドレポート&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://news.yahoo.co.jp/articles/695d38195789c86fcca302a2b684acf0a4ea6814"&gt;マイクロソフト「Azure」がAWSしのぐ側面も&amp;ndash;Flexeraのクラウドレポート&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;マルチクラウドの文脈でAzureが強いということのようです。 Azure Arcもその一つだと思います。&lt;/p&gt;
&lt;h3 id="パブリッククラウド移行進めるイスラエル国防省いかにデータを保護するか"&gt;パブリッククラウド移行進めるイスラエル国防省、いかにデータを保護するか&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://news.yahoo.co.jp/articles/407477c5c611fa639ab02096dd87ab25485e7049"&gt;パブリッククラウド移行進めるイスラエル国防省、いかにデータを保護するか&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;コンフィデンシャルコンピューティングという暗号化したまま処理を行う仕組みを導入してセキュリティを保つという方針のようです。&lt;/p&gt;
&lt;h3 id="グーグルマンディアントを54億ドルで買収過去２番目の規模"&gt;グーグル、マンディアントを54億ドルで買収－過去２番目の規模&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://news.yahoo.co.jp/articles/4c4a77c95eb05efaa1ba9d3855dd7f793f5da51d"&gt;グーグル、マンディアントを54億ドルで買収－過去２番目の規模&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;マンディアントは、旧ファイア・アイです。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://news.mynavi.jp/techplus/article/20211209-2222054/?msclkid=28c3884daa5411eca541d6cc159fa322"&gt;新生マンディアント（旧ファイア・アイ）、事業方針を説明&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="サイバー被害4日以内に開示-米secが企業に義務付け"&gt;サイバー被害、4日以内に開示 米SECが企業に義務付け&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.nikkei.com/article/DGXZQOGN09EJA0Z00C22A3000000/"&gt;サイバー被害、4日以内に開示 米SECが企業に義務付け&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;まだ提案段階ですが、サイバー攻撃の実態がわかりにくい状況から情報がオープンになって、様々な変化が生まれそうです。 企業としても十分な対策をしておくことがますます求められます。&lt;/p&gt;</description></item><item><title>FireBase AuthのidTokenを同期的に取得する方法</title><link>https://blog.sei-yo.jp/engineer/2022/02/posts/firebase_authidtoken/</link><pubDate>Thu, 24 Feb 2022 22:42:55 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2022/02/posts/firebase_authidtoken/</guid><description>&lt;p&gt;こういうのってどうしたら情報を自分で得られるようになるのだろうか。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://note.kyokomi.dev/post/firebase_auth_await/"&gt;FirebaseAuthのidTokenをawait()で取れるようにする&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/Kotlin/kotlinx.coroutines"&gt;こういうの&lt;/a&gt;をちゃんと見てどんなのがあるか把握しておけってことかなぁ。。&lt;/p&gt;</description></item><item><title>インターネットに接続しないセキュリティとは</title><link>https://blog.sei-yo.jp/engineer/2022/02/posts/post_5/</link><pubDate>Thu, 24 Feb 2022 01:25:45 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2022/02/posts/post_5/</guid><description>&lt;p&gt;SNSでインターネットに接続しないのが一番のセキュリティというような記述を目にしていろいろ思ったので、思ったことを書きます。&lt;/p&gt;
&lt;h3 id="インターネットに接続しないのが一番のセキュリティ-とは"&gt;インターネットに接続しないのが一番のセキュリティ とは&lt;/h3&gt;
&lt;p&gt;この言葉で言いたいのは、インターネットに接続すると攻撃されるリスクが高まるため、接続しないのが一番リスクが低いということだと思います。&lt;br&gt;
確かにインターネットに接続することによるリスクはたくさんあって、接続するのとしないのとを比べると接続しない方がリスクは低く、その点はメリットと言えます。&lt;/p&gt;
&lt;p&gt;しかし、そもそもインターネットに接続しないという選択肢が取れない場合もあるので採用できない場合もあります。また、一番のセキュリティという割に、インターネット接続の観点しか触れていないので考慮不足と思います。&lt;/p&gt;
&lt;h3 id="一番のセキュリティとは"&gt;一番のセキュリティとは&lt;/h3&gt;
&lt;p&gt;一番のセキュリティという言い方が曖昧なので、最善のセキュリティ対策状態について考えてみます。&lt;br&gt;
セキュリティの基本的な要素は機密性と完全性と可用性と言われています。&lt;br&gt;
機密性というのは、許可された人だけがアクセスできるようにすることです。これができていない場合は情報漏洩が発生したりします。&lt;br&gt;
完全性というのは、情報が改ざんされていない状態とすることです。正しい情報であるということです。&lt;br&gt;
可用性というのは、必要な時に利用できることです。使いたいのに使えないというのでは役に立ちません。&lt;/p&gt;
&lt;p&gt;これら3つがバランスよく対策されていて、対策に掛かるコストも許容範囲内でおさまっているのが最善の対策状態と言えます。 バランスが悪く、どれかの観点だけに重点的に対策していても、対策できていない部分で問題が発生する可能性が高いため、バランスよく対策することが重要です。&lt;br&gt;
セキュリティの侵害は相対的に脆弱な部分が原因となることが多く、対策する際も脆弱な部分から対策する方が効果的と考えられます。 例えば、非常に脆弱なソフトウェアのバグが発見された場合はそのバグを利用した攻撃が多くみられ、これに該当する場合には簡単に侵害されることになります。&lt;br&gt;
その場合、他の部分の対策がどんなにしっかり行われていても、侵害を防ぐのには役に立たないこともあります。&lt;/p&gt;
&lt;p&gt;唐突にコストについても触れましたが、コストも重要です。&lt;br&gt;
セキュリティ侵害により被る被害額よりも対策に掛かるコストの方が高い場合はビジネス観点で無駄にコストを掛けていることになります。 したがって、対象のコンピュータシステムにより対策に掛けられるコストも変わります。当然、対策内容も異なります。&lt;/p&gt;
&lt;p&gt;最善のセキュリティ対策状態というのは、対象のコンピュータシステムに合わせて十分に検討された対策が施された状態です。 したがって、具体的なコンピュータシステムを限定せずにこの対策をすれば良いというようなものは定義できません。 多くのコンピュータシステムに当てはまる対策であっても、それが適切でないケースもあり得ると思います。&lt;/p&gt;
&lt;h3 id="インターネットに接続すべきかどうかについて"&gt;インターネットに接続すべきかどうかについて&lt;/h3&gt;
&lt;p&gt;インターネットに接続すべきかどうかについて、セキュリティ対策の観点から決めるものではないと思います。 対象のコンピュータシステムがインターネットに接続することが必要なのであれば接続すべきですし、不要であれば接続すべきではありません。&lt;br&gt;
最小限という観点はセキュリティの観点でもありますが、セキュリティの観点で検討すべきはむしろインターネットに接続すべき場合です。&lt;br&gt;
インターネットに接続すべき場合に、どのようにセキュリティを担保すべきかについて、可用性（利便性）を損なわずに如何に対策するかがポイントです。&lt;br&gt;
如何にインターネットを活用しビジネスに生かしつつ、セキュリティを担保できるようにするかというのが重要です。&lt;/p&gt;
&lt;h3 id="インターネットに接続しない場合のリスクについて"&gt;インターネットに接続しない場合のリスクについて&lt;/h3&gt;
&lt;p&gt;インターネットに接続しない場合、インターネットという利便性がなくなるため、これによるビジネス効率の低下が懸念されますが、セキュリティの観点でも懸念はあります。&lt;br&gt;
セキュリティ上のリスクはインターネットだけではありません。内部犯行もありますし、内部ネットワークやUSBなどのモバイルデバイスも攻撃経路の一つです。&lt;br&gt;
あるPCがインターネットに接続していないとしても、別のPCがインターネットに接続できるのであれば、そこから侵害されることもあります。 インターネットに接続していないからと言って、セキュリティ対策が不要になるわけではありません。&lt;/p&gt;
&lt;h3 id="まとめ"&gt;まとめ&lt;/h3&gt;
&lt;p&gt;攻撃を受ける経路はインターネットだけではありません。インターネットに接続していない場合でも必要な対策を行いましょう。&lt;br&gt;
適切なセキュリティ対策は状況により異なります。リスクや資産を評価し、必要な対策を検討しましょう。&lt;br&gt;
セキュリティの目標は、使わないことではなく、安全に使用することです。インターネットを含め必要なものをできる限り安全に利用できるように対策を施しましょう。&lt;/p&gt;</description></item><item><title>気になるニュース記事（2022年2月15日）</title><link>https://blog.sei-yo.jp/engineer/2022/02/posts/2022215/</link><pubDate>Tue, 15 Feb 2022 22:48:47 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2022/02/posts/2022215/</guid><description>&lt;p&gt;気になるニュース記事です。&lt;/p&gt;
&lt;h3 id="セキュリティ資格一覧セキュリティ資格の解説とその取得メリット選択ポイント上"&gt;セキュリティ資格一覧｜セキュリティ資格の解説とその取得メリット・選択ポイント（上）&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.nri-secure.co.jp/blog/security-qualification-1"&gt;セキュリティ資格一覧｜セキュリティ資格の解説とその取得メリット・選択ポイント（上）&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;主要なセキュリティ資格を一覧化し、それらの位置づけを視覚的に表現している点が興味深いです。&lt;/p&gt;
&lt;h3 id="オープンソース開発者が広く使用されている自分のライブラリを改ざん大量のプロジェクトに影響"&gt;オープンソース開発者が広く使用されている自分のライブラリを改ざん、大量のプロジェクトに影響&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://softantenna.com/blog/developer-corrupts-his-own-widely-used-library/"&gt;オープンソース開発者が広く使用されている自分のライブラリを改ざん、大量のプロジェクトに影響&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.publickey1.jp/blog/22/-openssfgoogle.html"&gt;オープンソースの安全性を高める「アルファ-オメガプロジェクト」、OpenSSFが開始。マイクロソフトとGoogleがプロジェクトリーダーに&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;faker.jsとcolor.jsの作者が意図的に使えない状態に変更したことについて触れています。 サプライチェーンのリスクについて考えさせられる内容です。 こうした問題の予防もできるようにとアルファ-オメガプロジェクトが始まります。&lt;/p&gt;
&lt;h3 id="マカフィーとファイアアイの統合会社新社名をtrellixに"&gt;マカフィーとファイア・アイの統合会社、新社名を「Trellix」に&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://japan.zdnet.com/article/35182305/"&gt;マカフィーとファイア・アイの統合会社、新社名を「Trellix」に&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;マカフィーとファイア・アイという会社名はなくなってしまったので、覚えておきましょう。&lt;/p&gt;
&lt;h3 id="コード決済の不正利用情報事業者間で共有-clue構築へ"&gt;コード決済の不正利用情報、事業者間で共有 「CLUE」構築へ&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.itmedia.co.jp/news/articles/2112/24/news137.html"&gt;コード決済の不正利用情報、事業者間で共有 「CLUE」構築へ&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;この手の情報共有って個人情報保護の観点から難しそうな気がするけど、ちゃんと実現できるのかなぁ、という心配があります。&lt;/p&gt;
&lt;h3 id="京大スパコンのデータ77tbが消失-バックアップ処理中に不具合-日本ヒューレットパッカード100弊社の責任"&gt;京大スパコンのデータ77TBが消失 バックアップ処理中に不具合 日本ヒューレット・パッカード「100％弊社の責任」&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.itmedia.co.jp/news/articles/2112/29/news040.html"&gt;京大スパコンのデータ77TBが消失 バックアップ処理中に不具合 日本ヒューレット・パッカード「100％弊社の責任」&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;バックアップが消えたのではなく、オリジナルデータも一緒に消えているので利用者からするとなかなか対応が難しい問題。&lt;/p&gt;
&lt;h3 id="日本歯科大病院のサーバーがウイルス感染-電子カルテ使えず診療停止"&gt;日本歯科大病院のサーバーがウイルス感染 電子カルテ使えず診療停止&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.asahi.com/articles/ASQ1L4TX0Q1LULZU007.html"&gt;日本歯科大病院のサーバーがウイルス感染 電子カルテ使えず診療停止&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.yomiuri.co.jp/national/20211231-OYT1T50019/"&gt;病院サイバー対策、カルテデータ「独立保管」…厚労省が新たな指針策定へ&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.mhlw.go.jp/stf/shingi/0000516275.html"&gt;医療情報システムの安全管理に関するガイドライン 第5.1版（令和3年1月）&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;徳島の病院でも診療停止に結びついた事件が発生しましたが、他の病院でも発生しています。&lt;/p&gt;</description></item><item><title>気になるニュース記事（2022年1月18日）</title><link>https://blog.sei-yo.jp/engineer/2022/01/posts/2022118/</link><pubDate>Mon, 17 Jan 2022 12:22:33 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2022/01/posts/2022118/</guid><description>&lt;p&gt;気になるニュース記事です。&lt;/p&gt;
&lt;h3 id="次期ガバクラに国産勢参入なるかnecnttデータさくらが検討準備"&gt;次期ガバクラに国産勢参入なるか、NEC・NTTデータ・さくらが「検討」「準備」&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://xtech.nikkei.com/atcl/nxt/column/18/01869/112900003/"&gt;次期ガバクラに国産勢参入なるか、NEC・NTTデータ・さくらが「検討」「準備」&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.itmedia.co.jp/news/articles/2112/20/news155.html"&gt;さくらのクラウドやSlackが&amp;quot;政府認定クラウドサービス&amp;quot;に登録 各省庁の調達対象に&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;最初のガバメントクラウドとして、AWSとGoogleの2社が選定されたが、次期のガバメントクラウドへの選定を目指すベンダーがいくつかある。 ガバメントクラウドはISMAP認定も要件となっている。&lt;/p&gt;
&lt;h3 id="地方のデータセンター整備に1000億円-政府進出後押し"&gt;地方のデータセンター整備に1000億円 政府、進出後押し&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.nikkei.com/article/DGXZQOUA24B8F0U1A121C2000000/?unlock=1"&gt;地方のデータセンター整備に1000億円 政府、進出後押し&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.nikkei.com/article/DGXZQOUC012GN0R01C21A2000000/"&gt;CTC、自社保有のデータセンター全売却 神戸や横浜など&lt;/a&gt; &lt;a href="https://www.nikkei.com/article/DGXZQOUA24B8F0U1A121C2000000/?unlock=1"&gt;政府、海底ケーブル拠点を分散 安保・災害リスク低減へ&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;政府としてはDCを地方に分散させることを推進しており、海底ケーブル拠点についても分散する方針を示している。 一方でCTCはDC事業からは撤退する方針。&lt;/p&gt;
&lt;h3 id="iij冷蔵庫大のデータセンター-エッジ向けに提供"&gt;IIJ、冷蔵庫大のデータセンター エッジ向けに提供&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.nikkei.com/article/DGXZQOUC250MC0V21C21A1000000/"&gt;IIJ、冷蔵庫大のデータセンター エッジ向けに提供&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.publickey1.jp/blog/21/aws1uaws_outpostsaws_reinvent_2021.html"&gt;AWSを1Uサイズのラックマウントサーバとしてオンプレミスに持ち込める、新型「AWS Outposts」登場。AWS re:Invent 2021&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.itmedia.co.jp/news/articles/2201/11/news008.html"&gt;導入費用や運用が負担――&amp;ldquo;オンプレ&amp;quot;の課題を解決 JECC／シスコのクラウドライクな「オンプレミスIaaS」とは？&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;以前も紹介しましたが、オンプレ向けのサービスが増えてきています。&lt;/p&gt;
&lt;h3 id="歴史年表でみるawsサービスamazon-s3編-単なるストレージではない機能役割と料金の変遷"&gt;歴史・年表でみるAWSサービス(Amazon S3編) －単なるストレージではない機能・役割と料金の変遷－&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://tech.nri-net.com/entry/aws_history_and_chronology_about_s3"&gt;歴史・年表でみるAWSサービス(Amazon S3編) －単なるストレージではない機能・役割と料金の変遷－&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;最初のリリースからの変遷です。&lt;/p&gt;</description></item><item><title>気になるニュース記事（2022年1月14日）</title><link>https://blog.sei-yo.jp/engineer/2022/01/posts/20220114-1/</link><pubDate>Fri, 14 Jan 2022 13:49:04 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2022/01/posts/20220114-1/</guid><description>&lt;p&gt;気になるニュース記事です。&lt;/p&gt;
&lt;h3 id="野村hdが日本ibmに敗訴確定システム開発の失敗巡る訴訟の上告を取り下げ--日経クロステックxtech"&gt;野村HDが日本IBMに「敗訴確定」、システム開発の失敗巡る訴訟の上告を取り下げ | 日経クロステック（xTECH）&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://xtech.nikkei.com/atcl/nxt/news/18/11853/"&gt;野村HDが日本IBMに「敗訴確定」、システム開発の失敗巡る訴訟の上告を取り下げ | 日経クロステック（xTECH）&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://xtech.nikkei.com/atcl/nxt/column/18/00001/05552/"&gt;野村HDが日本IBMに逆転敗訴のワケ、「工数削減に応じず変更要求を多発」と指摘&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;長年の訴訟の判決が確定しました。\ 上告取り下げなので判決が翻る可能性はあったのかもしれませんが、ユーザ企業側（野村HD）が敗訴とのことです。\ 2013年に訴訟して確定が2021年12月。一審判決が2019年3月。高等裁判所の判決が2021年4月でした。\ 最初の判決が出るまで5年以上掛かる長期的な裁判となっていました。&lt;/p&gt;
&lt;h3 id="攻撃を招くクラウド環境の設定ミスわずか数分で悪用も-米セキュリティ企業がおとり調査"&gt;攻撃を招くクラウド環境の設定ミス、わずか数分で悪用も 米セキュリティ企業がおとり調査&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.itmedia.co.jp/news/articles/2111/30/news056.html"&gt;攻撃を招くクラウド環境の設定ミス、わずか数分で悪用も 米セキュリティ企業がおとり調査&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;クラウド環境への攻撃は数時間で侵害されるというのを実際に試した内容。 クラウドに限らないと思うが、有名な脆弱性があるとすぐに侵害されると考えた方が良いという良い例として捉えられる。&lt;/p&gt;
&lt;h3 id="身代金払わず2億円で新システム-徳島サイバー被害病院"&gt;身代金払わず2億円で新システム 徳島サイバー被害病院&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.nikkei.com/article/DGXZQOUE25C3L0V21C21A1000000/"&gt;身代金払わず2億円で新システム 徳島サイバー被害病院&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://news.yahoo.co.jp/articles/121f628474374045b01ab446bcee6c5be6e6ea5a?page=1"&gt;【特集】サイバー攻撃と戦った公立病院の2か月間『電子カルテが暗号化』過去の検査結果も病歴もわからず&amp;hellip;手書き対応にも苦労&lt;/a&gt;&lt;br&gt;
&lt;a href="https://medical.nikkeibp.co.jp/leaf/mem/pub/hotnews/int/202201/573428.html"&gt;サイバー攻撃受けた半田病院、通常診療を再開&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;徳島県の病院がランサムウェア攻撃を受けて甚大な被害を受けた件です。\ 電子カルテが使えなくなり、新規患者の受け入れを断るなど、大きな業務影響が出ました。\ また、復旧まで2か月ほど掛かると宣言し、見事に復旧を果たしたそうです。&lt;/p&gt;
&lt;p&gt;予防も重要ですが、復旧が無事にできたところは重要なポイントです。 システム全体のバックアップがあって、復旧に利用できればもっと早く復旧できたと考えられますので、バックアップ対策が不十分だったのは悔やまれますが、再構築にしては2か月は早いのではないかと思います。&lt;/p&gt;
&lt;h3 id="report国内病院に対するセキュリティアンケート調査の結果と考察"&gt;Report：国内病院に対するセキュリティアンケート調査の結果と考察&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.m-isac.jp/2021/12/20/report01/"&gt;Report：国内病院に対するセキュリティアンケート調査の結果と考察&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;医療ISACが出したレポートです。\ 病院のセキュリティ対策状況は他業種と比べると低く、大規模病院はまだ対応できている項目が多いものの、それ以外の病院ではあまり対応できていないということを示しています。\ 上記のような事例もあり、対応を急ぐ必要があると考えられます。\ ちなみに、本記事およびアンケート結果のレポートは2021年12月2日に一旦公開されましたが、その後削除されて12月20日に再度公開されました。&lt;/p&gt;
&lt;h3 id="媒体のデータ抹消処理サニタイズに関するガイドライン"&gt;媒体のデータ抹消処理（サニタイズ）に関するガイドライン&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.ipa.go.jp/files/000094547.pdf"&gt;媒体のデータ抹消処理（サニタイズ）に関するガイドライン&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;NISTの発行しているドキュメントをIPAが和訳したものを公開しました。\ 2014年に発行されたSP 800-88 rev.1を和訳したものです。\ データを消すレベルとして3段階定義し、媒体毎に具体的な手順も記載されています。\ ほかにもたくさんのドキュメントの和訳があり、以下に一覧化されています。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.ipa.go.jp/security/publications/nist/index.html"&gt;セキュリティ関連NIST文書&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Red Hatのリモート試験受験時の部屋やカメラの状況について</title><link>https://blog.sei-yo.jp/engineer/2021/11/posts/red_hat/</link><pubDate>Fri, 26 Nov 2021 03:17:12 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2021/11/posts/red_hat/</guid><description>&lt;p&gt;Red Hat Remote ExamsでRHCEを受験しましたので気になる受験環境等について少し説明しようと思います。&lt;br&gt;
Remote Examsではテストセンターに行かなくても自宅等からリモートで受験することができます。&lt;br&gt;
ちなみにテストセンターは国内だと東京都内にあるようですが数が少ないのか予約できる日を見つけられませんでした。&lt;br&gt;
台湾のテストセンターは空いている日も見つけられましたが国内では見つけられませんでした。&lt;/p&gt;
&lt;p&gt;対象の資格はRHCEのほかにも、RHCSA等多数あります。&lt;br&gt;
具体的には以下のURLで確認できます。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.redhat.com/ja/services/certification/remote-exams"&gt;https://www.redhat.com/ja/services/certification/remote-exams&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="準備"&gt;準備&lt;/h3&gt;
&lt;p&gt;基本的に、上に挙げたURLにある情報で足りると思いますが、部屋の片付け具合やカメラ位置等が気になって仕方がなかったのでそのあたりについて書きます。&lt;/p&gt;
&lt;h4 id="部屋"&gt;部屋&lt;/h4&gt;
&lt;p&gt;部屋の片付け具合は、上記URLの動画に登場する部屋を参考にしました。&lt;br&gt;
部屋を片付けている様子（？）もありますが片付いているのは机の上だけで、周りの本棚等は変わっていないようです。&lt;br&gt;
準備についてのほかの方のブログなどを見ると、念のため本もすべて片付けたというものがいくつかありましたが、動画では片付けていなかったのでこれを信じて本は片付けずに受験しました。&lt;br&gt;
結果としては特に何も言われず問題ありませんでした。&lt;/p&gt;
&lt;p&gt;部屋の写真はここに載せませんが、以下のような部屋で受験しました。&lt;/p&gt;
&lt;p&gt;6畳くらいの部屋で、壁に向かって左右中央あたりにテーブルを置き、そこにノートPCを置きました。&lt;br&gt;
手の届く範囲にはなにもない状態にしました。&lt;br&gt;
テーブルに向って座った場合の背中側に棚があって、そこに本や少しの小物が置いてあります。&lt;br&gt;
横の手の届かないところには小さなテーブルやデスクトップPCなどいろいろ置いてありました。&lt;/p&gt;
&lt;h4 id="カメラ"&gt;カメラ&lt;/h4&gt;
&lt;p&gt;ノートPC付属のカメラだけではだめなので、USB接続の安いカメラを買いました。&lt;/p&gt;
&lt;p&gt;ロジクールのC270です。結局これを使いましたが、証明書を見せるときにこれだとピントが合わずだめでした。&lt;br&gt;
結局、ノートPC付属のカメラで見せました。&lt;br&gt;
この場合、外部ディスプレイを使って受験しようとしている場合はノートPCは閉じていないといけないのでこのカメラだけだと受験できない可能性があります。&lt;/p&gt;
&lt;p&gt;カメラ画像のサンプルは以下にあります。&lt;br&gt;
FAQは日本語ページがないのでFAQ自体がないのかと最初戸惑いますが英語ページはちゃんとあります。カメラ画像のサンプルもFAQから辿れます。&lt;/p&gt;
&lt;p&gt;FAQからさらにリンクで示されているのが以下。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://learn.redhat.com/t5/Certification-Resources/How-to-position-an-external-camera-for-a-Red-Hat-remote-exam/ba-p/17444"&gt;https://learn.redhat.com/t5/Certification-Resources/How-to-position-an-external-camera-for-a-Red-Hat-remote-exam/ba-p/17444&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;カメラは2台使ってもよく、顔と手（キーボード）が映るようにする必要があります。&lt;br&gt;
私は、上述のようにUSBの外部カメラとノートPCのカメラの二つを使いました。&lt;br&gt;
USBカメラは机の横に三脚を立ててそこに置きました。購入したロジクール C270は三脚に固定する仕組みがありませんでしたが、載せるだけの感じで設置できました。念のためセロテープで落ちないようにしました。&lt;/p&gt;
&lt;p&gt;カメラの高さは顔の高さくらいで少し下向きにしました。&lt;br&gt;
試験監督から指示があるかもしれないので調整できるようにしておくと良いと思います。&lt;/p&gt;
&lt;p&gt;また、試験中にもroom scanといって部屋を見せる必要があるので、すぐに取り外せるようにしておく必要もあります。&lt;/p&gt;
&lt;h4 id="ネットワークwifi"&gt;ネットワーク（Wifi）&lt;/h4&gt;
&lt;p&gt;有線が推奨とのことですが、私のノートPCには差すところがないので無線で受験しました。&lt;br&gt;
特に気になるところもなく、問題ありませんでした。&lt;/p&gt;</description></item><item><title>気になるニュース記事（2021年11月24日）</title><link>https://blog.sei-yo.jp/engineer/2021/11/posts/20211124/</link><pubDate>Wed, 24 Nov 2021 11:41:21 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2021/11/posts/20211124/</guid><description>&lt;p&gt;今日から気になるニュース記事をリンクしていきたいと思います。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.itmedia.co.jp/enterprise/articles/2111/22/news054.html"&gt;&amp;ldquo;オンプレ逆戻り&amp;quot;の教訓を生かせ 10年後に笑うクラウド活用戦略のポイント&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;この記事では以下のようにオンプレミス増加に触れているが、オンプレミス回帰ではないとのこと。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;「クラウドへの投資はここ数年増加しているが、一方で減少傾向にあったオンプレミスも最近になって増加に転じている。この動きはオンプレミス回帰ではなく、クラウド化しづらいシステムが相応にあることを表している。肝心なのは、クラウドかオンプレミスかではなく、いずれにしても（クラウドの活用戦略に）変化が重要になってきていることだ」（亦賀氏）
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;こういうニーズに対応するためか、パブリッククラウドベンダー各社もAWS、Azure、GCPはそれぞれオンプレミス向けのサービスを展開している。 オンプレ領域についても各社が力を入れていることがわかる。&lt;/p&gt;
&lt;h3 id="aws-outposts"&gt;AWS Outposts&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://aws.amazon.com/jp/outposts/"&gt;AWS Outposts&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;これまでは42Uサイズの大型サイズしかなかったが、今後1U-2Uサイズも登場するようだ。（以下） &lt;a href="https://aws.amazon.com/jp/outposts/1u-2u/"&gt;AWS Outposts 1U and 2U form factors&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="azure-stack"&gt;Azure Stack&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://azure.microsoft.com/ja-jp/overview/azure-stack/"&gt;Azure Stack&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://azure.microsoft.com/ja-jp/products/azure-stack/edge/"&gt;Azure Stack Edge&lt;/a&gt;は、小型のラインナップで、バッテリー駆動可能な可搬型のものもある。&lt;/p&gt;
&lt;p&gt;ほかに、&lt;a href="https://azure.microsoft.com/ja-jp/products/azure-stack/hci/"&gt;Azure Stack HCI&lt;/a&gt;と、&lt;a href="https://azure.microsoft.com/ja-jp/products/azure-stack/hub/"&gt;Azure Stack Hub&lt;/a&gt;というサービスラインナップがある。&lt;/p&gt;
&lt;h3 id="google-distributed-cloud"&gt;Google Distributed Cloud&lt;/h3&gt;
&lt;p&gt;GCPも新しいサービスとして&lt;a href="https://cloud.google.com/distributed-cloud"&gt;Google Distributed Cloud&lt;/a&gt;を発表した。&lt;/p&gt;</description></item><item><title>Scrapbox から LINEに通知するスクリプトを書いた</title><link>https://blog.sei-yo.jp/engineer/2021/09/posts/scrapbox_line/</link><pubDate>Thu, 09 Sep 2021 23:02:55 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2021/09/posts/scrapbox_line/</guid><description>&lt;p&gt;&lt;a href="https://scrapbox.io/"&gt;Scrapbox&lt;/a&gt;というサービスを使っていて、コンテンツの更新をした際の通知をLINEにするためのスクリプトを書きました。 ScrapboxはSlackへの通知機能を提供していますが、それ以外については自分で仕組みを作る必要があります。&lt;/p&gt;
&lt;p&gt;通知方法を検索すると&lt;a href="https://scrapbox.io/li9ri9/GAS%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6scrapbox%E3%81%AE%E6%9B%B4%E6%96%B0%E3%82%92LINE%E3%81%A7%E9%80%9A%E7%9F%A5%E3%81%99%E3%82%8B"&gt;GASを使ってscrapboxの更新をLINEで通知する&lt;/a&gt;というページが見つかります。これを参考にしたものの、GASではなくAzure App Serviceに実装したり、そのほか色々変更したので様々異なる点があります。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/hseiyo/scrapboxToLine"&gt;scrapboxToLine&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Vue関連の書籍を読んだ</title><link>https://blog.sei-yo.jp/engineer/2021/08/posts/vue/</link><pubDate>Thu, 19 Aug 2021 12:54:38 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2021/08/posts/vue/</guid><description>&lt;p&gt;最近、Vue関連の書籍を読みましたのでその紹介です。&lt;/p&gt;
&lt;p&gt;Webサービスを作るにあたり、フロントエンドの処理のためにVueを採用することにしたので、 その勉強のために読みました。&lt;/p&gt;
&lt;p&gt;読んだのは以下の3冊です。 どの本も2020年にリリースされたVue.js3に対応しています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Vue.js3 超入門&lt;/li&gt;
&lt;li&gt;これからはじめる人のJavascript/Vue.jsの教科書&lt;/li&gt;
&lt;li&gt;みんなのVue.js&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Vue.js3超入門はVue.jsについて一通り説明されていて、Vue.jsについて知るのに良いと思います。&lt;br&gt;
これからはじめる人のJavascript/Vue.jsの教科書は、JavascriptとTypescriptについても説明があります。&lt;br&gt;
Vue.js3超入門よりも薄いので、ボリュームは少な目ですが、広く浅くという感じで記載があります。&lt;br&gt;
みんなのVue.jsはVue.jsを知っている人向けに、実装時の注意点や考え方などが記載されています。例えば、国際化対応についての記述があります。&lt;/p&gt;</description></item><item><title>VS Codeで利用するGoのバージョンを指定する方法</title><link>https://blog.sei-yo.jp/engineer/2021/03/posts/vs_codego/</link><pubDate>Thu, 18 Mar 2021 10:16:00 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2021/03/posts/vs_codego/</guid><description>&lt;p&gt;VS CodeのGo拡張機能を利用していると、新しいバージョンのgoがありますと良く言われます。 新しいバージョンを使うには以下の2通りの方法が考えられます。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;古いバージョンを新しいバージョンで上書きする&lt;/li&gt;
&lt;li&gt;古いバージョンを残したまま新しいバージョンを別名で用意する&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;後者の別名を用意する場合、どのバージョンを使うかをどこかで明示的に指定する必要があります。 プロジェクト毎にバージョンを指定する場合はgo build する際のコマンド指定で対応しても良いかもしれませんが、 一括で変更するには、VS Code側（Go拡張機能）で設定することもできます。 以下のようにsettings.jsonに記載することで使うバージョンを指定できます。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;quot;go.alternateTools&amp;quot;: {
 &amp;quot;go&amp;quot;: &amp;quot;/home/user/go/bin/go1.16.2&amp;quot;
},
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;肝心の別名での用意の仕方は以下です。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;go install golang.x/dl/go1.16.2
go1.16.2 download
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Let's Encryptの証明書を使っているサーバにcURLで接続してもSEC_ERROR_UNKNOWN_ISSUERで失敗しません</title><link>https://blog.sei-yo.jp/engineer/2021/03/posts/lets_encryptcurlsec_error_unknown_issuer_1/</link><pubDate>Wed, 17 Mar 2021 14:56:27 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2021/03/posts/lets_encryptcurlsec_error_unknown_issuer_1/</guid><description>&lt;p&gt;body of this entry&lt;/p&gt;
&lt;p&gt;以前書いた記事、&lt;a href="https://www.sei-yo.jp/blog/engineer/2020/08/lets-encryptcurlsec-error-unknown-issuer.html"&gt;Let&amp;rsquo;s Encryptの証明書を使っているサーバにcURLで接続するとSEC &lt;em&gt;ERROR&lt;/em&gt; UNKNOWN_ISSUERで失敗する&lt;/a&gt;ですが、Let&amp;rsquo;s Encryptは悪くなかったです。自分のWebサーバの設定が悪かったです。&lt;/p&gt;
&lt;p&gt;Nginxを使っていて、サーバ証明書にcert.pemを指定していましたが、fullchain.pemを指定するのが正しいようです。証明書と同じフォルダにあるREADMEを見ても、cert.pemは古いので使われないということが書いてありました。 完全に動かないということではないようで気づきませんでした。&lt;/p&gt;</description></item><item><title>セキュリティガイドラインの一覧</title><link>https://blog.sei-yo.jp/engineer/2021/02/posts/security_guidelines/</link><pubDate>Fri, 19 Feb 2021 23:37:22 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2021/02/posts/security_guidelines/</guid><description>&lt;p&gt;最近、セキュリティの勉強をしているのですが、世の中にはセキュリティガイドライン（セキュリティ基準、参照すべきセキュリティ文書）がたくさんあって簡単には覚えられないので、自分で列挙しながら調べることにしました。 ただし、ガイドラインそのものは基本的に読めていません。 なお、本記事は随時更新します。&lt;/p&gt;
&lt;h3 id="isoiec-27000シリーズ"&gt;ISO/IEC 27000シリーズ&lt;/h3&gt;
&lt;p&gt;ISMSとしても知られるマネジメントについての規格。&lt;/p&gt;
&lt;h4 id="isoiec-27001"&gt;ISO/IEC 27001&lt;/h4&gt;
&lt;p&gt;組織の ISMS を認証するための要求事項&lt;/p&gt;
&lt;h4 id="isoiec-27002"&gt;ISO/IEC 27002&lt;/h4&gt;
&lt;p&gt;情報セキュリティ管理策の実践のための規範 ISO/IEC 27001に対して具体的な内容となっていて、27001は要求事項であり、27002は実践の要領などが記載されている。&lt;/p&gt;
&lt;h4 id="isoiec-27017"&gt;ISO/IEC 27017&lt;/h4&gt;
&lt;p&gt;ISO/IEC 27002 に基づくクラウドサービスのための情報セキュリティ管理策の実践の規範 クラウドサービスの提供者側、利用者側に対するセキュリティ基準。&lt;/p&gt;
&lt;h3 id="nist-sp-800シリーズ"&gt;NIST SP 800シリーズ&lt;/h3&gt;
&lt;p&gt;NIST（米国国立標準技術研究所）が公開している情報セキュリティの文書群。&lt;/p&gt;
&lt;h4 id="nist-sp-800-18"&gt;NIST SP 800-18&lt;/h4&gt;
&lt;p&gt;連邦情報システムのためのセキュリティ計画作成ガイド&lt;/p&gt;
&lt;h4 id="nist-sp-800-30"&gt;NIST SP 800-30&lt;/h4&gt;
&lt;p&gt;リスクアセスメントの実施の手引き 数少ないらしい？リスクアセスメントに関する文書。&lt;/p&gt;
&lt;h4 id="nist-sp-800-34"&gt;NIST SP 800-34&lt;/h4&gt;
&lt;p&gt;ITシステムのための緊急時対応計画ガイド&lt;/p&gt;
&lt;h4 id="nist-sp-800-37"&gt;NIST SP 800-37&lt;/h4&gt;
&lt;p&gt;連邦政府情報システムに対するリスクマネジメントフレームワーク適用ガイド： セキュリティライフサイクルによるアプローチ 同様の文書として、COSOの「Enterprise Risk management - Integrated Framework」というものがある。&lt;/p&gt;
&lt;h4 id="nist-sp-800-53"&gt;NIST SP 800-53&lt;/h4&gt;
&lt;p&gt;連邦政府情報システムおよび連邦組織のためのセキュリティ管理策とプライバシー管理策&lt;/p&gt;
&lt;h4 id="nist-sp-800-57"&gt;NIST SP 800-57&lt;/h4&gt;
&lt;p&gt;鍵管理における推奨事項&lt;/p&gt;
&lt;h4 id="nist-sp-800-61"&gt;NIST SP 800-61&lt;/h4&gt;
&lt;p&gt;コンピュータインシデント対応ガイド&lt;/p&gt;
&lt;h4 id="nist-sp-800-63"&gt;NIST SP 800-63&lt;/h4&gt;
&lt;p&gt;電子的認証に関するガイドライン 上位ポリシーとして、OMB M-04-04がある。&lt;/p&gt;
&lt;h4 id="nist-sp-800-64"&gt;NIST SP 800-64&lt;/h4&gt;
&lt;p&gt;システム開発ライフサイクルにおけるセキュリティの考慮事項&lt;/p&gt;</description></item><item><title>GoのEchoフレームワークのsessionの無効化</title><link>https://blog.sei-yo.jp/engineer/2020/11/posts/goechosession/</link><pubDate>Sat, 28 Nov 2020 02:36:35 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2020/11/posts/goechosession/</guid><description>&lt;p&gt;GoのWebフレームワークのEchoを使っています。Echoにはミドルウェアとしてsessionというものがあり、これを使ってセッション管理を行うことができるようになっています。 このsessionミドルウェアはバックエンドとして、gorilla/sessionsを使っています。&lt;/p&gt;
&lt;p&gt;この仕組みを使ってセッションを実装したときに、クライアントのクッキーにセッション情報が記録されます。 これをサーバ側で無効にしたい場合等に、セッションキーをサーバ側で変えてしまうということができます。 セッションキーを変更した後で、クライアントが接続すると古いセッション情報を使うために、これは無効と判定されます。 このとき、実現したい挙動としては、古いセッション情報をクッキーから削除して新しいセッション情報を作成できるようにすることです。&lt;/p&gt;
&lt;p&gt;Echoでは、以下のような書き方でセッション情報を取得することができます。 しかし、Getに対応するDeleteというような関数は用意されていません。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;sess, err = session.Get(&amp;quot;session&amp;quot;, c)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;セッションが存在しない場合（新規の場合）は、session.Get()でセッションが新規作成されますが、無効なセッション情報である場合には、session.Get()の結果エラーとなり有効なセッション情報が得られません。 そのため、無効なセッション情報は削除してからsession.Get()を実行する必要があります。 session.Get()がエラーになった場合に削除するということも考えましたが、処理を継続したい場合はsession.Get()より前に削除してある必要があります。 処理を継続できなくて良い場合は、削除後に再度HTTPリクエストを出してもらうように促すことで対処できます。&lt;/p&gt;
&lt;p&gt;削除の方法として、HTTPレスポンスを返す以外に、JavaScriptで削除する方法も考えられますが、HTTP Only属性を有効にすべき種類のものなのでこれはできません。 そのため、HTTPレスポンスとしてクッキー削除のヘッダを返すことで削除する方法を採用します。 このとき注意が必要なのが、HTTPレスポンスのキャッシュです。 キャッシュが有効になっていると、HTTPクライアントはコンテンツのみをキャッシュから読み込み、HTTPヘッダによるクッキー削除が行われません。 そのため、クッキー削除のヘッダを付ける可能性のあるURLはキャッシュ無効のヘッダも併せて返す必要があります。&lt;/p&gt;
&lt;p&gt;つまり、以下のようなヘッダを返す必要があるということです。 もちろん、動的に生成するページの場合はCache-Controlヘッダを付けなくてもキャッシュされないので、Cache-Controlヘッダは不要です。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Cache-Control: no-store Set-Cookie: session=; Path=/; Max-Age=0&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;もし、ほかに良いやり方があるようでしたら教えてもらえると嬉しいです。&lt;/p&gt;</description></item><item><title>Let's Encryptの証明書を使っているサーバにcURLで接続するとSEC_ERROR_UNKNOWN_ISSUERで失敗する</title><link>https://blog.sei-yo.jp/engineer/2020/08/posts/lets_encryptcurlsec_error_unknown_issuer/</link><pubDate>Sat, 08 Aug 2020 07:05:54 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2020/08/posts/lets_encryptcurlsec_error_unknown_issuer/</guid><description>&lt;p&gt;Let&amp;rsquo;s Encryptの証明書を使っているサーバにcURLで接続するとSEC &lt;em&gt;ERROR&lt;/em&gt; UNKNOWN_ISSUERで失敗する場合がありました。 ROOT CAは信頼済みになっていますが、中間証明書を信頼できずに失敗していました。 なお、Widows上のGoogle Chromeからは問題ありませんでした。&lt;/p&gt;
&lt;p&gt;curl -vの結果は以下のようになっていました。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: cacert.pem
CApath: none
* Server certificate:
* subject: CN=www.sei-yo.jp
* start date: Jul 25 15:26:52 2020 GMT
* expire date: Oct 23 15:26:52 2020 GMT
* common name: www.sei-yo.jp
* issuer: CN=Let's Encrypt Authority X3,O=Let's Encrypt,C=US
* NSS error -8179 (SEC_ERROR_UNKNOWN_ISSUER)
* Peer's Certificate issuer is not recognized.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;中間証明書は以下にあります。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://letsencrypt.org/ja/certificates/"&gt;https://letsencrypt.org/ja/certificates/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem.txt"&gt;https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem.txt&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Linux Kernelが対応していないUSBデバイスを使用する方法</title><link>https://blog.sei-yo.jp/engineer/2020/08/posts/linux_kernelusb/</link><pubDate>Sat, 01 Aug 2020 02:15:52 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2020/08/posts/linux_kernelusb/</guid><description>&lt;p&gt;ここで言うLinux Kernelが対応していないUSBデバイスというのは、デバイスのベンダーID（VID）とプロダクトID（PID）がカーネルのドライバが知らないために、ドライバはあるのにデバイスを認識しないということになってしまうデバイスのことを指します。 つまり、ドライバが知らないVID、PIDのUSBデバイスを使用する方法ということです。 以下の二つがあります。一つ目しか知らなかったのですが二つ目を知って便利になったのでここに書きます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ドライバをコンパイル&lt;/li&gt;
&lt;li&gt;ドライバに/sys のnew_idを使ってIDを伝える&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="ドライバをコンパイル"&gt;ドライバをコンパイル&lt;/h1&gt;
&lt;p&gt;私の知る限り、USBデバイス用のドライバは通常、いくつかの（と言っても多数の）VIDとPIDの組み合わせを知っています。そしてその情報はソースコードに埋め込まれています。そのため新しいUSBデバイスに対応するためにはソースコードの修正を行って、コンパイルして利用する必要があります。 Linux Kernelに付属のドライバを使う場合には、以下の記事にあるような方法でコンパイルして利用する必要があります。しかし、Linux Kernelに付属のドライバはKernelバージョン毎にあるためKernelのアップデートをする度にドライバのコンパイルが必要になってしまいます。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.sei-yo.jp/blog/seiyo_memo/2011/12/wli-uc-gnhostapd-ap.html"&gt;WLI-UC-GNでhostapd 使ってAP化に成功&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Kernel アップデートの度にコンパイルするのはかなりの手間なのでこれを防ぐには、Kernelのアップストリームに取り込んでもらう手があります。修正内容としてはVIDとPIDが列挙されている個所に1つ追加するだけなので軽微ですが、Linux Kernelの修正の流儀がわかっておらず依頼していません。&lt;/p&gt;
&lt;h1 id="ドライバにsys-のnew_idを使ってidを伝える"&gt;ドライバに/sys のnew_idを使ってIDを伝える&lt;/h1&gt;
&lt;p&gt;ドライバに動的にVID PIDを伝えることでデバイスを使えるようにする方法があります。 /sys/bus/usb/drivers/の下にドライバ名のディレクトリがあればその下のnew_idにVID PIDを書き込みます。 するとドライバがそのデバイスを利用可能にしてくれます。 ドライバ名のディレクトリがない場合は該当のドライバが読み込まれていないのでmodprobeコマンドで読み込む必要があります。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo &amp;quot;0411 014F&amp;quot; &amp;gt; /sys/bus/usb/drivers/rt2800usb/new_id
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;modprobeコマンドで読み込むのを自動で行うには/etc/modulesファイルにドライバ名を書きます。 また、/etc/modprobe.d/の下に拡張子を.confにしたファイルを置いて以下のように書くとOS起動時に上記コマンドまで実施してくれて便利です。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;install rt2800usb /sbin/modprobe -i rt2800usb; echo &amp;quot;0411 014F&amp;quot; &amp;gt; /sys/bus/usb/drivers/rt2800usb/new_id
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Nginxでのレスポンスボディの書き換え</title><link>https://blog.sei-yo.jp/engineer/2020/07/posts/nginx/</link><pubDate>Sat, 18 Jul 2020 03:25:03 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2020/07/posts/nginx/</guid><description>&lt;p&gt;Nginxでのレスポンスボディの書き換え方法を調べていたら、&lt;a href="https://docs.nginx.com/nginx/admin-guide/dynamic-modules/http-substitutions-filter/"&gt;HTTP Substitutions Filter&lt;/a&gt;というのがあったので、Nginx Plusで使うかモジュールコンパイルして使うしかないのかと思っていたら、&lt;a href="https://nginx.org/en/docs/http/ngx_http_sub_module.html"&gt;sub_module&lt;/a&gt;というモジュールがsub_filterディレクティブを提供していてこれで実現可能でした。&lt;/p&gt;
&lt;p&gt;ちなみにApache2の場合にはExtFilterというのがあって、ここで好きなプログラムを使って自由にレスポンスを書き換え可能です。 Nginxのsub_moduleの場合は変数は利用可能であるものの単純な文字列の置換しかできないようです。&lt;a href="https://docs.nginx.com/nginx/admin-guide/dynamic-modules/http-substitutions-filter/"&gt;HTTP Substitutions Filter&lt;/a&gt;の場合は、正規表現も使えるようです。 外部コマンドを使った書き換えを簡単に定義するものはないのでしょうか。&lt;/p&gt;</description></item><item><title>vagrant failed with "`chmod': Operation not permitted @ chmod_internal - /home/user/.vagrant.d/insecure_private_key (Errno::EPERM)"</title><link>https://blog.sei-yo.jp/engineer/2020/07/posts/vagrant_failed_with_chmod_operation_not_permitted_chmod_internal_-_homeuservagrantdinsecure_private/</link><pubDate>Wed, 15 Jul 2020 00:40:14 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2020/07/posts/vagrant_failed_with_chmod_operation_not_permitted_chmod_internal_-_homeuservagrantdinsecure_private/</guid><description>&lt;p&gt;vagrant コマンドを実行すると以下のエラーが出て失敗しました。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/usr/lib/ruby/vendor_ruby/vagrant/environment.rb:858:in `chmod': Operation not permitted @ chmod_internal - /home/user/.vagrant.d/insecure_private_key (Errno::EPERM)
 from /usr/lib/ruby/vendor_ruby/vagrant/environment.rb:858:in `chmod'
 from /usr/lib/ruby/vendor_ruby/vagrant/environment.rb:858:in `copy_insecure_private_key'
 from /usr/lib/ruby/vendor_ruby/vagrant/environment.rb:152:in `initialize'
 from /usr/bin/vagrant:169:in `new'
 from /usr/bin/vagrant:169:in `&amp;lt;main&amp;gt;'
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;environment.rbを見てみると、chmod で 0600 にしようとして失敗しているようです。 /home/user/.vagrant.d/insecure_private_key はvagrantコマンドを実行するユーザのオーナーになっていなかったために失敗していたので、オーナーを変更することでエラーなく実行できるようになりました。&lt;/p&gt;</description></item><item><title>SELinuxの使い方の概要（RHEL7のガイドの要約）</title><link>https://blog.sei-yo.jp/engineer/2020/06/posts/selinuxrhel7/</link><pubDate>Tue, 23 Jun 2020 21:36:51 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2020/06/posts/selinuxrhel7/</guid><description>&lt;p&gt;RHEL7のドキュメントである、&lt;a href="https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html-single/selinux_users_and_administrators_guide/index"&gt;「SELINUX ユーザーおよび管理者のガイド」&lt;/a&gt;を読んでSELinuxを勉強しながら、今後使いそうな部分の内容を整理したものです。&lt;/p&gt;
&lt;h1 id="はじめに"&gt;はじめに&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;SELinuxによるアクセス制御は、Mandatory Access Control（MAC）を実装したもの。ほかに、従来からあるユーザとグループとディレクトリやファイルのモードによるものはDiscretionary Access Controlがある。&lt;/li&gt;
&lt;li&gt;SELinuxのポリシールールは、DACの後に適用されるため、DACで拒否するものにはSELinuxのポリシールールは適用されず、SELinuxのログにも残らない。&lt;/li&gt;
&lt;li&gt;SELinuxのポリシールールは、SELinuxコンテキストというラベルを使って記述する。SELinuxコンテキストは、それぞれのプロセスやシステムリソースに割り当てられる。&lt;/li&gt;
&lt;li&gt;SELinuxコンテキストには、次のフィールドがある。：ユーザー、ロール、タイプ、セキュリティーレベル&lt;/li&gt;
&lt;li&gt;このうち、タイプの利用頻度が高い。タイプは、通常_tで終わる名前を持つ。なお、タイプのことをタイプコンテキストと呼ぶ。ほかにドメインと呼ぶ場合もある。&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="selinux-コンテキスト"&gt;SELINUX コンテキスト&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;SELinuxステータスの確認方法：sestatus&lt;/li&gt;
&lt;li&gt;ロールの定義はプロセスのみ有効で、ファイルに対しては無効。&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="ターゲットポリシー"&gt;ターゲットポリシー&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;SELINUX を使った作業 ====================&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="selinuxを使った作業"&gt;SELinuxを使った作業&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;ブール値の一覧出力：getsebool -a semanageコマンドをインストールしておくと、説明付きで表示できたりするので便利。 ブール値は特定の用途毎にonかoffかの設定があり、これを変更するだけでSELinuxのポリシーを変更できる。&lt;/li&gt;
&lt;li&gt;ブール値の設定：setsebool -P パラメータ名 {on|off} -Pは恒久設定にするためのオプション。-Pがない場合は再起動後は変更前の状態になる。&lt;/li&gt;
&lt;li&gt;一時的なファイルコンテキストの変更：chcon -t タイプ ファイル名 一時的な変更として変更可能。-Rはrecursive。&lt;/li&gt;
&lt;li&gt;ターゲットポリシーによるファイルコンテキストの変更：restorecon -v ファイル名 /etc/selinux/targeted/contexts/files/にあるファイルに従ってコンテキストを復元する。-vはverbose。&lt;/li&gt;
&lt;li&gt;ターゲットポリシーの変更：semanage fcontext -a -t タイプ ファイルのフルパスまたは&amp;quot;正規表現&amp;quot; ターゲットポリシーを変更するだけで、ファイルのコンテキストは変更しない。restoreconで適用する。-aはコンテキストの新規追加。 なお、ファイルのコンテキストは基本的に親ディレクトリのコンテキストを引き継ぐ。&lt;/li&gt;
&lt;li&gt;ターゲットポリシーからの削除：semanage fcontext -d パスまたは&amp;quot;正規表現&amp;quot; なお、semanageはsetfilesコマンド等を利用している。&lt;/li&gt;
&lt;li&gt;コンテキストのマウント：mount -o context=SELinux_user:role:type:level ここで指定したコンテキストはファイルシステムに対して変更されず、一時的なものとして利用できる。 拡張属性（EA）に対応していない（コンテキストの記録ができない）場合にも利用可能。 この場合は、chconによるコンテキスト変更はできない。&lt;/li&gt;
&lt;li&gt;コンテキストを含めてファイルをコピー：cp &amp;ndash;preserve=context オプションがない場合は、通常のターゲットポリシーに基づき設定。通常は親ディレクトリを継承。&lt;/li&gt;
&lt;li&gt;コンテキストを指定してファイルをコピー：cp &amp;ndash;context=system &lt;em&gt;u:object&lt;/em&gt; r:samba &lt;em&gt;share&lt;/em&gt; t:s0&lt;/li&gt;
&lt;li&gt;ファイル、ディレクトリの移動：mv 移動時はコンテキストが維持される。そのため、ターゲットポリシーに合わずアクセスできない場合が多い。&lt;/li&gt;
&lt;li&gt;ターゲットポリシーと実際のファイルの比較：matchpathcon -V ファイル 差分を表示する。適用する場合はrestoreconを使う。&lt;/li&gt;
&lt;li&gt;コンテキストを維持してtarする：tar &amp;ndash;selinux オプションがない場合はコンテキスト情報は失う。&lt;/li&gt;
&lt;li&gt;tarの展開時にターゲットポリシーを適用する：tar -xvf archive.tar | restorecon -f -&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>cpanm XML::LibXML::SAXでEnv.pmが必要</title><link>https://blog.sei-yo.jp/engineer/2020/06/posts/cpanm_xmllibxmlsaxenvpm/</link><pubDate>Fri, 19 Jun 2020 23:18:30 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2020/06/posts/cpanm_xmllibxmlsaxenvpm/</guid><description>&lt;p&gt;cpanm XML::LibXML::SAXでXML::LibXML::SAXをインストールしようとしたところ、以下のエラーとなりました。 cpanm EnvでEnv.pmをインストールしたところ、エラーがなくなりました。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cpanm (App::cpanminus) 1.7044 on perl 5.016003 built for x86_64-linux-thread-multi
Work directory is /root/.cpanm/work/1592575613.22094
You have make /bin/make
You have LWP 6.45
You have /bin/tar: tar (GNU tar) 1.26
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by John Gilmore and Jay Fenlason.
Searching XML::LibXML::SAX () on cpanmetadb ...
--&amp;gt; Working on XML::LibXML::SAX
Fetching http://www.cpan.org/authors/id/S/SH/SHLOMIF/XML-LibXML-2.0205.tar.gz
-&amp;gt; OK
Unpacking XML-LibXML-2.0205.tar.gz
Entering XML-LibXML-2.0205
Checking configure dependencies from META.json
Checking if you have ExtUtils::MakeMaker 6.58 ... Yes (6.68)
Checking if you have Alien::Base::Wrapper 0 ... No
Checking if you have Alien::Libxml2 0.14 ... No
Checking if you have Config 0 ... Yes (undef)
==&amp;gt; Found dependencies: Alien::Base::Wrapper, Alien::Libxml2
Searching Alien::Base::Wrapper (0) on cpanmetadb ...
--&amp;gt; Working on Alien::Base::Wrapper
Fetching http://www.cpan.org/authors/id/P/PL/PLICEASE/Alien-Build-2.26.tar.gz
-&amp;gt; OK
Unpacking Alien-Build-2.26.tar.gz
Entering Alien-Build-2.26
Checking configure dependencies from META.json
Checking if you have ExtUtils::ParseXS 3.30 ... Yes (3.35)
Checking if you have ExtUtils::MakeMaker 6.64 ... Yes (6.68)
Checking if you have File::Which 0 ... No
Checking if you have ExtUtils::CBuilder 0 ... Yes (0.280234)
==&amp;gt; Found dependencies: File::Which
Searching File::Which (0) on cpanmetadb ...
--&amp;gt; Working on File::Which
Fetching http://www.cpan.org/authors/id/P/PL/PLICEASE/File-Which-1.23.tar.gz
-&amp;gt; OK
Unpacking File-Which-1.23.tar.gz
Entering File-Which-1.23
Checking configure dependencies from META.json
Checking if you have ExtUtils::MakeMaker 6.58 ... Yes (6.68)
Configuring File-Which-1.23
Running Makefile.PL
Checking if your kit is complete...
Looks good
Writing Makefile for File::Which
Writing MYMETA.yml and MYMETA.json
-&amp;gt; OK
Checking dependencies from MYMETA.json ...
Checking if you have Test::More 0.47 ... Yes (1.302175)
Checking if you have ExtUtils::MakeMaker 0 ... Yes (6.68)
Building and testing File-Which-1.23
cp lib/File/Which.pm blib/lib/File/Which.pm
Manifying blib/man3/File::Which.3pm
PERL_DL_NONLAZY=1 /usr/bin/perl &amp;quot;-MExtUtils::Command::MM&amp;quot; &amp;quot;-e&amp;quot; &amp;quot;test_harness(0, 'blib/lib', 'blib/arch')&amp;quot; t/*.t
#
#
#
# HARNESS_ACTIVE=1
# HARNESS_VERSION=3.42
# LANG=C
# LC_ALL=C
# LC_MESSAGES=C
# PERL5LIB=/root/.cpanm/work/1592575613.22094/File-Which-1.23/blib/lib:/root/.cpanm/work/1592575613.22094/File-Which-1.23/blib/arch
# PERL_DL_NONLAZY=1
# PERL_MM_USE_DEFAULT=1
# PERL_USE_UNSAFE_INC=1
# SHELL=/bin/bash
#
#
#
# PERL5LIB path
# /root/.cpanm/work/1592575613.22094/File-Which-1.23/blib/lib
# /root/.cpanm/work/1592575613.22094/File-Which-1.23/blib/arch
#
#
#
# perl 5.016003
# ExtUtils::MakeMaker 6.68
# Test::More 1.302175
#
#
#
t/00_diag.t ..... ok
t/01_use.t ...... ok
Can't locate Env.pm in @INC (@INC contains: /root/.cpanm/work/1592575613.22094/File-Which-1.23/blib/lib /root/.cpanm/work/1592575613.22094/File-Which-1.23/blib/arch /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at t/file_which.t line 3.
BEGIN failed--compilation aborted at t/file_which.t line 3.
t/file_which.t ..
Dubious, test returned 2 (wstat 512, 0x200)
No subtests run

Test Summary Report
-------------------
t/file_which.t (Wstat: 512 Tests: 0 Failed: 0)
 Non-zero exit status: 2
 Parse errors: No plan found in TAP output
Files=3, Tests=2, 0 wallclock secs ( 0.02 usr 0.00 sys + 0.12 cusr 0.01 csys = 0.15 CPU)
Result: FAIL
Failed 1/3 test programs. 0/2 subtests failed.
make: *** [test_dynamic] Error 2
-&amp;gt; FAIL Installing File::Which failed. See /root/.cpanm/work/1592575613.22094/build.log for details. Retry with --force to force install it.
-&amp;gt; FAIL Installing the dependencies failed: Module 'File::Which' is not installed
-&amp;gt; FAIL Bailing out the installation for Alien-Build-2.26.
Searching Alien::Libxml2 (0.14) on cpanmetadb ...
--&amp;gt; Working on Alien::Libxml2
Fetching http://www.cpan.org/authors/id/P/PL/PLICEASE/Alien-Libxml2-0.16.tar.gz
-&amp;gt; OK
Unpacking Alien-Libxml2-0.16.tar.gz
Entering Alien-Libxml2-0.16
Checking configure dependencies from META.json
Checking if you have ExtUtils::MakeMaker 6.58 ... Yes (6.68)
Checking if you have Alien::Build::Plugin::Build::SearchDep 0.35 ... No
Checking if you have Alien::Build::Plugin::Probe::Vcpkg 0 ... No
Checking if you have Alien::Build 2.12 ... No
Checking if you have Alien::Build::MM 2.12 ... No
Checking if you have Alien::Build::Plugin::Prefer::BadVersion 1.05 ... No
Checking if you have ExtUtils::CBuilder 0 ... Yes (0.280234)
==&amp;gt; Found dependencies: Alien::Build::Plugin::Build::SearchDep, Alien::Build::Plugin::Probe::Vcpkg, Alien::Build, Alien::Build::MM, Alien::Build::Plugin::Prefer::BadVersion
Searching Alien::Build::Plugin::Build::SearchDep (0.35) on cpanmetadb ...
Already tried Alien-Build-2.26. Skipping.
Searching Alien::Build::Plugin::Probe::Vcpkg (0) on cpanmetadb ...
Already tried Alien-Build-2.26. Skipping.
Searching Alien::Build (2.12) on cpanmetadb ...
Already tried Alien-Build-2.26. Skipping.
Searching Alien::Build::MM (2.12) on cpanmetadb ...
Already tried Alien-Build-2.26. Skipping.
Searching Alien::Build::Plugin::Prefer::BadVersion (1.05) on cpanmetadb ...
Already tried Alien-Build-2.26. Skipping.
-&amp;gt; FAIL Installing the dependencies failed: Module 'Alien::Build::Plugin::Build::SearchDep' is not installed, Module 'Alien::Build::Plugin::Probe::Vcpkg' is not installed, Module 'Alien::Build' is not installed, Module 'Alien::Build::MM' is not installed, Module 'Alien::Build::Plugin::Prefer::BadVersion' is not installed
-&amp;gt; FAIL Bailing out the installation for Alien-Libxml2-0.16.
-&amp;gt; FAIL Installing the dependencies failed: Module 'Alien::Base::Wrapper' is not installed, Module 'Alien::Libxml2' is not installed
-&amp;gt; FAIL Bailing out the installation for XML-LibXML-2.0205.
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>cpanm XML::SAX::ExpatXSでFatal.pmのインストールが必要</title><link>https://blog.sei-yo.jp/engineer/2020/06/posts/cpanm_xmlsaxexpatxsfatalpm/</link><pubDate>Fri, 19 Jun 2020 23:12:40 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2020/06/posts/cpanm_xmlsaxexpatxsfatalpm/</guid><description>&lt;p&gt;cpanm XML::SAX::ExpatXSでXML::SAX::ExpatXSをインストールしようとしたところ、以下のエラーメッセージが出ました。 cpanm FatalでFatal.pmをインストールしたらエラーが出なくなりました。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cpanm (App::cpanminus) 1.7044 on perl 5.016003 built for x86_64-linux-thread-multi
Work directory is /root/.cpanm/work/1592574714.18422
You have make /bin/make
You have LWP 6.45
You have /bin/tar: tar (GNU tar) 1.26
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by John Gilmore and Jay Fenlason.
Searching XML::SAX::ExpatXS () on cpanmetadb ...
--&amp;gt; Working on XML::SAX::ExpatXS
Fetching http://www.cpan.org/authors/id/P/PC/PCIMPRICH/XML-SAX-ExpatXS-1.33.tar.gz
-&amp;gt; OK
Unpacking XML-SAX-ExpatXS-1.33.tar.gz
Entering XML-SAX-ExpatXS-1.33
Checking configure dependencies from META.yml
Checking if you have ExtUtils::MakeMaker 6.58 ... Yes (6.68)
Configuring XML-SAX-ExpatXS-1.33
Running Makefile.PL
Warning: prerequisite XML::SAX 0.96 not found.
Writing XML::SAX::ExpatXS::Preload
Checking if your kit is complete...
Looks good
Do you want to alter ParserDetails.ini? [Y] Y
Writing Makefile for XML::SAX::ExpatXS
Writing MYMETA.yml and MYMETA.json
-&amp;gt; OK
Checking dependencies from MYMETA.json ...
Checking if you have XML::SAX 0.96 ... No
Checking if you have ExtUtils::MakeMaker 0 ... Yes (6.68)
==&amp;gt; Found dependencies: XML::SAX
Searching XML::SAX (0.96) on cpanmetadb ...
--&amp;gt; Working on XML::SAX
Fetching http://www.cpan.org/authors/id/G/GR/GRANTM/XML-SAX-1.02.tar.gz
-&amp;gt; OK
Unpacking XML-SAX-1.02.tar.gz
Entering XML-SAX-1.02
Checking configure dependencies from META.json
Checking if you have ExtUtils::MakeMaker 6.58 ... Yes (6.68)
Configuring XML-SAX-1.02
Running Makefile.PL
Checking if your kit is complete...
Looks good
Writing Makefile for XML::SAX
Writing MYMETA.yml and MYMETA.json
-&amp;gt; OK
Checking dependencies from MYMETA.json ...
Checking if you have XML::NamespaceSupport 0.03 ... Yes (1.12)
Checking if you have XML::SAX::Base 1.05 ... Yes (1.09)
Checking if you have ExtUtils::MakeMaker 0 ... Yes (6.68)
Checking if you have File::Temp 0 ... Yes (0.2301)
Building and testing XML-SAX-1.02
cp lib/XML/SAX/PurePerl/EncodingDetect.pm blib/lib/XML/SAX/PurePerl/EncodingDetect.pm
cp lib/XML/SAX/PurePerl/Reader/UnicodeExt.pm blib/lib/XML/SAX/PurePerl/Reader/UnicodeExt.pm
cp lib/XML/SAX/PurePerl/Reader/Stream.pm blib/lib/XML/SAX/PurePerl/Reader/Stream.pm
cp lib/XML/SAX.pm blib/lib/XML/SAX.pm
cp lib/XML/SAX/PurePerl/DTDDecls.pm blib/lib/XML/SAX/PurePerl/DTDDecls.pm
cp lib/XML/SAX/PurePerl/Reader/NoUnicodeExt.pm blib/lib/XML/SAX/PurePerl/Reader/NoUnicodeExt.pm
cp lib/XML/SAX/DocumentLocator.pm blib/lib/XML/SAX/DocumentLocator.pm
cp lib/XML/SAX/PurePerl/Reader/String.pm blib/lib/XML/SAX/PurePerl/Reader/String.pm
cp lib/XML/SAX/PurePerl/UnicodeExt.pm blib/lib/XML/SAX/PurePerl/UnicodeExt.pm
cp lib/XML/SAX/PurePerl/Exception.pm blib/lib/XML/SAX/PurePerl/Exception.pm
cp lib/XML/SAX/PurePerl/DocType.pm blib/lib/XML/SAX/PurePerl/DocType.pm
cp lib/XML/SAX/PurePerl/DebugHandler.pm blib/lib/XML/SAX/PurePerl/DebugHandler.pm
cp lib/XML/SAX/Intro.pod blib/lib/XML/SAX/Intro.pod
cp lib/XML/SAX/ParserFactory.pm blib/lib/XML/SAX/ParserFactory.pm
cp lib/XML/SAX/PurePerl/Reader/URI.pm blib/lib/XML/SAX/PurePerl/Reader/URI.pm
cp lib/XML/SAX/PurePerl/XMLDecl.pm blib/lib/XML/SAX/PurePerl/XMLDecl.pm
cp lib/XML/SAX/PurePerl/Reader.pm blib/lib/XML/SAX/PurePerl/Reader.pm
cp lib/XML/SAX/PurePerl.pm blib/lib/XML/SAX/PurePerl.pm
cp lib/XML/SAX/PurePerl/NoUnicodeExt.pm blib/lib/XML/SAX/PurePerl/NoUnicodeExt.pm
cp lib/XML/SAX/PurePerl/Productions.pm blib/lib/XML/SAX/PurePerl/Productions.pm
Manifying blib/man3/XML::SAX::ParserFactory.3pm
Manifying blib/man3/XML::SAX.3pm
Manifying blib/man3/XML::SAX::Intro.3pm
Manifying blib/man3/XML::SAX::PurePerl::Reader.3pm
Manifying blib/man3/XML::SAX::PurePerl.3pm
Manifying blib/man3/XML::SAX::DocumentLocator.3pm
PERL_DL_NONLAZY=1 /usr/bin/perl &amp;quot;-MExtUtils::Command::MM&amp;quot; &amp;quot;-e&amp;quot; &amp;quot;test_harness(0, 'blib/lib', 'blib/arch')&amp;quot; t/*.t
t/00basic.t ....... ok
t/01known.t ....... ok
t/10xmldecl1.t .... ok
t/11xmldecl2.t .... ok
t/12miscstart.t ... ok
t/13int_ent.t ..... ok
t/14encoding.t .... ok
t/15element.t ..... ok
parsed 80085 bytes in 0 seconds
t/16large.t ....... ok
t/19pi.t .......... ok
t/20factory.t ..... ok
Can't locate Fatal.pm in @INC (@INC contains: /root/.cpanm/work/1592574714.18422/XML-SAX-1.02/blib/lib /root/.cpanm/work/1592574714.18422/XML-SAX-1.02/blib/arch /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at t/21saxini.t line 6.
BEGIN failed--compilation aborted at t/21saxini.t line 6.
t/21saxini.t ......
Dubious, test returned 2 (wstat 512, 0x200)
No subtests run
t/30parse_file.t .. ok
t/40cdata.t ....... ok
t/42entities.t .... ok
t/99cleanup.t ..... ok

Test Summary Report
-------------------
t/21saxini.t (Wstat: 512 Tests: 0 Failed: 0)
 Non-zero exit status: 2
 Parse errors: No plan found in TAP output
Files=16, Tests=105, 1 wallclock secs ( 0.05 usr 0.01 sys + 0.66 cusr 0.12 csys = 0.84 CPU)
Result: FAIL
Failed 1/16 test programs. 0/105 subtests failed.
make: *** [test_dynamic] Error 255
-&amp;gt; FAIL Installing XML::SAX failed. See /root/.cpanm/work/1592574714.18422/build.log for details. Retry with --force to force install it.
-&amp;gt; FAIL Installing the dependencies failed: Module 'XML::SAX' is not installed
-&amp;gt; FAIL Bailing out the installation for XML-SAX-ExpatXS-1.33.
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>cpanm Safeでインストールしようとするとテストでエラーとなって失敗する</title><link>https://blog.sei-yo.jp/engineer/2020/06/posts/cpanm_safe/</link><pubDate>Thu, 18 Jun 2020 01:25:18 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2020/06/posts/cpanm_safe/</guid><description>&lt;p&gt;cpanm Safeでインストールしようとするとテストでエラーとなって失敗しました。 対処法わからず。。。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Running Makefile.PL
Checking if your kit is complete...
Looks good
Writing Makefile for Safe
Writing MYMETA.yml and MYMETA.json
-&amp;gt; OK
Checking dependencies from MYMETA.json ...
Checking if you have ExtUtils::MakeMaker 0 ... Yes (6.68)
Building and testing Safe-2.35
cp Safe.pm blib/lib/Safe.pm
Manifying blib/man3/Safe.3pm
PERL_DL_NONLAZY=1 /usr/bin/perl &amp;quot;-MExtUtils::Command::MM&amp;quot; &amp;quot;-e&amp;quot; &amp;quot;test_harness(0, 'blib/lib', 'blib/arch')&amp;quot; t/*.t
t/safe1.t .......... ok
t/safe2.t .......... ok
t/safe3.t .......... ok
Possible unintended interpolation of @INC in string at /usr/lib64/perl5/DynaLoader.pm line 90.

# Failed test 'Can load version.pm in a Safe compartment'
# at t/safeload.t line 26.
# Unable to create sub named &amp;quot;*Safe::Root0::version::vxs::numify&amp;quot; at /usr/local/lib64/perl5/version.pm line 48.
# Compilation failed in require at (eval 11) line 1.
# BEGIN failed--compilation aborted at (eval 11) line 1.
# Looks like you failed 1 test of 3.
t/safeload.t .......
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/3 subtests
t/safenamedcap.t ... ok
t/safeops.t ........ skipped: PERL_CORE unset
t/saferegexp.t ..... ok
t/safesort.t ....... ok
t/safeuniversal.t .. ok
t/safeutf8.t ....... ok
t/safewrap.t ....... ok

Test Summary Report
-------------------
t/safeload.t (Wstat: 256 Tests: 3 Failed: 1)
 Failed test: 1
 Non-zero exit status: 1
Files=11, Tests=98, 1 wallclock secs ( 0.04 usr 0.02 sys + 0.53 cusr 0.08 csys = 0.67 CPU)
Result: FAIL
Failed 1/11 test programs. 1/98 subtests failed.
make: *** [test_dynamic] Error 255
-&amp;gt; FAIL Installing Safe failed. See /root/.cpanm/work/1592328454.16336/build.log for details. Retry with --force to force install it.
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>insecure registry of Docker（GWアドベントカレンダー 8日目）</title><link>https://blog.sei-yo.jp/engineer/2020/05/posts/insecure_registry_of_dockergw_8/</link><pubDate>Thu, 07 May 2020 04:26:37 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2020/05/posts/insecure_registry_of_dockergw_8/</guid><description>&lt;p&gt;この記事はGWアドベントカレンダーの8日目の記事です。&lt;/p&gt;
&lt;p&gt;GitLabのパイプラインでdocker loginしようとすると以下のエラーで失敗しました。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; docker -l debug login -u gitlab-ci-token -p ${CI_BUILD_TOKEN} http://${CI_REGISTRY}
 Error response from daemon: Get https://xxx.xxx.xxx.xxx:4567/v2/: http: server gave HTTP response to HTTPS client
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;以下にあるdaemon.jsonの設定をrunnerに追加することで解決しました。 registryをHTTPS化することも考えましたが、このregistryがリバースプロキシ配下になく、一旦HTTPのままで対処しました。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://docs.docker.com/registry/insecure/"&gt;Test an insecure registry&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Ansible実践ガイドを読んだ。（GWアドベントカレンダー 7日目）</title><link>https://blog.sei-yo.jp/engineer/2020/05/posts/ansiblegw_7/</link><pubDate>Wed, 06 May 2020 01:27:26 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2020/05/posts/ansiblegw_7/</guid><description>&lt;p&gt;この記事はGWアドベントカレンダーの7日目の記事です。&lt;/p&gt;
&lt;p&gt;「Ansible 実践ガイド 第3版」を読みました。 この本は、これからAnsibleを始めようとする方や少し触ってみたものの、実際の環境にどのように適用すべきか検討し始めたくらいの方に最適と思います。 ただ、既に色々とAnsibleを適用しているものの構成が複雑で保守しづらくなってしまうというような方にも向いていると思います。 具体的なプレイブックの例がいくつも紹介されており、それぞれにプレイブックのノウハウがあります。&lt;/p&gt;
&lt;p&gt;AnsibleやYAMLについての基本的な説明から始まっていて、その後具体的なプレイブックの紹介や保守性を考慮したディレクトリ構成等の実践的な内容へと移っていきます。 プレイブックのデバッグ方法についても様々な手法が説明されており、Ansibleを利用していく上で必要なことが一通り学べるようになっていると思います。&lt;/p&gt;</description></item><item><title>Infrastructure as Code関連の書籍紹介（GWアドベントカレンダー 6日目）</title><link>https://blog.sei-yo.jp/engineer/2020/05/posts/infrastructure_as_codegw_6/</link><pubDate>Tue, 05 May 2020 03:23:11 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2020/05/posts/infrastructure_as_codegw_6/</guid><description>&lt;p&gt;この記事はGWアドベントカレンダーの6日目の記事です。&lt;/p&gt;
&lt;p&gt;IaCに関連する最近読んだ本の紹介です。 読んだ順に書いていますが、Ansible実践ガイドはまだ記事を書いていないのでここで簡単に紹介します。 Ansible を自由に利用できるようになるための基礎が幅広く記載されています。そのため、「インフラCI 実践ガイド」にもAnsibleが使われていますが、この内容を理解するのにも役立ちました。 また、これから新規にプレイブックを作るときの設計のポイントも記載されています。 Linuxサーバ向けだけでなく、Windowsやネットワーク機器向けの設定についても記載されており、これらを理解することでAnsibleのエコシステムや思想の理解が深まり様々な応用ができるようになります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.sei-yo.jp/blog/engineer/2020/02/infrastructure-as-code.html"&gt;「Infrastructure as Code」&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sei-yo.jp/blog/engineer/2020/02/kubernetes.html"&gt;「しくみがわかるKubernetes」&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sei-yo.jp/blog/engineer/2020/03/infraci.html"&gt;「インフラCI 実践ガイド」&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ansible 実践ガイド 第3版&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>sshのauthorized_keysの高速化（GWアドベントカレンダー 5日目）</title><link>https://blog.sei-yo.jp/engineer/2020/05/posts/sshauthorized_keysgw_5/</link><pubDate>Mon, 04 May 2020 00:48:47 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2020/05/posts/sshauthorized_keysgw_5/</guid><description>&lt;p&gt;この記事はGWアドベントカレンダーの5日目の記事です。&lt;/p&gt;
&lt;p&gt;Gitlabのリポジトリにsshで接続するときはOSのgitユーザを使います。 このユーザはGitlabのユーザすべてで共用します。 そのため、全利用者の公開鍵情報をgitユーザに紐付けて管理する必要があります。&lt;/p&gt;
&lt;p&gt;これを実現する方法として、gitユーザのauthorized_keysに全ユーザ分の公開鍵を書いておく方法がありますが、sshアクセスの度にファイルを上からスキャンし、確認する必要があり効率が悪いです。 そこでユーザ名に応じた公開鍵を返すコマンドを用意することで余計な確認を減らすことで高速化することができる仕組みがあります。&lt;/p&gt;
&lt;p&gt;以下にGitlabでの設定の仕方が書いてありますが、OpenSSHの提供するAuthorizedKeysCommandという設定を使うことで実現できます。この設定に、公開鍵を返すコマンドを指定します。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://docs.gitlab.com/ee/administration/operations/fast_ssh_key_lookup.html"&gt;Fast lookup of authorized SSH keys in the database&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;この仕組みを使うと、gitユーザのauthorized_keysに公開鍵を記載する必要がありません。&lt;/p&gt;</description></item><item><title>PC上でのIaC環境の概要（GWアドベントカレンダー 4日目）</title><link>https://blog.sei-yo.jp/engineer/2020/05/posts/pciacgw_4/</link><pubDate>Sun, 03 May 2020 01:56:15 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2020/05/posts/pciacgw_4/</guid><description>&lt;p&gt;この記事はGWアドベントカレンダーの4日目の記事です。&lt;/p&gt;
&lt;p&gt;自宅のPCにIaC環境を構築中ですが、その環境について少し説明します。&lt;/p&gt;
&lt;h1 id="使用するツール"&gt;使用するツール&lt;/h1&gt;
&lt;p&gt;1台の物理Linuxサーバ上にすべての環境を構築します。 仮想マシンはVagrant + Virtual Boxで構築します。 コンテナはDockerで構築します。 構築ツールとしてAnsibleを使います。 CI/CDを実現するためのツールとしてGitlab、Gitlab Runnerを使います。&lt;/p&gt;
&lt;h1 id="gitlabgitlab-runnerの構築"&gt;Gitlab、Gitlab Runnerの構築&lt;/h1&gt;
&lt;p&gt;GitlabとGitlab RunnerはAnsibleを使って、仮想マシンから作成します。 本番用とテスト用があり、テスト用の構築は本番用のGitlabのバックアップデータを使ってリストアすることで本番と同じデータを持つようにしています。&lt;/p&gt;
&lt;h1 id="物理linuxサーバの構築"&gt;物理Linuxサーバの構築&lt;/h1&gt;
&lt;p&gt;OSインストール後の各種設定類はAnsibleにまとめようと思っていますが、まだできていません。&lt;/p&gt;
&lt;h1 id="ansibleとvagrantの連携"&gt;AnsibleとVagrantの連携&lt;/h1&gt;
&lt;p&gt;Ansibleのプレイブック（Gitlabのパイプラインからの呼び出しや手動実行）によって、Vagrant経由で仮想マシンを作成することがあります。 しかし、AnsibleのInventory PluginとしてはVagrant用のものが正式にはありません。そのため、作成した仮想マシンに対してプレイブックを実行するためには何らかの方法を考える必要があります。 一つはInventory PluginもしくはScriptを作ること、もう一つは作成する仮想マシン情報をあらかじめインベントリファイルに記載しておくことが考えられます。 どちらの方法でも実現できそうですが、どのようにするか検討中です。&lt;/p&gt;
&lt;h1 id="今後の展望"&gt;今後の展望&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;物理Linuxサーバ構築用のパイプライン構築&lt;/li&gt;
&lt;li&gt;Kubernetesを動かす。 その上で、各種アプリケーションを動かす予定です。&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>GitlabとGitlab Runnerのバージョン情報（GWアドベントカレンダー 3日目）</title><link>https://blog.sei-yo.jp/engineer/2020/05/posts/gitlab_version/</link><pubDate>Sat, 02 May 2020 00:09:26 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2020/05/posts/gitlab_version/</guid><description>&lt;p&gt;この記事はGWアドベントカレンダーの3日目の記事です。&lt;/p&gt;
&lt;p&gt;GitlabとGitlab Runnerのバージョン情報がどこにあるのか書きます。 最新バージョンが出たかどうかを知るときや、アップデートするときのバージョンを指定したい場合に具体的なバージョンを知る必要があります。 実際には使用するリポジトリのバージョン名を知る必要がありますが、開発元のリリース情報は以下にあります。 なお、GitlabとGitlab Runnerのバージョンは対応していて、同じバージョンがリリースされるみたいです。&lt;/p&gt;
&lt;h1 id="gitlabのリリース情報"&gt;Gitlabのリリース情報&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://about.gitlab.com/releases/categories/releases/"&gt;ここ&lt;/a&gt;にあります。&lt;/p&gt;
&lt;h1 id="gitlab-runnerのリリース情報"&gt;Gitlab Runnerのリリース情報&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://gitlab.com/gitlab-org/gitlab-runner/-/releases"&gt;ここ&lt;/a&gt;にあります。&lt;/p&gt;</description></item><item><title>CIサーバのデプロイ方法（GWアドベントカレンダー 2日目）</title><link>https://blog.sei-yo.jp/engineer/2020/05/posts/cigw_2/</link><pubDate>Fri, 01 May 2020 01:05:45 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2020/05/posts/cigw_2/</guid><description>&lt;p&gt;この記事はGWアドベントカレンダーの2日目の記事です。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.sei-yo.jp/blog/engineer/2020/04/cicicdgw-1.html"&gt;1日目の記事&lt;/a&gt;で、CDの対象にすべきではありませんと述べましたが、ではどのようにデプロイすべきでしょうか。 CIサーバのデプロイ方法と言っても、単なるインストール手順のことではありません。CIサーバのライフサイクルを考えた上でデプロイ手順全体を指します。 なお、本記事ではGitlabを対象に述べます。&lt;/p&gt;
&lt;h1 id="本番用ciサーバのライフサイクル"&gt;本番用CIサーバのライフサイクル&lt;/h1&gt;
&lt;p&gt;まずは本番用のCIサーバのライフサイクルについて考えます。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;サーバデプロイ（OS構築）&lt;/li&gt;
&lt;li&gt;Gitlabインストール&lt;/li&gt;
&lt;li&gt;Gitlabアップデート&lt;/li&gt;
&lt;li&gt;Gitlabアップデート&lt;/li&gt;
&lt;li&gt;以後、アップデートを繰り返す&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;上記のように、一度インストールした後はアップデートを繰り返します。 アップデートの際に新バージョンのインスタンスを用意すれば良いように思うかもしれませんが、GitlabはDBにデータを持っていて、異なるバージョン間でのリストアはサポートされていません。 Gitlabの場合、バックアップの仕組みを持っていますが、リストアできるバージョンは、 バックアップ取得時と同じバージョンのみがサポートされています。 そのため、アップデート済みの新インスタンスを用意してもそこへ旧バージョンのデータをリストアすることはできません。&lt;/p&gt;
&lt;h1 id="テスト用ciサーバのライフサイクル"&gt;テスト用CIサーバのライフサイクル&lt;/h1&gt;
&lt;p&gt;次にテスト用のCIサーバについて考えます。 テスト用のCIサーバは本番用と同じ操作を実施すべきなので、 テストの度に、本番用CIサーバと同じバージョンのものを再構築して動作を確認します。 ここで本番用CIサーバのバックアップデータを使ってテスト用CIサーバを構築するのがポイントです。 バックアップデータには各種プロジェクト情報やその設定値などが含まれています。これらのデータも本番用と同じものを使ってテストするのが理想的です。 したがって、テスト用CIサーバのライフサイクルは以下のようになります。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;サーバデプロイ（OS構築）&lt;/li&gt;
&lt;li&gt;Gitlabインストール&lt;/li&gt;
&lt;li&gt;本番用Gitlabのバックアップデータをリストア&lt;/li&gt;
&lt;li&gt;Gitlabアップデート&lt;/li&gt;
&lt;li&gt;以後、サーバデプロイから繰り返す&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id="本番用ciサーバのデプロイ方法"&gt;本番用CIサーバのデプロイ方法&lt;/h1&gt;
&lt;p&gt;前述のように本番用CIサーバを一度構築した後は、アップデートの適用のみを実施するようなケースを考えた場合には、その都度、アップデートを適用する方法が考えられます。 この方法の場合には、初期構築手順とアップデート手順の二つがあれば良いことになります。 これらの手順を自動化しておくことで効率的にデプロイが実現できます。 ただし、故障発生などにより最初から構築する必要があった場合に、正しく構築できるかどうか懸念が残ります。&lt;/p&gt;
&lt;p&gt;これを解決するのがImmutable Serverです。&lt;a href="https://www.sei-yo.jp/blog/engineer/2020/04/cicicdgw-1.html"&gt;1日目の記事&lt;/a&gt;でCDの対象外と述べましたが、パイプライン中でのデプロイを行わないのであれば、テスト用CIサーバを本番用CIサーバとして利用するように切り替えることも可能です。 こうすることでImmutable ServerとしてCIサーバを扱うことができます。 しかし、このような運用をする場合には注意点があります。本番用のDBバックアップを取得してから本番用CIサーバに対し何か変更があると（管理対象プロジェクトのコミット等）、それが失われる可能性があります。 つまり、利用を制限した上でバックアップから切り替えまでを完了できる必要があります。 これは多くの場合は難しいと思います。&lt;/p&gt;
&lt;h1 id="結論"&gt;結論&lt;/h1&gt;
&lt;p&gt;結局のところ、Immutable Serverとして扱うよりも、常にアップデートし続けるデプロイ方法の方が現実的ではないかと考えています。&lt;/p&gt;
&lt;p&gt;明日はGitlabのバージョン情報について書く予定です。&lt;/p&gt;</description></item><item><title>CIサーバ自身のCI/CD（GWアドベントカレンダー 1日目）</title><link>https://blog.sei-yo.jp/engineer/2020/04/posts/cicicdgw_1/</link><pubDate>Thu, 30 Apr 2020 02:21:35 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2020/04/posts/cicicdgw_1/</guid><description>&lt;p&gt;この記事はGWアドベントカレンダーの1日目の記事です。&lt;/p&gt;
&lt;p&gt;Infrastructure as Codeの考えでは、アプリケーションだけでなくインフラ部分（OSやミドルウェアなど）についてもCI/CDの対象として扱います。 この記事では、IaCに取り組もうと考えて最初に悩む（？）CIサーバ自身のCI/CDについて説明します。&lt;/p&gt;
&lt;p&gt;CIサーバというのは、JenkinsやGitlabのようにコミットやプッシュを契機（trigger）に自動的にジョブを実行する機能を持つサーバのことです。 CIサーバ自身も様々な設定を持つ重要なサーバであり、管理対象です。&lt;/p&gt;
&lt;p&gt;本記事では簡単のためにCIを自動構築と自動テストと定義します。また、CDを自動デプロイと定義します。 CI/CDのパイプラインとして自動にすべき部分や手動にすべき部分がありますが、本記事ではすべて自動で実施する場合としています。&lt;/p&gt;
&lt;h1 id="前提"&gt;前提&lt;/h1&gt;
&lt;p&gt;IaCの文脈で、各サーバをImmutable Serverとして扱う場合を想定しています。 環境としてテスト環境と本番環境があります。CIサーバはテスト環境と本番環境の両方にアクセスできるので、便宜上CI環境に配置されているとします。 CIとして、テスト環境の再構築とテストを実施し、CDとして本番環境の再構築とテストを実施するものとします。&lt;/p&gt;
&lt;h1 id="ciサーバをcdの対象とすべきかどうか"&gt;CIサーバをCDの対象とすべきかどうか&lt;/h1&gt;
&lt;p&gt;CIサーバをCDの対象とするということは、CI環境のCIサーバを再構築（破棄、作成）することになります。 CIサーバをImmutable Serverとして扱うと、パイプラインの途中でCIサーバの再構築が行われるため、必ず途中で中断することになりCDの対象とすることはできません。 CIサーバをいくつものコンポーネントに分けて、一部の機能のみCDの対象とすることはできると思います。&lt;/p&gt;
&lt;p&gt;CIサーバはImmutable Serverではない（Mutable Server）として扱うとCIサーバをCDの対象とすることができます。しかし、パイプラインを実行中のCIサーバを変更するというのは複雑で、避けるべきと思います。&lt;/p&gt;
&lt;p&gt;したがって、CIサーバはCDの対象とすべきではないと考えます。&lt;/p&gt;
&lt;h1 id="ciサーバをciの対象とすべきかどうか"&gt;CIサーバをCIの対象とすべきかどうか&lt;/h1&gt;
&lt;p&gt;CIの対象（以下、CI管理対象）というのは理想的にはすべてのサーバです。したがってCIサーバもCI管理対象とすべきと考えられます。&lt;/p&gt;
&lt;p&gt;CIサーバのテスト用インスタンスを作成し、テストを実施することは有効です。ただし、テスト用インスタンスを使って実際のパイプラインを実行してはいけません。 実際のパイプラインはテスト用のCIサーバインスタンスの再構築を含んでいたり、テスト環境や本番環境のサーバ再構築を含んでいます。実行して良いのは接続確認のような環境に変更を加えない内容のものだけです。&lt;/p&gt;
&lt;h1 id="結論"&gt;結論&lt;/h1&gt;
&lt;p&gt;CIサーバはCIの対象としますが、CDの対象外とします。 CIのパイプラインではテスト用インスタンスを作成し、自動テストを実行します。自動テストによってCIサーバの構築手順の妥当性を確認できます。&lt;/p&gt;
&lt;p&gt;明日はCIサーバのデプロイ方法についての予定です。&lt;/p&gt;</description></item><item><title>Oracle CloudのCompute インスタンスが起動後すぐ停止する</title><link>https://blog.sei-yo.jp/engineer/2020/03/posts/oracle_cloudcompute/</link><pubDate>Wed, 18 Mar 2020 01:06:45 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2020/03/posts/oracle_cloudcompute/</guid><description>&lt;p&gt;Oracle CloudのCompute インスタンスが起動できなくなってしまいました。 正確にはインスタンスを開始させると、起動中というステータスになりますが、少し経つと今度は停止中となり、停止済みとなってしまいます。&lt;/p&gt;
&lt;p&gt;以前は起動できたのにできなくなってしまいました。困った。。 しかもそれらしきログも出ずに原因究明ができません。 コマンドラインインタフェース（コマンドは後述）から起動してみても、開始要求は正常に行われるのでエラーになりません。&lt;/p&gt;
&lt;p&gt;新しいインスタンスを作成用しようにも、以下のメッセージが出て作成もできません。&lt;/p&gt;
&lt;p&gt;困った困った。。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;可用性ドメインjRHI:AP-TOKYO-1-AD-1のシェイプVM.Standard.E2.1.Microの容量が不足しています。 後で再試行してください。


oci compute instance action --action=start --instance-id=
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>「インフラCI 実践ガイド」を読んだ</title><link>https://blog.sei-yo.jp/engineer/2020/03/posts/infraci/</link><pubDate>Wed, 11 Mar 2020 21:18:07 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2020/03/posts/infraci/</guid><description>&lt;p&gt;インフラCI 実践ガイドを読みました。 以前読んだ&lt;a href="https://www.sei-yo.jp/blog/engineer/2020/02/infrastructure-as-code.html"&gt;Infrastructure as Code&lt;/a&gt;（以下、IaC書籍）に対し、具体的な実装方法について説明しており今の自分に欲しい情報がたくさん得られて非常に満足しました。&lt;/p&gt;
&lt;p&gt;本書はこれからインフラCIを始めようとする方向けの本です。インフラCIの具体的な実装の説明と、インフラCIの外側にある要素についても説明しています。 インフラCIの外側にある要素というのはシステムのデザインやリリースに関する制約やチームメンバのスキルなどです。インフラCIを導入し成功させるためにはインフラCIの外側にある要素も非常に重要です。&lt;/p&gt;
&lt;p&gt;実際にインフラCIの環境を読者が実際に動かすことができるよう、演習環境としての構築方法とそれに必要な構成定義ファイルを提供しており、まさにこれから始める人にはうってつけの内容と思います。 また、インフラCIの技術的な側面だけでなく、インフラCIを実践するために必要な非技術的な要素についても随所で触れており、インフラCIをこれから導入しようとする場合のポイントについても理解ができるようになっています。 実際に最後の方の章では、技術的な観点というよりはインフラCIよりも広い範囲を考えた場合の導入方法についても述べられています。&lt;/p&gt;
&lt;p&gt;IaC書籍は本書の中でも参照されており、より抽象的な概念の理解のためにIaC書籍を読んでおくと、本書の理解もより深まると思います。 実際に私もIaC書籍を読んでから本書を読みましたが、IaC書籍の内容ともリンクしてわかりやすかったです。&lt;/p&gt;
&lt;p&gt;記述のスタイルとして、結果をまず述べてからその仕組みについて説明する形になっており、構成定義ファイルの中身についての説明が後回しになっていたり、省略されていたりします。そのため、具体的な構成定義ファイルの中身を見た方がイメージしやすい読者の場合には、ここに記載されている構成定義ファイルをPC上で見ながら本書を読むのも良いかと思います。&lt;/p&gt;</description></item><item><title>「しくみがわかるKubernetes」を読んだ。</title><link>https://blog.sei-yo.jp/engineer/2020/02/posts/kubernetes/</link><pubDate>Fri, 07 Feb 2020 02:14:08 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2020/02/posts/kubernetes/</guid><description>&lt;p&gt;「しくみがわかるKubernetes」を読みました。&lt;/p&gt;
&lt;p&gt;ほんとに仕組みがわかった気になりました。 これまでminikubeでhello worldをやっただけの経験でしたが、kubernetesがどういう仕組みになっているかの全体像を掴むことができました。&lt;/p&gt;
&lt;p&gt;この本ではDockerなどのコンテナそのものについての説明はほとんどありません。&lt;br&gt;
コンテナそのものを知らないとそもそもkubernetesの良さもわからないかもしれませんが、&lt;br&gt;
この本で説明しているのはコンテナの管理をするkubernetesの仕組みです。 コンテナがどのような仕組みのものなのか、コンテナイメージはどのように作るのかというようなことは知らなくても読み進めることができると思います。&lt;/p&gt;
&lt;p&gt;しくみを説明する本ですので、kubernetsの全体像としてどのようなコンポーネントで構成されているのかや、それぞれのコンポーネントの役割が説明されています。&lt;br&gt;
また、Infrastructure as Codeの観点から、すべての定義をファイルに残すべきということも随所で述べてあります。&lt;br&gt;
本文中に登場する定義ファイルはダウンロードできるようになっており、実際に試すことも可能です。&lt;br&gt;
読者自身が実機で試す際も、細かな定義はすべてファイルに記載されているので、実際に打つコマンドはそれを適用するためのコマンドばかりです。&lt;/p&gt;
&lt;p&gt;Kubernetesの環境を自分で構築するのは大変ですが、Azureで提供されているAKS（Azure Kebernetes Service）を使うことで簡単に利用を開始できます。&lt;br&gt;
提供されているサンプルコードもAKS向けのものとなっているので、手軽に動作確認ができるようになっています。&lt;/p&gt;
&lt;p&gt;この本ではKubernetesの主要コンポーネントの紹介と構成検討のポイントなどが述べられています。&lt;br&gt;
含まれていないのは構築手順やオプションのコンポーネント等です。&lt;br&gt;
例えば、ネットワークやストレージのコンポーネントについてはあまり説明がありません。&lt;br&gt;
そのため、この本だけを見て自分でKubernetesを構築したいという方には向きませんが、クラウド上のマネージドサービスとしてKubernetesを使いたいという人には向いていると思います。&lt;br&gt;
自分で環境を構築したいという人でも、この本を読むことで全体像がイメージできるようになりますので、具体的な検討へのステップとしては有効と思います。&lt;/p&gt;</description></item><item><title>「Infrastructure as Code」を読んだ</title><link>https://blog.sei-yo.jp/engineer/2020/02/posts/infrastructure_as_code/</link><pubDate>Fri, 07 Feb 2020 02:03:15 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2020/02/posts/infrastructure_as_code/</guid><description>&lt;p&gt;「Infrastructure as Code」を読みました。&lt;/p&gt;
&lt;p&gt;タイトル通り、システムのインフラ（アプリケーションの土台部分）をコードとして表現することについての本です。&lt;br&gt;
アプリケーションはそもそもコードとして定義されているのが普通ですが、インフラは設計書や手順書によって表現されることが多くあります。&lt;br&gt;
インフラをコードとして表現することで、様々な恩恵を得られるということを謳っています。&lt;/p&gt;
&lt;p&gt;この本の中で繰り返し述べられていることは、以下のことです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;常に同じやり方をすること&lt;/li&gt;
&lt;li&gt;すべてコードに表現すること&lt;/li&gt;
&lt;li&gt;VCSを使ってコードを管理すること&lt;/li&gt;
&lt;li&gt;繰り返しそのコードを使ってインフラを構築すること&lt;/li&gt;
&lt;li&gt;人による判断が必要な個所以外は自動化すること&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;どんなツールを使うかやコードの管理や自動テストの行い方や管理単位の分割の仕方といった実現方法は、使う組織や運用に合わせて柔軟に変える必要があります。&lt;br&gt;
この本では具体的なツールの使い方にはほとんど触れず、ツールの特徴の紹介と運用パターンの選び方（や選択肢）の紹介が多いです。&lt;br&gt;
言い方を変えると特定のツールによらない普遍的な考え方を中心に述べており、Infrastructure as Codeの概念やメリットを理解したい人に向いています。&lt;/p&gt;
&lt;p&gt;具体的なツールの使い方についての説明はありませんが、ツールの名前や特徴については簡単に触れられているので、ツールについて調べる取っ掛かりにもなります。&lt;/p&gt;
&lt;p&gt;Infrastructure as Codeをこれから始めようと考えている人にとっては、良い参考書となると思います。&lt;br&gt;
ゼロから仕組みを構築したいときには、考慮すべき観点のチェックリストにもなりますし、既に仕組みがある場合でもより効率化するためのヒントが得られるように思います。&lt;/p&gt;</description></item><item><title>Goのnet/httpでWebサーバを作って確認したこと</title><link>https://blog.sei-yo.jp/engineer/2020/02/posts/gonethttpweb/</link><pubDate>Wed, 05 Feb 2020 23:06:55 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2020/02/posts/gonethttpweb/</guid><description>&lt;p&gt;Go のnet/httpパッケージを使うと簡単にWebサーバが構築できます。 実際に動作を確認した内容について備忘録としてメモしています。&lt;/p&gt;
&lt;h2 id="並列処理可能"&gt;並列処理可能&lt;/h2&gt;
&lt;p&gt;特に何も工夫せずにWebサーバとして動作させるだけで、goroutineによる並列処理が可能です。&lt;br&gt;
動作確認のため、Apache Bench（ab）を使って確認しましたが、1000セッション同時に処理できていました。&lt;br&gt;
動作確認の際は、リクエストの応答にsleepを1秒入れて1000セッションが10リクエストを発行しました。&lt;br&gt;
すると、10秒くらいですべてのリクエストが処理されました。&lt;/p&gt;
&lt;p&gt;動作確認に使ったコマンドは以下です。&lt;br&gt;
実行すると約1秒毎に1000リクエストが処理されて、約10秒後に完了します。&lt;br&gt;
結果のサマリを見ても、ほとんどのリクエストが約1秒で完了していました。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ab -c 1000 -n 10000 http://localhost:8080/
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="レスポンスのcontent-type自動設定"&gt;レスポンスのContent-Type自動設定&lt;/h2&gt;
&lt;p&gt;レスポンスをhtmlにすると、自動的にContent-Typeがtext/htmlになりました。&lt;br&gt;
レスポンスをダブルクォートで囲んだ文字列にすると、中身がhtmlでもtext/plainになりました。&lt;br&gt;
強制的に変更したいときは、以下のようにして指定できます。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;w.Header().Set(&amp;quot;Content-Type&amp;quot;, &amp;quot;text/html; charset=utf-8&amp;quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="コード"&gt;コード&lt;/h2&gt;
&lt;p&gt;実際の動作確認の際は、不要なものを削除したりコメントアウトしたりしながら実施していますが、&lt;br&gt;
上記の確認に必要なものはこれで足りると思います。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; package main

import (
 &amp;quot;fmt&amp;quot;
 &amp;quot;html&amp;quot;
 &amp;quot;log&amp;quot;
 &amp;quot;net/http&amp;quot;
 &amp;quot;time&amp;quot;
)

func main() {
 http.HandleFunc(&amp;quot;/&amp;quot;, uploader)
 log.Fatal(http.ListenAndServe(&amp;quot;:8080&amp;quot;, nil))
}

func uploader(w http.ResponseWriter, r *http.Request) {
 w.Header().Set(&amp;quot;Content-type&amp;quot; , &amp;quot;text/html; charset=utf-8&amp;quot;)
 time.sleep(1 * time.Second)
 fmt.Fprintf(w, &amp;quot;%s&amp;quot;, html.EscapeString(r.URL.Path)
}
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Docker Desktop for Windowsの導入</title><link>https://blog.sei-yo.jp/engineer/2020/01/posts/docker_desktop_for_windows/</link><pubDate>Sun, 12 Jan 2020 05:40:03 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2020/01/posts/docker_desktop_for_windows/</guid><description>&lt;p&gt;Docker Desktop for Windowsを導入してみました。&lt;/p&gt;
&lt;p&gt;dockerコンテナを作って動かしたいのが目的です。 Windowsを使うのは、普段使っているOSがWindowsだからで、コンテナはLinuxのものを使います。 そうしたときに、docker Engineをどこで動かすかの選択肢があります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows （Docker Desktop for Windows）&lt;/li&gt;
&lt;li&gt;Windows上のLinux VM（Hyper-VやVirtual Box上のLinux VMでLinux用のDocker Engineを動かす）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;開発用にLinux VMを動かしているのでそちらでDockerを使っても良いのですが、わざわざVMを起動して使うのも面倒そうなのでWindows上で動かすことにしました。 ただ、Windows上で動かすと言っても、実際にはDocker用のLinux VMがHyper-Vを使って起動します。 そのため、自分でLinux VMを用意して動かすのと仕組みはそれほど変わりません。&lt;/p&gt;
&lt;p&gt;Docker Desktop for Windowsの場合、Docker ClientはWindows上で動きますが、Docker EngineはLinux VM上で動きます。 自分でLinux VMを用意して使う場合はDocker ClientもDocker EngineもLinux VM上で動きます。 コンテナそのものはどちらもLinux VM上で動きます。&lt;/p&gt;
&lt;p&gt;Docker Desktop for Windowsを使う場合、DockerfileやコンテナにコピーするファイルをLinux VMから利用できるようにする必要があります。 どのドライブをアクセス可能にするかは、settingsから設定できます。 なお、コンテナからマウントして使うようなデータ領域としてはWindows上の領域は不向きで、data volumeやdata containerを使う方が良いようです。これには二つの理由があって、一つはWindows上の領域はLinux上からみて、rwxrwxrwxのモードで見えます。もう一つは、SMBを使ってLinux VMに領域を見せる際、NOBRLオプションが付いているため、ロックができない場合がある点です。 これらは&lt;a href="https://docs.docker.com/docker-for-windows/"&gt;Docker Desktop for Windowsのドキュメント&lt;/a&gt;の最初の方（Shared drives）に書いてあります。&lt;/p&gt;
&lt;p&gt;と、ここまでやってから大事なことに気づきました。 開発用にLinux VMを動かしていますが、そちらはVirtual Boxを使っています。 Docker Desktop for WindowsはHyper-Vを使います。 これらの共存はできないので、どちらを使うか選ぶ必要があります。。つづく。。&lt;/p&gt;</description></item><item><title>今年実現したいこと</title><link>https://blog.sei-yo.jp/engineer/2020/01/posts/post_4/</link><pubDate>Wed, 08 Jan 2020 00:44:14 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2020/01/posts/post_4/</guid><description>&lt;p&gt;今年実現したいことは以下の通り。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自宅サーバのコンテナ化&lt;/li&gt;
&lt;li&gt;Kubernetesによるコンテナ管理&lt;/li&gt;
&lt;li&gt;GoでWebサービス作成&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>「エンジニアのための マネジメントキャリアパス」を読んだ</title><link>https://blog.sei-yo.jp/engineer/2019/12/posts/post_3/</link><pubDate>Fri, 27 Dec 2019 00:12:02 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/12/posts/post_3/</guid><description>&lt;p&gt;「エンジニアのための マネジメントキャリアパス」を読んだ。&lt;/p&gt;
&lt;p&gt;エンジニアが管理される側から管理する側になっていく話、、というか、管理者とはどういう役割かをきちんと説明した本でした。 そして、管理者にも段階があり、メンターとして一人を指導する立場からテックリードとしてチームを率いる立場、チーム管理者として管理する立場、チーム管理者を管理する立場といった具合に、それぞれの管理者が何をすべきかということが書かれています。よくあるダメな上司の例も交えて説明しており、イメージしやすい記述になっています。&lt;/p&gt;
&lt;p&gt;管理する側に必要なものとして、対人スキルについても多く記述されています。技術的なスキルも当然必要ですが、チームメンバーや部下とうまくコミュニケーションを取るスキルが重要であること、プロジェクトをうまく進めるために、タスクを細かく分割し、具体化するスキルが必要であることなどが重要であることを述べています。&lt;/p&gt;
&lt;p&gt;それぞれの段階の管理者がやるべきことが記載されており、本文中にもあるようにリファレンス的に利用されることを想定して記述されているため、自分の置かれている状況に合わせて適宜参照しやすい構成になっています。 時々読み返しては自分の行動を顧みることにも使える一冊だと思います。&lt;/p&gt;</description></item><item><title>「入門 UML 2.0」を読んだ</title><link>https://blog.sei-yo.jp/engineer/2019/12/posts/_uml_20/</link><pubDate>Thu, 26 Dec 2019 23:52:26 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/12/posts/_uml_20/</guid><description>&lt;p&gt;「入門 UML 2.0」を読んだ。 UMLってユースケースを表現するためのものでしょ？と思っていて、図を使ってユースケースを書く必要に迫られることも無かったのであまり勉強する気にもなっていなかったのですが、&lt;a href="https://plantuml.com/"&gt;Plant UML&lt;/a&gt;というテキストでUMLを既述できるものを知り、図を描くのにテキストで記述できるのは便利そうということで読んでみることにしました。&lt;/p&gt;
&lt;p&gt;読んでみると、そもそもユースケース図を描くたものものという認識が誤りで、ユースケース図を表現することにも使えるが、それ以外の様々なものを表現するために使えるものであるということがわかりました。また、表現の仕方が定義されていて、UMLを知っている人であれば書き方を説明せずに記述できるということもよく分かりました。そのため、記述ルールについての凡例を書く必要もないのです。&lt;/p&gt;
&lt;p&gt;UMLは既述したい目的毎に図の書き方がいくつも用意されています。そして、その目的や使い分けについて説明しています。しかし、その使い方は限定的ではありません。ある特定の種類の図ですべてを表現する必要はなく、その図で表現したい箇所だけをその図で表現し、そのほかの場所は異なる種類の図で表現しても良いとされています。結局は表現すべき重要な事柄を、それを表現するのに適切な図を使って表現すべきとしています。 つまり、何を表現すべきかを考えて使い分けるということです。&lt;/p&gt;
&lt;p&gt;この本を読むことで、システム設計においてどのような情報を表現するべきかということがわかると思います。全体の概要を示したい場合や、特定部分の詳細について説明したい場合がありますが、それらがどのような種類の情報であるか、また混ぜるべきではない情報というのはどういうものかというのがなんとなくわかると思います。実際に書いて表現することを繰り返すことで、システムのどの部分をどのように表現するべきかというのがより直感的にわかるようになってくるのだと思います。&lt;/p&gt;
&lt;p&gt;ところで、Plant UMLはテキストで記述したものをUML図に変換する仕組み（Webサービス、Javaプログラムとして提供されています）ですが、テキストをエディタで変更すると即座にその結果のUML図が変更されるという使い方ができます。&lt;/p&gt;
&lt;p&gt;Vimでは、&lt;a href="https://github.com/previm/previm"&gt;previm&lt;/a&gt;というpluginを使うことで実現できます。 previmはそもそもMarkdownに対してのプレビューを提供するものでしたが、PlantUMLにも対応したのです。&lt;/p&gt;
&lt;p&gt;これを使いたかったという気持ちもあります。&lt;/p&gt;
&lt;p&gt;そんなわけで、今後、図を記述する必要がある場合にはPlantUMLを積極的に使っていきたいと思っています。&lt;/p&gt;</description></item><item><title>みんなのGo 改訂2版の参考URL</title><link>https://blog.sei-yo.jp/engineer/2019/11/posts/go_2url/</link><pubDate>Sat, 09 Nov 2019 22:02:23 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/11/posts/go_2url/</guid><description>&lt;p&gt;みんなのGo 改訂2版の参考URLです。&lt;/p&gt;
&lt;h2 id="12"&gt;1.2&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://godoc.org/golang.org/x/tools/cmd"&gt;go tools&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://talks.golang.org/2015/gofmt-en.slide#1"&gt;The Cultural Evolution of gofmt&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.golang.org/go-fmt-your-code"&gt;go fmt your code&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="13"&gt;1.3&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://blog.golang.org/using-go-modules"&gt;using go modules&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/golang/go/wiki/Modules"&gt;Modules&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="14"&gt;1.4&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://golang.org/doc/effective_go.html"&gt;Effective Go&lt;/a&gt;&lt;/p&gt;</description></item><item><title>vagrant up 失敗の原因究明 その２</title><link>https://blog.sei-yo.jp/engineer/2019/10/posts/vagrant_up_1/</link><pubDate>Fri, 18 Oct 2019 01:50:06 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/10/posts/vagrant_up_1/</guid><description>&lt;p&gt;というわけで、&lt;a href="https://www.sei-yo.jp/blog/engineer/2019/10/vagrant-up.html"&gt;前回&lt;/a&gt;の続きです。&lt;/p&gt;
&lt;p&gt;前回、原因究明はできたけれどもその報告ができていませんでした。 一日以上経って、ようやくForumにポストできました。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://forums.virtualbox.org/viewtopic.php?f=9&amp;amp;t=95182"&gt;Can the failure message be improved? When VBoxManage.exe import failed with no disk space.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;そして、Forum Postig Guideのデッドリンクについてもポストしておきました。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://forums.virtualbox.org/viewtopic.php?f=9&amp;amp;t=95180"&gt;Dead link found in The Forum Posting Guide&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;誰か反応してくれると良いなぁ。。&lt;/p&gt;</description></item><item><title>vagrant up 失敗の原因究明</title><link>https://blog.sei-yo.jp/engineer/2019/10/posts/vagrant_up/</link><pubDate>Thu, 17 Oct 2019 01:00:00 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/10/posts/vagrant_up/</guid><description>&lt;p&gt;vagrant upがなぜか失敗するのでその原因究明をしたときの話です。&lt;/p&gt;
&lt;h2 id="事象"&gt;事象&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;PS E:\vagrant&amp;gt; vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==&amp;gt; default: Box 'hashicorp/precise64' could not be found. Attempting to find and install...
 default: Box Provider: virtualbox
 default: Box Version: &amp;gt;= 0
==&amp;gt; default: Loading metadata for box 'hashicorp/precise64'
 default: URL: https://vagrantcloud.com/hashicorp/precise64
==&amp;gt; default: Adding box 'hashicorp/precise64' (v1.1.0) for provider: virtualbox
 default: Downloading: https://vagrantcloud.com/hashicorp/boxes/precise64/versions/1.1.0/providers/virtualbox.box
 default: Download redirected to host: vagrantcloud-files-production.s3.amazonaws.com
 default:
==&amp;gt; default: Successfully added box 'hashicorp/precise64' (v1.1.0) for 'virtualbox'!
==&amp;gt; default: Importing base box 'hashicorp/precise64'...
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: [&amp;quot;import&amp;quot;, &amp;quot;\\\\?\\E:\\vagrant_home\\.vagrant.d\\boxes\\hashicorp-VAGRANTSLASH-precise64\\1.1.0\\virtualbox\\box.ovf&amp;quot;, &amp;quot;--vsys&amp;quot;, &amp;quot;0&amp;quot;, &amp;quot;--vmname&amp;quot;, &amp;quot;precise64_1571241203898_82313&amp;quot;, &amp;quot;--vsys&amp;quot;, &amp;quot;0&amp;quot;, &amp;quot;--unit&amp;quot;, &amp;quot;12&amp;quot;, &amp;quot;--disk&amp;quot;, &amp;quot;D:/VMimages/precise64_1571241203898_82313/box-disk1.vmdk&amp;quot;]

Stderr: 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Interpreting \\?\E:\vagrant_home\.vagrant.d\boxes\hashicorp-VAGRANTSLASH-precise64\1.1.0\virtualbox\box.ovf...
OK.
0%...
Progress state: E_INVALIDARG
VBoxManage.exe: error: Appliance import failed
VBoxManage.exe: error: Code E_INVALIDARG (0x80070057) - One or more arguments are invalid (extended info not available)
VBoxManage.exe: error: Context: &amp;quot;enum RTEXITCODE __cdecl handleImportAppliance(struct HandlerArg *)&amp;quot; at line 957 of file VBoxManageAppliance.cpp
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>はじめてのWindows クラッシュダンプ解析</title><link>https://blog.sei-yo.jp/engineer/2019/08/posts/windows_1/</link><pubDate>Mon, 05 Aug 2019 00:24:38 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/08/posts/windows_1/</guid><description>&lt;p&gt;Windows 10のマシンがブルースクリーンになってしまって、再発すると困るので見てみました。 ググってみるとちょっと見てみるところまでは簡単にできそうだったのでやってみました。&lt;/p&gt;
&lt;p&gt;結果はDPCウォッチドッグに引っかかっているみたい。（以下は、!analyze -vの抜粋）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DPC_WATCHDOG_VIOLATION (133)
The DPC watchdog detected a prolonged run time at an IRQL of DISPATCH_LEVEL
or above.
Arguments:
Arg1: 0000000000000000, A single DPC or ISR exceeded its time allotment. The offending
 component can usually be identified with a stack trace.
Arg2: 0000000000000501, The DPC time count (in ticks).
Arg3: 0000000000000500, The DPC time allotment (in ticks).
Arg4: fffff8003376e350, cast to nt!DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK, which contains
 additional information regarding this single DPC timeout
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;そしてkの結果には以下の文字列が。&lt;/p&gt;</description></item><item><title>mtdataapi.vimの開発状況</title><link>https://blog.sei-yo.jp/engineer/2019/07/posts/mtdataapivim/</link><pubDate>Mon, 29 Jul 2019 21:52:02 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/07/posts/mtdataapivim/</guid><description>&lt;p&gt;以前、この&lt;a href="https://www.sei-yo.jp/blog/engineer/2019/03/vim-mtdataapi.html"&gt;エントリ&lt;/a&gt;で書いたプラグインがとりあえず使える感じになってきたので改めてここに書く。&lt;/p&gt;
&lt;p&gt;このプラグインは、Movable TypeというCMSを利用する際の文字編集を簡単にするために開発しています。 Movable Type（以下、MT）は、エントリを編集するインタフェースとしてWeb UIを提供していますが、豊富なエディタの機能を利用することができないのが個人的な欠点でした。 Web UIのままでも、javascriptを書くことで様々な機能を追加することができますが、使い慣れたエディタを使える方が何かと便利です。 そこで、vimというエディタで編集したものがMTにすぐにアップロードできたり、MTのエントリをvimにダウンロードできたりすることを実現したいと思いました。&lt;/p&gt;
&lt;p&gt;そこでmtdataapi.vimでは、MTのもつAPIであるData APIを使って、エントリ情報をやり取りすることでエントリ情報のアップロードやダウンロードを実現しました。 MtOpenコマンドの引数にエントリIDを与えると、MTから該当のエントリをダウンロードしてきてローカルファイルに保存します。そして、そのローカルファイルを開きます。 そのまま編集して:wで保存すると、MTにアップロードされて、エントリが更新されます。 ダウンロードしたエントリは、本文だけでなく公開、非公開（下書き）の状態やカテゴリ、タグなどの情報も含まれていて、それらも編集可能です。そのため、非公開のエントリを公開に変えて保存するだけで、エントリを公開状態にすることができます。&lt;/p&gt;
&lt;p&gt;本文編集の際のフォーマットは、htmlだけでなくMarkdownも利用できます。 Markdownで表現できない部分（複雑なhtmlなど）は、htmlのままにしておいて、文章だけMarkdownで記載することも可能です。文章だけであればMarkdownで記載できれば十分なのですが、それができない場合はhtmlをMarkdownで扱おうとすると情報が失われてしまうケースがありました。そのため、両方を扱えるようにしています。 htmlの方が情報が多いので、基本的にはhtmlでローカルファイルには保存しておいてMTとやり取りします。文章を編集する際のみ、該当部分をMarkdownに変換する使い方を意図しています。&lt;/p&gt;
&lt;p&gt;上記のhtmlとMarkdownを変換するために、MtHTMLtoMDとMtMDtoHTMLコマンドを用意しています。 ビジュアル選択した状態で上記コマンドを実行すると、選択部分が変換されます。 Markdownでの編集が終わったらhtmlに変換して、:wするという使い方を想定しています。 MtOpenした場合も、:wで保存した場合も、その後自動的にMTの情報でbufferが更新されます。このときはhtmlで更新されます。&lt;/p&gt;
&lt;p&gt;MTでは画像のアップロード操作などもできます。 Web UIではマウスで簡単に画像の挿入ができますが、mtdataapi.vimではできません。そのため、Web UIでエントリを編集する場合もあると思います。 そうした場合、ローカルファイルの情報が古くなってしまいますが、MtOpenで開いた状態でを押すとMTから情報をダウンロードして最新の情報で更新されます。&lt;/p&gt;
&lt;p&gt;自分でこのプラグインを作ってみて実際に使っていますが、文章を書くのが楽になってブログエントリを書くのも楽になりました。 ブログといえばWord Pressが有名でMovable Typeは利用者が少ないような気がしますが、利用者の方は使っていただけると嬉しいです。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/hseiyo/vim-mtdataapi"&gt;mtdataapi.vim&lt;/a&gt;&lt;/p&gt;</description></item><item><title>vimのコマンドラインモードのマップ定義の仕方</title><link>https://blog.sei-yo.jp/engineer/2019/07/posts/vim_2/</link><pubDate>Sat, 27 Jul 2019 23:44:30 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/07/posts/vim_2/</guid><description>&lt;p&gt;vimではマップという機能で様々なことが実現できます。 簡単に言うとショートカットキーを作ることができます。 また、vimにはモードが複数あり、モード毎にキーの意味が異なるのでモード毎に同じキーに別の意味を割り当てることができます。&lt;/p&gt;
&lt;p&gt;モードの一つとして、コマンドラインモードがあります。コマンドラインモードは、vimを終了するときに使用できる:qでも利用しています。 :qとキー入力する場合、キー入力前の状態はノーマルモードです。そこから:を入力した時点でコマンドラインモードに移ります。 qはコマンドラインモードのコマンド（の省略形）です。そのあと、実際にはエンターキーを入力しますがこれによりqコマンドが実行されます。&lt;/p&gt;
&lt;p&gt;そこでこのqコマンドに別の意味を持たせることがmapでできるのですが、設定の仕方を誤ってなかなか期待通りにならなかったので失敗した点を示します。 なお、実際に失敗したキーはqではなく、w（保存コマンド）でしたので、以下の例ではwコマンドで示します。&lt;/p&gt;
&lt;h2 id="失敗-その１"&gt;失敗 その１&lt;/h2&gt;
&lt;p&gt;mapコマンド（実際にはcnoremapコマンドを使用）のlhs側（新しく登録するキー）にエンターキーを記載しない&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cnoremap w w&amp;lt;CR&amp;gt;q&amp;lt;CR&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;mapコマンドの引数は大きく二つあり、新しく登録するキー列とそのキー列を入力した場合の意味を示すキー列等です。 その二つをlhs、rhsとそれぞれ表現します。Left Hand SideとRight Hand Sideの略と思われます。&lt;/p&gt;
&lt;p&gt;以下のように書くと、エンターを押さなくてもrhs側のキー列が入力されたのと同じことが起こります。 そのため、:w filename と打とうとしていた場合でも:wと入力した時点でrhs側が入力されてしまいやりたかったことができません。 実現したいこと次第で対処法は変わりますが（つまり複数の選択肢がありますが）、今回は以下のように記載することで対処可能でした。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cnoremap w&amp;lt;CR&amp;gt; w&amp;lt;CR&amp;gt;q&amp;lt;CR&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="失敗-その２"&gt;失敗 その２&lt;/h2&gt;
&lt;p&gt;lhs、rhsに:を余計に記載する&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cnoremap :w&amp;lt;CR&amp;gt; :q&amp;lt;CR&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;cnoremapコマンドはコマンドラインモードでのキー入力に対して機能するので、lhsにもrhsにも:は不要です。 以下のようにすると:wしようとすると:qで終了するようになるはずです。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cnoremap w&amp;lt;CR&amp;gt; q&amp;lt;CR&amp;gt;
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>vim plugin の ftdetectの効かせ方</title><link>https://blog.sei-yo.jp/engineer/2019/07/posts/vim_plugin_ftdetect/</link><pubDate>Sat, 27 Jul 2019 02:09:58 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/07/posts/vim_plugin_ftdetect/</guid><description>&lt;p&gt;vim plugin を作っていてなかなか解決できなかった課題のメモです。&lt;/p&gt;
&lt;p&gt;vim ではファイルタイププラグインという種類のプラグインが作成できます。 ファイルタイププラグインはファイルタイプに合わせて挙動を変えることができるようにするためのプラグインです。 vim はファイルを開いた際に、そのファイルがどのファイルタイプか判別します。 ファイルタイプはC言語のようなプログラミング言語毎にあらかじめ定義されていますし、自分で作成することもできます。 自分で作成する場合には、ファイルタイプ名を決めて、そのファイルタイプの場合にどのような挙動にするかを定義したプラグインファイルを作成します。 例えば、ファイルタイプ毎に異なるマップを定義することができます。 その場合、プラグインファイルには定義したいマップコマンドを記述します。そうすることで、特定のファイルタイプの場合にのみそのマップコマンドが実行されるようになります。&lt;/p&gt;
&lt;p&gt;ところで、ファイルを開くたびにそのファイルがどのファイルタイプかを判別する必要がありますが、自分で作成したファイルタイプのことはvimは知らないので、どのファイルが自作のファイルタイプに該当するかを定義する必要があります。 それには何らかの方法で以下のようにしてファイルタイプを指定する必要があります。これを実現する方法はいくつかありますが、その一つに ftdetect/*.vim というファイルを使う方法があります。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;set filetype=aaaa
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;ftdetect/&lt;em&gt;.vim というファイルは、ファイルを開いた際（厳密にはバッファを開いた際）に自動的に読み込まれて実行されるファイルの一つです。 runtimepath配下にあるftdetect/&lt;/em&gt;.vimを実行します。 このファイルは、以下の設定がされていないと読み込まれないようですが、これだけを設定していても読み込まれない場合がありました。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;set runtimepath+=~/where/to/pluginpath/
filetype plugin on
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;読み込まれるようにするためには以下のように、runtimepathの設定の前に filetype offを設定する必要がありました。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;filetype off
set runtimepath+=~/where/to/pluginpath/
filetype plugin on
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>WiMaxから固定回線に乗り換えた</title><link>https://blog.sei-yo.jp/engineer/2019/07/posts/wimax/</link><pubDate>Wed, 03 Jul 2019 01:42:51 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/07/posts/wimax/</guid><description>&lt;p&gt;WiMAXから固定回線に乗り換えました。&lt;br&gt;
引っ越ししたときにインターネット回線を解約して、次どうするかというときに、また引っ越す予定があったのでWiMAXにしました。&lt;br&gt;
とりあえずはそれなりに速度も出て使えなくはないんだけど、Wi-Fiの電波が弱くて遅かったり、時々切れることもあった。&lt;br&gt;
どこの回線が良いのかなぁとか悩んでいるうちに随分日が経ってしまったけれど、ようやく決めました。&lt;br&gt;
月額料金も安いし（1200円）、速度も今のところ大丈夫そう。集合住宅のベストエフォートだから波があるかもしれないけれど。&lt;br&gt;
Global IPも安いから準備できたら申し込もうかな。&lt;/p&gt;</description></item><item><title>blogの始め方その１</title><link>https://blog.sei-yo.jp/engineer/2019/06/posts/blog_begin_1/</link><pubDate>Tue, 25 Jun 2019 23:27:00 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/06/posts/blog_begin_1/</guid><description>&lt;h1 id="どこに書くか"&gt;どこに書くか&lt;/h1&gt;
&lt;p&gt;blogを書き始めようとするときに、まずはどこに書くかを決める必要があります。 世界中で人気のWord Pressというソフトウェアを使う手もありますが、ややニッチ（？）な&lt;a href="https://www.sixapart.jp/movabletype/"&gt;Movable Type&lt;/a&gt;というソフトウェアもあります。 Movable TypeはSix Apartという会社が開発しているソフトウェアで、商用ブログサービスとしてType Padというものもあります。 私はMovable Typeに書くことにしているのでMovable Typeを使います。&lt;/p&gt;
&lt;h1 id="何で書くか"&gt;何で書くか&lt;/h1&gt;
&lt;p&gt;Movable TypeはWebインタフェースがあるので、ブラウザで書くのが通常ですがブラウザのテキストフォームに書くような形になるので使いづらいです。使いやすくするにはjavascriptを書いて機能拡張するなどの工夫が必要です。しかし、世の中には文章を書くためのツールとしてエディタがいくつもあり、それらを使う方が文書を書くには都合が良いのです。当たり前ですね。Movable TypeにはWebのGUIインタフェース以外にWeb APIも提供しています。このWeb APIは&lt;a href="https://www.movabletype.jp/developers/data-api/"&gt;Data API&lt;/a&gt;という名前で定義されていて、これを使うと記事の新規作成や編集なども行えます。&lt;/p&gt;
&lt;p&gt;そういうわけで、エディタで書いた文章をData APIを使ってMovable Typeに投稿する仕組みが実現できそうです。 これができればエディタで気持ちよく文章を書いて、そのままMovable Typeのblogエントリとして投稿できるはずです。 欠点があるとすれば、写真などの画像を入れようとすると難しくて、WebのGUIインタフェースの方が直感的に配置できたり、アップロードもできるので操作性は上です。 ですので、画像の取り扱いはWeb GUI、文字はエディタと使い分けることにします。&lt;/p&gt;
&lt;p&gt;さて、エディタで書いた文章をData APIを使ってMovable Typeに投稿しようと思いますが、どのような操作性が良いでしょうか。 気軽に編集できるようにするには、エディタでテキストファイルを保存するような操作でData APIを使って投稿できる、修正できるというのが良いでしょうか。 ローカルに編集したり、Data APIを使って編集を反映したりと使い分けられるようにするのも手です。 とりあえずはローカルにあるファイルを編集し、上書き保存すると、Data APIを使ってMovable Typeの記事も編集（変更）されるという仕組みを目指します。&lt;/p&gt;
&lt;h1 id="足りない機能"&gt;足りない機能&lt;/h1&gt;
&lt;p&gt;エディタでファイルを保存すると自動的にData APIにアクセスする仕組みを実現する必要が出てきました。 自動で行うというのがポイントですが、そのためには以下のような方法が考えられます。&lt;/p&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;p&gt;カーネルフックモジュールで実装すると、色々と無駄で遅くなりそうです。 デーモンを用意するのも大げさな感じですし、無駄な感じです。 そこで今回はエディタの保存処理をフックする仕組みを用意することにします。&lt;/p&gt;
&lt;p&gt;保存処理をフックできるようなエディタはいくつもありますが、筆者はvimが好きなのでvimを採用します。 vimはemacsと同じく拡張が用意で基本的になんでもできます。&lt;/p&gt;
&lt;p&gt;vimの場合は、vim scriptという形で保存処理をフックする仕組みを記述すれば実現できます。 vim の設定ファイルはvimrcに記述しますが、この設定ファイルもvim script形式です。 そのため、vimrcに保存処理のフックすく仕組みを書けば解決できますが、その仕組みが巨大であったり、汎用的にできたり、公開したい場合にはプラグインとして作成することもできます。 今回はMovable Type利用者でかつ、vim利用者のためのプラグインを作成することにします。&lt;/p&gt;
&lt;h1 id="足りない機能を補う"&gt;足りない機能を補う&lt;/h1&gt;
&lt;p&gt;vim プラグインに必要な機能はData APIへのアクセスに関するものと、ローカルファイルの取り扱いに関するものに分けられます。 Data APIはHTTPアクセスなのでHTTPリクエストとレスポンスの取り扱いが必要です。 この部分は&lt;a href="https://github.com/vim-jp/vital.vim"&gt;vital.vim&lt;/a&gt;を使います。 ローカルファイルの取り扱いは自分で用意します。&lt;/p&gt;
&lt;p&gt;Data APIで取得したエントリはJSON形式で取得できますが、それをローカルファイルに保存する前にエディタで編集しやすい形に整形する必要があります。 また、その逆にローカルファイルの内容をData APIで投稿する際には逆の整形を行う必要があります。 こうした処理をちまちま書いていくといずれ出来上がります。 プラグインの処理の詳細は別の記事に書きますので、そちらを参照してください。&lt;/p&gt;</description></item><item><title>vim script の関数定義の際の引数リストのカンマの前にスペースは書けない</title><link>https://blog.sei-yo.jp/engineer/2019/06/posts/vimscript-invalid-space/</link><pubDate>Wed, 19 Jun 2019 22:36:21 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/06/posts/vimscript-invalid-space/</guid><description>&lt;p&gt;&lt;a href="https://www.sei-yo.jp/blog/engineer/2019/06/E475.html"&gt;前回の記事&lt;/a&gt;に書いた件、以下のURLに知りたいことが書いてありました。 どうやらバグではなくて仕様ということらしいです。 help :todo を見ると、ドキュメントに書こうとしているようです。（以下に抜粋）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Space before comma in function definition not allowed: &amp;quot;function x(a , b)&amp;quot;
Give a more appropriate error message. Add a remark to the docs.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href="https://vi.stackexchange.com/questions/8454/vimscript-invalid-argument-in-function-declaration"&gt;参考URL&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;というわけで、 vim script の関数定義の際の引数リストのカンマの前にスペースは書けないということがわかりました。&lt;/p&gt;</description></item><item><title>vim scriptの関数定義時のE475発生条件</title><link>https://blog.sei-yo.jp/engineer/2019/06/posts/e475/</link><pubDate>Wed, 19 Jun 2019 22:35:01 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/06/posts/e475/</guid><description>&lt;p&gt;vim scriptで関数定義しただけでE475という引数不正のエラーが出た。 以下のokfuncは問題無いが、ngfuncは定義時にエラーとなるようで、sourceコマンドで読み込むだけでエラーとなる。 つまり、カンマの前にスペースがあるとエラーとなる。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;function! s:okfunc( arg1, arg2 ) abort
 echo &amp;quot;it's ok&amp;quot;
endfunction
function! s:ngfunc( arg1 , arg2 ) abort
 echo &amp;quot;it's ng&amp;quot;
endfunction
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;上記を適当なファイルに保存して、sourceで読み込むと以下のエラーとなった。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;E475: 無効な引数です: arg1 , arg2 ) abort
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;確認した環境は8.1-1142&lt;/p&gt;</description></item><item><title>「チューリングの計算理論入門」を読んだ</title><link>https://blog.sei-yo.jp/engineer/2019/06/posts/turing/</link><pubDate>Mon, 17 Jun 2019 00:53:57 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/06/posts/turing/</guid><description>&lt;p&gt;「チューリングの計算理論入門」を読んだ。 チューリングマシンってどんなだっけ？と思って、手に取った本。 シャノンの情報理論入門の著者と同じで、本の位置付けも入門で同じ。 チューリングについて語る前に、その頃の時代背景の説明や関係しそうなしなさそうな人物の紹介などについて述べて、その後チューリングの話に入るという展開。 チューリングマシンというものは、そもそも物理的な機械でなくて、数学的な理論の実装機械というものであり、その説明のために時代背景やチューリングが達成したかった数学的課題を説明している。そして、チューリングマシンは数学的な基礎だけでなく、現代のコンピュータの基礎としての位置付けとなった。&lt;/p&gt;
&lt;p&gt;チューリングマシンとは、無限長のテープ（記憶装置）と状態を持った機械であり、状態遷移とテープの読み書きのルールを定義することであらゆるアルゴリズムを実行できるものです。&lt;/p&gt;</description></item><item><title>「シャノンの情報理論入門」を読んだ</title><link>https://blog.sei-yo.jp/engineer/2019/06/posts/shannon/</link><pubDate>Sat, 08 Jun 2019 03:43:25 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/06/posts/shannon/</guid><description>&lt;p&gt;「シャノンの情報理論入門」を読んだ。&lt;/p&gt;
&lt;p&gt;学生時代の教科書として使っていたもっと堅い情報理論の本を読み返しているのだけれども、よく理解できないところがあったので、違う本も読んでみて理解を深めようと思って手にした本です。 情報理論というのは、情報というのをどのように伝達するのが効率良いのかとか意味のある情報とは何かとかそういうものを定義するものです。ある通信路を通して情報を一方から他方へ伝える場合の符号化の方法として何が最適かということを考える学問です。&lt;/p&gt;
&lt;p&gt;堅い方の本で特によくわからなかったのは情報エントロピーでした。シャノンの情報理論入門では、エントロピーを期待値と説明していましたが、あぁ、なるほどと理解が深まりました。&lt;/p&gt;
&lt;p&gt;本書はなるべく平易な表現で大まかに理解することを目指したものなので、タイトル通り、入門に良いと感じました。&lt;/p&gt;</description></item><item><title>vim plugin mtdataapi の更新記録（ダウンロード機能追加）</title><link>https://blog.sei-yo.jp/engineer/2019/06/posts/vim_plugin_mtdataapi/</link><pubDate>Thu, 06 Jun 2019 22:36:55 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/06/posts/vim_plugin_mtdataapi/</guid><description>&lt;p&gt;mtdataapiに記事のダウンロード機能を設けました。&lt;/p&gt;
&lt;p&gt;以下のコマンドでダウンロードできます。 ダウンロード先は、g:mt_basedir です。この配下にサイトIDのディレクトリが作られます。各エントリはエントリIDのファイル名になります。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;let g:mt_basedir = $HOME/mtblog
:mtdataapi#downloadSiteToFile()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href="https://github.com/hseiyo/vim-mtdataapi"&gt;Movable Type 用 Vim Plugin: mtdataapi.vim&lt;/a&gt;&lt;/p&gt;</description></item><item><title>A Tour of Go の split関数</title><link>https://blog.sei-yo.jp/engineer/2019/05/posts/a_tour_of_go_split/</link><pubDate>Sat, 18 May 2019 01:30:51 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/05/posts/a_tour_of_go_split/</guid><description>&lt;p&gt;A Tour of GoというGo言語のチュートリアルがあるのでそれを見ていたら、サンプルコードにsplit関数というのがあった。 split関数に17という値を渡すと、7と10の二つの値を戻り値として返す関数なのだが、1の位と10の位に分けられたの！？と驚いたので整理。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;func split(sum int) (x, y int) {
 x = sum * 4 / 9
 y = sum - x
 return
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;上記関数に17を与えると x = 7, y = 10 のそれぞれの値が返る。 x は4/9を掛けているだけで、yはxを引くだけ。なんでそれで7と10に分けられるのか。。 単純に計算すると以下の通り。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;x = 17 * 4 / 9
 = 68 / 9
 = 7 余り 5
 = 7 (intなので切り捨て）

y = 17 - 7
 = 10
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;ふーむ。&lt;/p&gt;
&lt;p&gt;一つ目のxの式をyの式に代入してみる。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;y = sum - sum * 4 / 9
 = sum * 5 / 9

sum = 17
y = 17 * 5 / 9
 = 9 余り 4
 = 9（intなので切り捨て）
 != 10
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;一致しない。 今度はsumの式として二つ目の式を一つ目の式に代入。&lt;/p&gt;</description></item><item><title>Goはじめ</title><link>https://blog.sei-yo.jp/engineer/2019/05/posts/go/</link><pubDate>Fri, 17 May 2019 22:16:47 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/05/posts/go/</guid><description>&lt;p&gt;Goを触ることにしたので、色々なドキュメントを読んだメモを書こうと思って始めたものの二つで力尽きたので続きはまた別に。&lt;/p&gt;
&lt;h1 id="go-のインストール"&gt;Go のインストール&lt;/h1&gt;
&lt;p&gt;tarボールを展開するだけでとりあえず終わり。 GOPATH環境変数は設定しない場合は/goが設定される。設定しなくても良い。 /go以外にしたい場合に設定すれば良いとのこと。&lt;/p&gt;
&lt;p&gt;インストールした後に、普通設定すべきこととしてパスの設定がある。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;export PATH=$PATH:$(go env GOPATH)/bin
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href="https://golang.org/doc/install"&gt;https://golang.org/doc/install&lt;/a&gt;&lt;/p&gt;
&lt;h1 id="go-の基本"&gt;Go の基本&lt;/h1&gt;
&lt;p&gt;以下のURLに基本が書いてあるのでとりあえずこれを読むのが良さそう。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://golang.org/doc/code.html"&gt;https://golang.org/doc/code.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;$GOPATH（~/go/）が唯一のワークスペース。複数作らないで一つにする。と書いてある。 Go以外の言語では、プロジェクト毎にワークスペースがあるけれども、Goでは単一のワークスペースであることが違い。 そこ代わりに、単一のワークスペースに複数のリポジトリが含まれており、さらにそれらは複数のパッケージを含む。 リポジトリというのはバージョン管理の対象の単位。.gitディレクトリが存在するディレクトリのこと。 パッケージとは、ディレクトリ一つ毎にパッケージ一つであり、例えばパッケージ毎に異なる実行ファイルを提供する。 パッケージは複数のソースファイルを含んで良いが、ディレクトリは単一。&lt;/p&gt;
&lt;p&gt;ワークスペースには、src/とbin/というディレクトリがあり、src/配下に複数のリポジトリを配置する。bin/には、それらの実行ファイルを配置する。&lt;/p&gt;
&lt;p&gt;ワークスペースにはシンボリックリンクは使うべきではないとのこと。 現在のワークスペースは以下のコマンドで確認できる。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;go env GOPATH
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="パッケージパス"&gt;パッケージパス&lt;/h2&gt;
&lt;p&gt;自分で作ったGoソースファイルや誰かの作ったパッケージ等は、$GOPATH/src/の下のディレクトリパスを使って指定する。 fmtパッケージのような標準パッケージは短い。自分でパッケージを作成するときは将来的にも標準パッケージと同じにならないように注意する必要がある。ただし、github.comで公開するような場合は、github.com/ユーザ名 がそのベースパスとなり、その下にパッケージ名が続くようになる。&lt;/p&gt;
&lt;h2 id="build-and-install"&gt;build and install&lt;/h2&gt;
&lt;p&gt;ソースファイルをビルドしてインストールするには、 go install コマンドを使う。 パッケージパスを引数に指定するか、パッケージディレクトリにcdしてからコマンドを実行する。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;go install github.com/hseiyo/hello
or
cd $GOPATH/src/github.com/hseiyo/hello
go install
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;installできたコマンドは実行可能。 GOPATH/binをPATHに追加してあればコマンド名だけで実行可能。 go build コマンドを代わりに使うと、ビルドして実行ファイルは作成されるが、$GOPATH/binにはコピーされずにパッケージディレクトリに作成される。これも実行可能ではあるが、このパッケージが実行コマンドではなくライブラリの場合にはinstallではなく、buildを実行してパッケージディレクトリにバイナリファイルを置いておく。 他のソースファイルからimportする際に利用される。&lt;/p&gt;
&lt;h2 id="パッケージ名"&gt;パッケージ名&lt;/h2&gt;
&lt;p&gt;ソースファイルには必ず以下のようにようにしてパッケージ名を指定する。 同一のパッケージに所属するソースファイルはすべて同じパッケージ名を指定する。これは必ず指定が必要。 ディレクトリ名と同じ文字列をパッケージ名として指定する。&lt;/p&gt;
&lt;p&gt;パッケージ名はほかのパッケージと同じものを利用しても問題ないが、インポートパス名は異なる必要がある。&lt;/p&gt;
&lt;h2 id="テスト用ソースファイル"&gt;テスト用ソースファイル&lt;/h2&gt;
&lt;p&gt;_test.goで終わるファイル名のファイルはテスト用に使用する。&lt;/p&gt;
&lt;p&gt;testingパッケージをインポートした上で、Test&amp;lt;関数名&amp;gt;(t *testing.T)という関数を定義する。 そして以下のコマンドを実行する。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;go test github.com/hseiyo/hello
or
cd $GOPATH/src/github.com/hseiyo/hello
go test
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="go-get"&gt;go get&lt;/h2&gt;
&lt;p&gt;例えば以下のコマンドは、リモートからファイルを取得（ダウンロード）して、ビルドしてインストール（$GOPATH/bin/へのコピー）を行う。&lt;/p&gt;</description></item><item><title>実践Vimを読んだ。</title><link>https://blog.sei-yo.jp/engineer/2019/05/posts/vim_1/</link><pubDate>Wed, 08 May 2019 23:59:18 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/05/posts/vim_1/</guid><description>&lt;p&gt;実践Vimを読みました。 本書は初心者向けの内容ということですが、触ったこともないような初心者向けというよりは、vimtutorを終えて基本的な操作がわかった人向けという感触です。 タイトル通り、実践的な内容となっていて、実現したいことの実現方法をいくつも紹介しながらメリット、デメリットを紹介していて、それぞれで使用するオペレータやモーションの理解が深まるようになっています。そのため、どういう場合にどういうオペレータを使うべきかを理解できるようになっています。 なるべく繰り返し操作がしやすいような操作を求めていくと、実現したいことにぴったり一致するオペレータを知る必要が出てきますが、いろいろなオペレータを紹介することで、よくある操作を実行するのに必要なオペレータは既にあるということをうまく示せているように思います。繰り返しを基本とするように考えていくと、段々とどんなオペレータがあるのか調べる必要が出てくるので、今後の上達にもつながっていくと感じます。&lt;/p&gt;
&lt;p&gt;印象に残った使い方としては、マークの使い方（vimgrepの実行前とかquickfix関連の実行前とかにマーク設定）とか、挿入モードやコマンドラインモードでのC-rを使った文字入力（C-r0とかC-rC-wとか）とか、globalコマンドの使い方（実行するexコマンドに、rangeを与えて範囲を広く指定するとか）です。でも、そもそも繰り返し可能にするためにどういうオペレータにすべきかとか、マクロの直列実行、並列実行とかそういう考え方が整理されて記述されているのがとても理解の助けになりました。&lt;/p&gt;
&lt;p&gt;今後もvimの上達に向けて精進したいと思います。&lt;/p&gt;</description></item><item><title>logo 作成サービス hatchful</title><link>https://blog.sei-yo.jp/engineer/2019/04/posts/logo_hatchful/</link><pubDate>Mon, 29 Apr 2019 16:20:20 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/04/posts/logo_hatchful/</guid><description>&lt;p&gt;logo 作成サービスのhatchfulというものを使ってみた。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.shopify.jp/blog/introduce-hatchful"&gt;hatchful&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;faviconとブログのカバー画像をこれに変えてみた。 まだ変えられていないところも多いけれど、そもそもブログがたくさんあるのでそれの整理もした方が良いかなぁ。。。&lt;/p&gt;</description></item><item><title>Tweetボタン設置</title><link>https://blog.sei-yo.jp/engineer/2019/04/posts/tweetbutton/</link><pubDate>Tue, 23 Apr 2019 22:36:02 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/04/posts/tweetbutton/</guid><description>&lt;p&gt;以下に従ってTweetボタンを設置してみた。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://developer.twitter.com/en/docs/twitter-for-websites/tweet-button/overview.html"&gt;Tweet Button&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://publish.twitter.com/"&gt;https://publish.twitter.com/&lt;/a&gt;を使うと簡単にhtmlコードを生成できるので、簡単だった。&lt;/p&gt;</description></item><item><title>msys2にrbenv-buildでruby 2.6.3をインストール（失敗）</title><link>https://blog.sei-yo.jp/engineer/2019/04/posts/msys2rbenv-buildruby_263/</link><pubDate>Tue, 23 Apr 2019 22:32:24 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/04/posts/msys2rbenv-buildruby_263/</guid><description>&lt;p&gt;msys2にrbenv-buildでruby 2.6.3をインストールしようとして失敗してあきらめた話。 どうもmsys2でrubyをコンパイルしようとするとうまくいかないという話がちらほらあるらしいといくつか聞いたのであきらめることにした。 そもそもrbenvが動作しない。bin/rbenv を libexec/rbenv へのリンクにするととりあえず動作する。 rbenv install 2.6.3 すると、ダウンロードの途中で止まったようになり、Installing というメッセージが表示されない。 Ctrl-ｚで中断したときかfgで再開したときに以下のメッセージが出る。 何度か同じメッセージが出るのを確認して、ここで諦めた。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;rbenv install 2.6.3
Installing ruby-2.6.3...

BUILD FAILED (MSYS_NT-10.0 3.0.6(0.338/5/3) using ruby-build 20190401-11-geee8a47)

Inspect or clean up the working tree at /tmp/ruby-build.20190423210704.9867
Results logged to /tmp/ruby-build.20190423210704.9867.log

Last 10 log lines:
/tmp/ruby-build.20190423210704.9867 ~

bzip2: I/O or other error, bailing out. Possible reason follows.
bzip2: No error
 Input file = (stdin), output file = (stdout)
/where/to/path/.rbenv/plugins/ruby-build/bin/ruby-build: 353 行: 9912 Stopped tar $tar_args &amp;quot;$package_filename&amp;quot;
/tmp/ruby-build.20190423210704.9867/ruby-2.6.3 /tmp/ruby-build.20190423210704.9867 ~
/where/to/path/.rbenv/plugins/ruby-build/bin/ruby-build: 行 589: ./configure: No such file or directory
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>pandoc's raw option</title><link>https://blog.sei-yo.jp/engineer/2019/04/posts/pandocs_raw_option/</link><pubDate>Tue, 23 Apr 2019 21:57:43 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/04/posts/pandocs_raw_option/</guid><description>&lt;p&gt;昨日まで使えていた pandoc の -parse-raw（-R) オプションが使えなくなって、代わりに+raw_htmlを使えというエラーが出て調べた。&lt;/p&gt;
&lt;p&gt;無くなったのは2017年10月のpandc 2.0がリリースされたとき。最近変わったのかと思ったら結構前。 なんでかと思ったら、動いていた環境はWSLのUbuntu 16.04で古いのが入っていただけだった。バージョンは、1.16.0.2。 ちなみに動かなかったのはWindowsの2.7.3．こっちはだいぶ新しい。ちゃんと代わりのオプションを提示してくれたのが良い。&lt;/p&gt;
&lt;p&gt;詳細はリリースノート参照。 –parse-rawで検索すると該当箇所がわかる。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://pandoc.org/releases.html#pandoc-2.0-29-oct-2017"&gt;Release Note&lt;/a&gt;&lt;/p&gt;</description></item><item><title>msys2でrbenv</title><link>https://blog.sei-yo.jp/engineer/2019/04/posts/msys2rbenv/</link><pubDate>Mon, 22 Apr 2019 21:36:38 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/04/posts/msys2rbenv/</guid><description>&lt;p&gt;msys2を使ってみることにして、とりあえずvimのビルドしようと思ったらrubyがなかったので、rbenvを入れようとしたらなぜか動かない。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ ~/.rbenv/bin/rbenv init
.rbenv/bin/rbenv: 行 1: ../libexec/rbenv: No such file or directory
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;ファイルは存在しているのに無いと言われてしまう。 同じ悩みを持つひとは、これをシンボリックリンクに変えて対処したようだ。&lt;a href="https://qiita.com/tchofu/items/fe87c9ad0495eabe6ba4"&gt;こちら参照&lt;/a&gt;。 同じようにシンボリックリンクにしてみると確かに動く。 .rbenv/bin/rbenvの中身は確かに1行しかなくて、これを実行するだけなのでリンクに置き換えても問題なさそう。 問題は相対パスで書かれたものを実行できないということなのか。&lt;/p&gt;
&lt;p&gt;切り分けのために、rbenvの中身を絶対パスに変更してみると。。&lt;/p&gt;
&lt;p&gt;うん。動く。と思ったら引数が渡らない。 リンクのように振舞っているということか？相対パスの始まりが、コマンド実行時のカレントディレクトリになっているみたい。 試しに ~/.rbenv/bin に移動してから実行するとやはり動く。 相対パスの解釈の仕方が問題のようだ。 でも、この後の調べ方がわからない。相対パスを実行しようとするのは誰なのか。bashか？ bash -xで見ても特に何も出ない。&lt;/p&gt;</description></item><item><title>「なっとく！アルゴリズム」を読んだ</title><link>https://blog.sei-yo.jp/engineer/2019/04/posts/grokking_algorithms/</link><pubDate>Sat, 20 Apr 2019 00:45:54 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/04/posts/grokking_algorithms/</guid><description>&lt;p&gt;「なっとく！アルゴリズム」を読んだ。&lt;/p&gt;
&lt;p&gt;イラストを多く使って分かりやすくしているのがウリのアルゴリズム本とのこと。 しかし、読んでみるとなんとなくわかりづらかった。何がわかりづらいのか考えてみると、おそらく定義が無いか曖昧か後に出てくるのが原因だろうと思う。問題点の説明はできているので、問題の共有は読者との間にできていると思うが、アルゴリズムの定義がやや曖昧で、なるほどと納得するのに時間が掛かった。また、Pythonでアルゴリズムを表現しているが、全体のコードが後に出てくるため、全体を把握してから読み進めるというよりは、小さな部品から初めて完成させるというボトムアップ型の作りになっているのも関係しているかもしれない。&lt;/p&gt;
&lt;p&gt;ただ内容については、&lt;a href="https://www.sei-yo.jp/blog/engineer/2019/04/post-2.html"&gt;「初めてのコンピュータサイエンス」&lt;/a&gt;に記載のなかったダイクストラ法等もあって幅広いアルゴリズムについて触れている。そこに惹かれたのが、本書を読んだ理由の一つでもある。&lt;/p&gt;
&lt;p&gt;以下に、言及のあったアルゴリズムを挙げる。キーワードの紹介だけのものも含む。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;二分探索&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;分割統治&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;クイックソート&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;幅優先探索（グラフ）&lt;/p&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;貪欲法&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;動的計画法&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;k近傍法&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;B 木&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;赤黒木&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;スプレー木&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;転置インデックス&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;フーリエ変換&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ブルームフィルタ&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;HyperLogLog&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Simhash&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>「実例で学ぶRaspberry Pi電子工作 作りながら応用力を身につける」を読んだ</title><link>https://blog.sei-yo.jp/engineer/2019/04/posts/raspberry_pi/</link><pubDate>Sun, 14 Apr 2019 02:21:50 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/04/posts/raspberry_pi/</guid><description>&lt;p&gt;「Raspberry Piで学ぶ電子工作 作って動かしてしくみがわかる」を読んだ。 図書館で何か面白い本は無いかなと探していて目に留まったのがこれ。 以前から気になっていたラズパイ。何かしてみたいもののこれといってやりたいことも見当たらなかったので、本を読んで具体化できたら何か思い浮かぶかと思って読んでみた。 買い方から始まってLEDの点灯に慣れたところで、スイッチの導入、カメラ画像の入力、サーボモーターを使った4足歩行など、一通り面白そうなことをやって示していて、非常に興味深く読むことができた。&lt;/p&gt;
&lt;p&gt;電子回路は詳しくないが、色々と説明があるためにどういう課題に対して、この回路が役に立つのかということがわかりやすく記載されていて、自分で様々な電子回路部品を購入して使ってみようという気にさせる内容であった。 カメラ画像の扱いについても基本的な画像処理まで触れられており、実践的であった。この本を借りたのもそこが決めてであった。 まだ購入に至っていないが、カメラ画像を機械学習して何かを検知、通報するような用途に使うのが面白そうなので監視カメラとしての役割で何かできないか考えてみようと思う。&lt;/p&gt;</description></item><item><title>「初めてのコンピュータサイエンス」を読んだ</title><link>https://blog.sei-yo.jp/engineer/2019/04/posts/post_2/</link><pubDate>Sun, 14 Apr 2019 01:56:17 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/04/posts/post_2/</guid><description>&lt;p&gt;「初めてのコンピュータサイエンス」を読んだ。 最近、Googleの入社エントリが話題になったが、やはりコンピュータサイエンスの基礎はきちんとしておかねばならないと再認識する良いきっかけになった。 大学の講義の教科書として使っていた本を読もうかと思ったが、手元になかったので図書館で何か良いものはないかと探して選んだのがこの本。 Pythonを使って説明する内容となっているためにPythonの説明から始まるが、アルゴリズムの説明などは多言語にも応用の利くように記載されていてPython以外の言語を書く人に対しても有効な記載ぶりである。 大学の講義を思い出すような内容であったが、プログラミングスタイルなどにも触れてられていて、大学の講義にはなかった内容もあって有意義であった。&lt;/p&gt;
&lt;p&gt;今後しばらくはコンピュータサイエンス系の本を中心に読もうと思う。 次はアルゴリズム系として以下の本を読む予定。&lt;/p&gt;</description></item><item><title>pandocでフォーマット変換（vim-mtdataapi）</title><link>https://blog.sei-yo.jp/engineer/2019/03/posts/withpandoc/</link><pubDate>Thu, 28 Mar 2019 01:18:57 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/03/posts/withpandoc/</guid><description>&lt;p&gt;mtdataapiというvimのpluginからMovable Typeへの記事投稿の際、markdown形式で投稿できるようにしました。 変換にはpandocを使っています。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/hseiyo/vim-mtdataapi"&gt;mtdataapi&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Movable Type へのフィードバック方法</title><link>https://blog.sei-yo.jp/engineer/2019/03/posts/movable_type/</link><pubDate>Sat, 23 Mar 2019 09:45:25 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/03/posts/movable_type/</guid><description>&lt;p&gt;&lt;a href="https://www.sei-yo.jp/blog/engineer/2019/03/movable-type-data-api-v4-authenticationbad-gateway.html"&gt;先日の記事&lt;/a&gt;でMovable Typeのドキュメントのバグを見つけたのでフィードバックを行ったところ、すぐに対応して修正してもらえました。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://movabletype.atlassian.net/browse/FEEDBACK-1309"&gt;https://movabletype.atlassian.net/browse/FEEDBACK-1309&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;フィードバック方法 以下のURLから内容を投稿するだけです。 ユーザ名やメールアドレスは公開情報となるので記入必須ではないようです。 メールアドレスを登録するとその後の対応が通知されます。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.sixapart.jp/movabletype/feedback.html"&gt;https://www.sixapart.jp/movabletype/feedback.html&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Movable Type 用 Vim Plugin を開発中</title><link>https://blog.sei-yo.jp/engineer/2019/03/posts/vim-mtdataapi/</link><pubDate>Thu, 21 Mar 2019 01:53:42 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/03/posts/vim-mtdataapi/</guid><description>&lt;p&gt;Movable Type というCMSを使ってブログを書いていますが、基本的にブラウザで入力するため文章入力が非効率に感じることが多々あったので、vimから投稿できるようにvim pluginを開発しています。&lt;/p&gt;
&lt;p&gt;単純な更新ができるようになってきたので、一旦githubに公開しましたが、とても一般の方が使える状態ではありません。 需要があるようでしたら、issueやSNSなどで連絡もらえると嬉しいです。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/hseiyo/vim-mtdataapi"&gt;Movable Type 用 Vim Plugin: mtdataapi.vim&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Movable Type Data API v4 の authenticationでBad Gateway</title><link>https://blog.sei-yo.jp/engineer/2019/03/posts/movable_type_data_api_v4_authenticationbad_gateway/</link><pubDate>Tue, 19 Mar 2019 01:04:50 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/03/posts/movable_type_data_api_v4_authenticationbad_gateway/</guid><description>&lt;p&gt;以下のマニュアルを参照してMovable Type 7のData API v4 の authentication を試したが、なかなかうまくいかなかった。 原因は clientId の I が小文字になっていたためだった。&lt;/p&gt;
&lt;p&gt;マニュアルの例のところが小文字になっていたのでそれを参考にしていたのが間違い。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.movabletype.jp/developers/data-api/v4-reference.html#authentication-authentication-post"&gt;マニュアル&lt;/a&gt;&lt;/p&gt;</description></item><item><title>vimのhelpを読んで新たに覚えた便利なコマンド（usr42）</title><link>https://blog.sei-yo.jp/engineer/2019/03/posts/vimhelpusr42/</link><pubDate>Fri, 08 Mar 2019 21:00:35 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/03/posts/vimhelpusr42/</guid><description>&lt;p&gt;&lt;a href="https://www.sei-yo.jp/blog/engineer/2019/02/vimhelpusr41.html"&gt;前回&lt;/a&gt;の続きです。 usr42はGUIメニューについて。&lt;/p&gt;
&lt;p&gt;あまりGUIにこだわりはないので情報少なめ。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;:menu メニューの編集などが可能。mapコマンドのようにモード別のコマンドがある。 引数無しだと定義済みのメニューが表示される。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;guioptions-=T ツールバーを非表示にする。 個人的に、メニューは使うこともあるがツールバー（アイコンのボタン）は使わないので、いらない。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>cgroupを使った負荷生成ツール</title><link>https://blog.sei-yo.jp/engineer/2019/03/posts/cgroup/</link><pubDate>Sun, 03 Mar 2019 11:07:44 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/03/posts/cgroup/</guid><description>&lt;p&gt;必要にせまられて（？）、指定したCPU使用率、メモリ使用率の負荷を掛けるツールを作りました。 cgroupを使ってツールのCPU使用率とメモリ使用率を制限します。 特別なツールを使わずに負荷を掛けられるのでstressパッケージをインストールしなくても負荷を掛けられるのがポイントです。と言いつつも、中でperlを使ってしまったのでこれも不要にする予定です。&lt;/p&gt;
&lt;p&gt;stressパッケージを使わない方法はyesコマンドを使う方法やtmpfsをマウントする方法が検索すると見つかりますが、実行時間を指定できないために開始終了が煩雑（特に複数CPUコアの場合）だったり、メモリがbuff/cache扱いになって参照したい指標によってはメモリ使用率が高くないように見えてしまうために、変数領域として確保するようにしました。&lt;/p&gt;
&lt;p&gt;使用率の指定はOS全体の使用率は指定できず、ツールの使用率しか指定できないので、注意が必要です。ここは今後改善したいと思っている部分です。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/hseiyo/stress"&gt;https://github.com/hseiyo/stress&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Google Homeへの外部からの音声配信</title><link>https://blog.sei-yo.jp/engineer/2019/02/posts/google_home/</link><pubDate>Wed, 27 Feb 2019 01:14:45 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/02/posts/google_home/</guid><description>&lt;p&gt;自宅にいるのにスマホの着信に気づかない家族のために、外出先からGoogle Home（実際はmini）に通知をする仕組みが無いか調べたところ、Google Homeのブロードキャスト機能で実現できることがわかった。 Google Homeアプリのブロードキャストを選んで、配信したいことを声に出して言うだけ。 するとGoogle Homeからその音声が流れるという仕組み。&lt;/p&gt;
&lt;p&gt;Alexaの場合は、リマインダーを使うということを書いた記事があったが、Google Homeなら音声配信がブロードキャストでできるので便利。ただ、リマインダーを使う場合は時間指定を行うので今すぐ伝えたいとき以外でも使えるのが便利。ブロードキャストはすぐに伝える用途向き。&lt;/p&gt;</description></item><item><title>Exif情報やファイルのタイムスタンプを元にファイル名を変更するjheadコマンド</title><link>https://blog.sei-yo.jp/engineer/2019/02/posts/exifjhead/</link><pubDate>Mon, 25 Feb 2019 15:15:53 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/02/posts/exifjhead/</guid><description>&lt;h1 id="背景"&gt;背景&lt;/h1&gt;
&lt;p&gt;写真の整理をするのにファイル名を日付にしたかったので、便利なコマンドがないかと探して、jheadを使ってみました。 これまでは自作のスクリプトで対応していましたが、エラーハンドリングが中途半端だったので世の中の便利なツールを探しました。&lt;/p&gt;
&lt;h1 id="ツールに求める条件"&gt;ツールに求める条件&lt;/h1&gt;
&lt;p&gt;条件としては以下のもの。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;コマンド実行可能（GUI不要）&lt;/li&gt;
&lt;li&gt;Exif情報から撮影日で日付のファイル名に変更可能&lt;/li&gt;
&lt;li&gt;重複時刻のファイルを別名で保存可能&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="jhead以外の選択肢"&gt;jhead以外の選択肢&lt;/h1&gt;
&lt;p&gt;renamerというキーワードで色々見つかります。 pyrenamerが高機能そうでしたが、GUIが必要なようなので選択肢から外れました。&lt;/p&gt;
&lt;h1 id="jheadの説明"&gt;jheadの説明&lt;/h1&gt;
&lt;p&gt;jheadはExif情報の編集ツールですが、-nオプションでファイル名の変更ができます。 jheadコマンドの引数にオプションとファイル名を渡します。 ファイル名変更の場合は以下のように実行します。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;jhead -n%Y%m%d-%H%M%S-%03i ファイル名
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;%iの指定は複数ファイルを指定した場合にそれらの通番となります。&lt;/p&gt;</description></item><item><title>vimのhelpを読んで新たに覚えた便利なコマンド（usr41）</title><link>https://blog.sei-yo.jp/engineer/2019/02/posts/vimhelpusr41/</link><pubDate>Mon, 11 Feb 2019 02:28:37 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/02/posts/vimhelpusr41/</guid><description>&lt;p&gt;&lt;a href="https://www.sei-yo.jp/blog/engineer/2019/02/vimhelpusr40.html"&gt;前回&lt;/a&gt;の続きです。&lt;/p&gt;
&lt;p&gt;この賞はVim scriptの記法について。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;let 変数定義に使います。 以下のようにs:を付けるとスクリプトローカルな変数を定義できます。 let s:count&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;使わなくなったら、unlet s:countで変数を削除してメモリを解放します。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;exists() 変数の存在確認結果を返す。 引数は変数名の文字列を指定するため、以下のように実行します。 if exists(&amp;ldquo;s:count&amp;rdquo;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;$HOME $で始まるのは環境変数。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;amp;ic &amp;amp;で始まるのはオプション。 &amp;amp;icはignorecaseオプションのこと。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;@r @で始まるのはレジスタ。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;. ピリオドを使って文字の連結ができます。 Perlと同じ。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;a ? b : c aならばb、aでないならc。 よくある3項演算子。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;a =~ b aがbパターンにマッチする。 =~ではなく、!&lt;del&gt;ならマッチしない。 Perlと同じ。ただし、大文字小文字を区別しない。 パターンは文字列として指定する。 &amp;ldquo;test&amp;rdquo; =&lt;/del&gt; &amp;ldquo;e&amp;rdquo;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;a =&lt;del&gt;# b aがbパターンにマッチする。大文字小文字を区別する。 Perlと同じ。 =&lt;/del&gt;?とすると大文字小文字を区別しない。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;continue.break while文のループ中で、次のループへ遷移したりループを終了する。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;eval 文字列を評価した結果を返す。 executeコマンドは結果をコマンドとして実行するが、evalは評価のみで価を返す。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;function 関数定義。 関数名は大文字で開始。 関数の中で引数を参照するときは、a:countという形でa:を付ける。 関数の中でletコマンドによって定義した変数は関数ローカルな価となる。 s:等を付けた場合はそれに従う。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;function FunctionName() range rangeを付けると範囲指定を受け付ける。以下のように実行できる。 10,30call FunctionName 範囲は、a:firstline、a:lastlineで参照する。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;rangeを付けなかった関数を10,30callで呼ぶと、同じ関数を21回呼ぶことになる。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;function FunctionName(Start, &amp;hellip;) &amp;hellip;で可変長引数を指定。 a:0は可変長引数の数。a:000は可変長引数のリスト。 a:1は可変長引数の最初の値。&lt;/p&gt;</description></item><item><title>vimのhelpを読んで新たに覚えた便利なコマンド（usr40）</title><link>https://blog.sei-yo.jp/engineer/2019/02/posts/vimhelpusr40/</link><pubDate>Mon, 11 Feb 2019 01:47:19 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/02/posts/vimhelpusr40/</guid><description>&lt;p&gt;&lt;a href="https://www.sei-yo.jp/blog/engineer/2019/02/vimhelpusr29-usr32.html"&gt;前回&lt;/a&gt;の続きです。&lt;/p&gt;
&lt;p&gt;この賞は「新しいコマンドを作る」ということで、「map」、「command」、「autocmd」が説明されています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;map、unmap キーのマップを定義します。 をほかのキーに割り当てたりすることで、便利なキーとして登録できます。 unmapでマップを削除します。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;command コマンドを定義します。 コマンド名は大文字で始める必要があります。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;autocmd イベント発生時に自動的に実行するコマンドを指定します。 commandで作成したコマンドやcallコマンドを使って関数を実行できます。 executeコマンドを使うと実行するコマンドを動的に作成して実行することができます。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>vimのhelpを読んで新たに覚えた便利なコマンド（usr29-usr32）</title><link>https://blog.sei-yo.jp/engineer/2019/02/posts/vimhelpusr29-usr32/</link><pubDate>Sat, 02 Feb 2019 00:36:57 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/02/posts/vimhelpusr29-usr32/</guid><description>&lt;p&gt;&lt;a href="https://www.sei-yo.jp/blog/engineer/2019/01/vimhelpusr26-usr28.html"&gt;前回&lt;/a&gt;の続きです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;=a{ コードブロック（a{）を再インデント gg=Gとするとファイル全体の再インデント。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;blockquote&gt;
&lt;p&gt;a{ コードブロック（a{)をインデント {}の行も含む。含まないときはi{を使う。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;挿入モードでCtrl-D, Ctrl-T インデント削除（Ctrl-D）とインデント追加（Ctrl-T） カーソルの位置は関係なく、その行に対して適用&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;set expandtabと:%retab set expandtabでタブ文字を使用不可に設定。 retabコマンドで、バッファ中のタブ文字をスペースに置換&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;undo 2 2番の変更に戻る（アンドゥ）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;g-、g+ g-で前の変更に戻る（アンドゥ） g+で次の変更に進む（リドゥ） ただし、アンドゥしてから変更した場合などもその順ですべての変更状態に遷移できる。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;earlier 1f、later 10m earlier、laterで変更履歴を戻ったり進んだりする。 1fは最後に保存した状態。10mは10分など。 undolistで変更確認可能。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>GDPRのためのCookie利用通知</title><link>https://blog.sei-yo.jp/engineer/2019/01/posts/gdprcookie/</link><pubDate>Tue, 29 Jan 2019 00:00:44 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/01/posts/gdprcookie/</guid><description>&lt;p&gt;GDPRへの対応としてCookieの利用通知を行うにはどうしたら良いのか気になっていましたが、調べてみると同じ悩みを持つ人はたくさんいるようで、手っ取り早く対処するには&lt;a href="https://cookieconsent.insites.com/"&gt;Cookie Consent&lt;/a&gt;を使うのが良さそう。 というわけで、さっそく使ってみた。 Wizardに従って出来上がったCodeをコピペするだけ。通知だけで、オプトインやオプトアウトしない場合は簡単。 プライバシーポリシーも作ってきちんとやった方が良いのだろうけど、とりあえずデフォルトのリンク先を採用して設定した。&lt;/p&gt;</description></item><item><title>vimのhelpを読んで新たに覚えた便利なコマンド（usr26-usr28）</title><link>https://blog.sei-yo.jp/engineer/2019/01/posts/vimhelpusr26-usr28/</link><pubDate>Sun, 27 Jan 2019 02:07:10 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/01/posts/vimhelpusr26-usr28/</guid><description>&lt;p&gt;&lt;a href="https://www.sei-yo.jp/blog/engineer/2019/01/vimhelpusr23-usr25.html"&gt;前回&lt;/a&gt;からの続きです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;:argdo %s/a/b/ge :args *.cというように指定して引数リストに関連ファイルを設定した上で、argdoコマンドで引数リストのファイルすべてに対してコマンドを実行。検索の場合、eが無いと文字列が見つからない場合にエラーで途中終了する。 ほかに:windo、bufdoコマンドもある。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ls | vim - vimのバッファを標準入力で埋める。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;vim -w script file.txt scriptファイルにfile.txtの操作コマンド（ノーマルモードコマンド）の履歴を保存する。 後からvim -s script file.txtとすると同じ操作を適用できる。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;set ignorecase smartcase 検索時の大文字小文字の違いを無視するが、パターンに大文字が含まれる場合は無視しない。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;/\Cword \Cは大文字小文字の違いを無視しない。\cだと無視する。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;/abc/2 abcが見つかった行の2行下に移動する オフセットという。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;/abc/e+2 見つかった文字の最後（c）の二つ右に移動する bだと先頭を基準に移動する。 文字オフセットという。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;set foldclose=all 折り畳みを自動的に閉じる&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;set foldmethod=indent インデントによって自動的に折り畳みを作る。 shiftwidthによって折り畳みを判断する&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>vimのhelpを読んで新たに覚えた便利なコマンド（usr23-usr25）</title><link>https://blog.sei-yo.jp/engineer/2019/01/posts/vimhelpusr23-usr25/</link><pubDate>Thu, 24 Jan 2019 00:03:49 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/01/posts/vimhelpusr23-usr25/</guid><description>&lt;p&gt;&lt;a href="https://www.sei-yo.jp/blog/engineer/2019/01/vimhelpusr20-usr22.html"&gt;前回&lt;/a&gt;の続きです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;:%!xxd 16進ダンプとテキスト表示に変更（バッファを書き換える） 戻すときは以下。 編集は16進数部分のみ可能。それ以外は無視される。 これを使えばバイナリエディタとして使える。 :%!xxd -r&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;set showmatch 閉じ括弧の入力時に開き括弧にカーソルが移動する。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;挿入モードでのCTRL-P、CTRL-N カーソル直前の文字列を使って補完入力 カレントバッファ等にある文字列から補完候補を選ぶ。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;挿入モードでのCTRL-X CTRL-F ファイル名の補完。 /と打ってから補完すると/usrなどが候補として表示される。 さらに深い階層の補完候補を出すには再度CTRL-X CTRL-Fを入力。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;挿入モードでのCTRL-A 前回と同じ文字を挿入する。 連続して同じ文字列を挿入する際に便利。 CTRL-@は挿入後挿入モードを抜けるらしいが、実際に試しても何も怒らなかった。なんでだろ。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;挿入モードでのCTRL-YとCTRL-E CTRL-Yはカーソル位置の一行上の文字を挿入する。 CTRL-Eはカーソル位置の一行下の文字を挿入する。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;gj、gk 表示行での移動。 折り返すほど長い行での移動を小刻みにする。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;set virtualedit=all 行末より後ろなどの文字の無い場所にもカーソル移動ができ、文字の挿入や矩形選択が可能となる。 終了するときは以下。 set virtualedit=&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;gr、gR 画面上の表示幅が崩れないように文字を置換。 tabを置換する際に崩れない。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>vimのhelpを読んで新たに覚えた便利なコマンド（usr20-usr22）</title><link>https://blog.sei-yo.jp/engineer/2019/01/posts/vimhelpusr20-usr22/</link><pubDate>Wed, 16 Jan 2019 23:01:14 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/01/posts/vimhelpusr20-usr22/</guid><description>&lt;p&gt;&lt;a href="https://www.sei-yo.jp/blog/engineer/2019/01/vimhelpusr11-usr12.html"&gt;前回&lt;/a&gt;の続きです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;q: コマンドラインの履歴を編集して再実行できる。 過去実行したコマンドを編集（変更）して似たようなコマンドを実行したいときに便利。例えば、検索コマンドとか。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;:oldfiles 最近開いたファイルの一覧を表示。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="2とすると2番目のファイルを指すe-2という感じで使う"&gt;&amp;lt;2とすると2番目のファイルを指す。:e #&amp;lt;2という感じで使う。&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;:mksession file.vim file.vimにセッション情報を保存する。 セッション情報を使うと開いていたファイルなどの情報を再現してvimを起動することができる。 vim -S file.vim または :source file.vim&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>vimのhelpを読んで新たに覚えた便利なコマンド（usr11-usr12）</title><link>https://blog.sei-yo.jp/engineer/2019/01/posts/vimhelpusr11-usr12/</link><pubDate>Tue, 15 Jan 2019 22:10:27 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2019/01/posts/vimhelpusr11-usr12/</guid><description>&lt;p&gt;&lt;a href="https://www.sei-yo.jp/blog/engineer/2018/12/vimhelpusr.html"&gt;前回&lt;/a&gt;の続きです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;K カーソルのある単語のmanを引く。 なんとびっくり。こんなことできるんですね。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;:grep abc *.txt *.txtの中からabcをgrepして、該当箇所にカーソルを移動。ファイルも開く。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>vimのhelpを読んで新たに覚えた便利なコマンド（usr10まで）</title><link>https://blog.sei-yo.jp/engineer/2018/12/posts/vimhelpusr/</link><pubDate>Mon, 31 Dec 2018 15:46:16 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2018/12/posts/vimhelpusr/</guid><description>&lt;p&gt;&lt;a href="https://www.sei-yo.jp/blog/engineer/2018/12/vimhelpusr-04txt.html"&gt;前回&lt;/a&gt;に引き続き、helpをみてそれまで知らなかったけれども使えそうと思ったコマンドを紹介。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;qa レジスタaにマクロとして操作を保存。 実行は@a レジスタはヤンクで使われるものと同じなので、バッファの文字列をレジスタにヤンクしてマクロとして実行することも可能。 &amp;ldquo;ayyみたいに。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;?pattern1?+1,/pattern2/-2s/foo/bar/g 上方向（後方）にpattern1を検索し見つかった行の次の行から、下方向（前方）にpattern2を検索し2行手前（上の行）までを対象に、fooをbarにすべて置換する。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;!Gsort バッファの内容をsortコマンドの結果で置き換える。 一時ファイルを用意する必要ないので便利&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;:read !ls コマンドの実行結果をバッファに挿入。 以下だと現在位置を書き換え :.!ls&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;:wirte !wc ファイルの中身をコマンドに渡す。 結果が表示されるが、その後enterを押すと表示が消える。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>vimのCTRL-^が動かない</title><link>https://blog.sei-yo.jp/engineer/2018/12/posts/vimctrl-/</link><pubDate>Sun, 30 Dec 2018 03:22:06 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2018/12/posts/vimctrl-/</guid><description>&lt;p&gt;vimのヘルプの、「07.3 他のファイルにジャンプする」にあるCTRL-^が期待通りに動かない。。なんでだろ。&lt;/p&gt;
&lt;p&gt;:argsで現在ファイルを確認して、:nextや:previousでファイルを変更してからCTRL-^を入力しても何も変わらない。&lt;/p&gt;</description></item><item><title>vimのテキストをhtmlに変換</title><link>https://blog.sei-yo.jp/engineer/2018/12/posts/vimhtml/</link><pubDate>Sun, 30 Dec 2018 02:54:55 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2018/12/posts/vimhtml/</guid><description>&lt;p&gt;何がうれしいかって、blogにコードを張るときにhtmlコードをそのままコピペできる点。&lt;br&gt;
でも、出来上がるhtmlファイルはそれ単体で完結している作りなので部分的にコピペが必要で勝手はいまいち。スタイルシートはblogに事前に設定しておけば変更不要なのでそこの手間は不要。&lt;/p&gt;
&lt;p&gt;以下のコマンドで変換できる。&lt;/p&gt;
&lt;p&gt;:TOhtml&lt;/p&gt;
&lt;p&gt;以下が例。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;1 if exists('g:loaded_helloworld')
2 finish
3 endif
4 let g:loaded_helloworld = 1
5 command! HWorld call helloworld#hello_world()
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>vimのhelpを読んで新たに覚えた便利なコマンド（usr_04.txtまで）</title><link>https://blog.sei-yo.jp/engineer/2018/12/posts/vimhelpusr_04txt/</link><pubDate>Sun, 30 Dec 2018 01:44:25 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2018/12/posts/vimhelpusr_04txt/</guid><description>&lt;p&gt;vimを使いこなせていない自信があったのでヘルプを見て勉強し直したら便利な使い方がたくさん載っていたのでここにメモ。 とりあえずusr_04.txtの範囲まで。&lt;/p&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;p&gt;g* カーソル位置の単語を含むものを検索&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;H 画面上部にカーソル移動&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;M 画面中央にカーソル移動&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;-L 画面下部にカーソル移動&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;CTRL-O、CTRL-I（Tab） 前、後の位置にジャンプ（カーソル移動）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ma、&lt;code&gt;a maでマークして、&lt;/code&gt;aで移動。 CTRL-O、CTRL-Iでジャンプもできる&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;`` 一つ前の位置にジャンプする（最初はCTRL-Oと同じ挙動）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;~ 大文字小文字変換 ビジュアルモードでも利用可&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;（ビジュアルモード）o、O 選択範囲の変更のために、カーソルを反対側に移動 始点の変更ができる。矩形選択の場合はOも使って範囲変更可能。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;ldquo;* yやpと合わせてクリップボードを使用&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>はじめてのvim plugin作成</title><link>https://blog.sei-yo.jp/engineer/2018/12/posts/vim_plugin/</link><pubDate>Wed, 19 Dec 2018 00:42:21 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2018/12/posts/vim_plugin/</guid><description>&lt;p&gt;vimconf2018 には参加できなかったけれども、発表資料を読んだりTwitterを眺めているとやっぱり何かしたくなったのと、もっとvimを使いこなしたくなったのでpluginを書く練習を始めようと決意した。&lt;/p&gt;
&lt;p&gt;helpを読んで書いてみようと思ったが、サンプルで既に理解できないところがあったので、Alisueさんの&lt;a href="%22https://vimconf.org/2018/slides/Effective_Modern_Vim_scripting_at_vimconf2018_for_PDF.pdf%22"&gt;発表資料&lt;/a&gt;にあるHello Worldを真似てみるところからスタート。&lt;/p&gt;
&lt;p&gt;ファイル名やコマンド名は多少変えたけれども、そのまんま。すごく簡単。&lt;/p&gt;
&lt;p&gt;plugin/helloworld.vim&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;1 if exists('g:loaded_helloworld')
2 finish
3 endif
4 let g:loaded_helloworld = 1
5 command! HWorld call helloworld#hello_world()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;autoload/helloworld.vim&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;1 function! helloworld#hello_world() abort
2 echo &amp;quot;Hello, World&amp;quot;
3 endfunction
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>kubenetes導入顛末記 その２</title><link>https://blog.sei-yo.jp/engineer/2018/08/posts/kubenetes_1/</link><pubDate>Thu, 23 Aug 2018 22:45:03 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2018/08/posts/kubenetes_1/</guid><description>&lt;p&gt;&lt;a href="https://www.sei-yo.jp/blog/engineer/2018/08/kubenetes.html" title="その１"&gt;その１&lt;/a&gt;でとりあえず動作するところまで確認できたので、ここからはチュートリアルに沿ってやってみる。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://kubernetes.io/docs/tutorials/hello-minikube/"&gt;https://kubernetes.io/docs/tutorials/hello-minikube/&lt;/a&gt;&lt;/p&gt;
&lt;h1 id="nodeアプリケーション作成"&gt;nodeアプリケーション作成&lt;/h1&gt;
&lt;p&gt;server.jsというhello worldを作成。&lt;/p&gt;
&lt;p&gt;node server.jsで動作確認して問題ないことを確認。&lt;/p&gt;
&lt;h1 id="docker-containerイメージ作成"&gt;Docker Containerイメージ作成&lt;/h1&gt;
&lt;p&gt;Dockerfileを作成。&lt;/p&gt;
&lt;p&gt;以下のコマンドで環境変数を設定。そしてビルド。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;eval $(minikube docker-env) 
docker build -t hello-node:v1 . 
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id="heading"&gt;`&lt;/h1&gt;
&lt;p&gt;`Deployment作成&lt;/p&gt;
&lt;p&gt;以下のコマンドでPodも作成されて動いているらしい。&lt;/p&gt;
&lt;p&gt;でも、ローカルIPからしか接続できないらしい。試しにminikube sshでログインしてみたけども8080ポートで待ち受けているプロセスはなかった。。nodeコマンドは動作中だったので他のポートで待っているみたいだけど。どこで変換しているのか。。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;kubectl run hello-node --image=hello-node:v1 --port=8080 --image-pull-policy=Never 
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id="service作成"&gt;Service作成&lt;/h1&gt;
&lt;p&gt;外からもアクセスできるようにServiceを作成する。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;kubectl expose deployment hello-node --type=LoadBalancer
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;以下のコマンドで得られるURLにアクセスすると無事に表示される。どのポートで待っているのかの謎はこれで解ける。でも、ポートが8080ではないんだな。なんでだろ。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;minikube service --url hello-node
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;アクセスログは以下で参照できた。pod-nameも補完してくれて良い感じ。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;kubectl logs &amp;lt;POD-NAME&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id="アプリの更新"&gt;アプリの更新&lt;/h1&gt;
&lt;p&gt;Docker Containerイメージを作成してDeploymentを更新。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker build -t hello-node:v2 . 
kubectl set image deployment/hello-node hello-node=hello-node:v2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;これだけで新しいイメージが使われるようになった。Dashboardでも確認。&lt;/p&gt;
&lt;h1 id="heapster-addonの有効化"&gt;heapster addonの有効化&lt;/h1&gt;
&lt;p&gt;性能監視用のaddonらしい。以下で有効にするとdashboardのoverviewでCPUとメモリのグラフが表示されて、ほかのところにもそういった情報が追加される。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;minikube addons enable heapster 
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id="clean-up"&gt;Clean up&lt;/h1&gt;
&lt;p&gt;作成したものを削除する。&lt;/p&gt;</description></item><item><title>kubenetes導入顛末記 その１</title><link>https://blog.sei-yo.jp/engineer/2018/08/posts/kubenetes/</link><pubDate>Wed, 22 Aug 2018 20:25:04 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2018/08/posts/kubenetes/</guid><description>&lt;h1 id="前置き"&gt;前置き&lt;/h1&gt;
&lt;p&gt;コンテナに触れようと思い、kubenetesを導入することにしたので、その記録。&lt;br&gt;
導入先はUbuntu 16.04の物理サーバ1台です。&lt;/p&gt;
&lt;h1 id="導入方法の決定"&gt;導入方法の決定&lt;/h1&gt;
&lt;p&gt;kubenetesの導入方法はいろいろあるようですが、とりあえず動かしたいならminikubeがおすすめと記載があるのでそれに従う。&lt;/p&gt;
&lt;p&gt;選び方は&lt;a href="https://kubernetes.io/docs/setup/pick-right-solution/" title="kubenetesの導入方法の選択"&gt;こちら&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;選んだのは、&lt;a href="https://kubernetes.io/docs/setup/minikube/" title="setup minikube"&gt;Running Kubernetes Locally via Minikube&lt;/a&gt;。&lt;/p&gt;
&lt;h1 id="kubenetes導入の前にhypervisor導入"&gt;Kubenetes導入の前にHypervisor導入&lt;/h1&gt;
&lt;p&gt;手順を見ていくと最初にHypervisorを入れろとある。ただ、VM上に構築しないという手もあるらしい。&lt;br&gt;
記載順などからVirtual Boxが良さそうなのでVirtualBoxを採用。&lt;/p&gt;
&lt;p&gt;ということで、まずはVirtualBoxの導入。以下のURLに従ってaptのsourceを指定してインストール。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.virtualbox.org/wiki/Linux_Downloads"&gt;https://www.virtualbox.org/wiki/Linux_Downloads&lt;/a&gt;&lt;/p&gt;
&lt;h1 id="minikube導入の前にkubectl導入"&gt;minikube導入の前にkubectl導入&lt;/h1&gt;
&lt;p&gt;以下の通り、こちらもaptのsourceを設定してinstall。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://kubernetes.io/docs/tasks/tools/install-kubectl/"&gt;https://kubernetes.io/docs/tasks/tools/install-kubectl/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ちなみにこの状態で kubectl cluster-infoを実行すると以下の通り。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ kubectl cluster-info 
Kubernetes master is running at http://localhost:8080 
 
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'. 
The connection to the server localhost:8080 was refused - did you specify the right host or port?
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id="kubectlのautocompletion設定"&gt;kubectlのautocompletion設定&lt;/h1&gt;
&lt;p&gt;ここも前述のガイドにならって設定する。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo &amp;quot;source &amp;lt;(kubectl completion bash)&amp;quot; &amp;gt;&amp;gt; ~/.bashrc 
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id="minikubeの導入"&gt;minikubeの導入&lt;/h1&gt;
&lt;p&gt;ここでようやくminikubeの導入。&lt;/p&gt;</description></item><item><title>vim + ALEの組み合わせが便利</title><link>https://blog.sei-yo.jp/engineer/2018/06/posts/vim_ale/</link><pubDate>Mon, 04 Jun 2018 08:07:11 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2018/06/posts/vim_ale/</guid><description>&lt;p&gt;最近、lintツールとしてw0rp/aleというものを使っているのですが良い感じ。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/w0rp/ale"&gt;https://github.com/w0rp/ale&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;rubocopを使っていると、UTF-8の日本語がコードポイントに置き換わったことがあったのだけど、なんでだろうか。。&lt;/p&gt;</description></item><item><title>Windowsマシンでの開発環境構築</title><link>https://blog.sei-yo.jp/engineer/2018/01/posts/windows/</link><pubDate>Tue, 30 Jan 2018 21:19:23 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2018/01/posts/windows/</guid><description>&lt;p&gt;一体どこで開発したら良いのか、自分でいつも迷うのでここにメモ。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Cygwin + GVim（Windows Native）&lt;/li&gt;
&lt;li&gt;WSL&lt;/li&gt;
&lt;li&gt;Ubuntu on Vagrant（via ssh）&lt;/li&gt;
&lt;li&gt;Uubntu on Bare Metal（via ssh）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;リポジトリはどこにあるのかというと、上記のすべてに散らかっている感じ。&lt;/p&gt;
&lt;p&gt;これを整理せねば。&lt;/p&gt;</description></item><item><title>気になるvim pluginとその他vim関連</title><link>https://blog.sei-yo.jp/engineer/2018/01/posts/vim_pluginvim/</link><pubDate>Tue, 30 Jan 2018 20:22:32 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2018/01/posts/vim_pluginvim/</guid><description>&lt;p&gt;pluginってプラグインだと思っていたけど、最近はプラギンって言うの？&lt;/p&gt;
&lt;p&gt;vimcof2017への参加などで刺激を受けていろいろ調べていたらchromeのタブが増えすぎたのでここに書いて少し整理。&lt;br&gt;
いろいろ試したいこともあるので試したらその結果も整理したい。&lt;/p&gt;
&lt;p&gt;C-Xでの補完&lt;br&gt;
&lt;a href="http://daisuzu.hatenablog.com/entry/2015/12/05/002129"&gt;http://daisuzu.hatenablog.com/entry/2015/12/05/002129&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;gvimでの動画再生&lt;br&gt;
&lt;a href="https://mattn.kaoriya.net/software/vim/20100326022004.htm" title="https://mattn.kaoriya.net/software/vim/20100326022004.htm"&gt;https://mattn.kaoriya.net/software/vim/201003260&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;vim-helplint&lt;br&gt;
&lt;a href="https://github.com/machakann/vim-vimhelplint"&gt;https://github.com/machakann/vim-vimhelplint&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;lexima.vim（かっこを自動で付ける）&lt;br&gt;
&lt;a href="https://github.com/cohama/lexima.vim"&gt;https://github.com/cohama/lexima.vim&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;日本語を除外したスペルチェック&lt;br&gt;
&lt;a href="http://d.hatena.ne.jp/osyo-manga/20131117/1384691873"&gt;http://d.hatena.ne.jp/osyo-manga/20131117/1384691873&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;lightline.vm&lt;br&gt;
&lt;a href="https://github.com/itchyny/lightline.vim"&gt;https://github.com/itchyny/lightline.vim&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;カラースキーマ検索&lt;br&gt;
&lt;a href="http://colorswat.ch/vim/"&gt;http://colorswat.ch/vim/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;vim-quickrun&lt;br&gt;
&lt;a href="https://github.com/thinca/vim-quickrun"&gt;https://github.com/thinca/vim-quickrun&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;vint（vm script lint）&lt;br&gt;
&lt;a href="https://github.com/Kuniwak/vint"&gt;https://github.com/Kuniwak/vint&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;vim-qfreplace&lt;br&gt;
&lt;a href="https://github.com/thinca/vim-qfreplace"&gt;https://github.com/thinca/vim-qfreplace&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;vim-easymotion&lt;br&gt;
&lt;a href="https://github.com/easymotion/vim-easymotion"&gt;https://github.com/easymotion/vim-easymotion&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;vital-over&lt;br&gt;
&lt;a href="https://github.com/osyo-manga/vital-over"&gt;https://github.com/osyo-manga/vital-over&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;vial.vim&lt;br&gt;
&lt;a href="https://github.com/vim-jp/vital.vim"&gt;https://github.com/vim-jp/vital.vim&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;power-assert&lt;br&gt;
&lt;a href="https://github.com/haya14busa/vital-power-assert"&gt;https://github.com/haya14busa/vital-power-assert&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;インデント&lt;br&gt;
&lt;a href="http://labs.timedia.co.jp/2011/04/9-points-to-customize-automatic-indentation-in-vim.html"&gt;http://labs.timedia.co.jp/2011/04/9-points-to-customize-automatic-indentation-in-vim.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;画面分割・タブ&lt;br&gt;
&lt;a href="https://qiita.com/tekkoc/items/98adcadfa4bdc8b5a6ca"&gt;https://qiita.com/tekkoc/items/98adcadfa4bdc8b5a6ca&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;vim設定など&lt;br&gt;
&lt;a href="http://postd.cc/how-to-boost-your-vim-productivity/"&gt;http://postd.cc/how-to-boost-your-vim-productivity/&lt;/a&gt;&lt;/p&gt;</description></item><item><title>vimは毎朝コンパイル</title><link>https://blog.sei-yo.jp/engineer/2017/11/posts/vim/</link><pubDate>Thu, 23 Nov 2017 01:31:07 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2017/11/posts/vim/</guid><description>&lt;p&gt;vimconf2017でvimは毎朝（？）コンパイルすべきというような話を聞いたような気がするのでコンパイルしてみた話。&lt;/p&gt;
&lt;p&gt;最初はLinux上でコンパイル。特に難しくない。&lt;br&gt;
configure してmakeするおなじみの手順。&lt;/p&gt;
&lt;p&gt;Windows環境用にどうするかで悩んだ。慣れないVisual Studio 2017を使ってみることにした。&lt;br&gt;
これまではkaoriya版しか使ってこなかったので、自分でコンパイルするのは初めて。&lt;/p&gt;
&lt;p&gt;Visual Studio 2017 Communityをインストール。&lt;br&gt;
コンポーネントは適当に選んでみる。&lt;/p&gt;
&lt;p&gt;vcvars32.batを実行し忘れてnmakeすると、io.hが無いとエラーになった。&lt;/p&gt;
&lt;p&gt;vcvars32.batを実行してからnmakeすると、rcコマンドが無いとエラーになった。&lt;br&gt;
rcコマンドがどこにあるのかわからない。Windows10 SDKに含まれている気がしたので、複数あるバージョンをすべてインストール。&lt;/p&gt;
&lt;p&gt;どのバージョンかわからないが、これでrc.exeがインストールできたのでコンパイル。&lt;/p&gt;
&lt;p&gt;今度はluaがリンクできないメッセージ。ふーむ。&lt;br&gt;
32bitでコンパイルしようとしているのに64bitのライブラリを使おうとしてたみたい。&lt;br&gt;
32bit版を以下からダウンロードしてコンパイル成功！&lt;/p&gt;
&lt;p&gt;&lt;a href="https://sourceforge.net/projects/luabinaries/files/"&gt;https://sourceforge.net/projects/luabinaries/files/&lt;/a&gt;&lt;/p&gt;</description></item><item><title>dein.vim使ったvimrcでのcolorscheme設定</title><link>https://blog.sei-yo.jp/engineer/2017/11/posts/deinvimvimrccolorscheme/</link><pubDate>Sat, 04 Nov 2017 23:23:24 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2017/11/posts/deinvimvimrccolorscheme/</guid><description>&lt;p&gt;&lt;a href="http://cocopon.me/app/vim-iceberg/" title="iceberg"&gt;iceberg&lt;/a&gt;というcolorschemeを作った人の発表をvimconf2017で聞いたら、colorshcemeが大好きなちょっと？変わった人だったので、きっとこれは良いに違いないと導入を決めました。&lt;/p&gt;
&lt;p&gt;dein.vimを使っているとどうもうまく反映されないので以下のページを参考にautocmdを使って設定したらうまくいきました。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;au MyAutoCmd VimEnter * nested colorscheme iceberg&lt;br&gt;
syntax enable&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;参考URL&lt;/p&gt;
&lt;p&gt;&lt;a href="https://qiita.com/kawaz/items/ee725f6214f91337b42b"&gt;dein.vimによるプラグイン管理のマイベストプラクティス&lt;/a&gt;&lt;/p&gt;</description></item><item><title>vimconf2017へ行ってきた</title><link>https://blog.sei-yo.jp/engineer/2017/11/posts/vimconf2017/</link><pubDate>Sat, 04 Nov 2017 22:05:07 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2017/11/posts/vimconf2017/</guid><description>&lt;p&gt;11月4日に&lt;a href="http://vimconf.vim-jp.org/2017/" title="vimconf2017"&gt;vimconf2017&lt;/a&gt;が開催されました。&lt;/p&gt;
&lt;p&gt;vimの話はさておき、コーヒーは無料だし、お弁当は今半のすきやき弁当だし、懇親会は飲み放題だし、ホテルのビュッフェみたいなおいしい料理だしとても美味しかったです。&lt;/p&gt;
&lt;p&gt;各席には電源コンセントもあるし、会場のWi-Fiもあるし、不自由なく過ごせました。&lt;/p&gt;
&lt;p&gt;困った点といえば、vimのコマンドや機能を知らなくて理解が不十分だったり、懇親会で相談したり情報提供できるようなネタが無くて何を話すか悩んでしまったりしたことくらいでした。&lt;/p&gt;
&lt;p&gt;発表内容はどれも興味深くて、色々と試してみたくなるような内容ばかりでした。&lt;br&gt;
これから実際に試しながらvim力を高めていきたいと思います。&lt;/p&gt;
&lt;p&gt;また来年も参加したいです！&lt;/p&gt;
&lt;p&gt;以下、メモしたキーワードやURLです。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://qiita.com/atsushieno/items/ce31df9bd88e98eec5c4" title="LSP"&gt;LSP（Language Server Protocol）&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/machakann/vim-vimhelplint" title="vimhelplint"&gt;vim-vimhelplint&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/k-takata/minpac" title="minpac"&gt;minpac&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/cohama/lexima.vim" title="lexima"&gt;lexima&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/vim-jp/issues/issues/476" title="spell check"&gt;spell check&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://cocopon.me/app/vim-iceberg/" title="iceberg"&gt;iceberg&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://colorswat.ch/vim/" title="colorswat.ch"&gt;colorswat.ch&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/itchyny/lightline.vim" title="lightline"&gt;lightline.vim&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/thinca/vim-quickrun" title="quickrun"&gt;quickrun&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Ubuntu16.04でのWLI-UC-GN有効化</title><link>https://blog.sei-yo.jp/engineer/2016/12/posts/ubuntu1604wli-uc-gn/</link><pubDate>Sun, 11 Dec 2016 13:19:44 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2016/12/posts/ubuntu1604wli-uc-gn/</guid><description>&lt;p&gt;以下の記事と同じことをUbuntu16.04でやってみた。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.sei-yo.jp/blog/seiyo_memo/2011/12/wli-uc-gnhostapd-ap.html"&gt;WLI-UC-GNでhostapd 使ってAP化に成功&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;カーネルコンパイルで参考にしたのは以下のページ。&lt;br&gt;
普通に/usr/src/linuxからのmakeじゃないので戸惑った。&lt;br&gt;
Ubuntuの場合は、fakerootも使うし、makeコマンドじゃなくて専用のスクリプトを使うのね。&lt;br&gt;
しかも、linux-sourceパッケージをインストールしてもソースコードが含まれていなくてさらに混乱。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.hiroom2.com/2016/05/18/ubuntu-16-04%E3%81%A7%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E3%82%92%E5%86%8D%E3%83%93%E3%83%AB%E3%83%89%E3%81%99%E3%82%8B/"&gt;Ubuntu 16.04でカーネルを再ビルドする&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>