tag:blogger.com,1999:blog-24186535533294661032024-03-13T14:53:15.801+09:00T2-Wonderland// Go言語でいろいろソフトを作りながら、ebitenライブラリでゲーム『黒菜んダッシュ』制作中!٩( 'ω' )وケモケモhttp://www.blogger.com/profile/01722329778246472058noreply@blogger.comBlogger305125tag:blogger.com,1999:blog-2418653553329466103.post-36807251469181552842023-06-03T11:23:00.002+09:002023-06-03T11:23:42.065+09:00ブログを引っ越します<p> ながらく本サイトでブログをやってきたのですが、自分にとってもっと書きやすくて、もっと好きなようにカスタマイズできるようにしたいと考えまして、以下に引っ越すことにしました。</p><p><a href="https://kemokemo.github.io/kemokemo-blog/" rel="nofollow" target="_blank">KemoKemo Blog - KemoKemoの気ままなつぶやき</a></p><p>記事のソースはGitHub管理で、Hugoという静的なサイトを生成する仕組みを使ってGitHub Actionがビルドし、GitHub Pagesへとデプロイします。</p><p><a href="https://github.com/kemokemo/kemokemo-blog" rel="nofollow" target="_blank">kemokemo / kemokemo-blog</a></p><p><a href="https://github.com/vaga/hugo-theme-m10c" rel="nofollow" target="_blank">hugo-theme-m10c</a> という素敵なHugo Themeがあったので、これをForkして <a href="https://github.com/kemokemo/hugo-theme-m10c" rel="nofollow" target="_blank">検索機能を追加するなど自分用にカスタマイズ</a> して使っています。</p><p>新しいブログでも、たまに覗きに来ていただけると嬉しいですm(_ _)m どうぞよろしくお願いいたします。</p>ケモケモhttp://www.blogger.com/profile/01722329778246472058noreply@blogger.com0tag:blogger.com,1999:blog-2418653553329466103.post-88697604106899095362022-12-31T22:51:00.000+09:002022-12-31T22:51:10.310+09:00「結月ゆかり」さんのキャラ絵や音声の使用について調べてみた<p>突然ですが、私ケモケモは <a href="https://vocalomakets.com/yuzuki-yukari" rel="nofollow" target="_blank">結月ゆかり</a> さんの声が大好きです。落ち着きがあって艷やか且つ魅力的な声で、十数年前からファンです。</p><p>ですので、VOICEROIDを購入してしゃべってもらう練習をしながら、「いつか自作ゲームの紹介ナレーションしてもらうねん!」と思っておりました。</p><p><br /></p>
<blockquote class="twitter-tweet"><p dir="ltr" lang="ja">大好きな漫画「<a href="https://twitter.com/hashtag/%E3%81%AD%E3%81%93%E3%82%80%E3%81%99%E3%82%81%E9%81%93%E8%8D%89%E6%97%A5%E8%A8%98?src=hash&ref_src=twsrc%5Etfw">#ねこむすめ道草日記</a>」の同人アクションゲーム「<a href="https://twitter.com/hashtag/%E9%BB%92%E8%8F%9C%E3%82%93%E3%83%80%E3%83%83%E3%82%B7%E3%83%A5?src=hash&ref_src=twsrc%5Etfw">#黒菜んダッシュ</a>」の進捗です。本日、やっとスペシャル技を放てるようになりました!(*´ω`*)<br />途中カットインが入り、黒菜さんの速度がグンとあがる箇所です。基本機能ができたので、グラフィックなどをブラッシュアップしてゆきます!🔥 <a href="https://t.co/00HJxfv94T">pic.twitter.com/00HJxfv94T</a></p>— ケモケモ@「黒菜んダッシュ」鋭意制作中 (@t2wonderland) <a href="https://twitter.com/t2wonderland/status/1541042579029913600?ref_src=twsrc%5Etfw">June 26, 2022</a></blockquote> <script async="" charset="utf-8" src="https://platform.twitter.com/widgets.js"></script>
<p>最近やっと、動画でゲーム開発の進捗を報告したいシチュエーションが増えてきたので、ゲームのプレイ動画にナレーションをつけるための準備を本格的に始めつつあります。</p><p>そこで今更になって気になったのが、結月ゆかりさんのキャラ絵や音声の使用に関して以下の点です。</p><p></p><ul style="text-align: left;"><li>無料で配布予定の自作同人ゲームに、結月ゆかりさんの音声を使ってよいのだろうか?</li><li>自作同人ゲームの紹介動画に、キャラ絵や音声で出演してもらってよいのだろうか?</li></ul><div><br /></div><div>という訳で、公式の情報を調べることにしました。情報ソースを整理しつつ、2022/12/31 現在の情報をメモしたいと思います。</div><div><br /></div><h1 style="text-align: left;">キャラ絵の使用について</h1><div><br /></div><div>動画編集スキル Lv.1の超がつく初心者なので、「<a href="https://www.ah-soft.com/rs/" rel="nofollow" target="_blank">Recotte Studio</a>」のお世話になろうと思っています。このソフトを使うと、音声再生に合わせてキャラ絵が口パクしてくれる機能がありまして、そこに結月ゆかりさんもいらっしゃいます。</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvNdtXujmcVnqWS9Y56fSilCcrLDN0Xja8ulrwWHwj17G1RVdtrrDXGxEqFR9trixCEq-jJoTcSshrLWTPN_LfeDK6mjfsTONw7GBI-H2FjWI8Cbj6mJ18Uk1sibqQ_gvJXj8OUka2VQpC1WOXo_AGUfpX_T5In4_4TzF__7SUoDA1girPKyA9fNfYdQ/s2912/kuronan-dash-narration-with-yukari.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1690" data-original-width="2912" height="372" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvNdtXujmcVnqWS9Y56fSilCcrLDN0Xja8ulrwWHwj17G1RVdtrrDXGxEqFR9trixCEq-jJoTcSshrLWTPN_LfeDK6mjfsTONw7GBI-H2FjWI8Cbj6mJ18Uk1sibqQ_gvJXj8OUka2VQpC1WOXo_AGUfpX_T5In4_4TzF__7SUoDA1girPKyA9fNfYdQ/w640-h372/kuronan-dash-narration-with-yukari.png" title="Recotte Studioで「結月ゆかり」さんを設定した例" width="640" /></a></div><br /><div>この「結月ゆかりさんのキャラ絵を使った動画を、YouTubeにアップした場合、ライセンスは大丈夫だろうか?」というのが私の疑問点です。</div><div><br /></div><div>公式の「<a href="https://vocalomakets.com/guidelines" rel="nofollow" target="_blank">VOCALOMAKETSのキャラクター使用ガイドライン</a>」の「<a href="https://vocalomakets.com/guidelines#character_faq" rel="nofollow" target="_blank">キャラクター使用FAQ</a>」を読んでみますと、「<a href="https://vocalomakets.com/guidelines#1-03" rel="nofollow" target="_blank">Q.1-03</a>」に以下の記述がありました。</div><div><br /></div><p></p><blockquote>Q.1-03 本キャラクターの名称および二次創作イラスト、公式3Dモデルを使用した動画の収益化について <br /><br /><div>A.1-03 本ガイドラインの範囲内での本キャラクターの名称および二次創作イラスト、公式3Dモデルを使用した動画について、個人による収益化をしても構いません。</div><div>なお、音声の使用については各メーカーの音声利用規約等に従ってください。</div></blockquote><p>「<a href="https://vocalomakets.com/guidelines#kikusuiren-02" rel="nofollow" target="_blank">第2条(使用許諾)</a>」など基本的なガイドラインの内容を遵守するのはもちろんで、それを満たせば個人制作のYouTube動画に出演いただいても大丈夫そうです。嬉しいです(*´ω`*) なお、広告をつけた場合でも同様に許可してもらえるようです。ありがたやm(_ _)m</p><p><br /></p><h1 style="text-align: left;">VOICEROIDの音声使用について</h1><p>YouTubeにアップする動画には、結月ゆかりさんの音声ナレーションもつけたいです。公式である「<a href="https://www.ah-soft.com/" rel="nofollow" target="_blank">株式会社 AHS</a>」の「<a href="https://www.ah-soft.com/commercial/voiceroid/private/" rel="nofollow" target="_blank">VOICEROID 個人利用許諾範囲</a>」を読んでみます。</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpb04gQiCSX2KVHAiVyCLR3eojnYu58uQRuI1A6tWrNJgtfYlyebeq0dWzoWOP2QKQIPbd6HHSTaU_lDOahNvmuEWpEbEo-2y9T1O6hU6YvjnnJan-g3Tlbk4EUxUOkNSBcq0LTCteTM4XgKJFgZ6q2S5L71Ig1MCrdZsrd0QAyWnoxPukqINiGJMJpQ/s1564/use-with-youtube.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="994" data-original-width="1564" height="406" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpb04gQiCSX2KVHAiVyCLR3eojnYu58uQRuI1A6tWrNJgtfYlyebeq0dWzoWOP2QKQIPbd6HHSTaU_lDOahNvmuEWpEbEo-2y9T1O6hU6YvjnnJan-g3Tlbk4EUxUOkNSBcq0LTCteTM4XgKJFgZ6q2S5L71Ig1MCrdZsrd0QAyWnoxPukqINiGJMJpQ/w640-h406/use-with-youtube.png" title="YouTubeでの利用に関する記述の抜粋" width="640" /></a></div><br /><p>こちらも、「個人利用可能な用途」として許可してもらえそうです。ありがたや(*´ω`*)</p><p>ここまで動画での使用について確認してきました。少し観点を変えて、ゲーム内で使う場合はどうでしょうか?これについても同じページに記載がありました。</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtrZcliHRV11wJDhHAjmNmdmD9czagsjSuidDrPC539W2IBpN_cG2vCzstaOfZbnlKwqe7WpesJYHFrdfUH9xR8_4cpNe1Y4eNQWjh2dDGs7_NDrb4MuL_I7mCuqN5bK8lBNCFO4x6g24-jG17rwUvEFG4RzyzYF-Q1muovGZUAKYiYheO7LDH48xvmQ/s1530/use-in-games.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="490" data-original-width="1530" height="204" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtrZcliHRV11wJDhHAjmNmdmD9czagsjSuidDrPC539W2IBpN_cG2vCzstaOfZbnlKwqe7WpesJYHFrdfUH9xR8_4cpNe1Y4eNQWjh2dDGs7_NDrb4MuL_I7mCuqN5bK8lBNCFO4x6g24-jG17rwUvEFG4RzyzYF-Q1muovGZUAKYiYheO7LDH48xvmQ/w640-h204/use-in-games.png" title="ゲームでの音声利用について" width="640" /></a></div><br /><p>「非営利目的」であれば「個人利用可能な用途」として許可してもらえそうです。無料配布のゲームであれば、使用可能なようです。嬉しいヽ(=´▽`=)ノ</p><p>今回の自分の用途には関係ないのですが、もしも同人作品として有料で販売することを考えている場合には、「<a href="https://www.ah-soft.com/licensee/voice_individual.html" rel="nofollow" target="_blank">VOICEROID個人向け商用ライセンス</a>」の内容を読むと良さそうです。</p><p><br /></p><h1 style="text-align: left;">まとめ</h1><p>結月ゆかりさん大好きです。そんで、公式のガイドライン大事。</p><p><br /></p>ケモケモhttp://www.blogger.com/profile/01722329778246472058noreply@blogger.com1tag:blogger.com,1999:blog-2418653553329466103.post-8802049869573376892022-05-15T12:57:00.006+09:002022-05-15T12:57:57.023+09:00黒菜んダッシュの進捗報告(2022/05/15)<p>皆様、随分暑い日も多くなってきましたがいかがお過ごしでしょうか? 私は最近、ファミリーマートの「<a href="https://www.family.co.jp/goods/bread/1535556.html" rel="nofollow" target="_blank">ファミマ・ザ・メロンパン</a>」がお気に入りです。美味しいコーヒーと合わせると格別なんです(*´ω`*)</p><p>さて、黒菜んダッシュでキャラクターのスペシャル技(以下、SP技)を追加しようとしています。SP技を放つ際に画面いっぱいにカットイン画像を表示したいなぁと考えておりまして、今日は黒菜さんのカットイン画像のラフ絵を描いてみました。</p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhc3XCkuprhUccQHe__VDer-p8Ff13M6MvAm3OgaDZW3x4g7-XVqdcBDGXWsW9XC9Rbu9gkmAnfH8rDugYQABIEaLmDyk04VdX9xeRF49DaNnbrzR3xsWRtL7RckyAQ_PcVa8qhS_MqIrL_pDALuIhlKmPPfeob3uiMc0SRyHYRvHRo2p4oQs_XUep-Eg/s1000/IMG_0298b.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="688" data-original-width="1000" height="440" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhc3XCkuprhUccQHe__VDer-p8Ff13M6MvAm3OgaDZW3x4g7-XVqdcBDGXWsW9XC9Rbu9gkmAnfH8rDugYQABIEaLmDyk04VdX9xeRF49DaNnbrzR3xsWRtL7RckyAQ_PcVa8qhS_MqIrL_pDALuIhlKmPPfeob3uiMc0SRyHYRvHRo2p4oQs_XUep-Eg/w640-h440/IMG_0298b.jpg" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">黒菜SP技カットインのラフ絵</td></tr></tbody></table><br /><div>まずは配置の大まかなイメージを掴む感じのラフです。こうやって実際に描いてみると、「もっと低い体勢でシュババッと飛び掛かる」ようなイメージの方がいいかしら?とか、「目が星マークで獲物に飛びつく」ようなイメージがいいかしら?とか、いろいろな思いが巡ります。</div><div><br /></div><div>粗くても良いので、軽い色つけして実際のゲーム画面に表示してみようかなと構想中です。かっこいい雰囲気にしたいなぁ〜。</div><div><br /></div>ケモケモhttp://www.blogger.com/profile/01722329778246472058noreply@blogger.com0tag:blogger.com,1999:blog-2418653553329466103.post-47460618599548295872022-05-03T15:10:00.003+09:002022-05-03T15:12:03.065+09:00黒菜んダッシュの進捗報告(2022/05/03)<p>「ねこむすめ道草日記の黒菜ちゃん、独楽ちゃん、獅子丸ちゃんを自分のゲームで動かしたい」というシンプルな欲求からゲームを作り始めたのですが、気がついたら10年ぐらい月日が経っていました(゚A゚;)いつの間に・・</p><p>相変わらずゆっくりですが、自分が自由に使える時間を使って<a href="https://github.com/kemokemo/kuronan-dash" rel="nofollow" target="_blank">開発を続けています</a>。いろいろなゲーム要素を実装できたのですが、直近の大きな出来事としては「Attack」ボタンやキーボードの「A」を押せば攻撃が出せて、障害物の岩を壊せるようになったことです。</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzZpFBtxT5hzfiVdfNPH11n1hDcUH1eUaHjD2EI_p0SIiQqs0mRroUj7q2LatHk4oMjfrMXOwGms8oHj68uM0J7OMuhlcRUhJleyrypa0r7jySfZar2YdFQBhi_hcnrxGdY5wgxVsCBrqVDZgC7LfDwrdRiIJZkwI2WfEZo2Cz4BtBCxco1KFClpmxpg/s2778/2022-05-03-%E6%94%BB%E6%92%83%E3%83%A2%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1718" data-original-width="2778" height="396" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzZpFBtxT5hzfiVdfNPH11n1hDcUH1eUaHjD2EI_p0SIiQqs0mRroUj7q2LatHk4oMjfrMXOwGms8oHj68uM0J7OMuhlcRUhJleyrypa0r7jySfZar2YdFQBhi_hcnrxGdY5wgxVsCBrqVDZgC7LfDwrdRiIJZkwI2WfEZo2Cz4BtBCxco1KFClpmxpg/w640-h396/2022-05-03-%E6%94%BB%E6%92%83%E3%83%A2%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3.png" width="640" /></a></div><p>画面上にボタンを表示して、これをマウスでクリックしたり、スマホ画面の場合には直接指でタッチすることで操作できるようにしています。イメージ的にはゲームウォッチに近い雰囲気を目指しています。</p><p>走ったり障害物を壊したりすると「テンション」が増えていくので、次はこれが最大まで溜まったらスペシャルなスキルを発動できるようにしたいと思っています。カットインとか入ると楽しそうですね。ワクワク(*´ω`*)</p><p>久しぶりの更新かつ進捗報告でした。</p><p>(おまけ)<br />実は、WebAssemblyやGitHub Pagesといった技術を使って<a href="https://kemokemo.github.io/kuronan-dash/" rel="nofollow" target="_blank">ブラウザ上でもプレイ可能になっています</a>(音が出ますのでご注意ください)。<br />操作説明などのマニュアルがかけていないのでびみょんですが、とりあえずキーボードの左右でキャラクター選択してスペースキーで決定、キーボードの上下でレーン移動しつつAキーで攻撃できるので、よかったら動かしてみてください(;・∀・)<br /></p>ケモケモhttp://www.blogger.com/profile/01722329778246472058noreply@blogger.com0tag:blogger.com,1999:blog-2418653553329466103.post-71709590628947440072020-08-23T11:09:00.001+09:002020-08-23T11:09:53.206+09:00WindowsのコマンドプロンプトやPowerShellでも簡単に色付き出力できるcoloutツールを作りました!<br /><h1 style="text-align: left;">色付きで出力したい</h1><p>CLIツールやスクリプトで自動化処理などを進めていると、タスクの成功や失敗をユーザーに伝えたいことが多々あります。そんな時、他のログと同じように白い文字で出力すると埋もれてしまいがちです。こんな感じに。</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisEw6IrCNfspMYig_O90VMKSridWYF70PB0tneNsy8pMOBEUGFxboDMBRXlEUBsj_TMZydczAE_ZQhB2SCzW5ylJmjzfH7ruo8g2-u8Lmrgvs5zjpOeFBXOqUYzNyMQH-9fcTb3m8lJWQ-/s348/no-color.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="299" data-original-width="348" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisEw6IrCNfspMYig_O90VMKSridWYF70PB0tneNsy8pMOBEUGFxboDMBRXlEUBsj_TMZydczAE_ZQhB2SCzW5ylJmjzfH7ruo8g2-u8Lmrgvs5zjpOeFBXOqUYzNyMQH-9fcTb3m8lJWQ-/s0/no-color.png" /></a></div><p>昨今のGolangやRust、Pythonなどで作られたCLIツールでは、色をつけてパッと見で<span style="color: #6aa84f;">成功</span>したのか<span style="color: #cc0000;">失敗</span>したのか示してくれるものが多数あります。そんなイメージで、スクリプトで出力するメッセージやレガシーなCLIツールの出力に色をつけられると少し利便性が向上しそうです。ほら、こんな感じで。</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg42X3pQ-uFxdon7s0C5pM77t6jomM6vWbNXqfDJl4gdeTkukAbTc1uIlCh4g4u_nybFjQN927kir4PLcJOIWsrhyYbiqpcD5sWIGZINyyk5ybR2ol3g5KVffE4mj3T7hYZ_63cCCbliJ3y/s356/color-success.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="308" data-original-width="356" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg42X3pQ-uFxdon7s0C5pM77t6jomM6vWbNXqfDJl4gdeTkukAbTc1uIlCh4g4u_nybFjQN927kir4PLcJOIWsrhyYbiqpcD5sWIGZINyyk5ybR2ol3g5KVffE4mj3T7hYZ_63cCCbliJ3y/s0/color-success.png" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbbel6ChHvzdReHkXmCdS3DYL4Fts47IapYc7TJZOgEbozgbvUyNIcTrEoaVSEgaVF7c2duE_fy3Zxp3MoRtVafi0H7-rMZcCHNP0feNSnjih6You5hLC-cHWfwk29m2OEJ_m75Pd6wMyw/s373/color-error.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="307" data-original-width="373" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbbel6ChHvzdReHkXmCdS3DYL4Fts47IapYc7TJZOgEbozgbvUyNIcTrEoaVSEgaVF7c2duE_fy3Zxp3MoRtVafi0H7-rMZcCHNP0feNSnjih6You5hLC-cHWfwk29m2OEJ_m75Pd6wMyw/s0/color-error.png" /></a></div><p>という訳でGolangで簡単に作ってみました。 </p><blockquote><p>colout</p><p>🎨 It's a simple and tiny tool for getting colored output in scripts.</p><cite><a href="https://github.com/kemokemo/colout">https://github.com/kemokemo/colout</a></cite></blockquote><br /><h2 style="text-align: left;">Colored output anywhere</h2><h3 style="text-align: left;">インストールしてみてね</h3><p>WindowsだけでなくLinux、FreeBSD、macOSなどにも対応しており、<a href="https://scoop.sh/" rel="nofollow" target="_blank">Scoop</a>や<a href="https://brew.sh/index_ja" rel="nofollow" target="_blank">Homebrew</a>といったパッケージ管理の仕組みを使ってインストールが可能です。</p><p>この記事では例としてWindowsでScoopを使ってインストールしてみます。まずはkemokemoのバケットを追加してください。</p><pre class="prettyprint">scoop bucket add kemokemo-bucket https://github.com/kemokemo/scoop-bucket.git</pre><p>次にインストールです。</p><pre class="prettyprint">scoop install colout</pre><h3 style="text-align: left;">使ってみよう</h3><p>使い方も簡単で、つけたい色をサブコマンド(例えば<code>success</code>など)で指定して、echoコマンドに渡すように出力したい内容を引数で渡すだけです。使用可能なサブコマンドは<a href="https://github.com/kemokemo/colout#usage" rel="nofollow" target="_blank">公式リポジトリのUsage</a>をご覧いただくか、<code>colout -h</code>を実行すると表示されるヘルプを確認してください。</p><p>例えば、下図のようにタスクが成功したことを緑色の出力で伝える処理を書いてみましょう。</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg42X3pQ-uFxdon7s0C5pM77t6jomM6vWbNXqfDJl4gdeTkukAbTc1uIlCh4g4u_nybFjQN927kir4PLcJOIWsrhyYbiqpcD5sWIGZINyyk5ybR2ol3g5KVffE4mj3T7hYZ_63cCCbliJ3y/s356/color-success.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="308" data-original-width="356" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg42X3pQ-uFxdon7s0C5pM77t6jomM6vWbNXqfDJl4gdeTkukAbTc1uIlCh4g4u_nybFjQN927kir4PLcJOIWsrhyYbiqpcD5sWIGZINyyk5ybR2ol3g5KVffE4mj3T7hYZ_63cCCbliJ3y/s0/color-success.png" /></a></div><p>まずは、Windowsのバッチファイルだとこんな感じです。</p><pre class="prettyprint">@echo off
echo.
echo 重い処理を実行中...
echo (いろいろなログが出力)
echo .....
echo ....
echo ...
echo ..
echo .
echo.
if %errorlevel% == 0 (
colout success タスクが成功しました!
) else (
colout error タスクが失敗しました。。
)
echo.</pre><p>サブコマンドで色を指定するechoコマンドみたいな雰囲気で使えます。次に、PowerShellスクリプトも書いてみましょう。</p><pre class="prettyprint">Write-Host
Write-Host 重い処理を実行中...
Write-Host (いろいろなログが出力)
Write-Host .....
Write-Host ....
Write-Host ...
Write-Host ..
Write-Host .
Write-Host
if($?) {
colout success タスクが成功しました!
}
else {
colout error タスクが失敗しました。。
}
Write-Host </pre><h2 style="text-align: left;">まとめ</h2><p><a href="https://github.com/kemokemo/colout" rel="nofollow" target="_blank">colout</a>を使えば、手軽に色付きログを利用できるようになります。タスク実行結果に目を凝らさなくても成功か失敗かを判別できるようになるのは、ちょっとしたことですが日々の開発にプラスになるのではないかと思います。</p><p>是非使ってみてください。そしてお気づきの点があれば<a href="https://github.com/kemokemo/colout/issues" rel="nofollow" target="_blank">公式のIssue</a>にご連絡いただけると嬉しいです。それでは、良きスクリプトライフを!ʕ◔ϖ◔ʔ </p>ケモケモhttp://www.blogger.com/profile/01722329778246472058noreply@blogger.com0tag:blogger.com,1999:blog-2418653553329466103.post-35761961760817513002020-07-08T09:29:00.005+09:002020-08-08T14:40:31.915+09:00コマンドプロンプト、PowerShell、zshなどでの終了コード(ExitCode)の確認方法まとめ<br /><h1 style="text-align: left;">概要</h1><div><br /></div><div>コードの静的解析やCI/CDでのチェックのためなどで、CLIツールを使うことがあります。</div><div><br /></div><div>CLIツールを組み合わせてタスクを実行するスクリプト(*.bat、*.ps1、*.shなど)を作る際、処理の成否を終了コード(ExitCode)で判断して条件分岐を行いたい場合がありますが、この終了コードのチェック方法がシェルによって微妙に違っており、毎回調べてしまっておりました。</div><div><br /></div><div>自分用の備忘録として、情報を整理して記事にします(:3[ふとん]</div><div><br /></div><h1 style="text-align: left;">終了コード確認方法</h1><div><br /></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCbdVpj_M7fnCHuve21VPx7psrIcND-8OYPBMyQy_Va7i5vwjjJwy2snFr-EfVcyoiFJF4QcUqh2r9LsXkFYQan6N8nz3Pn6K2KY8wOGMt8CFmMmbvorO1oz_Zdh_WSIJfhIYUcGTWfaJK/s2048/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2020-07-08+9.36.28.png" style="margin-left: auto; margin-right: auto;"><img alt="終了コード確認例" border="0" data-original-height="1091" data-original-width="2048" height="333" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCbdVpj_M7fnCHuve21VPx7psrIcND-8OYPBMyQy_Va7i5vwjjJwy2snFr-EfVcyoiFJF4QcUqh2r9LsXkFYQan6N8nz3Pn6K2KY8wOGMt8CFmMmbvorO1oz_Zdh_WSIJfhIYUcGTWfaJK/w625-h333/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2020-07-08+9.36.28.png" width="625" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">macOSのzshおよびPowerShellにて終了コード確認</td></tr></tbody></table><h2 style="text-align: left;">コマンドプロンプト</h2><pre style="text-align: left;">echo %errorlevel%</pre><h2 style="text-align: left;">PowerShell</h2><div><pre>echo $?</pre></div><div>スクリプトの中で直前に実行した処理の成否を確認するなら、後述のbashシェルスクリプトなどと同様に<code>$?</code>を指定する。</div><div><br /></div><pre style="text-align: left;">echo $LASTEXITCODE</pre>外部スクリプトの呼び出しなどでは使えるけれど、ちょっとややこしいので私はあまり使わないです。詳しくは<a href="https://docs.microsoft.com/en-us/previous-versions//dd347675(v=technet.10)?redirectedfrom=MSDN" rel="nofollow" target="_blank">公式のマニュアル</a>を参照ください。(2020/08/08 改定)<br /><h2>bash、zshなど</h2><pre style="text-align: left;">echo $?</pre><div><br /></div><h1 style="text-align: left;">所見</h1><div><br /></div><div>PowerShellはこれに限らず独自色が強いですね。巷で先人たちが公開してくださっている素晴らしいシェル芸の多くはshやbashを使った内容が多いので、できればWindowsでもWSL2をみんなで導入してシェルスクリプト(*.sh)メインで使えるようになるのが理想だなと思います。</div><div><br /></div><h2 style="text-align: left;">おまけ</h2><div>golangのコードで外部コマンドを実行した時のExitCodeは、<a href="https://golang.org/pkg/os/#ProcessState.ExitCode" rel="nofollow" target="_blank">func (*ProcessState) ExitCode</a>で調べられる。The Go Playgroundで実際に動かせるサンプルは<a href="https://play.golang.org/p/uEC4Z9zr_Jo" rel="nofollow" target="_blank">こちら</a>。</div>ケモケモhttp://www.blogger.com/profile/01722329778246472058noreply@blogger.com0tag:blogger.com,1999:blog-2418653553329466103.post-30401719141455496232020-01-09T00:15:00.001+09:002020-06-21T11:48:23.536+09:00Go言語のCLIアプリを作りながらCircleCIでCI/CDを実践してみた<h2>
概要</h2>
以下を目標に、Go言語で簡単なCLIツールを作りながらCI/CDを実践してみました!<br>
<ul>
<li>CIで<code>test</code>や<code>build</code>を実行して、<code>README</code>にバッジを貼る</li>
<li>テストカバレッジ計測し、<code>README</code>にバッジを貼る</li>
<li>gitで<code>tag</code>がついたら、バイナリを作ってgithubのリリースページにアップする</li>
</ul>
以下のリポジトリが成果物です。<br>
<blockquote>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKrMOEwnApkKa8vNedhf6-kayjm0USK5_p7dD0MJ3vLgUgTYr5YKOUaoCuz2R9t004pNy9pIZcGM6144qYyn6H25Kb5zxSG7lSINoqNYzcdU4dK2OEoSD-qd-k7urUyuuAAOP4FwUERBeh/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2020-01-01+16.05.13.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="796" data-original-width="1066" height="297" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKrMOEwnApkKa8vNedhf6-kayjm0USK5_p7dD0MJ3vLgUgTYr5YKOUaoCuz2R9t004pNy9pIZcGM6144qYyn6H25Kb5zxSG7lSINoqNYzcdU4dK2OEoSD-qd-k7urUyuuAAOP4FwUERBeh/s400/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2020-01-01+16.05.13.png" style="cursor: move;" width="400"></a></div>
<br>
A repository to play around with using CircleCI.<br>
<br>
<cite> <a href="https://github.com/kemokemo/try-circle-ci">github.com/kemokemo/try-circle-ci</a> </cite></blockquote>
実践内容をハンズオンっぽくまとめると共に、ポイントやお世話になった記事をあわせて紹介したいと思いますʕ◔ϖ◔ʔ <br>
<a href="https://t2wonderland.blogspot.com/2020/01/goclicirclecicicd.html#more">続きを読むっ! >></a>ケモケモhttp://www.blogger.com/profile/01722329778246472058noreply@blogger.comtag:blogger.com,1999:blog-2418653553329466103.post-79033177923023581972019-09-01T10:31:00.002+09:002019-09-01T10:32:46.765+09:00[食べ物]山芳の「梅わさビーフ」食べてみたっ!(*´ω`*)<h2 id="こ、これは!゚a゚">こ、これは!(゚A゚;)</h2>
<p>昨日、近所のファミマで刺激的な食べ物をみつけました!(・∀・)</p>
<p><span>\\梅わさビーフ//</span></p>
<div class="separator">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWDKvgoUqbchLwi_jwqNg4jQ3Rdb9XQndWsmpqbmXHV65cKrCJ-C5cu7FEV64EEqTh-3QMw9axL5AgvbJ4Bq47MVeVVa0K9d87srowRIaNe2ffX1eTy84s_HUnXUwZMmlP5_GPQpVJo618/s1600/DSC_0006.JPG"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWDKvgoUqbchLwi_jwqNg4jQ3Rdb9XQndWsmpqbmXHV65cKrCJ-C5cu7FEV64EEqTh-3QMw9axL5AgvbJ4Bq47MVeVVa0K9d87srowRIaNe2ffX1eTy84s_HUnXUwZMmlP5_GPQpVJo618/s640/DSC_0006.JPG" width="467"></a></div>
<p>さっそく食べてみましょう☆</p>
<a href="https://t2wonderland.blogspot.com/2019/09/blog-post_70.html#more">続きを読むっ! >></a>ケモケモhttp://www.blogger.com/profile/01722329778246472058noreply@blogger.com0tag:blogger.com,1999:blog-2418653553329466103.post-22485288658966292382019-08-13T12:53:00.000+09:002020-01-09T00:15:51.758+09:00HugoとGitLab CIで手軽に素早くサイトを公開する<h2 id="背景">
背景</h2>
少し前から、Markdown文書から静的サイトを生成したいという欲求がありました。主な理由は以下です。<br>
<ul>
<li>ソースがテキストなので<code>diff</code>形式で簡単に差分を可視化できる。 <ul>
<li>変更点を伝えなきゃいけない相手と共有しやすい。</li>
</ul>
</li>
<li>好きなエディタ(VSCode、Emacs、Vim etc…)で編集できる。 <ul>
<li>作業効率が良くなる</li>
</ul>
</li>
</ul>
静的ジェネレータと言えば<a href="https://help.github.com/ja/articles/using-jekyll-as-a-static-site-generator-with-github-pages">GitHub PagesとJekyll</a>が有名ですが、今回は<a href="https://gohugo.io/">Hugo</a>を使います。以下のキャッチコピーにしびれたのと、実際に使ってみるとキャッチコピー通り恐ろしく爆速だったからですヽ(=´▽`=)ノ<br>
<blockquote>
<div class="separator">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZJfpMbOvLQ47p-HDudWR5OmCCInWImpnmY3ps1km2fe554ISNVCvRz_ntCYpryefNRmhud-6ym25er5kApqT4rfP0k1a9HS2wn5AOsr_JsQajyOMod6uAKn5gyGlkop5OUbY0ybYFl2bF/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2019-08-13+12.17.18.png"><img border="0" height="326" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZJfpMbOvLQ47p-HDudWR5OmCCInWImpnmY3ps1km2fe554ISNVCvRz_ntCYpryefNRmhud-6ym25er5kApqT4rfP0k1a9HS2wn5AOsr_JsQajyOMod6uAKn5gyGlkop5OUbY0ybYFl2bF/s640/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2019-08-13+12.17.18.png" width="640"></a></div>
Install in seconds, build in milliseconds.<br>
<cite>https://gohugo.io/</cite></blockquote>
<a href="https://t2wonderland.blogspot.com/2019/08/hugogitlab-ci_46.html#more">続きを読むっ! >></a>ケモケモhttp://www.blogger.com/profile/01722329778246472058noreply@blogger.comtag:blogger.com,1999:blog-2418653553329466103.post-56094910167410242192019-06-29T10:37:00.001+09:002019-06-29T10:38:34.296+09:00SourceTree 管理のリポジトリをVSCodeやIntelliJで開く!<h2 id="sourcetree">SourceTree</h2><p><a href="https://www.sourcetreeapp.com/">SourceTree</a>いいですよね。<br>
自分がGitにすんなり馴染めたのも、このSourceTreeのおかげでした。<a href="https://www.atlassian.com/ja">Atlassian</a>さんありがとう!</p><p>OSSで開発しているとGitでのバージョン管理は当たり前ですし、複数のリポジトリでソースコードを読みながら開発することも少なくありません。SourceTreeを使うと、多数のリポジトリを視覚的に管理しながらキーワードで検索することもできて便利です。<br>
<a href="https://lh3.googleusercontent.com/7X5xDRNWXKtizDb9-OHWDHZxlinb0fg0PGrRta9nGOun0IL0DtcNd_Wq-zukiZ5Df5gQ_6SwJx8n=s1600"><br>
<img src="https://lh3.googleusercontent.com/7X5xDRNWXKtizDb9-OHWDHZxlinb0fg0PGrRta9nGOun0IL0DtcNd_Wq-zukiZ5Df5gQ_6SwJx8n" alt="Repositories list of the SourceTree"><br>
</a></p><p>見つけたリポジトリをそのままVScodeやIntelliJで開けると、テンポよく開発できて良いです。<br>
というわけで、今日はそのためのちょっとした設定のお話をしますヽ(=´▽`=)ノ</p><a href="https://t2wonderland.blogspot.com/2019/06/sourcetree-vscodeintellij_29.html#more">続きを読むっ! >></a>ケモケモhttp://www.blogger.com/profile/01722329778246472058noreply@blogger.comtag:blogger.com,1999:blog-2418653553329466103.post-13786251325642383062019-06-24T18:58:00.001+09:002019-06-24T19:02:33.151+09:00k8s(k3s)クラスターのノード再起動を無くしつつセキュリティパッチはあてたい?それ、Livepatchで出来るよ!<h2 id="セキュリティパッチをあててもノードは再起動したくない!">セキュリティパッチをあててもノードは再起動したくない!</h2><p><a href="https://t2wonderland.blogspot.com/2019/04/k3skubernetes.html">自前でKubernetesクラスターを作って</a>使うようになりました。</p><p>各ノードへのセキュリティパッチ適用や再起動は<code>cron</code>を使えば自動化できますが、この再起動によってKubernetes上で稼働するサービスにダウンタイムが発生してしまいます。なんとかこれを無くしたい。</p><p>そこで、<a href="https://ubuntu.com/livepatch">Canonical Livepatch Service</a>を使うことにしました。</p><a href="https://t2wonderland.blogspot.com/2019/06/k8sk3slivepatch.html#more">続きを読むっ! >></a>ケモケモhttp://www.blogger.com/profile/01722329778246472058noreply@blogger.comtag:blogger.com,1999:blog-2418653553329466103.post-65815375862529272282019-06-23T19:04:00.001+09:002019-06-23T19:05:28.044+09:00StackEdit を使ってBloggerに投稿できるようにしてみました!<h2 id="bloggerでもmarkdownで書きたい">BloggerでもMarkdownで書きたい</h2><p>Qiitaで何度か記事を書いていたら、段々とブログの記事もMarkdownで書きたくなってきました。<a href="https://stackedit.io/">StackEdit</a>を使うと幸せになれるという記事がたくさんあったので試したいと思います!ʕ◔ϖ◔ʔ</p><a href="https://t2wonderland.blogspot.com/2019/06/stackedit-blogger_23.html#more">続きを読むっ! >></a>ケモケモhttp://www.blogger.com/profile/01722329778246472058noreply@blogger.comtag:blogger.com,1999:blog-2418653553329466103.post-44893264420905230572019-06-18T00:09:00.000+09:002019-06-18T00:09:07.551+09:00RancherでKubernetesクラスターを使うっ!(セットアップとボリューム追加編)<h2>
Rancher使ってみるよ!</h2>
<a href="https://qiita.com/banban525" target="_blank">@banban525</a>さんの記事を読んで「これならKubernetesクラスターがすごく扱い易くなりそうだな〜」という気持ちになってから、使ってみたいと思っておりました。<br>
<blockquote>
<a href="https://qiita.com/banban525/items/cbe018a0953842dd3cf7" target="_blank">Kubernetes入門としてのRancher Server ~ステップバイステップでリバースプロキシとVPNを立ててみる~</a></blockquote>
<br>
<a href="https://rancher.com/" target="_blank">Rancher公式サイト</a> の「<a href="https://rancher.com/what-is-rancher/overview/" target="_blank">Why Rancher?</a>」を読むと、以下のポイントが挙げられています。<br>
<ul>
<li>GKEなどの複数のPublic CloudやPrivate CloudのKubernetesクラスターを扱える</li>
<li>YAMLをガッツリ自分で書かなくてもミスらずにデプロイできる</li>
<li>オープンソース!</li>
<li><code>docker run</code>ですぐ始められる</li>
</ul>
<br>
いいですね!ヽ(=´▽`=)ノ<br>
今回は、このRancherを使って以下のことに取り組みます。<br>
<ul>
<li><a href="https://t2wonderland.blogspot.com/2019/04/k3skubernetes.html" target="_blank">以前作ったk3sのクラスター</a>を扱えるようにする</li>
<li>別途Ubuntu Server上に構築したNFSをKubernetesのボリュームとして設定する</li>
</ul>
<a href="https://t2wonderland.blogspot.com/2019/06/rancherkubernetes.html#more">続きを読むっ! >></a>ケモケモhttp://www.blogger.com/profile/01722329778246472058noreply@blogger.comtag:blogger.com,1999:blog-2418653553329466103.post-46531564373150197412019-06-04T21:58:00.002+09:002019-06-04T21:58:59.110+09:00Go言語製のキレイなGUIアプリをFyneライブラリで作るよ!(*´ω`*)<h2>
きっかけ</h2>
Go言語で社内用のちょっとしたツールを作る時の話です。<br>
ターゲットユーザーがCLIツールでOKな人たちならば、<a href="https://github.com/tcnksm/gcli">gcli</a>を使ってサクサク作りたい!(●´ω`)ノ<br>
<blockquote>
例えば<code>generate</code>と<code>verify</code>サブコマンドをもったclitestというツールを作ろうと思ったら、以下を実行するだけでcliとしての大部分が自動生成されます。<br>
<pre class="prettyprint">gcli new -c generate -c verify clitest</pre>
<cite><a href="https://qiita.com/KemoKemo/items/78091bb80d61124153d9">デプロイ先でのファイルハッシュ値とディレクトリ構成をチェックしたい、そんな時に使えるツールをGo言語で作りました!</a></cite></blockquote>
<br>
しかし、世の中そうもいきません。GUIが必要とされる場合も多々あります。そんな折、たまたま<a href="https://twitter.com/golangweekly/status/1108896578360741889?ref_src=twsrc%5Etfw">Golang Weeklyさんのつぶやき</a>で<a href="https://fyne.io//develop/index.html">Fyne</a>の存在を知りました。<br>
<br>
<h2>
Fyne is awesome</h2>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhm5A_wxvIFtk-MNHtNwGcjfZqEmD7fo9YWIujr_CrayXuCMgvycfo2f3sXbWM5CHxJgXoXILtEx2FI8a7ct0oXQ9HNlNTwYHa8HwPStjXnt3Lm4lWE4LQ8cv-up_Zk5NVznPa__aH9SpCH/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2019-05-27+22.55.02.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="565" data-original-width="1600" height="226" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhm5A_wxvIFtk-MNHtNwGcjfZqEmD7fo9YWIujr_CrayXuCMgvycfo2f3sXbWM5CHxJgXoXILtEx2FI8a7ct0oXQ9HNlNTwYHa8HwPStjXnt3Lm4lWE4LQ8cv-up_Zk5NVznPa__aH9SpCH/s640/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2019-05-27+22.55.02.png" width="640"></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">2019/05/27 現在の公式GitHub</td></tr>
</tbody></table>
<div style="text-align: center;">
<span style="font-size: x-large;"><span style="color: #cc0000;">100 %ピュアGoな実装でマテリアルデザイン!!₍₍ (ง ˙ω˙)ว ⁾⁾</span></span></div>
<br>
これだけで踊ってしまうレベル!<br>
<br>
使い始めるにあたり、以下の公式のページをざっと読んでおくと良い感じです。<br>
<ul>
<li>開発のための公式ガイド: <a href="https://fyne.io/develop/">Developing with Fyne</a></li>
<li>公式リポジトリ: <a href="https://github.com/fyne-io/fyne">fyne-io/fyne</a></li>
<li>公式サンプル集: <a href="https://github.com/fyne-io/examples/">fyne-io/examples</a></li>
</ul>
<br>
<a href="https://t2wonderland.blogspot.com/2019/06/goguifyne.html#more">続きを読むっ! >></a>ケモケモhttp://www.blogger.com/profile/01722329778246472058noreply@blogger.comtag:blogger.com,1999:blog-2418653553329466103.post-64713490939351363902019-05-26T23:42:00.000+09:002020-02-09T13:20:47.354+09:00「Trivy」でDockerコンテナの脆弱性チェック始めました!<h2>
きっかけ</h2>
ある日、会社の先輩に以下の記事を教えてもらいました。<br>
<ul>
<li><a href="https://japan.zdnet.com/article/35137299/" target="_blank">「Docker Hub」ポータル、著名コンテナの20%に設定ミス</a></li>
</ul>
怖いですね(´・ω・`)<br>
<br>
<blockquote>
誤解のないように書いておくと、この設定ミスによってすべてのユーザーに直接的な脅威がもたらされるわけではない。<br>
<cite><a href="https://japan.zdnet.com/article/35137299/">「Docker Hub」ポータル、著名コンテナの20%に設定ミス</a></cite></blockquote>
上記のように該当コンテナを使っている全てのコンテナに影響がある訳ではないようなのでホッとする反面、やはり自分が使っているコンテナの脆弱性について無関心でいてはいけない、と考え方を改めるきっかけになりました。<br>
<br>
「知らず知らずのうちに脆弱性のあるコンテナをデプロイしてました」という事態にならないために、今自分にできることを始めることにしました。<br>
<a href="https://t2wonderland.blogspot.com/2019/05/trivy.html#more">続きを読むっ! >></a>ケモケモhttp://www.blogger.com/profile/01722329778246472058noreply@blogger.comtag:blogger.com,1999:blog-2418653553329466103.post-60573601932972776562019-04-29T16:25:00.000+09:002019-05-04T22:48:12.006+09:00k3sを使ってオンプレミスなKubernetesクラスタを構築したよ!<h2>概要</h2><a href="https://cloud.google.com/kubernetes-engine/?hl=ja">GKE</a> が大好きで非常に満足していたのですが、以下のような願望もありました。<br>
<ul><li>Kubernetes勉強しながら好き勝手出来るスクラッチ用のクラスター環境が欲しい</li>
<li>Raspberry Piなどエッジで動かすコンテナを、Kubernetesクラスターでコントロールしたい</li>
</ul>そこで、オンプレミスなKubernetesクラスターを構築することにしました。<br>
<h2>k3s is 何?</h2>「エッジでも動く!」という噂を聞いて、<a href="https://k3s.io/">k3s</a>を使うことに決めました。<br>
<ul><li>超軽量なKubernetes。<br>
<ul><li>バイナリが<code>40 MB</code>以下<br>
<ul><li>小さいことはいいことだ。</li>
</ul></li>
<li>RAMが<code>512 MB</code>あれば動く<br>
<ul><li>ラズパイとかのエッジでも動くよ。凄い!</li>
</ul></li>
</ul></li>
</ul>クラスタの動作イメージは、以下の通りです。(公式からの引用です。)<br>
<blockquote><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKLDvtlJZVyMF0ReAXEwUfXkdz_ERSNJ5nT1y83T_UVf0JM51Z4u5FiewxOe7HO9HBMG2w_EY6j7u1b-xPtuzxgp3Zwn57YgBqd7pqF4g8lRDIJhdvjZJkj_MhF1itHO2McY1gWl4YGJ2_/s1600/k3s.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="701" data-original-width="1600" height="280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKLDvtlJZVyMF0ReAXEwUfXkdz_ERSNJ5nT1y83T_UVf0JM51Z4u5FiewxOe7HO9HBMG2w_EY6j7u1b-xPtuzxgp3Zwn57YgBqd7pqF4g8lRDIJhdvjZJkj_MhF1itHO2McY1gWl4YGJ2_/s640/k3s.png" width="640"></a></div><cite><a href="https://k3s.io/">引用元: k3s.io</a></cite></blockquote><h2>この記事でやること</h2><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKGJSP14DQF0uB0g7NDKmotktnaZX7tSo5s3plqHz7iU59PosjtYx_JyDpDzhXsNyC6z7-uKrK6qr6jfZ3E67pLTd1YpwujTaRAZRbRvY4HL-Rx9I2c-YUgwvCBhgd62d9YooN21SpemTB/s1600/kemo-cluster.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="576" data-original-width="568" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKGJSP14DQF0uB0g7NDKmotktnaZX7tSo5s3plqHz7iU59PosjtYx_JyDpDzhXsNyC6z7-uKrK6qr6jfZ3E67pLTd1YpwujTaRAZRbRvY4HL-Rx9I2c-YUgwvCBhgd62d9YooN21SpemTB/s400/kemo-cluster.png" width="393"></a></div>上図の<code>kemo-cluster</code>のようなKubernetesクラスターを作ります。<br>
<ul><li>ホスト<code>kemo-master</code>で、k3sをServerとして起動</li>
<li>ホスト<code>kemo-node01</code>と<code>kemo-node02</code>で、k3sをAgentとして起動</li>
<li>クラスター外のホスト<code>kemo-client</code>からクラスターに対して操作を実行する。<br>
<ul><li><a href="https://www.oreilly.co.jp/books/9784873118406/">入門 Kubernetes</a>のサンプルアプリケーション<a href="https://github.com/kubernetes-up-and-running/kuard">kuard</a>を使って<code>ReplicaSet</code>を作成</li>
<li><code>LoadBalancer</code>タイプのServiceを起動してブラウザからアクセス</li>
</ul></li>
</ul><h3>使用環境</h3><ul><li>Ubuntu Server: 18.04.2 LTS</li>
<li>k3s: v0.4.0</li>
</ul><a href="https://t2wonderland.blogspot.com/2019/04/k3skubernetes.html#more">続きを読むっ! >></a>ケモケモhttp://www.blogger.com/profile/01722329778246472058noreply@blogger.comtag:blogger.com,1999:blog-2418653553329466103.post-67683183292761317832019-03-10T15:23:00.003+09:002019-03-10T15:23:55.498+09:00Google Kubernetes EngineをCloud ConsoleでのウェブUI操作だけで使ってみるよ!(*´ω`*)<h2>
拝啓、GKE様</h2>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguy8SeNahgoFaiGA617cR03k4jdKd8RnAX6hi573batdjFDyYwe9o2k2gmc5QzOYXdHf5rzIc4V3yvkHZJUQRv59nuTjDjzwPdO3LT2kKhYYGKMIpuN2aAN64Tm2OjOrg0pq-0avKzNbdG/s1600/Screenshot_2019-03-10+%25E3%2583%259B%25E3%2583%25BC%25E3%2583%25A0+%25E2%2580%2593+my-gke+%25E2%2580%2593+Google+Cloud+Platform.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="951" data-original-width="1327" height="458" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguy8SeNahgoFaiGA617cR03k4jdKd8RnAX6hi573batdjFDyYwe9o2k2gmc5QzOYXdHf5rzIc4V3yvkHZJUQRv59nuTjDjzwPdO3LT2kKhYYGKMIpuN2aAN64Tm2OjOrg0pq-0avKzNbdG/s640/Screenshot_2019-03-10+%25E3%2583%259B%25E3%2583%25BC%25E3%2583%25A0+%25E2%2580%2593+my-gke+%25E2%2580%2593+Google+Cloud+Platform.png" width="640"></a></div>
<br>
以前、<a href="https://t2wonderland.blogspot.com/2018/12/gkekubernetes.html" target="_blank">この記事</a>や<a href="https://t2wonderland.blogspot.com/2018/12/bookshelfgke.html" target="_blank">この記事</a>で<a href="https://cloud.google.com/kubernetes-engine/?hl=ja" target="_blank">GKE</a>を使って、すっかり「GKEはいいぞ」というフレンズになりました。これらの記事でも基本的にはCLIで各種操作をすることが多かったのですが、Google Cloud Platformには<a href="https://cloud.google.com/cloud-console/?hl=ja" target="_blank">Cloud Console</a>というパワフルなウェブ管理 UIがありますので、今回はこれを使ってGKEの操作や情報確認をしてみたいと思います。(なお、この記事で使用したGCPのプロジェクトは記事公開時点で削除済みです。) <br>
<br>
<a href="https://t2wonderland.blogspot.com/2019/03/google-kubernetes-enginecloud-consoleui.html#more">続きを読むっ! >></a>ケモケモhttp://www.blogger.com/profile/01722329778246472058noreply@blogger.com0tag:blogger.com,1999:blog-2418653553329466103.post-31854433181509794052019-02-16T14:27:00.003+09:002019-04-13T08:31:38.504+09:00Go言語から始まった数々の技術との出会いを振り返ってみた<h2>TL;DR</h2>直近の2年ほどを振り返ってみて、たくさんの技術に出会い、学び、日々使っているなぁと感じたので「ちょっとここらで整理してみるかぁ」という気持ちになりました。<br>
自分用のチラシの裏感がすごいですが、おすすめの書籍なども適宜ご紹介しますので良かったら見てってくだしあʕ◔ϖ◔ʔ<br>
<br>
<a href="https://t2wonderland.blogspot.com/2019/02/go.html#more">続きを読むっ! >></a>ケモケモhttp://www.blogger.com/profile/01722329778246472058noreply@blogger.comtag:blogger.com,1999:blog-2418653553329466103.post-74219750764759571152019-01-28T00:32:00.000+09:002019-01-28T00:32:48.028+09:00Google Cloud FunctionsにGo言語サポートきましたよ!ʕ◔ϖ◔ʔ (Background Functions編 その1)<h2>
TL;DR</h2>
<br>
遂に<a href="https://cloud.google.com/?hl=ja">GCP</a>の<a href="https://cloud.google.com/functions/">Cloud Functions</a>に<a href="https://cloud.google.com/blog/products/application-development/cloud-functions-go-1-11-is-now-a-supported-language">Go言語サポート</a>が来ましたので、<a href="https://t2wonderland.blogspot.com/2019/01/google-cloud-functionsgo-http-functions.html">前回</a>は<code>HTTP Functions</code>を使ってみました。今回は<a href="https://cloud.google.com/storage/?hl=ja">Cloud Storage</a>と連携させて<code>Background Functions</code>を使ってみたいと思いますʕ◔ϖ◔ʔ<br>
<br>
<a href="https://t2wonderland.blogspot.com/2019/01/google-cloud-functionsgo-background.html#more">続きを読むっ! >></a>ケモケモhttp://www.blogger.com/profile/01722329778246472058noreply@blogger.com0tag:blogger.com,1999:blog-2418653553329466103.post-51019729808388454812019-01-24T08:21:00.000+09:002019-01-25T18:49:18.445+09:00Google Cloud FunctionsにGo言語サポートきましたよ!ʕ◔ϖ◔ʔ (HTTP Functions編)<h2>
ついに来た!</h2>
<br>
<blockquote>
Today, we're excited to announce support for Go on Cloud Functions.<br>
<cite><a href="https://cloud.google.com/blog/products/application-development/cloud-functions-go-1-11-is-now-a-supported-language">Get Go-ing with Cloud Functions: Go 1.11 is now a supported language</a></cite></blockquote>
<br>
GCPのCloud Functionsに、Go言語のサポートが来ました!素晴らしい!!<br>
という訳で、早速使ってみましょうʕ◔ϖ◔ʔ<br>
<br>
<a href="https://t2wonderland.blogspot.com/2019/01/google-cloud-functionsgo-http-functions.html#more">続きを読むっ! >></a>ケモケモhttp://www.blogger.com/profile/01722329778246472058noreply@blogger.com0tag:blogger.com,1999:blog-2418653553329466103.post-84868939177223155642018-12-31T17:28:00.000+09:002019-01-25T18:50:40.390+09:00BookshelfサンプルでもっとGKEを使ってみますʕ◔ϖ◔ʔ<h2>
GCPの公式チュートリアルネ申すぎぃ</h2>
<br>
<a href="https://t2wonderland.blogspot.com/2018/12/gkekubernetes.html">前回の記事</a>を書いた後に「<a href="https://cloud.google.com/go/home?hl=ja">Google Cloud Platform での Go</a>」を見つけました。Go言語でGCPを使いたい私のようなGopherにとって欲しい情報がぎゅっと詰まった感のある素敵ページです。<br>
<br>
今回はこのGo言語クイックスタートの中でGKE用に用意されている「<a href="https://cloud.google.com/go/docs/tutorials/bookshelf-on-kubernetes-engine?hl=ja">Kubernetes Engine での Go Bookshelf の実行</a>」を実践していきたいと思いますʕ◔ϖ◔ʔ<br>
<br>
<a href="https://t2wonderland.blogspot.com/2018/12/bookshelfgke.html#more">続きを読むっ! >></a>ケモケモhttp://www.blogger.com/profile/01722329778246472058noreply@blogger.com0tag:blogger.com,1999:blog-2418653553329466103.post-67806941046721843582018-12-27T11:40:00.002+09:002019-01-25T18:54:26.954+09:00GKEをつかってKubernetesの片鱗に触れてみましたʕ◔ϖ◔ʔ<h2>
GKEを使います</h2>
<br>
2018年の夏頃にやっとDockerを使い始め、<a href="https://t2wonderland.blogspot.com/2018/10/mongodbgoapidocker-compose.html" target="_blank">データの永続化</a>などマイクロサービスへのDocker利用を進めてきました。今ではすっかりコンテナ無しでは生きられない体です。<br>
<br>
個々のマイクロサービスをコンテナで簡単にデプロイできるようになると、今度は<span style="color: #38761d;"><i>コンテナ群をもっといい感じに管理、運用したい</i></span>という欲求が出てきました。今こそ<a href="https://kubernetes.io/" target="_blank">Kubernetes</a>を学ぶ時です。<br>
<br>
<a href="https://t2wonderland.blogspot.com/2018/12/app-enginego-111-runtimegcp.html" target="_blank">前回</a>に引き続きGCPを活用します。GKEの利用を通じて、まずはKubernetesに触れたいと思います。<br>
<br>
<a href="https://t2wonderland.blogspot.com/2018/12/gkekubernetes.html#more">続きを読むっ! >></a>ケモケモhttp://www.blogger.com/profile/01722329778246472058noreply@blogger.com0tag:blogger.com,1999:blog-2418653553329466103.post-11450650494462276942018-12-25T00:24:00.000+09:002019-01-25T18:54:51.317+09:00App EngineのGo 1.11 Runtimeが素敵なのでGCP始めましたʕ◔ϖ◔ʔ<h2>
発端</h2>
<br>
ずいぶん前なのですが、<a href="https://blog.golang.org/" target="_blank">Go言語の公式ブログ</a>で「<a href="https://blog.golang.org/appengine-go111">Announcing App Engine’s New Go 1.11 Runtime</a>」という記事がありました。内容は「おまじないコード無しの普通のWebサービスのコードを、そのまま<a href="https://cloud.google.com/appengine/" target="_blank">App Engine</a>にデプロイできるようになったよ」というもので、GCPにとても魅力を感じました。<br>
<br>
<h2>
やってみる</h2>
<br>
素敵だなと感じたら実践せずにはいられないフレンズなので、やってみますʕ◔ϖ◔ʔ<br>
記事によると以下の3ステップでデプロイできるとのこと。<br>
<br>
<blockquote>
<br>
<ul>
<li>Create an account with https://cloud.google.com.</li>
<li>Create a project.</li>
<li>Install the Cloud SDK on your system.</li>
</ul>
<br>
<cite>https://blog.golang.org/appengine-go111</cite></blockquote>
<br>
<a href="https://t2wonderland.blogspot.com/2018/12/app-enginego-111-runtimegcp.html#more">続きを読むっ! >></a>ケモケモhttp://www.blogger.com/profile/01722329778246472058noreply@blogger.com0tag:blogger.com,1999:blog-2418653553329466103.post-30243366968577208312018-10-28T20:57:00.000+09:002019-09-08T18:50:07.076+09:00全然わからない、俺は雰囲気でnpmを使ってる(vulnerabilitiesなんとかした)<h2>
筆者イメージ</h2>
<br>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglPQC6rrZcFny_xrL3nMRNtG8SOSQVAah9B8M43VVf6RzDbdFSJFEFDv4asat4Q4EXDYMR-Li-nhVpjm5UKoWY07F1eMGGxx_Ejg_NduJfodyDzIjTs5zQ6Bn_j9pn5XZS70YabdtYsKA2/s1600/npm%25E9%259B%25B0%25E5%259B%25B2%25E6%25B0%2597.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="228" data-original-width="500" height="290" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglPQC6rrZcFny_xrL3nMRNtG8SOSQVAah9B8M43VVf6RzDbdFSJFEFDv4asat4Q4EXDYMR-Li-nhVpjm5UKoWY07F1eMGGxx_Ejg_NduJfodyDzIjTs5zQ6Bn_j9pn5XZS70YabdtYsKA2/s640/npm%25E9%259B%25B0%25E5%259B%25B2%25E6%25B0%2597.png" width="640"></a></div>
<div>
<h2>
TL;DR</h2>
<ul>
<li>かつて、<a href="https://qiita.com/KemoKemo/items/85200c745e01763c3ec8" target="_blank">時系列の温度情報をチャート表示する実装をやった</a></li>
<li>GitHubさんから「vulnerabilitiesがあるよ」と通知があったから直した</li>
<li>そしたらビルドできないやんウワァァァン(直した</li>
</ul>
などと泣いてても何も変わらないのでキリキリ修正しましたʕ◔ϖ◔ʔ<br>
<br>
</div><a href="https://t2wonderland.blogspot.com/2018/10/npmvulnerabilities.html#more">続きを読むっ! >></a>ケモケモhttp://www.blogger.com/profile/01722329778246472058noreply@blogger.comtag:blogger.com,1999:blog-2418653553329466103.post-70048530530325940832018-10-25T23:07:00.000+09:002018-10-25T23:14:16.973+09:00MongoDBを使ったGo言語のAPIサービスでDocker Compose対応してみたʕ◔ϖ◔ʔ<h2>TL;DR</h2><br>
<ul><li><a href="https://qiita.com/KemoKemo/items/85200c745e01763c3ec8">IoT機器のデータをWeb API経由でDBに保存するサービスを作った</a></li>
<ul><li>MongoDBを使ってる </li>
</ul><li>ビルドもデプロイも手動で、起動するまでが面倒だった</li>
<li>Docker ComposeでMongoDBと一緒に一発起動できるようにする!</li>
<ul><li>データの永続化と<b>、</b>バックアップ方法を習得する!</li>
</ul></ul><br>
<a href="https://t2wonderland.blogspot.com/2018/10/mongodbgoapidocker-compose.html#more">続きを読むっ! >></a>ケモケモhttp://www.blogger.com/profile/01722329778246472058noreply@blogger.com0