Jekyll2019-02-25T16:24:18+09:00/feed.xmlu6k.BlogプログラミングやWebサービスと戯れたログを残しています。u6ku6k.apps@gmail.com2019年1月のレビュー2019-02-25T00:00:00+09:002019-02-25T00:00:00+09:00/2019/02/25/201901-monthly-review<p>既に2019年2月も終わろうとしていますが、ようやく1月の活動を整理し終えたので、レビュー記録を公開してみます。レビュー記録、というか、単に活動記録を集計してみました、という感じになってしまっていますが…</p>
<h2 id="2019年1月の目標再確認と進捗確認">2019年1月の目標再確認と進捗確認</h2>
<p>まず、1月当初に作成した目標の再確認と、目標ごとの進捗を確認します。仕事に関しては伏せています。</p>
<h3 id="目標再確認">目標再確認</h3>
<ul>
<li>人生
<ul>
<li>(保留)</li>
</ul>
</li>
<li>社会
<ul>
<li>(保留)</li>
</ul>
</li>
<li>成長(個人システム運用)
<ul>
<li>crawlineの最初のバージョンをリリースする</li>
<li>crawlineの要求・要件・設計を再整理する</li>
<li>運用中のクローラーをcrawlineに統合する</li>
</ul>
</li>
<li>経済
<ul>
<li>Zaimで出費を記録して、目標金額以内にする</li>
</ul>
</li>
<li>健康
<ul>
<li>最低限のエクササイズの習慣を継続する</li>
</ul>
</li>
<li>家庭
<ul>
<li>うーん、片づけを進めたいけど…</li>
</ul>
</li>
</ul>
<h3 id="進捗">進捗</h3>
<ul>
<li>人生
<ul>
<li>(保留)</li>
</ul>
</li>
<li>社会
<ul>
<li>(保留)</li>
</ul>
</li>
<li>成長(個人システム運用)
<ul>
<li>crawlineの整理はできなかった</li>
<li>それ以外の、優先度が低い作業に逃げたため</li>
</ul>
</li>
<li>経済
<ul>
<li>目標金額以内にはなっている</li>
<li>が、どうもまだ無駄に出費している気がする</li>
</ul>
</li>
<li>健康
<ul>
<li>エクササイズの頻度が下がっている</li>
</ul>
</li>
<li>家庭
<ul>
<li>片付けは何も進んでいない</li>
<li>浴室の全体掃除ができた</li>
</ul>
</li>
</ul>
<h2 id="2019年1月の活動ログ">2019年1月の活動ログ</h2>
<h3 id="リリース">リリース</h3>
<p>サイド・プロジェクトのリリースをリストアップしました。サイド・プロジェクトはGitHubで管理しているので、つまりGitHubリリースのリストです。10件のリリースがありました。悪くないペースだと考えます。</p>
<table>
<thead>
<tr>
<th>リポジトリ名</th>
<th>リリース名</th>
<th>リリース日</th>
</tr>
</thead>
<tbody>
<tr>
<td>blog</td>
<td><a href="https://github.com/u6k/blog/releases/tag/20190108">20190108</a></td>
<td>2019-01-08</td>
</tr>
<tr>
<td>my-services</td>
<td><a href="https://github.com/u6k/my-services/releases/tag/20190111">20190111</a></td>
<td>2019-01-11</td>
</tr>
<tr>
<td>blog</td>
<td><a href="https://github.com/u6k/blog/releases/tag/20190121">20190121</a></td>
<td>2019-01-21</td>
</tr>
<tr>
<td>crawline</td>
<td><a href="https://github.com/u6k/crawline/releases/tag/0.2.0">0.2.0</a></td>
<td>2019-01-23</td>
</tr>
<tr>
<td>crawline</td>
<td><a href="https://github.com/u6k/crawline/releases/tag/0.2.1">0.2.1</a></td>
<td>2019-01-23</td>
</tr>
<tr>
<td>crawline</td>
<td><a href="https://github.com/u6k/crawline/releases/tag/0.2.2">0.2.2</a></td>
<td>2019-01-24</td>
</tr>
<tr>
<td>crawline</td>
<td><a href="https://github.com/u6k/crawline/releases/tag/0.2.3">0.2.3</a></td>
<td>2019-01-24</td>
</tr>
<tr>
<td>crawline</td>
<td><a href="https://github.com/u6k/crawline/releases/tag/0.2.4">0.2.4</a></td>
<td>2019-01-24</td>
</tr>
<tr>
<td>crawline</td>
<td><a href="https://github.com/u6k/crawline/releases/tag/0.2.5">0.2.5</a></td>
<td>2019-01-24</td>
</tr>
<tr>
<td>crawline</td>
<td><a href="https://github.com/u6k/crawline/releases/tag/0.3.0">0.3.0</a></td>
<td>2019-01-31</td>
</tr>
</tbody>
</table>
<p>全期間における月ごとのリリース数です。</p>
<p><img src="https://docs.google.com/spreadsheets/d/e/2PACX-1vTLwTbswndGRrd7m5EufLgJAlWKQ_rh-ESJgieaHQDogdNow98LfsOnxN5_npzYHWtJU9TxlC79C5uh/pubchart?oid=2035239646&format=image" alt="リリース" /></p>
<h3 id="コミットログ">コミット・ログ</h3>
<p>サイド・プロジェクトのコミット数を集計しました。浮き沈みがありますが、それなりに活動できているようです。</p>
<p><img src="https://docs.google.com/spreadsheets/d/e/2PACX-1vS_ntKXxCVDJJ-T1SQff1zNhdPc9tFdu1wj0SJg_Bq-JILdiaQzjaWyMsiEqUmKZFThbDpr0LM6FEDO/pubchart?oid=2052360259&format=image" alt="コミット数(2019-01)" /></p>
<p>2018年1月から2019年1月までのコミット数も集計しました。2018年10月から12月頃の活動がなくなっていましたが、回復傾向にあるようです。</p>
<p><img src="https://docs.google.com/spreadsheets/d/e/2PACX-1vS_ntKXxCVDJJ-T1SQff1zNhdPc9tFdu1wj0SJg_Bq-JILdiaQzjaWyMsiEqUmKZFThbDpr0LM6FEDO/pubchart?oid=1797811541&format=image" alt="コミット数(2018-01から2019-01)" /></p>
<ul>
<li><a href="https://github.com/u6k">u6k · GitHub</a></li>
</ul>
<h3 id="タスク処理ログ">タスク処理ログ</h3>
<p>タスクの処理数を集計しました。個人タスク、家事、仕事、サイド・プロジェクトも含めたすべてのタスクをRedmineで管理しているので、つまりRedmineのチケットとWikiの更新数です。</p>
<p><img src="https://docs.google.com/spreadsheets/d/e/2PACX-1vTJer1T7Lj8xaxVjZQttiomqjRzj_KQtgu_zfo-CyNUD45_QVGC_tK9aIgl-Tt1fYHH9MTtdljARsah/pubchart?oid=668138408&format=image" alt="u6k.Redmineアクティビティ(2019-01)" /></p>
<p>2018年1月から2019年1月までのタスク数も集計しました。2018年10月ころからタスク数がいきなり増えていますが、これはブックマークをRedmine Wikiに登録することにしたためです。 <strong>TODO:</strong> タスク数とWiki数を分離して集計します。</p>
<p><img src="https://docs.google.com/spreadsheets/d/e/2PACX-1vTJer1T7Lj8xaxVjZQttiomqjRzj_KQtgu_zfo-CyNUD45_QVGC_tK9aIgl-Tt1fYHH9MTtdljARsah/pubchart?oid=1844227243&format=image" alt="u6k.Redmineアクティビティ" /></p>
<ul>
<li><a href="https://redmine.u6k.me/activity?user_id=5">活動 - u6k.Redmine</a></li>
</ul>
<h3 id="学習ログ">学習ログ</h3>
<p>学習ログを集計しました。学習(主に読書)をStudyPlusで管理しているので、つまりStudyPlusのページ数ログです。</p>
<p><img src="https://docs.google.com/spreadsheets/d/e/2PACX-1vRbHP6zndel8X_Gp97p-gD9RG2ANYcATqZPijVrMFlZ3aJhsnMrQcnXoL55wK_9eS_5xAsuz7kskxU8/pubchart?oid=1518442309&format=image" alt="StudyPlusアクティビティ(2019-01)" /></p>
<p>2018年11月から2019年1月の学習ログを集計しました。StudyPlusを再開したのが2018年11月なので、まだデータが少ないですね…</p>
<p><img src="https://docs.google.com/spreadsheets/d/e/2PACX-1vRbHP6zndel8X_Gp97p-gD9RG2ANYcATqZPijVrMFlZ3aJhsnMrQcnXoL55wK_9eS_5xAsuz7kskxU8/pubchart?oid=1813089657&format=image" alt="StudyPlusアクティビティ" /></p>
<ul>
<li><a href="https://www.studyplus.jp/users/u6k_yu1/studylog/logs">u6k_yu1 | Studyplus(スタディプラス)</a></li>
</ul>
<h3 id="習慣ログ">習慣ログ</h3>
<p>習慣の達成ログを集計しました。習慣はCoach.meで管理しているので、つまりCoach.meのログです。</p>
<p>“Accomplish 1 Most Important Task”(最も重要な1つのタスク)と”Exercise”(筋トレ)の達成(3回/週)を気にしています。”Accomplish 1 Most Important Task”は達成できていますね。先月まで達成できていなかったので、これはうれしいです。”Exercise”は達成できていないときもあるので、継続して頑張りましょう。</p>
<p><img src="https://docs.google.com/spreadsheets/d/e/2PACX-1vTS8XXE-MwRKSrWX1Z_NQvN4ewfh68G4pOV9XAF5lypAqENy6NDtJ2msKt16A3MrW7vzvGYKzQNrxQQ/pubchart?oid=400670195&format=image" alt="Coach.meアクティビティ(2019-01)" /></p>
<p>2018年10月から2019年1月の習慣の達成ログも集計しました。ガタガタしていますが、安定して達成できることが望ましいです。</p>
<p><img src="https://docs.google.com/spreadsheets/d/e/2PACX-1vTS8XXE-MwRKSrWX1Z_NQvN4ewfh68G4pOV9XAF5lypAqENy6NDtJ2msKt16A3MrW7vzvGYKzQNrxQQ/pubchart?oid=1398315759&format=image" alt="Coach.meアクティビティ" /></p>
<h3 id="睡眠ログ">睡眠ログ</h3>
<p>睡眠ログを集計しました。睡眠はRuntastic SleepBetterで計測しており、そのうち「浅い睡眠」(REM)、「深い睡眠」(Non-REM)、それの合計(Total)を集計しました。なお、計測し忘れた日もあり、その日は睡眠時間が0になっています(グラフの谷部分)。</p>
<p>まず、睡眠時間は合計で6~7時間(360~420分)欲しいと思っています。さらに浅い/深い睡眠の割合ですが、成人の場合は「REM : Non-REM = 20 : 80」らしいので、REM=72~84分、Non-REM=288~336分くらいが望ましいです。</p>
<p>これを前提としてみると、ほとんどの日で目標を達成していないことが分かります。割合も20 : 80ではない日が多く、グラフががたがたです。実際、グラフががたがたしている日は体調を崩していることが多いです。グラフが安定するような生活を目指しましょう。</p>
<p><img src="https://docs.google.com/spreadsheets/d/e/2PACX-1vQ6S6Ehjg40OmYbuDHYt5XTpsLG8QUrYK7Km2ey1bjQhSRs8KmHKLffkZ7ZskZjx4QeSshg2l3wbh-f/pubchart?oid=193994011&format=image" alt="SleepBetterログ(2019-01)" /></p>
<p>2018年12月から2019年1月の睡眠ログも集計しました。これは、睡眠を計測できた日の週ごと平均です。浅い睡眠はともかく、深い睡眠が目標を達成できていません。睡眠時間合計も目標を達成できていないので、要するに「睡眠時間が短く、十分に深く眠れていない」ということだと考えます。</p>
<p><img src="https://docs.google.com/spreadsheets/d/e/2PACX-1vQ6S6Ehjg40OmYbuDHYt5XTpsLG8QUrYK7Km2ey1bjQhSRs8KmHKLffkZ7ZskZjx4QeSshg2l3wbh-f/pubchart?oid=1327056700&format=image" alt="SleepBetterログ" /></p>
<h3 id="歩数ログ">歩数ログ</h3>
<p>ウォーキングの歩数を集計しました。iPhone 6sで計測しています。平日は9000歩/日を目標としています。半分くらいは達成できているようですが、グラフががたがたして見づらいですね…</p>
<p><img src="https://docs.google.com/spreadsheets/d/e/2PACX-1vSybiJQxp7j73NOSeOnANvT3g00qkqlz1sA0R_uxF5McJVc793q9pncVmkHO5PCgpOBOOB0A-UV6vWH/pubchart?oid=87895503&format=image" alt="歩数ログ(2019-01)" /></p>
<p>2018年8月から2019年1月の歩数ログも集計しました。これは、歩数の週ごと平均です。平日は9000歩を目標としていますが、休日は1000~2000歩程度しか動かないので、平均すると約7000歩が週の目標となります。いえ、本当は休日も9000歩の方がいいのですけど…</p>
<p>で、7000歩だとしても、多くの週で達成できていません。休日の歩数減少が足を引っ張っています。休日も動こう…</p>
<p><img src="https://docs.google.com/spreadsheets/d/e/2PACX-1vSybiJQxp7j73NOSeOnANvT3g00qkqlz1sA0R_uxF5McJVc793q9pncVmkHO5PCgpOBOOB0A-UV6vWH/pubchart?oid=1982291643&format=image" alt="歩数ログ" /></p>
<h3 id="所感">所感</h3>
<p>サイド・プロジェクトは、それなりに進めることができました。crawlineは流用できるようになり、クローラーを修正中。希望としては実運用まで進めたかったけれど、そこまでは進みませんでした。どうも飽きっぽくて別目標に脱線してしまいがち。目標を頻繁に再確認して、作業を進めます。</p>
<p>タスク処理は、数字だけ見てもよくわかりませんね。チケット処理数とWiki処理数は分けてカウントした方がいいと思います。が、すっごく面倒くさい。集計方法を改善しましょう。</p>
<p>習慣は、Exerciseの頻度が下がっています。</p>
<p>睡眠がメチャクチャ。風呂が長すぎたり、布団に入っても諦め悪くスマホを見ていたりするからですね。寝たままヨガで強制的に睡眠に入る習慣をつけるべきです。</p>
<p>支出は、うーん、無駄が多いように思うけど、あまり正確に集計できていないから、なんとも言えません。見直しをちゃんとできるように、集計精度を高めましょう。</p>
<h2 id="2019年2月のミッションステートメント見直しと目標設定">2019年2月のミッション・ステートメント見直しと目標設定</h2>
<p>これまでの状況を踏まえて、ミッション・ステートメントの見直しと目標の設定を行います。</p>
<h3 id="ミッションステートメント">ミッション・ステートメント</h3>
<ol>
<li>人生
<ul>
<li>(保留)</li>
</ul>
</li>
<li>仕事
<ul>
<li>顧客やステークホルダー、チームメンバーの課題を整理・明文化・構造化して、それを解決する</li>
<li>自分が持つナレッジを周囲に伝えて、チームや組織の課題解決力を高める</li>
<li>独力で、要求の抽出から要件の定義、設計、実装、検証、運用までを実施する</li>
<li>技術のみならず、設計、要件定義などのフレームワークや規約を提供する</li>
</ul>
</li>
<li>社会
<ul>
<li>(保留)</li>
</ul>
</li>
<li>成長(個人システム運用)
<ul>
<li>自分の活動に必要なサービスを、基本的には探すがなければ独力で構築する</li>
<li>自分のためのサービスでも、未来の自分のために要求・要件・設計・運用を明文化・構造化する</li>
<li>自分のためのサービスでも、(可能な限り)マネタイズを意識して運用する</li>
<li>RSSやSNSなどを常に監視して、気になる情報があれば「あとで読む」に蓄積して、日次で消化してナレッジとして蓄積する</li>
<li>同様の情報がある程度集まったら、ナレッジとして整理・明文化・構造化して、ブログにアウトプットする</li>
</ul>
</li>
<li>経済
<ul>
<li>暴飲・暴食のような無駄な出費を抑制する</li>
<li>投資システムを構築、運用して財務に反映する</li>
<li>将来的に、親たちの世話をできる程度の財力を確保する</li>
</ul>
</li>
<li>健康
<ul>
<li>最低限、適度なエクササイズを行い、肥満や生活習慣病を避ける</li>
<li>可能であれば、スポーツを行い、身体を鍛える</li>
<li>十分な睡眠時間を確保して、睡眠負債を抱えない</li>
</ul>
</li>
<li>家庭
<ul>
<li>哲明だけでなくさおりも、物事を論理的に整理する能力を高める</li>
<li>自宅が片付いており、過ごしやすい状態を維持する</li>
<li>家事作業が整理されており、なぜ・誰が・どうするのかがわかる状態を維持する</li>
</ul>
</li>
</ol>
<p>参考リンク</p>
<ul>
<li><a href="https://redmine.u6k.me/projects/miscellaneous/wiki/%E3%83%9F%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%BB%E3%82%B9%E3%83%86%E3%83%BC%E3%83%88%E3%83%A1%E3%83%B3%E3%83%88%E3%81%AE%E4%BD%9C%E6%88%90%E3%80%81%E9%81%8B%E7%94%A8">ミッション・ステートメントの作成、運用 - Miscellaneous - u6k.Redmine</a></li>
</ul>
<h3 id="目標">目標</h3>
<ul>
<li>人生
<ul>
<li>(保留)</li>
</ul>
</li>
<li>社会
<ul>
<li>(保留)</li>
</ul>
</li>
<li>成長(個人システム運用)
<ul>
<li>クローラーの運用を開始して、主要なデータを収集する</li>
</ul>
</li>
<li>経済
<ul>
<li>Zaimで出費を記録して、目標金額以内にする</li>
<li>Zaimの記録を厳密にする</li>
</ul>
</li>
<li>健康
<ul>
<li>最低限のエクササイズ(スクワット * 20回 * 2セット)の習慣を継続する</li>
</ul>
</li>
<li>家庭
<ul>
<li>片付けを進めたい</li>
</ul>
</li>
</ul>
<p>参考リンク</p>
<ul>
<li><a href="https://redmine.u6k.me/projects/miscellaneous/wiki_extensions/tag?tag_id=590">SMARTの法則 - Miscellaneous - u6k.Redmine</a></li>
</ul>
<h3 id="所感-1">所感</h3>
<p>うーん、ミッション・ステートメントの進捗をそのまま確認するのではなく、ミッション・ステートメントを目標としてそこを目指すための目標を設定、進捗を確認した方が良い気がします…</p>
<p>あと、ミッション・ステートメントが「こうなりたい」ではなく「こうしたい」になってしまっています。これは自分憲法なので、「なりたい自分」を書くべきですね。</p>
<h2 id="おわりに">おわりに</h2>
<p>月次レビューを再開してみました。まだ慣れていないため、レビュー時間がかかったり、ただの活動集計になってしまっていますが、回数を重ねてレビュー(振り返り)に近づけていきます。</p>u6ku6k.apps@gmail.com既に2019年2月も終わろうとしていますが、ようやく1月の活動を整理し終えたので、レビュー記録を公開してみます。レビュー記録、というか、単に活動記録を集計してみました、という感じになってしまっていますが… 2019年1月の目標再確認と進捗確認 まず、1月当初に作成した目標の再確認と、目標ごとの進捗を確認します。仕事に関しては伏せています。 目標再確認 人生 (保留) 社会 (保留) 成長(個人システム運用) crawlineの最初のバージョンをリリースする crawlineの要求・要件・設計を再整理する 運用中のクローラーをcrawlineに統合する 経済 Zaimで出費を記録して、目標金額以内にする 健康 最低限のエクササイズの習慣を継続する 家庭 うーん、片づけを進めたいけど… 進捗 人生 (保留) 社会 (保留) 成長(個人システム運用) crawlineの整理はできなかった それ以外の、優先度が低い作業に逃げたため 経済 目標金額以内にはなっている が、どうもまだ無駄に出費している気がする 健康 エクササイズの頻度が下がっている 家庭 片付けは何も進んでいない 浴室の全体掃除ができた 2019年1月の活動ログ リリース サイド・プロジェクトのリリースをリストアップしました。サイド・プロジェクトはGitHubで管理しているので、つまりGitHubリリースのリストです。10件のリリースがありました。悪くないペースだと考えます。 リポジトリ名 リリース名 リリース日 blog 20190108 2019-01-08 my-services 20190111 2019-01-11 blog 20190121 2019-01-21 crawline 0.2.0 2019-01-23 crawline 0.2.1 2019-01-23 crawline 0.2.2 2019-01-24 crawline 0.2.3 2019-01-24 crawline 0.2.4 2019-01-24 crawline 0.2.5 2019-01-24 crawline 0.3.0 2019-01-31 全期間における月ごとのリリース数です。 コミット・ログ サイド・プロジェクトのコミット数を集計しました。浮き沈みがありますが、それなりに活動できているようです。 2018年1月から2019年1月までのコミット数も集計しました。2018年10月から12月頃の活動がなくなっていましたが、回復傾向にあるようです。 u6k · GitHub タスク処理ログ タスクの処理数を集計しました。個人タスク、家事、仕事、サイド・プロジェクトも含めたすべてのタスクをRedmineで管理しているので、つまりRedmineのチケットとWikiの更新数です。 2018年1月から2019年1月までのタスク数も集計しました。2018年10月ころからタスク数がいきなり増えていますが、これはブックマークをRedmine Wikiに登録することにしたためです。 TODO: タスク数とWiki数を分離して集計します。 活動 - u6k.Redmine 学習ログ 学習ログを集計しました。学習(主に読書)をStudyPlusで管理しているので、つまりStudyPlusのページ数ログです。 2018年11月から2019年1月の学習ログを集計しました。StudyPlusを再開したのが2018年11月なので、まだデータが少ないですね… u6k_yu1 | Studyplus(スタディプラス) 習慣ログ 習慣の達成ログを集計しました。習慣はCoach.meで管理しているので、つまりCoach.meのログです。 “Accomplish 1 Most Important Task”(最も重要な1つのタスク)と”Exercise”(筋トレ)の達成(3回/週)を気にしています。”Accomplish 1 Most Important Task”は達成できていますね。先月まで達成できていなかったので、これはうれしいです。”Exercise”は達成できていないときもあるので、継続して頑張りましょう。 2018年10月から2019年1月の習慣の達成ログも集計しました。ガタガタしていますが、安定して達成できることが望ましいです。 睡眠ログ 睡眠ログを集計しました。睡眠はRuntastic SleepBetterで計測しており、そのうち「浅い睡眠」(REM)、「深い睡眠」(Non-REM)、それの合計(Total)を集計しました。なお、計測し忘れた日もあり、その日は睡眠時間が0になっています(グラフの谷部分)。 まず、睡眠時間は合計で6~7時間(360~420分)欲しいと思っています。さらに浅い/深い睡眠の割合ですが、成人の場合は「REM : Non-REM = 20 : 80」らしいので、REM=72~84分、Non-REM=288~336分くらいが望ましいです。 これを前提としてみると、ほとんどの日で目標を達成していないことが分かります。割合も20 : 80ではない日が多く、グラフががたがたです。実際、グラフががたがたしている日は体調を崩していることが多いです。グラフが安定するような生活を目指しましょう。 2018年12月から2019年1月の睡眠ログも集計しました。これは、睡眠を計測できた日の週ごと平均です。浅い睡眠はともかく、深い睡眠が目標を達成できていません。睡眠時間合計も目標を達成できていないので、要するに「睡眠時間が短く、十分に深く眠れていない」ということだと考えます。 歩数ログ ウォーキングの歩数を集計しました。iPhone 6sで計測しています。平日は9000歩/日を目標としています。半分くらいは達成できているようですが、グラフががたがたして見づらいですね… 2018年8月から2019年1月の歩数ログも集計しました。これは、歩数の週ごと平均です。平日は9000歩を目標としていますが、休日は1000~2000歩程度しか動かないので、平均すると約7000歩が週の目標となります。いえ、本当は休日も9000歩の方がいいのですけど… で、7000歩だとしても、多くの週で達成できていません。休日の歩数減少が足を引っ張っています。休日も動こう… 所感 サイド・プロジェクトは、それなりに進めることができました。crawlineは流用できるようになり、クローラーを修正中。希望としては実運用まで進めたかったけれど、そこまでは進みませんでした。どうも飽きっぽくて別目標に脱線してしまいがち。目標を頻繁に再確認して、作業を進めます。 タスク処理は、数字だけ見てもよくわかりませんね。チケット処理数とWiki処理数は分けてカウントした方がいいと思います。が、すっごく面倒くさい。集計方法を改善しましょう。 習慣は、Exerciseの頻度が下がっています。 睡眠がメチャクチャ。風呂が長すぎたり、布団に入っても諦め悪くスマホを見ていたりするからですね。寝たままヨガで強制的に睡眠に入る習慣をつけるべきです。 支出は、うーん、無駄が多いように思うけど、あまり正確に集計できていないから、なんとも言えません。見直しをちゃんとできるように、集計精度を高めましょう。 2019年2月のミッション・ステートメント見直しと目標設定 これまでの状況を踏まえて、ミッション・ステートメントの見直しと目標の設定を行います。 ミッション・ステートメント 人生 (保留) 仕事 顧客やステークホルダー、チームメンバーの課題を整理・明文化・構造化して、それを解決する 自分が持つナレッジを周囲に伝えて、チームや組織の課題解決力を高める 独力で、要求の抽出から要件の定義、設計、実装、検証、運用までを実施する 技術のみならず、設計、要件定義などのフレームワークや規約を提供する 社会 (保留) 成長(個人システム運用) 自分の活動に必要なサービスを、基本的には探すがなければ独力で構築する 自分のためのサービスでも、未来の自分のために要求・要件・設計・運用を明文化・構造化する 自分のためのサービスでも、(可能な限り)マネタイズを意識して運用する RSSやSNSなどを常に監視して、気になる情報があれば「あとで読む」に蓄積して、日次で消化してナレッジとして蓄積する 同様の情報がある程度集まったら、ナレッジとして整理・明文化・構造化して、ブログにアウトプットする 経済 暴飲・暴食のような無駄な出費を抑制する 投資システムを構築、運用して財務に反映する 将来的に、親たちの世話をできる程度の財力を確保する 健康 最低限、適度なエクササイズを行い、肥満や生活習慣病を避ける 可能であれば、スポーツを行い、身体を鍛える 十分な睡眠時間を確保して、睡眠負債を抱えない 家庭 哲明だけでなくさおりも、物事を論理的に整理する能力を高める 自宅が片付いており、過ごしやすい状態を維持する 家事作業が整理されており、なぜ・誰が・どうするのかがわかる状態を維持する 参考リンク ミッション・ステートメントの作成、運用 - Miscellaneous - u6k.Redmine 目標 人生 (保留) 社会 (保留) 成長(個人システム運用) クローラーの運用を開始して、主要なデータを収集する 経済 Zaimで出費を記録して、目標金額以内にする Zaimの記録を厳密にする 健康 最低限のエクササイズ(スクワット * 20回 * 2セット)の習慣を継続する 家庭 片付けを進めたい 参考リンク SMARTの法則 - Miscellaneous - u6k.Redmine 所感 うーん、ミッション・ステートメントの進捗をそのまま確認するのではなく、ミッション・ステートメントを目標としてそこを目指すための目標を設定、進捗を確認した方が良い気がします… あと、ミッション・ステートメントが「こうなりたい」ではなく「こうしたい」になってしまっています。これは自分憲法なので、「なりたい自分」を書くべきですね。 おわりに 月次レビューを再開してみました。まだ慣れていないため、レビュー時間がかかったり、ただの活動集計になってしまっていますが、回数を重ねてレビュー(振り返り)に近づけていきます。Raspberry Pi検証作業に使える、Raspbian Stretch Lite仮想マシンを構築する2019-01-21T00:00:00+09:002019-01-21T00:00:00+09:00/2019/01/21/build-raspbian-stretch-lite-emulator<p>Raspbianで作業をしていると、しばしばクリーンな状態に戻したくなります。しかし、クラウドとは違い面倒な作業を行う必要があります。できれば、事前検証を行うことでクリーンに戻す機会を減らしたいものです。</p>
<p>この記事では、Raspbianの検証作業に使える、Raspbian仮想マシンの構築手順を説明します。</p>
<p>この手順を実行することで、何度でも壊して復元できるRaspbian仮想マシンをDebian上に構築することができます。WindowsやmacOSの場合でも、Debian仮想マシンを構築することで同様のことができるはずです。</p>
<h2 id="この手順で得られるもの">この手順で得られるもの</h2>
<p>個人用に、Raspberry Pi 3 Model B+(以降、RaspberryPi)にRaspbian Stretch Lite(以降、Raspbian)をインストールして、簡単なサーバーとして運用しています。ソフトウェアのインストール、設定変更、運用に関する細々な調整など、まぁいろいろな作業を行いますので、しばしばクリーンな状態に戻したくなります。この時、RaspberryPiからmicroSDカードを外してRaspbianイメージの書き込みを行い、各種設定作業を行い、といった感じでぶっちゃけ面倒です。Raspbianに変更作業を実際に行う前に、検証作業を行いたいものです。</p>
<p>そこで、Raspbian仮想マシンを構築します。仮想マシンですので、任意のタイミングでイメージ・ファイルをバックアップしておけば、いつでも簡単にバックアップ時点まで戻すことができます。</p>
<p>OSは、Raspbian Stretch Liteになります。</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ uname -a
Linux raspberrypi 4.14.50+ #1 Fri Sep 21 11:29:13 CDT 2018 armv6l GNU/Linux
</code></pre></div></div>
<h2 id="前提作業環境注意点など">前提…作業環境、注意点など</h2>
<p>筆者はDigitalOcean上のDebianサーバーで作業を行いました。WindowsやmacOSの場合、VagrantなどでDebian仮想マシンを構築すれば、同様の作業が可能のはずです。</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ uname -a
Linux debian-s-1vcpu-1gb-sgp1-01 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU/Linux
</code></pre></div></div>
<p>構築したRaspbian仮想マシンは、メモリが256MBしかない上に動作がすごく遅いです。簡単な検証作業にしか使えないと割りきったほうが良いでしょう。パーティション・サイズは任意に拡張可能です。</p>
<p>筆者は、Raspbian仮想マシンで動作検証と作業手順作成を行ったあと、実機に反映させるという運用をしています。この作業は何度も行なっているので、Ansible playbookで定義しており、半自動的に行えるようにしています。この記事では手動作業として説明するので、Ansibleの場合は別記事で説明する予定です。</p>
<p>次の章から、Raspbian仮想マシンを構築・起動する手順を説明します。</p>
<h2 id="手順1-qemuをインストールする">手順1. <code class="highlighter-rouge">qemu</code>をインストールする</h2>
<p>Raspbian仮想マシンをQEMUで動作させるため、インストールします。</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt -y install qemu
</code></pre></div></div>
<h2 id="手順2-raspbianイメージと必要ファイルをダウンロード展開する">手順2. Raspbianイメージと必要ファイルをダウンロード、展開する</h2>
<p>Raspbianイメージをダウンロードして、展開します。</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ curl -L -o raspbian_lite_latest.zip https://downloads.raspberrypi.org/raspbian_lite_latest
$ unzip raspbian_lite_latest.zip
</code></pre></div></div>
<p>QEMUの動作に必要なファイルをダウンロードします。</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ curl -LO https://github.com/dhruvvyas90/qemu-rpi-kernel/raw/master/kernel-qemu-4.14.50-stretch
$ curl -LO https://github.com/dhruvvyas90/qemu-rpi-kernel/raw/master/versatile-pb.dtb
</code></pre></div></div>
<h2 id="手順3-raspbian仮想マシンを起動する">手順3. Raspbian仮想マシンを起動する</h2>
<p>次のコマンドを実行することで、Raspbian仮想マシンを起動することができます。</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ qemu-system-arm \
-kernel kernel-qemu-4.14.50-stretch \
-cpu arm1176 \
-M versatilepb \
-dtb versatile-pb.dtb \
-m 256 \
-no-reboot \
-serial stdio \
-append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" \
-hda 2018-11-13-raspbian-stretch-lite.img \
-net nic \
-net user,hostfwd=tcp::10022-:22 \
-curses
</code></pre></div></div>
<p>Raspbianの初期ユーザーである<code class="highlighter-rouge">pi</code>の初期パスワードは<code class="highlighter-rouge">raspberry</code>です。</p>
<p>ホストOSの10022ポートを、Raspbian仮想マシン側の22ポートにフォワードしています。これによりSSH接続することが可能ですが、Raspbianは初期状態ではSSHが無効化されているので、<code class="highlighter-rouge">sudo raspi-config</code>でSSHを有効化する必要があります。</p>
<h2 id="おわりに">おわりに</h2>
<p>以上で、Raspbian仮想マシンを使用することができます。良いRaspberryPi生活を!</p>
<p>なお、この状態のRaspbian仮想マシンはいろいろと使いづらいので、筆者はさらに次の作業を行っています。</p>
<ul>
<li>Raspbianイメージのサイズ拡張</li>
<li>スワップ領域を追加</li>
<li><code class="highlighter-rouge">raspi-config</code>でOS設定</li>
<li>ファームウェア更新</li>
<li>バックアップ</li>
</ul>
<p>これらの説明は長くなってしまうので、Ansibleによるセットアップと同様、別記事にしたいと思います。</p>u6ku6k.apps@gmail.comRaspbianで作業をしていると、しばしばクリーンな状態に戻したくなります。しかし、クラウドとは違い面倒な作業を行う必要があります。できれば、事前検証を行うことでクリーンに戻す機会を減らしたいものです。2018年の振り返り2019-01-08T00:00:00+09:002019-01-08T00:00:00+09:00/2019/01/08/2018-retrospective<p>あけましておめでとうございます。本年もよろしくお願いいたします。</p>
<p>2018年が終わりましたので振り返りと、振り返り結果を踏まえた2019年の目標設定をします。</p>
<h2 id="2018年当初のミッションステートメント">2018年当初のミッション・ステートメント</h2>
<p>まずは、2018年当初のミッション・ステートメント(自分憲法)を再掲します。どのような自分になりたかったのかを思い出しましょう。ただ、ミッション・ステートメントを最初に作成したのは2018年11月なので、正しくは「2018年当初」ではありません。</p>
<ul>
<li>人生
<ul>
<li>(保留)</li>
</ul>
</li>
<li>仕事
<ul>
<li>余力を残しながら(業務中に勉強などをしながら)リーダー業務をこなす</li>
<li>ナレッジ的な成果を出して、自分の特性を周知する</li>
<li>いつでも手を引けるようにする</li>
</ul>
</li>
<li>社会
<ul>
<li>(保留)</li>
</ul>
</li>
<li>成長(個人システム運用)
<ul>
<li>要求・設計・実装を矛盾なく整理する</li>
<li>ポートフォリオを整理して、自分の特性を周知する</li>
<li>投資システムを運用して、財務に反映する</li>
<li>吸収した知識をナレッジに変換して、ブログなどで周知する</li>
</ul>
</li>
<li>経済
<ul>
<li>暴飲・暴食のような無駄な出費を抑制する</li>
<li>仕事以外の収入を確保する</li>
<li>将来的に、親たちの世話をできる程度の財力を確保する</li>
</ul>
</li>
<li>健康
<ul>
<li>最低限、適度なエクササイズを行い、肥満や生活習慣病を避ける</li>
<li>可能であれば、スポーツを行い、身体を鍛える</li>
<li>十分な睡眠時間を確保して、睡眠負債を抱えない</li>
</ul>
</li>
<li>家庭
<ul>
<li>家族が、物事を論理的に整理する能力を高める</li>
<li>自宅が片付いており、過ごしやすい状態を維持する</li>
<li>家事作業が整理されており、なぜ・誰が・どうするのかがわかる状態を維持する</li>
</ul>
</li>
</ul>
<h2 id="2018年当初のkpt">2018年当初のKPT</h2>
<p>ミッション・ステートメントを踏まえて、<a href="/2018/01/03/2017-retrospective.html#%E4%BB%8A%E5%B9%B4%E3%81%AEkpt">2018年当初のKPT</a>を再掲します。何を問題と感じて、どのように改善したかったのかを思い出しましょう。</p>
<p>本来はミッション・ステートメントからKPTを設定すべきですが、この時のKPTはなんとなくで設定していました。ミッション・ステートメントの作成が2018年11月だったので。</p>
<ul>
<li>Keep (うまくいって、次も続けたいこと)
<ul>
<li>ブログにアウトプットする</li>
<li>プロダクトをリリースする</li>
<li>活動頻度を維持する</li>
</ul>
</li>
<li>Problem (問題だと認識していること)
<ul>
<li>ブログへのアウトプットが少ない</li>
<li>作業環境が限定されてしまった</li>
<li>プロジェクトをモデリングできていない</li>
<li>サイド・プロジェクトをモデリングできていない</li>
<li>要件~設計~実装をモデリングできていない</li>
</ul>
</li>
<li>Try (改善策、工夫してみたいこと)
<ul>
<li>各種モデリングを実践する</li>
<li>ブログの作業環境をもっと整備する</li>
<li>サイド・プロジェクトの作業環境をもっと整備する</li>
</ul>
</li>
</ul>
<h2 id="2018年の活動集計">2018年の活動集計</h2>
<p>なりたい自分とどうしたいのかを思い出しました。では、2018年の活動がどうだったかを集計します。</p>
<h3 id="個人プロダクトのリリース">個人プロダクトのリリース</h3>
<p>個人プロダクトはGitHubで管理しているので、GitHubのReleaseを集計します。まずは月ごとに集計してみます。</p>
<table>
<thead>
<tr>
<th><em>期間</em></th>
<th>リリース数</th>
</tr>
</thead>
<tbody>
<tr>
<td>2018-02</td>
<td>4</td>
</tr>
<tr>
<td>2018-03</td>
<td>4</td>
</tr>
<tr>
<td>2018-04</td>
<td>15</td>
</tr>
<tr>
<td>2018-05</td>
<td>16</td>
</tr>
<tr>
<td>2018-06</td>
<td>4</td>
</tr>
<tr>
<td>2018-07</td>
<td>10</td>
</tr>
<tr>
<td>2018-08</td>
<td>13</td>
</tr>
<tr>
<td>2018-09</td>
<td>4</td>
</tr>
<tr>
<td>2018-10</td>
<td>6</td>
</tr>
<tr>
<td>2018-12</td>
<td>3</td>
</tr>
<tr>
<td><strong>総計</strong></td>
<td><strong>79</strong></td>
</tr>
</tbody>
</table>
<p>6月が一瞬落ち込みますが、4月から8月にかけて多くリリースしています。この時は仕事が政治的なゴタゴタでうまく進まなかったので、余った時間とストレスをぶつけてた感じなのかな?</p>
<p>次に、リポジトリごとのリリース数を集計してみます。</p>
<table>
<thead>
<tr>
<th><em>リポジトリ</em></th>
<th>リリース数</th>
</tr>
</thead>
<tbody>
<tr>
<td>u6k/ceron-analyze</td>
<td>4</td>
</tr>
<tr>
<td>u6k/crawline</td>
<td>3</td>
</tr>
<tr>
<td>u6k/extract-content</td>
<td>2</td>
</tr>
<tr>
<td>u6k/google-news-analyze</td>
<td>3</td>
</tr>
<tr>
<td>u6k/investment-machine</td>
<td>13</td>
</tr>
<tr>
<td>u6k/my-services</td>
<td>18</td>
</tr>
<tr>
<td>u6k/nginx-proxy</td>
<td>1</td>
</tr>
<tr>
<td>u6k/rails-tutorial-hello-app</td>
<td>1</td>
</tr>
<tr>
<td>u6k/rails-tutorial-sample-app</td>
<td>3</td>
</tr>
<tr>
<td>u6k/rails-tutorial-toy-app</td>
<td>1</td>
</tr>
<tr>
<td>u6k/redmine</td>
<td>4</td>
</tr>
<tr>
<td>u6k/ruby-editor</td>
<td>1</td>
</tr>
<tr>
<td>u6k/rundeck</td>
<td>3</td>
</tr>
<tr>
<td>u6k/sample-parse-xbrl</td>
<td>1</td>
</tr>
<tr>
<td>u6k/sample-parse-xbrl-2</td>
<td>2</td>
</tr>
<tr>
<td>u6k/sample-sidekiq</td>
<td>2</td>
</tr>
<tr>
<td>u6k/scoring-horse-racing</td>
<td>17</td>
</tr>
<tr>
<td><strong>総計</strong></td>
<td><strong>79</strong></td>
</tr>
</tbody>
</table>
<p><code class="highlighter-rouge">investment-machine</code>、<code class="highlighter-rouge">scoring-horse-racing</code>のリリース数が目立ちます。これらは、株価と競馬のデータをスクレイピングするプロダクトです。データ収集が楽しくて、細かくリリースを行っていたんですね。<code class="highlighter-rouge">my-services</code>のリリース数が多いのは、<code class="highlighter-rouge">investment-machine</code>や<code class="highlighter-rouge">scoring-horse-racing</code>などのリリースに伴って本番環境の<code class="highlighter-rouge">docker-compose.yml</code>などデプロイ設定の変更を行ったためです。</p>
<p>また、リリース数は少ないものの、Railsに関するリポジトリを多く作りました。作業環境の変化に伴い、使用言語をJavaからRubyにしたためです。</p>
<h3 id="githubアクティビティ">GitHubアクティビティ</h3>
<p>GitHub Contributionsを見てみます。</p>
<p><img src="/assets/img/2019-01-08-2018-retrospective/github.png" alt="github contributions" /></p>
<p>リリースが多かった4月から8月は芝生が青々としていますが、それ以外、特に9月以降は空白が目立ちます。よくないですね。</p>
<p>傾向を知るために、<a href="https://portfolio.forkwell.com/@u6k?open_auto_profile=true">Forkwellで分析</a>してみます。次のように出ました。</p>
<blockquote>
<p>超絶技巧のRuby忍者で2018年から累計39044行(上位10.6%)変更しました。</p>
<p>他には、Javaを2012年から使いはじめ、累計32857行(上位6.9%)
C#を2016年から使いはじめ、累計10732行(上位76.2%)変更しました。</p>
<p>直近半年では主にRubyを書いています。
土日は他の人より明らかに多くのコードを書きます。
深夜は他の人より明らかに多くのコードを書きます。</p>
<p>半年間でアクティブに開発しているリポジトリはu6k/scoring-horse-racing(307 commits)です。
他にもu6k/crawline(45 commits)、u6k/ceron-analyze(36 commits)を開発しています。</p>
<p>数いるVimmerの中でもデフォルトを愛すVim侍で、設定ファイルの変更量は212行です。</p>
</blockquote>
<p>Findyでも分析してみます。</p>
<blockquote>
<p>私は2018年にGitHubで1475コントリビュートし、Findy内で979位でした。月間の最大は262 (4月)、一日あたりの平均は4.2/日でした。あなたも2018年のコントリビューション活動をチェックしよう! https://findy-code.io?h=67_44dvkaW6dW&t=yc #findy #コントリビューションオブザイヤー</p>
</blockquote>
<h3 id="ブログの投稿">ブログの投稿</h3>
<p>ブログの投稿数を月ごとに集計します。</p>
<table>
<thead>
<tr>
<th><em>期間</em></th>
<th>投稿数</th>
</tr>
</thead>
<tbody>
<tr>
<td>2018-01</td>
<td>6</td>
</tr>
<tr>
<td>2018-02</td>
<td>3</td>
</tr>
<tr>
<td>2018-04</td>
<td>1</td>
</tr>
<tr>
<td>2018-05</td>
<td>1</td>
</tr>
<tr>
<td>2018-06</td>
<td>5</td>
</tr>
<tr>
<td>2018-12</td>
<td>1</td>
</tr>
<tr>
<td><strong>総計</strong></td>
<td><strong>17</strong></td>
</tr>
</tbody>
</table>
<p>合計で17本。2017年は28本だったので、大きく減ってしまっています。その分、個人プロダクトに注力したとも言えますが、うーん。ネタはいろいろあるのですけど、どうにも執筆の敷居がまだ高くて…</p>
<h3 id="タスク処理">タスク処理</h3>
<p>タスクはRedmineで管理しているので、Redmineの活動を集計します。</p>
<table>
<thead>
<tr>
<th><em>期間(月)</em></th>
<th>タスク処理数</th>
</tr>
</thead>
<tbody>
<tr>
<td>2018-01</td>
<td>156</td>
</tr>
<tr>
<td>2018-02</td>
<td>101</td>
</tr>
<tr>
<td>2018-03</td>
<td>233</td>
</tr>
<tr>
<td>2018-04</td>
<td>408</td>
</tr>
<tr>
<td>2018-05</td>
<td>486</td>
</tr>
<tr>
<td>2018-06</td>
<td>266</td>
</tr>
<tr>
<td>2018-07</td>
<td>212</td>
</tr>
<tr>
<td>2018-08</td>
<td>147</td>
</tr>
<tr>
<td>2018-09</td>
<td>116</td>
</tr>
<tr>
<td>2018-10</td>
<td>663</td>
</tr>
<tr>
<td>2018-11</td>
<td>704</td>
</tr>
<tr>
<td>2018-12</td>
<td>740</td>
</tr>
</tbody>
</table>
<p>タスクには、ソースコード執筆、それ以外の個人的な作業、家事、仕事などいわゆる「作業」の全てを含むほか、ブックマークやナレッジなどのWikiの更新も含みます。なので、数が多いです。また、10月あたりからブックマークをRedmine Wikiに作成するようになったので、処理数が増えています。しかし、Wikiにブックマークするの、面倒なんですよねぇ…</p>
<p>うーん、これといって有意な情報は読み取れないですね。よく更新したな、よく更新したわりには意義のある成果を出せていないなぁ、という感想くらい。参考までに、他の年と比べると次のようになります。</p>
<table>
<thead>
<tr>
<th> </th>
<th>2014年</th>
<th>2015年</th>
<th>2016年</th>
<th>2017年</th>
<th>2018年</th>
</tr>
</thead>
<tbody>
<tr>
<td>1月</td>
<td> </td>
<td>635</td>
<td>551</td>
<td>75</td>
<td>156</td>
</tr>
<tr>
<td>2月</td>
<td> </td>
<td>464</td>
<td>671</td>
<td>124</td>
<td>101</td>
</tr>
<tr>
<td>3月</td>
<td>8</td>
<td>530</td>
<td>213</td>
<td>105</td>
<td>233</td>
</tr>
<tr>
<td>4月</td>
<td>1114</td>
<td>380</td>
<td>172</td>
<td>210</td>
<td>408</td>
</tr>
<tr>
<td>5月</td>
<td>306</td>
<td>516</td>
<td>215</td>
<td>51</td>
<td>486</td>
</tr>
<tr>
<td>6月</td>
<td>338</td>
<td>266</td>
<td>141</td>
<td>104</td>
<td>266</td>
</tr>
<tr>
<td>7月</td>
<td>829</td>
<td>126</td>
<td>92</td>
<td>106</td>
<td>212</td>
</tr>
<tr>
<td>8月</td>
<td>927</td>
<td>10</td>
<td>129</td>
<td>164</td>
<td>147</td>
</tr>
<tr>
<td>9月</td>
<td>1210</td>
<td>108</td>
<td>130</td>
<td>255</td>
<td>116</td>
</tr>
<tr>
<td>10月</td>
<td>792</td>
<td>177</td>
<td>66</td>
<td>233</td>
<td>663</td>
</tr>
<tr>
<td>11月</td>
<td>450</td>
<td>167</td>
<td>38</td>
<td>310</td>
<td>704</td>
</tr>
<tr>
<td>12月</td>
<td>686</td>
<td>675</td>
<td>204</td>
<td>91</td>
<td>740</td>
</tr>
<tr>
<td>総計</td>
<td>6660</td>
<td>4054</td>
<td>2622</td>
<td>1828</td>
<td>4232</td>
</tr>
</tbody>
</table>
<h3 id="学習">学習</h3>
<p>読書やあとで読むの処理などの学習活動はStudyPlusで管理しているので、StudyPlusの学習量を集計します。StudyPlusは11月から再開したので、そこからの記録しかありません。</p>
<table>
<thead>
<tr>
<th><em>期間</em></th>
<th>Pocket</th>
<th>ユースケース駆動開発実践ガイド</th>
</tr>
</thead>
<tbody>
<tr>
<td>2018-11-19 - 2018-11-25</td>
<td>25</td>
<td>18</td>
</tr>
<tr>
<td>2018-11-26 - 2018-12-02</td>
<td>343</td>
<td>70</td>
</tr>
<tr>
<td>2018-12-03 - 2018-12-09</td>
<td>256</td>
<td>171</td>
</tr>
<tr>
<td>2018-12-10 - 2018-12-16</td>
<td>243</td>
<td>0</td>
</tr>
<tr>
<td>2018-12-17 - 2018-12-23</td>
<td>209</td>
<td>0</td>
</tr>
<tr>
<td>2018-12-24 - 2018-12-30</td>
<td>291</td>
<td>0</td>
</tr>
<tr>
<td>2018-12-31 - 2019-01-06</td>
<td>209</td>
<td>0</td>
</tr>
</tbody>
</table>
<p>こうしてみると、Pocketのあとで読む記事をよく読み流しているなと思いますが、それでもあとで読む残数が一向に減っていかないので、ため込みすぎていますね。いえ、ため込むことを悪いことだとは思っていないので、やはりレコメンドしてくれる仕組みが欲しいところです。</p>
<p>ユースケース駆動開発実践ガイドを読み進めていますが、あまり進んでいる感じがしないのは、手法を実際に使いながらページを戻ったり進んだりしているからです。とはいえ、いつまで経っても終わらないのは気持ち悪いので、ここらで読み終えてしまおうと思います。</p>
<h3 id="習慣">習慣</h3>
<p>マインドフルネス、エクササイズなどの習慣活動はCoach.meで管理しているので、Coach.meのチェックインを集計します。Coach.meは10月から再開したので、そこからの記録しかありません。</p>
<table>
<thead>
<tr>
<th><em>期間</em></th>
<th>Accomplish 1 Most Important Task</th>
<th>Mindfulness meditation</th>
<th>Exercise</th>
<th>Read</th>
</tr>
</thead>
<tbody>
<tr>
<td>2018-10-01 - 2018-10-07</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>2018-10-08 - 2018-10-14</td>
<td>0</td>
<td>1</td>
<td>2</td>
<td>2</td>
</tr>
<tr>
<td>2018-10-15 - 2018-10-21</td>
<td>6</td>
<td>3</td>
<td>1</td>
<td>7</td>
</tr>
<tr>
<td>2018-10-22 - 2018-10-28</td>
<td>3</td>
<td>1</td>
<td>2</td>
<td>6</td>
</tr>
<tr>
<td>2018-10-29 - 2018-11-04</td>
<td>4</td>
<td>2</td>
<td>1</td>
<td>6</td>
</tr>
<tr>
<td>2018-11-05 - 2018-11-11</td>
<td>4</td>
<td>4</td>
<td>2</td>
<td>5</td>
</tr>
<tr>
<td>2018-11-12 - 2018-11-18</td>
<td>3</td>
<td>0</td>
<td>0</td>
<td>3</td>
</tr>
<tr>
<td>2018-11-19 - 2018-11-25</td>
<td>0</td>
<td>2</td>
<td>0</td>
<td>6</td>
</tr>
<tr>
<td>2018-11-26 - 2018-12-02</td>
<td>2</td>
<td>4</td>
<td>0</td>
<td>7</td>
</tr>
<tr>
<td>2018-12-03 - 2018-12-09</td>
<td>0</td>
<td>3</td>
<td>2</td>
<td>6</td>
</tr>
<tr>
<td>2018-12-10 - 2018-12-16</td>
<td>0</td>
<td>7</td>
<td>0</td>
<td>7</td>
</tr>
<tr>
<td>2018-12-17 - 2018-12-23</td>
<td>4</td>
<td>4</td>
<td>0</td>
<td>6</td>
</tr>
<tr>
<td>2018-12-24 - 2018-12-30</td>
<td>2</td>
<td>3</td>
<td>2</td>
<td>7</td>
</tr>
<tr>
<td>2018-12-31 - 2019-01-06</td>
<td>2</td>
<td>4</td>
<td>1</td>
<td>7</td>
</tr>
</tbody>
</table>
<p>このデータも、ここから有意な何かを読み取ることは難しい…KPTでも述べますが、エクササイズをがんばりましょう、くらいで。</p>
<p>マインドフルネスは「寝たままヨガ」を就寝時に使っていますが、本来の使い方はこうではないはずなので、ちょっと考えます。</p>
<h3 id="睡眠">睡眠</h3>
<p>睡眠はRuntastic Sleep Betterで管理しているので、浅い・深い睡眠時間の平均を算出します。Runtastic Sleep Betterは12月から使用開始したので、そこからの記録しかありません。</p>
<table>
<thead>
<tr>
<th><em>期間</em></th>
<th>浅い睡眠(min)</th>
<th>浅い睡眠(割合)</th>
<th>深い睡眠(min)</th>
<th>深い睡眠(割合)</th>
</tr>
</thead>
<tbody>
<tr>
<td>2018-12-03 - 2018-12-09</td>
<td>71.25</td>
<td>23%</td>
<td>222.5</td>
<td>69%</td>
</tr>
<tr>
<td>2018-12-10 - 2018-12-16</td>
<td>130.4</td>
<td>40%</td>
<td>176</td>
<td>54%</td>
</tr>
<tr>
<td>2018-12-17 - 2018-12-23</td>
<td>101.8</td>
<td>31%</td>
<td>210</td>
<td>62%</td>
</tr>
<tr>
<td>2018-12-24 - 2018-12-30</td>
<td>97.8</td>
<td>29%</td>
<td>207.2</td>
<td>65%</td>
</tr>
<tr>
<td>2018-12-31 - 2019-01-06</td>
<td>73</td>
<td>38%</td>
<td>117.75</td>
<td>55%</td>
</tr>
</tbody>
</table>
<p>睡眠ログは、取得できていない日があったり、昼寝したためによる睡眠時間が極端に短かったりと、よいデータが取れていないと思っています。しかし、それにしても深い睡眠の時間と割合が少なすぎます。</p>
<p>一般的に<a href="https://www.sleepstyles.jp/about/archive/986.html">ノンレム睡眠(深い睡眠)は睡眠時間の80%</a>と言われているようです。自分は特にショートスリーパーというわけではないので、やはり8時間(最低でも6時間)睡眠はしたいところです。ということは、「8hour(480min) * 80% = 384min」が深い睡眠の基準となります。しかし、全っっっ然足りていません。</p>
<h3 id="2018年の興味があったワード">2018年の興味があったワード</h3>
<p>2018年のTwitterワードクラウドを取得して、何に興味があったかを分析する。</p>
<p><img src="/assets/img/2019-01-08-2018-retrospective/word-cloud.jpeg" alt="word cloud" /></p>
<p>Pocket、Qiita、SpeakerDeckが大きいのは置いておいて、意味がありそうな単語だと「目標」「Redmine」でしょうか。そんなにツイートしてたかなぁ…?</p>
<h2 id="2018年の感想keepproblem">2018年の感想(Keep、Problem)</h2>
<p>2018年の感想を、ミッション・ステートメントの項目ごとにKeepとProblemで整理してみます。</p>
<p>まず、Keep(よかったこと、続けていきたいこと)について。</p>
<ul>
<li>人生
<ul>
<li>(保留)</li>
</ul>
</li>
<li>仕事
<ul>
<li>お客様が抱えていた大きめの問題の1つを解決するシステムを構築しました。運用はこれからですが、大きな前進です。</li>
<li>余力を残しながらリーダー業務を実施することができました。つまり、担当案件以外にも少しずつですが手を出すことができています。</li>
</ul>
</li>
<li>社会
<ul>
<li>(保留)</li>
</ul>
</li>
<li>成長
<ul>
<li>プロダクトをいくつかリリースできました。あくまで自分用ですが、アウトプットしたかったので、よしです。</li>
<li>クローラーをいくつか構築・運用しました。以前から興味があった分野のデータ収集を開始しました。</li>
</ul>
</li>
<li>経済
<ul>
<li>自分(家庭ではなく)の支出を把握するべくZaimに記録していますが、当初より無駄な支出が減ってきています。目標範囲までもう少し。</li>
</ul>
</li>
<li>家庭
<ul>
<li>大きなけがや病気などなく、とりあえずではありますが、やり過ごせました。</li>
</ul>
</li>
</ul>
<p>次にProblem(問題だと感じていること)について。</p>
<ul>
<li>人生
<ul>
<li>(保留)</li>
</ul>
</li>
<li>仕事
<ul>
<li>お客様の社内政治的なゴタゴタをうまく整理できず、当初考えていたほどの成果が出せていません。</li>
<li>ブレブレになる方向性を誘導することにも半ば失敗しています。</li>
<li>現プロジェクトの職場が遠すぎて、通勤時間が地獄。会社からは今の仕事を広げるように言われているし、本当、どうしようか…</li>
</ul>
</li>
<li>社会
<ul>
<li>(保留)</li>
</ul>
</li>
<li>成長
<ul>
<li>何かいろいろ手を動かしたけど、それが意義のある成果になっていないので、徒労感が半端ないです。</li>
<li>クローラーを作っていたのは、データ収集・分析して役立てたいことがあったからなのですけど、役立つところまでは到達できませんでした。</li>
<li>ブログのアウトプットも少ないので、自分の中のもやもやを吐き出せていないです。</li>
</ul>
</li>
<li>経済
<ul>
<li>出費はなるべく抑え気味にしていますが、「仕事以外の収入を確保」までは到達できていません。まぁこれは時間がかかると思っているので、仕方なし。</li>
<li>仕事の残業がなくなった割に通勤時間がすごく長くなってしまったので、全体的に収入減です。結構な危機なので、来年は対応しないと。</li>
</ul>
</li>
<li>家庭
<ul>
<li>片付いてもいないし、論理的に整理することもできていません。「なんとかやり過ごした」という感じ。</li>
</ul>
</li>
</ul>
<p>というわけで、全体的に「なんとかやり過ごした」「意義のある成果がない」「結構ピンチ」な年になってしまいました。</p>
<h2 id="2019年のミッションステートメント">2019年のミッション・ステートメント</h2>
<p>さて、2018年を振り返ったので、次は2019年のことを考えましょう。まずは、ミッション・ステートメントを見直します。</p>
<ul>
<li>人生
<ul>
<li>家族・親族・仕事仲間と細く長く関係を持つ</li>
<li>多くの人と関係を持つことは得意ではないので、それは目指さない</li>
<li>ある程度の距離感は必要だと思う</li>
</ul>
</li>
<li>仕事
<ul>
<li>ハイスキルなメンバーを持つチームをリーダーとして運営する</li>
<li>顧客に「問題定義・解決力・エンジニアリング」を価値として提供する</li>
<li>仕事面で「自分は何者か」を示せるように、ポートフォリオを持つ</li>
</ul>
</li>
<li>社会
<ul>
<li>「問題定義からエンジニアリングまでできる」人として認識される</li>
<li>「音楽・小説・絵画を構築できる」人として認識される</li>
<li>社会的に大きな意義のあることをなしたいわけではない…今のところ</li>
</ul>
</li>
<li>成長
<ul>
<li>要求・設計・実装・運用を矛盾なく定義する</li>
<li>仕事だけでなく個人趣味も含めて「自分が何者か」を示せるように、ポートフォリオ(プロダクト、ブログ)を持つ</li>
<li>データ収集・分析の仕組みを運用して、ナレッジや財務に反映する</li>
</ul>
</li>
<li>経済
<ul>
<li>無駄な出費を抑え、自分や家族に投資する</li>
<li>仕事以外の収入を得る</li>
<li>将来的に、親世代や子供世代を世話できる財力を得る</li>
</ul>
</li>
<li>健康
<ul>
<li>天気による影響を受けない</li>
<li>肥満や生活習慣病を避ける</li>
<li>睡眠負債を抱えない</li>
</ul>
</li>
<li>家庭
<ul>
<li>定期的に旅行に行く</li>
<li>物事を論理的に整理して、生活をシンプルにする</li>
<li>自宅を整理して、過ごしやすい環境とする</li>
</ul>
</li>
</ul>
<p>2018年のミッション・ステートメントは「こうなりたい」と「こうしたい」が混ざっていたので、なるべく「こうなりたい」に変更しました。だいぶ大きなことを言っている感はありますが、あくまで「こうなりたい」なので、これでいいです。</p>
<p>全体的に「3年以内くらいにこうなりたい」をイメージして作成しました。これらは月次レビューで少しずつ見直します。ただ、自分の性格が大きく反映されているので、この内容が大きく変わることはないと思います。言い回しを変える、くらいで。</p>
<h2 id="2019年の目標try">2019年の目標(Try)</h2>
<p>では、このミッション・ステートメントのような自分になるため、今年は何をするかを考えましょう。あまり多くの目標を設定しても混乱してしまうので、ミッション・ステートメントの全体をカバーはできませんが、5個に留めます。</p>
<h3 id="ブログへのアウトプット">ブログへのアウトプット</h3>
<p>「自分が何者か」を示すため、また「~できる」人として認識されるため、発信する必要があります。ブログだとポートフォリオとしてちょっと弱いかなと思いますが、とにかくブログへのアウトプットを続けます。個人的にはブログですが、社内的には社内ポータルですかね。</p>
<p>目標は、2018年と同じ <strong>27本</strong> とします。平均して2週間ごとにブログにアウトプット、という感じで。</p>
<h3 id="個人プロダクトのリリース-1">個人プロダクトのリリース</h3>
<p>これも上記と同じ、ポートフォリオの一つです。あと、「データ収集・分析の仕組み」を運用したいですし、「欲しい機能があるけどちょうどよいサービスがない」という課題もあるので、個人プロダクトのリリースを続けます。</p>
<p>目標は、 <strong>バージョン1.0.0レベルのリリースを4本</strong> とします。1シーズンに1プロダクトを正式リリース、という感じで。</p>
<h3 id="要求から運用までの手順の確立">要求から運用までの手順の確立</h3>
<p>何かを思いついてから、問題を定義して、要求を整理して、設計して、実装して、運用するまでの手順を確立したいです。参考となる知識・手法はある程度見えていて、TOC、ICONIX、DDD、RDRAを組み合わせることで、自分で納得できる手順が見えると思っています。個人プロダクトの作業や可能であれば仕事にも取り込んで、検証していきます。</p>
<p>目標は、上記の <strong>作業プロセスを整理して何らかの形でアウトプットする</strong> 、とします。たぶん、GitHubのリリースとブログへのアウトプットになると思います。</p>
<h3 id="仮想投資の運用">仮想投資の運用</h3>
<p>「仕事以外の収入を得る」に繋がりますが、何らかの投資による資産運用を考えています。投資というと株式投資がパッと思い浮かびますが、競馬・競輪などのギャンブル、不動産運用など、他にもあるはずです。で、いきなりそこに手を出したくはないので、仮想投資を始めたいです。</p>
<p>目標は、 <strong>仮想投資で継続的に資産増加となる運用を行う</strong> 、とします。いや、この時点で相当難しいとは思いますが、とりあえずは運用を開始して、運用モデルを継続的に改善していくことはしたいです。</p>
<h3 id="エクササイズの継続">エクササイズの継続</h3>
<p>最低限のエクササイズですら、習慣化に失敗しています。しかし、現在の仕事状況や家事状況では、ジムに通うことはできないと考えています。なので、やはりエクササイズの習慣化を行うことしか今はできないと考えます。</p>
<p>目標は、 <strong>最低限のエクササイズを週に3回</strong> 行う、とします。</p>
<h2 id="おわりに">おわりに</h2>
<p>振り返ってかえってもやっとしましたが、このもやもやを解消するためにも、目標に向かって進んでいきましょう。また、実は個人的に週次レビュー・月次レビューをしていまして、レビュー方針も固まってきたので、レビューをアウトプットしたいと思います。</p>u6ku6k.apps@gmail.comあけましておめでとうございます。本年もよろしくお願いいたします。Raspberry Pi 3 Model B+を購入してからヘッドレスでsshできるようにするまでの5ステップと、ハマりポイント2018-12-20T00:00:00+09:002018-12-20T00:00:00+09:00/2018/12/20/setup-raspberry-pi-3-model-b-plus-headless<p>購入直後のRaspberry Pi Model B+にRaspbian Stretch Liteをインストールして、ヘッドレスでssh接続するまでの手順を説明します。</p>
<h2 id="背景">背景</h2>
<p>簡単なWebアプリケーションやちょっとしたジョブを稼働させたくて、Raspberry Pi 3 Model B+(以降、RaspberryPiと呼びます)を購入しました。以前に<a href="/2015/01/23/setup-raspberry-pi-by-displayless.html">Raspberry Pi Model B+をセットアップ</a>しましたが、OSがバージョンアップしたため当時の手順は使えませんでした。</p>
<p>この記事では、RaspberryPiをディスプレイやキーボードを接続せずに、つまりヘッドレスでRaspbian Stretch Liteをインストールして、PCなどのsshクライアントからRaspberryPiに接続するまでの手順を説明します。</p>
<p>この記事の手順では、とりあえずRaspberryPiを起動してssh接続するまでなので、このままではインターネットに公開などできませんし、いくつかの設定作業が残っています。これらは少しの手作業とAnsibleを使った一括設定を行う予定ですが、別の記事で説明します。</p>
<h2 id="前提">前提</h2>
<p>次の機材が必要となります。</p>
<ul>
<li>Raspberry Pi 3 Model B+ RS版</li>
<li>microUSB電源 5V/3.0A
<ul>
<li>RaspberryPiの仕様は2.5A</li>
<li>2.0Aでは起動しませんでした</li>
</ul>
</li>
<li>microSD 16GB
<ul>
<li>microSD->SD変換アダプターも必要</li>
<li>容量は、8GB以上が望ましいです</li>
</ul>
</li>
<li>MacBookPro
<ul>
<li>筆者はMacBookProを使用しましたが、microSDカードへの書き込みができるのであれば、Windows PCでも問題ありません</li>
</ul>
</li>
</ul>
<p>筆者はRaspberryPiとmicroUSB電源を秋葉原の秋月電子で購入しましたが、Amazonなどでも購入することができます。購入サイトによって価格が異なりますので注意が必要です。</p>
<p>上記の機材だけでも作業は可能ですが、トラブルに遭遇した時の原因調査に困るので、できれば次の機材も用意したほうがよいです。</p>
<ul>
<li>USB有線キーボード</li>
<li>HDMIケーブル、ディスプレイ
<ul>
<li>テレビにHDMI接続できる場合が多いです</li>
</ul>
</li>
</ul>
<p>使用機材にMacBookProをあげた通り、PC側の作業手順はMacBookProを想定して説明します。Windows PCでも同様の作業はできますので、適宜読み替えてください。</p>
<h2 id="手順">手順</h2>
<p>それでは、実際のセットアップ手順を説明します。</p>
<h3 id="raspbianをダウンロードする">Raspbianをダウンロードする</h3>
<p><a href="https://www.raspberrypi.org/downloads/raspbian/">Download Raspbian for Raspberry Pi</a>からRaspbian Stretch Liteをダウンロードします。</p>
<p>同ページにハッシュ値が記載されていますので、ダウンロードが終了したらダッシュ値が一致することを確認します。</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ openssl sha256 2018-11-13-raspbian-stretch-lite.zip
SHA256(2018-11-13-raspbian-stretch-lite.zip)= 47ef1b2501d0e5002675a50b6868074e693f78829822eef64f3878487953234d
</code></pre></div></div>
<h3 id="microsdにraspbianをインストールする">microSDにRaspbianをインストールする</h3>
<p>zipファイルを展開します。</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ unzip 2018-11-13-raspbian-stretch-lite.zip
Archive: 2018-11-13-raspbian-stretch-lite.zip
inflating: 2018-11-13-raspbian-stretch-lite.img
</code></pre></div></div>
<p>microSDのマウント・ポイントを確認します。</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ diskutil list
/dev/disk0 (internal, physical):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *121.3 GB disk0
1: EFI EFI 209.7 MB disk0s1
2: Apple_APFS Container disk1 120.5 GB disk0s2
/dev/disk1 (synthesized):
#: TYPE NAME SIZE IDENTIFIER
0: APFS Container Scheme - +120.5 GB disk1
Physical Store disk0s2
1: APFS Volume OSX 114.0 GB disk1s1
2: APFS Volume Preboot 22.4 MB disk1s2
3: APFS Volume Recovery 514.7 MB disk1s3
4: APFS Volume VM 2.1 GB disk1s4
/dev/disk2 (internal, physical):
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *15.9 GB disk2
1: Windows_FAT_32 boot 46.0 MB disk2s1
2: Linux 15.9 GB disk2s2
</code></pre></div></div>
<p>容量を見ると、<code class="highlighter-rouge">/dev/disk2</code>がmicroSDのマウント・ポイントだとわかります。</p>
<p>microSDをFAT32でフォーマットします。</p>
<blockquote>
<p><strong>NOTE:</strong> 当然ですが、microSDの内容は消去されます。また、デバイスの指定を間違えるとどえらいことになるので、要注意です。</p>
</blockquote>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ diskutil eraseDisk FAT32 RPI /dev/disk2
Started erase on disk2
Unmounting disk
Creating the partition map
Waiting for partitions to activate
Formatting disk2s2 as MS-DOS (FAT32) with name RPI
512 bytes per physical sector
/dev/rdisk2s2: 30673616 sectors in 1917101 FAT32 clusters (8192 bytes/cluster)
bps=512 spc=16 res=32 nft=2 mid=0xf8 spt=32 hds=255 hid=411648 drv=0x80 bsec=30703616 bspf=14978 rdcl=2 infs=1 bkbs=6
Mounting disk
Finished erase on disk2
</code></pre></div></div>
<p>microSDをアンマウントします。</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ diskutil unmountDisk /dev/disk2
Unmount of all volumes on disk2 was successful
</code></pre></div></div>
<p>microSDにRaspbianイメージを書き込みます。この作業は数分かかります。応答が返ってこなくてもしばらく放置しましょう。</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo dd if=2018-11-13-raspbian-stretch-lite.img of=/dev/disk2 bs=1m conv=sync
1780+0 records in
1780+0 records out
1866465280 bytes transferred in 702.735738 secs (2655999 bytes/sec)
</code></pre></div></div>
<h3 id="事前設定ssh有効化wi-fi設定を行う">事前設定(SSH有効化、Wi-Fi設定)を行う</h3>
<blockquote>
<p><strong>NOTE:</strong> これらの作業は、ディスプレイと有線キーボードを使用するのであれば、RaspberryPiの起動後に<code class="highlighter-rouge">raspi-setup</code>コマンドで行うことができます。この記事では、ヘッドレス作業のため、RaspberryPi起動前に行います。</p>
</blockquote>
<p>microSDのルート・フォルダに移動します。</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cd /Volumes/boot/
</code></pre></div></div>
<p>SSH機能を有効化するため、<code class="highlighter-rouge">ssh</code>ファイルを作成します。これは空ファイルでよいです。</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ touch ssh
</code></pre></div></div>
<p>Wi-Fiを設定するため、<code class="highlighter-rouge">wpa_supplicant.conf</code>ファイルを作成します。</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cat wpa_supplicant.conf
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="{SSID}"
psk="{暗号キー}"
}
</code></pre></div></div>
<p>暗号キーは、<a href="https://www.wireshark.org/tools/wpa-psk.html">Wireshark · WPA PSK Generator</a>などでSSIDとパスフレーズから生成できます。ルーターによっては、PSK設定項目があることがあるので、その場合はそこに設定されている値を使用します。</p>
<h3 id="raspberrypiを起動する">RaspberryPiを起動する</h3>
<p>microSDを取り出す準備をします。</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cd
$ diskutil eject /dev/disk2
Disk /dev/disk2 ejected
</code></pre></div></div>
<p>コマンドが成功したら、microSDをPCから実際に取り出します。</p>
<p>RaspberryPiにmicroSDを挿入して、電源に接続します。RaspberryPiに電源スイッチはなく、電源に接続すると自動的に起動します。</p>
<blockquote>
<p><strong>NOTE:</strong> HDMIケーブルやUSBキーボードなど他の機器を接続する場合、まず電源ケーブル以外の機器を接続して、最後に電源ケーブルを接続します。</p>
</blockquote>
<h3 id="pcからraspberrypiにssh接続する">PCからRaspberryPiにssh接続する</h3>
<p>電源に接続して数分で起動が終了します。設定に問題がなければ、RaspberryPiが無線LANに接続されているはずです。ルーターのDHCP機能などで割当IPアドレスリストを見ると、IPアドレスが増えていることがわかると思います。</p>
<p>PCからRaspberryPiにssh接続します。初期ユーザーは<code class="highlighter-rouge">pi</code>、パスワードは<code class="highlighter-rouge">raspberry</code>となっています。</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ ssh pi@raspberrypi.local
Linux raspberrypi 4.14.79-v7+ #1159 SMP Sun Nov 4 17:50:20 GMT 2018 armv7l
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Dec 19 05:55:53 2018 from 192.168.3.2
pi@raspberrypi:~ $
</code></pre></div></div>
<p>macOSやWindowsでもBonjourがインストールされていれば、<code class="highlighter-rouge">raspberrypi.local</code>でRaspberryPiを発見することができます。これで接続できない場合は、ルーターのDHCP機能などでIPアドレスを調べてください。</p>
<h2 id="ハマりポイント">ハマりポイント</h2>
<h3 id="microsdのフォーマットはfat32でなければならない">microSDのフォーマットはFAT32でなければならない</h3>
<p>例えばディスク・ユーティリティなどで<a href="https://www.raspberrypi.org/documentation/installation/sdxc_formatting.md">exFATでフォーマットしてしまうと、RaspberryPiは起動しない</a>ようです。その場合、FAT32でフォーマットしなおしてください。</p>
<h3 id="電源が不足していると起動しない">電源が不足していると起動しない</h3>
<p><a href="https://www.raspberrypi.org/products/raspberry-pi-3-model-b-plus/">Raspberry Pi 3 Model B+の仕様</a>によると、5V/2.5Aの電源が必要となります。試しに手元にあった5V/2.0A(スマホ充電用)の電源をRaspberryPiに接続してみましたが、起動しませんでした。<a href="http://chiken-stock.com/2018/05/16/raspiproblem/">同様の問題が報告</a>されています。</p>
<h3 id="microsdの相性が悪い">microSDの相性が悪い</h3>
<p><a href="https://qiita.com/sff1019/items/83fcbe72387fe12ddccc">microSDの相性が悪いと起動しない</a>ようです。筆者はこの問題に遭遇したことはありません。</p>
<h2 id="所感">所感</h2>
<p>とりあえず、RaspberryPiを使えるように最低限のセットアップを行いました。この手順が手作業なのは仕方ありませんが、次のOSセットアップやソフトウェア・セットアップは可能な限り自動化する予定です。</p>
<h2 id="参考リンク">参考リンク</h2>
<ul>
<li><a href="https://qiita.com/y_k/items/2e37583d4a5dcf81dc19">【ヘッドレス】Raspberry Pi 3 セットアップ for macOS - Qiita</a></li>
<li><a href="https://qiita.com/nori-dev-akg/items/a8361e728a66a8c3bdba">RaspberryPi Raspbian ヘッドレスインストール - Qiita</a></li>
<li><a href="/2015/01/23/setup-raspberry-pi-by-displayless.html">Raspberry Piセットアップメモ(ディスプレイレス) - u6k.Blog</a></li>
<li><a href="https://www.raspberrypi.org/documentation/installation/sdxc_formatting.md">Formatting an SDXC card for use with NOOBS - Raspberry Pi Documentation</a></li>
<li><a href="https://www.raspberrypi.org/products/raspberry-pi-3-model-b-plus/">Raspberry Pi 3 Model B+ - Raspberry Pi</a></li>
<li><a href="http://chiken-stock.com/2018/05/16/raspiproblem/">Raspberry pi 3 が起動しない場合の対処法 | 日々の知見ストック</a></li>
<li><a href="https://qiita.com/sff1019/items/83fcbe72387fe12ddccc">Raspberry Pi B+ で起動しない問題について - Qiita</a></li>
</ul>u6ku6k.apps@gmail.com購入直後のRaspberry Pi Model B+にRaspbian Stretch Liteをインストールして、ヘッドレスでssh接続するまでの手順を説明します。Windows 10のデータ通信を抑制する2018-06-25T00:00:00+09:002018-06-25T00:00:00+09:00/2018/06/25/suppress-network-access-of-windows-10<p>自分はMicrosoft Surface Pro 4を使っていますが、何も考えずにテザリングすると、あっという間にデータ通信量がGBを越えてしまいます。</p>
<p>ここでは、データ通信を抑制するためにやったことを整理します。</p>
<h2 id="wi-fiを従量課金接続に設定する">Wi-Fiを従量課金接続に設定する</h2>
<p>Wi-Fiを従量課金接続として設定することで、次の効果が得られるようです。</p>
<ul>
<li>Windows Update で、優先度の高い更新プログラムだけが更新される</li>
<li>Windows ストアからのアプリのダウンロードが一時停止される</li>
<li>スタート画面のタイルで表示されていた情報の更新が停止する</li>
<li>OneDriveで、オフラインファイルが自動で同期されない</li>
</ul>
<p>従量課金接続として設定することで、Windowsはデータ通信がある程度抑制されますが、他のアプリケーションまで抑制されるとは限りませんし、Windows Updateについても優先度が高いプログラムは自動更新されてしまうので、この設定だけでは不十分です。とはいえ、効果はあるので設定しておきます。</p>
<p>設定は、次の手順で行います。</p>
<ul>
<li>スタート → 設定 → ネットワークとインターネット → Wi-Fi → 接続済みのWi-Fiをクリックします。</li>
<li>「従量課金接続として設定する」をオンにします。</li>
</ul>
<p>設定からは、どのアプリケーションがどの程度の通信を行ったのかを参照する機能もあります。</p>
<ul>
<li>
<p>ネットワークとインターネット → データ使用状況</p>
</li>
<li>
<p>参考リンク</p>
<ul>
<li><a href="https://support.microsoft.com/ja-jp/help/4028458/windows-metered-connections-in-windows-10">Windows 10 での従量制課金接続</a></li>
<li><a href="https://ahiru8usagi.hatenablog.com/entry/Windows10_DataTraffic">Windows10でデータ通信量を確認する方法、データ節約設定方法、大容量格安sim比較! - あんりふ!</a></li>
</ul>
</li>
</ul>
<h2 id="windows-updateの自動更新を無効化する">Windows Updateの自動更新を無効化する</h2>
<p>「データ使用状況」を確認すると、「システム」とやらがとんでもない勢いで通信していることがわかると思います。詳細の調査はしていませんが、Windows Updateの通信が大きいように感じます。そこで、Windows Updateの自動更新を無効化してしまいます。</p>
<blockquote>
<p><strong>NOTE:</strong> 定期的にWindows Updateを手動更新すること。</p>
</blockquote>
<p>Windows 10 HomeとProで手順が異なるようですが、ここではProの場合の手順を説明します。</p>
<ul>
<li>グループポリシーエディターを起動します</li>
<li>コンピューターの構成 → 管理用テンプレート → Windowsコンポーネント → Windows Update</li>
<li>「自動更新を構成する」を無効に設定します</li>
</ul>
<p>こうすることで、Windows Updateを手動でチェックしないとダウンロードされないようになります。</p>
<ul>
<li>参考リンク
<ul>
<li><a href="https://www.japan-secure.com/entry/how_to_disable_the_automatic_update_by_windows_update_of_windows_10.html">「Windows 10」の「Windows Update」の自動更新を無効にする方法</a>
<a href="http://ascii.jp/elem/000/001/118/1118658/">ASCII.jp:Windows 10 ProでWindows Updateの動作を制御する (1/2)|Windows Info</a></li>
</ul>
</li>
</ul>
<h2 id="ファイル共有サービスを停止する">ファイル共有サービスを停止する</h2>
<p>筆者はDropboxを利用していますが、こやつは従量課金接続に設定しても容赦なくデータ通信を行います。そこで、これを停止します。</p>
<p>注意として、単純にDropboxを終了しても”Dropbox Update”というプロセスがしつこく通信していたため、これも終了した方が良いようです。</p>
<h2 id="アプリケーションの自動バージョンチェックを無効化する">アプリケーションの自動バージョンチェックを無効化する</h2>
<p>Docker、Visual Studio Code、SorceTreeなど、多くのアプリケーションが起動時に自動バージョンチェックを行います。これが大きな通信を行うことがあるので、無効化します。無効化の手順はアプリケーションごとに異なります。</p>
<p>そもそも、筆者はChocolateyでアプリケーションを管理しているため、自動バージョンチェックは不必要です。この機会に無効化しておこう…</p>
<h2 id="おわりに">おわりに</h2>
<p>これらの設定を行ったことで、「いきなり3GBの通信を行っていた」みたいな衝撃事件はなくなりました。今のところは。</p>u6ku6k.apps@gmail.com自分はMicrosoft Surface Pro 4を使っていますが、何も考えずにテザリングすると、あっという間にデータ通信量がGBを越えてしまいます。パスワード管理手順(デジタル + アナログ)2018-06-21T00:00:00+09:002018-06-21T00:00:00+09:00/2018/06/21/password-management<p>利用するWebサービスが増えるにつれて、管理するパスワードも増えていきます。しかし、人間の記憶力でこれらのパスワードを記憶することなどできません。</p>
<p>この記事では、筆者が実践しているパスワード管理の手順を説明します。</p>
<h2 id="基本的なパスワードポリシー">基本的なパスワード・ポリシー</h2>
<p>いうまでもありませんが、パスワードの使いまわしや単純なパスワードはNGです。パスワードごとに、可能な限り長く(100文字以上)、英数記号を含むランダムな文字列を生成します。ただし、やんごとなき事情により手入力する可能性があるパスワードについては、短いパスワードを生成することがあります。</p>
<p>また、可能な限り二要素認証を利用します。Google Authenticator、Authyなどのアプリケーションを利用しますが、サービスによってはSMSでトークンが送られてくることもあります。</p>
<h2 id="パスワード管理サービスlastpass">パスワード管理サービス(LastPass)</h2>
<p>上記のようなパスワードを人間の記憶力で覚えられるわけがありません。しかし、紙に書いて管理することも困難です。そこで、パスワード管理サービスを利用します。サービスは、次の要件を満たすものを利用します。</p>
<ul>
<li>PC、スマートフォンの両方から利用できる</li>
<li>強力なパスワード生成機能がある</li>
<li>パスワード以外もメモできる</li>
<li>サービス自体が二要素認証を利用できる</li>
</ul>
<p>筆者は<a href="https://www.lastpass.com/">LastPass</a>を利用しています。</p>
<p>サービスには、パスワードの他に復旧手順なども一緒にメモしておきます。特に二要素認証を利用している場合は復旧手順が複雑になるため、忘れないようにメモしておきます。</p>
<h2 id="マスターパスワードポリシーoff-the-grid">マスターパスワード・ポリシー(Off The Grid)</h2>
<p>パスワード管理サービスのマスターパスワードをパスワード管理サービスで管理することはさすがにできないので、これは何らかの手段で記憶する必要があります。<a href="https://www.ipa.go.jp/about/press/20140917.html">IPAは紙にメモすることも手段の一つとして推奨</a>しており、この手法は単純なパスワードを使用するよりよほど効果的ではありますが、紙を紛失してしまえばすぐにばれてしまいます。</p>
<p>そこで、アナログなパスワード生成手段を利用することにします。アナログなパスワード生成手段はいくつかありますが、ここでは<a href="https://www.grc.com/offthegrid.htm">Off The Grid</a>という手法を利用することにします。Off The Gridは要するに、暗号表を生成したうえで一定のルールでパスワードを生成する、という手法です。つまり、暗号表を見ただけではパスワードは分かりませんが、そのルールを知っていればパスワードを導き出すことができます。とはいえ、Off The Gridのルールそのままではわかる人にはわかってしまうので、筆者はさらに同くじルールを追加しています。</p>
<h2 id="おわりに">おわりに</h2>
<p>パスワード管理は面倒ですが重要なことなので、サービスを便利に使いつつリスクも低減しましょう。</p>
<h2 id="参考リンク">参考リンク</h2>
<ul>
<li>Off The Grid
<ul>
<li><a href="https://internet.watch.impress.co.jp/docs/news/473716.html">紙だけでサイトごとに異なるパスワードを生成する暗号、米研究者が考案 -INTERNET Watch Watch</a></li>
<li><a href="https://www.grc.com/offthegrid.htm">GRC | Off The Grid</a></li>
</ul>
</li>
<li>別の手法
<ul>
<li><a href="https://www.lifehacker.jp/2010/12/101222password_tabula_recta.html">パスワードを記録し、暗号化するための、超アナログな方法 | ライフハッカー[日本版]</a></li>
</ul>
</li>
<li>IPAの勧告
<ul>
<li><a href="https://www.ipa.go.jp/about/press/20140917.html">プレス発表 パスワードリスト攻撃による不正ログイン防止に向けた呼びかけ:IPA 独立行政法人 情報処理推進機構</a>
<ul>
<li>パスワードの使いまわしは、絶対ダメ</li>
</ul>
</li>
</ul>
</li>
<li>総務省の勧告
<ul>
<li><a href="https://www.houdoukyoku.jp/posts/28671">パスワード定期変更は逆に危険。その理由を総務省と内閣に聞いた | ホウドウキョク</a>
<ul>
<li>パスワードの定期変更は不要(パスワードが十分に長く複雑な場合)</li>
</ul>
</li>
</ul>
</li>
<li>六角暗号記帳
<ul>
<li><a href="https://www.amacoto.com/">デジタルエンディングノートにも。生成・変更もカンタン!パスワードノート。 - アマノコトワリ舎 自然と共に。パスワード管理ノート新発売!</a></li>
</ul>
</li>
</ul>u6ku6k.apps@gmail.com利用するWebサービスが増えるにつれて、管理するパスワードも増えていきます。しかし、人間の記憶力でこれらのパスワードを記憶することなどできません。work-reportの素案2018-06-12T00:00:00+09:002018-06-12T00:00:00+09:00/2018/06/12/planning-work-report<p>個人的にいわゆる週次レビューをしていましたが、これを簡略化するツールがほしいなと思ったので、ツールの素案を書いてみます。README駆動開発みたいなものです。</p>
<h2 id="背景">背景</h2>
<p>過去に週次レビュー(u6k.RedmineのWiki、u6k.BlogのThis Week I Learnedなど)をしていましたが、現在は滞っています。活動の集計やコメントする作業が非常に手間がかかるためです。</p>
<p>GitHubでコードを管理しているので、コードを書くという活動量についてはGitHub Contributionを見ればある程度はわかります。興味があることもとりあえずTwitterに書いているので、twilogを見ればわかります。しかし、Wikiや多くのタスク、企画案などコードで表現できないものはu6k.Redmineで管理しており、こちらの活動は集計することが困難です。また、GitHub ContributionやTwitterも、ブログに書くとなると面倒です。</p>
<p>なので、上記のことを集計して、「あとはコメントを書くだけ」という状態にしたブログ原稿を生成するツールがほしいです。</p>
<h2 id="要件">要件</h2>
<ul>
<li>各種の活動をレポートとして生成してほしい
<ul>
<li>活動を収集する
<ul>
<li>GitHubのコミット、Issue更新など</li>
<li>Redmineのチケット更新、Wiki更新など</li>
<li>Pocketの増加、消化</li>
<li>Twitterのツイート</li>
</ul>
</li>
</ul>
</li>
<li>活動レポートを見たい
<ul>
<li>活動をレポートとして表示する
<ul>
<li>数量</li>
<li>ログ</li>
<li>カレンダー</li>
</ul>
</li>
<li>活動をブログ記事として生成する
<ul>
<li>Jekyllページ形式</li>
</ul>
</li>
</ul>
</li>
</ul>
<h2 id="サンプル">サンプル</h2>
<p>こんな感じの記事を生成したいです。</p>
<h3 id="weekly-report-from-2018-06-04-to-2018-06-10">Weekly Report (from 2018-06-04 to 2018-06-10)</h3>
<p>2018-06-04から2018-06-10の活動のレポートです。</p>
<h4 id="リリース">リリース</h4>
<ul>
<li>公開した記事
<ul>
<li>コメント</li>
</ul>
</li>
<li>公開したプロダクトのバージョン
<ul>
<li>コメント</li>
</ul>
</li>
</ul>
<h4 id="主なツイートとコメント">主なツイートとコメント</h4>
<ul>
<li>ツイート
<ul>
<li>コメント</li>
</ul>
</li>
</ul>
<h4 id="github">GitHub</h4>
<ul>
<li>12 コミットしました。</li>
<li>Issueを 23 回更新しました。</li>
</ul>
<p><strong>GitHub Contribution画像を表示</strong></p>
<h4 id="redmine">Redmine</h4>
<ul>
<li>チケットを xx 回更新しました。
<ul>
<li>新規チケットを x 個作成しました。</li>
<li>チケットを x 個終了しました。</li>
</ul>
</li>
<li>Wikiを xx 回更新しました。</li>
</ul>
<p><strong>Redmine活動グラフを表示</strong></p>
<h4 id="twitter">Twitter</h4>
<ul>
<li>xx 回ツイートしました。
<ul>
<li>x 回リツイートしました。</li>
</ul>
</li>
</ul>
<p><strong>Twitter活動グラフを表示</strong></p>
<h4 id="pocket">Pocket</h4>
<ul>
<li>xxxxx ページが未読です。</li>
<li>xx ページ追加しました。</li>
<li>xx ページアーカイブしました。</li>
</ul>
<p><strong>Pocket活動グラフを表示</strong></p>
<h4 id="author">Author</h4>
<p>authorを表示</p>
<h2 id="リポジトリ">リポジトリ</h2>
<ul>
<li><a href="https://github.com/u6k/work-report">u6k/work-report: 個人的な活動ログをレポートする - GitHub</a></li>
<li><a href="https://redmine.u6k.me/projects/work-report">概要 - work-report - u6k.Redmine</a></li>
</ul>u6ku6k.apps@gmail.com個人的にいわゆる週次レビューをしていましたが、これを簡略化するツールがほしいなと思ったので、ツールの素案を書いてみます。README駆動開発みたいなものです。個人開発基盤の構成、およびデプロイ・フロー2018-06-09T00:00:00+09:002018-06-09T00:00:00+09:00/2018/06/09/my-development-environment-and-deploy-workflow<p>個人的にいくつかのアプリケーションを開発していまして、おひとりさま開発なので環境構築からリリース、運用まで全て自分で行っています。これらの作業の手間やミスを減らすため、可能な限り自動化しています。</p>
<p>この記事では、開発基盤として利用しているサービス、およびデプロイ・フローの概要を説明します。</p>
<h2 id="前提">前提</h2>
<p>インターネット上のサービスを利用しています。が、オンプレミスでも類似の基盤を構築することは可能です。具体的には、GitLabでいけるはず。</p>
<p>開発するアプリケーションは、Dockerを前提としています。逆に言えば、Dockerで動作すれば言語処理系は問いません。</p>
<p>この記事では、開発基盤を「開発してからリリースするまでの作業を効率化するために利用しているサービス群」のことを言います。</p>
<h2 id="開発基盤の構造">開発基盤の構造</h2>
<p>次のサービス群と流れで、開発からリリースまでの作業を行っています。</p>
<p><img src="/uml/2b2995e13b71ef2839abfa915ff790f4.svg" alt="PlantUML SVG diagram" class="plantuml" /></p>
<h2 id="サービスの役割">サービスの役割</h2>
<p>サービスごとの役割を説明します。</p>
<h3 id="開発pc">開発PC</h3>
<p>開発PCには基本的に、エディター、Docker、gitがインストールされており、開発作業はDockerで行っています。開発するアプリケーションによって言語処理系が混在するのでOSを汚したくないのと、なるべく本番Dockerコンテナ構造に近い構成で開発をしたいためです。</p>
<p>開発PCが手元にない場合、本番サーバーでvimとgitで開発を行うことがあります。というか、最近は仕事の都合でノートPCを持ち歩けないため、スマホから本番サーバーにsshして作業することが多いです。</p>
<p>開発PCの場合、VisualStudioCode + SourceTreeを使うことが多いです。本番サーバーの場合、vim + git-flow + tig + tmuxで作業を行っています。</p>
<ul>
<li><a href="https://docs.docker.com/">Docker Documentation | Docker Documentation</a></li>
<li><a href="https://www.microsoft.com/ja-jp/dev/products/code-vs.aspx">Visual Studio Code - Visual Studio</a></li>
<li><a href="https://git-scm.com/">Git</a></li>
<li><a href="https://www.vim.org/">welcome home : vim online</a></li>
<li><a href="https://www.sourcetreeapp.com/">Sourcetree | Free Git GUI for Mac and Windows</a></li>
<li><a href="https://github.com/nvie/gitflow">nvie/gitflow: Git extensions to provide high-level repository operations for Vincent Driessen’s branching model.</a></li>
<li><a href="https://github.com/jonas/tig">jonas/tig: Text-mode interface for git</a></li>
<li><a href="https://github.com/tmux/tmux">tmux/tmux: tmux source code</a></li>
</ul>
<h3 id="github">GitHub</h3>
<p>言わずと知れている、ソフトウェア開発プロジェクトのホスティング・サービスです。主にソースコードの管理をしています。課題やWikiなどはu6k.Redmineで管理しているため、GitHubでは管理していません。</p>
<p>GitHubにプッシュすると、Travis CIに通知され、ビルドが開始されます。</p>
<ul>
<li><a href="https://github.com/">The world’s leading software development platform · GitHub</a></li>
</ul>
<h3 id="travis-ci">Travis CI</h3>
<p>CIサービスです。Travis CIでは、コンパイル、テスト、ドキュメント生成、プロジェクト静的解析、実行可能イメージを生成、などのビルド作業を行います。特にGitタグがプッシュされたとき(つまりリリースしたとき)は、実行可能イメージをDocker Hubにアップロードして、u6k.Rundeckに通知してデプロイを行います(一部のサービスのみ)。</p>
<p>ビルド生成物は、Docker Hubの他に、GitHub Pages、u6k.Minioなどにもアップロードします。</p>
<p>ビルド作業の結果は、Slackで通知します。</p>
<p>GitHubのプルリクエストは、原則としてTravis CIのビルドがパスしないとマージできないように設定しています。これにより、焦っていてうっかりビルドを壊してしまうコミットが混入することを防いでいます。</p>
<ul>
<li><a href="https://travis-ci.org/">Travis CI - Test and Deploy Your Code with Confidence</a></li>
</ul>
<h3 id="slack">Slack</h3>
<p>開発者向けのチャット・サービスです。個人開発では、自分だけのSlackワークスペースに<code class="highlighter-rouge">#build</code>チャンネルを作成して、Travis CIのビルド結果が通知されるようにしています。Travis CIのコンソールを眺めていなくても、通知を待っていれば良い状況にしています。</p>
<p>Slackには他にも、サービス監視によるアラート、バッチ処理失敗などが通知されるようになっています。将来的には、チャット・ボットを飼って、全てチャットから指示できるようにしたいと思っていますが、まだそこまではしていません。</p>
<ul>
<li><a href="https://slack.com/">よりシームレスなチームワークを実現する、ビジネスコラボレーションハブ | Slack</a></li>
</ul>
<h3 id="docker-hub">Docker Hub</h3>
<p>Dockerイメージのホスティング・サービスです。Gitタグがプッシュされた場合、Travis CIでビルドしたDockerイメージをDocker Hubにプッシュします。個人開発は基本的にオープンソースとしているので、Dockerイメージの管理もDocker Hubのようなオープンな場でも問題ないと考えています。</p>
<p>以前は、Docker HubによるAutomated Buildを利用していましたが、どうも思ったタイミングでビルドしてくれないので、Travis CIでビルドしています。</p>
<p>仕事やプライベートな個人開発の場合は、GitLabのDockerリポジトリを利用しています。</p>
<ul>
<li><a href="https://hub.docker.com/">Docker Hub</a></li>
<li><a href="https://docs.gitlab.com/ce/user/project/container_registry.html">GitLab Container Registry | GitLab</a></li>
</ul>
<h3 id="rundeck">Rundeck</h3>
<p>ジョブ・スケジューラーです。バッチ処理を管理、実行していますが、一部のDockerコンテナの制御もジョブとして実行できるようにしています。</p>
<p>Travis CIがDocker Hubにプッシュしたあと、RundeckのAPIを呼び出してジョブを起動します。ジョブは<code class="highlighter-rouge">docker-compose pull</code>、<code class="highlighter-rouge">down</code>、<code class="highlighter-rouge">up -d</code>を行います。これにより、Gitタグをプッシュすると、最終的に最新バージョンのサービスが起動します。同時に、RundeckがSlackにジョブ実行結果を通知します。</p>
<ul>
<li><a href="https://www.rundeck.com/">Rundeck Pro | Modern IT Operations Management Platform</a></li>
</ul>
<h3 id="本番サーバー">本番サーバー</h3>
<p>ほとんどのサービスはDockerコンテナで動作(TODO: ソフトウェア設計にリンクを張る)しています。よって、本番サーバーにはDockerと最小限のソフトウェアのみがインストールされています。このため、以前は<a href="/2017/04/28/my-server-specification-for-hardware.html">CoreOSで運用していた時期</a>もありました。現在は、もう少しソフトウェアをインストールしたくて、Debianで運用しています。</p>
<p>ストレージ・サイズの関係で、基本的には自宅マシンをサーバーとして運用していますが、出張や旅行などで長期間自宅を離れる場合は、DigitalOceanなどのIaaSに一時的に移行して、帰宅後に切り戻します。この場合でも、DNS設定の変更とデータの移行が少々面倒なだけで、OSとDockerコンテナのセットアップはAnsibleで簡単に実行できるようにしています。</p>
<ul>
<li><a href="https://www.mydns.jp/">自宅サーバーやVPSに使える無料のダイナミックDNS (Dynamic DNS) | MyDNS.JP</a></li>
<li><a href="https://www.digitalocean.com/">DigitalOcean: Cloud Computing, Simplicity at Scale</a></li>
<li><a href="https://coreos.com/">Open source, containers, and Kubernetes | CoreOS</a></li>
<li><a href="https://www.debian.org/">Debian – ユニバーサルオペレーティングシステム</a></li>
</ul>
<h2 id="おわりに">おわりに</h2>
<p>いろいろなサービスが関わりますが、Gitプッシュしたあとはほぼ自動で様々なことができるようになっており、便利だしミスもほぼありません。また、Dockerを基盤としているため、どの言語処理系でも考え方が変わらないことも便利です。</p>
<p>この記事で説明した構成は個人開発の場合ですが、仕事の場合でもオンプレミスになるだけで、構成の考え方は変わりありません。可能な限り自動化して、便利かつミスのないリリースをしましょう。</p>u6ku6k.apps@gmail.com個人的にいくつかのアプリケーションを開発していまして、おひとりさま開発なので環境構築からリリース、運用まで全て自分で行っています。これらの作業の手間やミスを減らすため、可能な限り自動化しています。自宅サーバー設計(ハードウェア編)2018-06-04T00:00:00+09:002018-06-04T00:00:00+09:00/2018/06/04/my-service-specification-hardware-part<p>自分用のRedmineやminioを運用するためにDockerホストを運用していますが、<a href="https://blog.u6k.me/2017/04/28/my-server-specification-for-hardware.html">前回</a>から約1年が経過して、少し構成が変わったので整理します。</p>
<p>この記事では、自分用のサービス群を運用するために利用しているサービスやハードウェアの構成を説明します。</p>
<h2 id="前提">前提</h2>
<ul>
<li>昔使っていたMacBookがあるので、これをDockerホストにしたい。</li>
<li>HDDが数台あるけど、1個のボリュームにして扱いやすくしたい。</li>
<li>ドメイン名でアクセスできるようにしたい。</li>
<li>バックアップは、自宅とは別サイトにしたい。</li>
<li>ダウンタイムをなくしたいサービスは外部サービスで動作させる。</li>
</ul>
<h2 id="構成図">構成図</h2>
<p>現在は以下のような構成になっています。</p>
<p><img src="/uml/ff261bc14980fe296b507c8afdb5fb31.svg" alt="PlantUML SVG diagram" class="plantuml" /></p>
<h2 id="構成の説明">構成の説明</h2>
<p>前回からの変更点とあわせて、構成を説明します。</p>
<h3 id="docker-on-debian">Docker on Debian</h3>
<p>サービスはほぼDockerコンテナとして動作させています。当初はDocker for macで動作させていましたが、qcow2ファイルが肥大化する、ネットワークが不安定、などの問題があるため、Bootcampで確保したパーティションにDebianをセットアップして運用しています。</p>
<p>前回はCoreOS on VirtualHost on MacBookで、一時的にDebian on DeigitalOceanに移行して、やっぱりDebian on MacBookに戻りました。サーバー上でいろいろ作業したい場合、CoreOSはやはり不便ですね。そういうOSなのでしかたありませんが。</p>
<blockquote>
<p><strong>TODO:</strong> 実は、この記事を執筆している現時点ではまだDebian on VirtualBox on MacBookで、LVM RAID logical volumeの実験が完了したら、上記のように移行する予定です。</p>
</blockquote>
<p>運用しているDockerサービス群は、別記事で説明します。</p>
<h3 id="運用作業のためにアクセスする場合はsshまたはvnc">運用作業のためにアクセスする場合は、sshまたはVNC</h3>
<p>普段の運用作業はsshで接続します。macOSの調子がおかしい、macOSをアップデートする、などGUIで作業を行う場合はVNCでアクセスします。</p>
<p>この方式は、前回から変わりありません。</p>
<h3 id="u6kmeでアクセスできるようにムームードメインで契約">“u6k.me”でアクセスできるように、ムームードメインで契約</h3>
<p>ムームードメインで年間契約して、MyDNSでドメイン名とIPアドレスを管理しています。IPアドレスが変わっても良いように、Rundeckコンテナで定期的にIPアドレスを通知しています。</p>
<p>前回までは、ジョブをJenkinsで実行していましたが(いわゆる闇のJenkinsおじさん)、現在はRundeckでジョブを実行しています。ただ、Rundeckへの移行は、正直、あまり意味がなかったかなと思っています。</p>
<h3 id="ブログはgithub-pagesで独自ドメイン--https">ブログはGitHub Pagesで独自ドメイン + HTTPS</h3>
<p>ブログはダウンタイムをゼロにしたく、DockerではなくGitHub Pagesに移行しました。これにより、Dockerホストが不安定になったときやmacOSをアップデートしたいときに、ブログも巻き込まれてダウンしていましたが、現在ではそれはなくなりました。</p>
<blockquote>
<p><strong>TODO:</strong> ブログのGitHub Pagesへの移行は、この記事執筆時点では検証中です。</p>
</blockquote>
<h3 id="hddはlvmで統合">HDDはLVMで統合</h3>
<p>HDDは、LVM RAID logical volumeで統合しています。この構成の場合、LVMの機能でミラーリングするので、HDDが1個故障する程度なら復旧が可能のはずです。</p>
<p>前回はLVMで統合していただけであり、対障害性の観点からは脆弱でした。そうは言ってもDigitalOcean Spacesにバックアップしているので、絶対に失いたくないデータについてはあまり問題はありませんが。</p>
<blockquote>
<p><strong>TODO:</strong> この記事を執筆している現在は、まだLVM on macOSからデータを移行している途中です。ある程度の検証ができたら、別記事でセットアップ、復旧手順などを整理したいと思います。</p>
</blockquote>
<h3 id="バックアップはdigitalocean-spacesとクラウドストレージ">バックアップはDigitalOcean Spacesとクラウドストレージ</h3>
<p>Redmineのように絶対に失いたくないデータや、失うと再収集に時間がかかりすぎるクローリング・データなどは、minioサービスの他にDigitalOcean Spacesに保存しています。他のデータはクラウドストレージに保存しようとしていますが、まだ全ては保存できておらず、少しずつ進めています。</p>
<h3 id="macbookpro">MacBookPro</h3>
<p>排熱の観点から、風通しの良い場所において、まな板立てに立て掛けています。温度を監視していますが、変な高温になることは今のところありません。</p>
<p>この運用方法は、前回から変わりありません。</p>
<h2 id="おわりに">おわりに</h2>
<p>前回も書きましたが、できればAWSなりDigitalOceanなりに全て移行してしまいたいのですが、どーにもストレージの料金や性能を考えると、自宅ハードウエアがあるならそれで運用したい、という結論になっています。データのサイズがなぁ…</p>
<p>ちなみに、旅行などで長期間自宅を離れる場合に、一時的にDigitalOceanに切り替える運用は、前回から変わらずです。</p>u6ku6k.apps@gmail.com自分用のRedmineやminioを運用するためにDockerホストを運用していますが、前回から約1年が経過して、少し構成が変わったので整理します。「アンテナを張る」とは?2018-05-19T00:00:00+09:002018-05-19T00:00:00+09:00/2018/05/19/what-is-keep-myself-open-to-news<p>世の中の動きは早く、次々と新しい技術・概念・流行が現れて、広がったり消えたりしていきます。そういった流れに取り残されないために、また次の流れを読むために、「アンテナを張る」ことが大事だと言われます。エンジニアであれば体感的に理解できるでしょう。</p>
<p>では、「アンテナを張る」とはどういうことで、何をするべきで、具体的にはどのような環境・運用になるのでしょうか。</p>
<h2 id="結論">結論</h2>
<ul>
<li>情報を収集し、整理し、蓄積する</li>
<li><strong>蓄積することが大事</strong></li>
<li>自分が使いやすいように/検索しやすいように蓄積する</li>
</ul>
<h2 id="アンテナを張るとはどういうことか">「アンテナを張る」とはどういうことか?</h2>
<p>まず、「アンテナを張る」とはどういうことか調べてみます。</p>
<ul>
<li><a href="https://www.weblio.jp/content/%E3%82%A2%E3%83%B3%E3%83%86%E3%83%8A%E3%82%92%E5%BC%B5%E3%82%8B">アンテナを張るとは - 日本語表現辞典 Weblio辞書</a></li>
</ul>
<p>このページによると、「情報収集のため、特定の話題に対して注意深くすること」を表します。もう少し分解してみます。</p>
<ul>
<li>情報収集…情報を収集することが目的です。が、ただ目に入れても活用できません。蓄積すること、つまり何らかのアウトプットをすることが重要です。</li>
<li>特定の話題…世の中の全ての話題に反応することはできません。ある特定のテーマ、キーワードを決めて情報収集を行います。</li>
<li>注意深く…情報には価値の軽重があり、消費期限があります。有益な情報、価値が高い情報、時事性が高い情報を逃さないように、注意します。</li>
</ul>
<p>上記の事ができれば、「アンテナを張っている」と言えるでしょう。</p>
<h2 id="具体的にどうすればよいか">具体的にどうすればよいか</h2>
<p>アンテナを張るには具体的にどうすればよいでしょうか。まず、「特定の話題」「注意深く」「情報収集」の構造を示します。</p>
<p><img src="/uml/6db2f61e9eb18d2600376d477af63ca9.svg" alt="PlantUML SVG diagram" class="plantuml" /></p>
<p>それぞれの構造を説明します。</p>
<h3 id="特定の話題厳選した情報源">特定の話題…厳選した情報源</h3>
<p>前述した通り、全ての話題に反応することはできません。ですので、情報源は厳選します。</p>
<p>ブログをチェックしましょう。知りたい分野ごとにキュレーターがいるはずで、意欲的な人は情報を整理するために、個人ブログや企業サイトに投稿しています。もちろん、ブラウザでブログを開いていちいちチェックなどしていられないので、FeedlyなどのRSSサービスを利用しましょう。</p>
<p>OSSの製品や、具体的なソースコードをチェックしたい場合は、GitHubをチェックしましょう。分野ごとにスターが多いリポジトリがあるので、それをウォッチすると良いです。</p>
<p>TwitterやFacebookなどSNSからの情報収集は避けた方が良いです。最新情報をキャッチしたい場合には確かに有効ですが、整理されていない雑多な情報が多すぎて整理しきれませんし、有効な情報であればキュレーターがすぐに整理してくれます。</p>
<p>Google News、スマートニュース、グノシー、Ceronなどニュースサービスは、参考程度にします。ある程度のジャンル分けはされていますが、「インターネット全体からピックアップした情報」であって「自分が気になる分野の濃い情報」ではないからです。それでも、自分の視界範囲外からピックアップしてくれるので、全く無視するべきでもありません。</p>
<h3 id="注意深くいったん全てに目を通しあとで熟読">注意深く…いったん全てに目を通し、あとで熟読</h3>
<p>情報源を厳選しても流れてくる情報は膨大なので、全て読むことは困難です。読み方を工夫しましょう。</p>
<p>流れてくる情報のタイトルをざっと流し読み、気になる記事はブックマークするか、Pocketのようないわゆる「あとで読む」サービスにストックしておきましょう。良質の記事は、タイトルを読むだけで何のことを言っているのかが分かるものです。</p>
<p>そして、スキマ時間を作ってストックした記事を読み進めます。この時も、記事を全て読むのではなくざっと全文を流し読みしましょう。それでも深く読み進めたい記事のみ、まとまった時間を作って読むと良いです。</p>
<h3 id="情報収集自分用のwikipediaを構築">情報収集…自分用のWikipediaを構築</h3>
<p>厳選した情報源から気になる情報を入手したら、それを整理して蓄積しましょう。整理方法はいろいろありますが、まずは「自分用のWikipedia」を目指すと良いです。つまり、「気になった用語」ごとにページを作り、記事へのURLだったりチェックリストだったり手法だったり手順書だったりをメモします。</p>
<p>最初のうちはざっくりしたメモで良いです。重要度の高い情報は何度も目にするので、その内に「使えるように整理しよう」という気になり、有用な情報を追記するようになります。</p>
<p>ツールはアナログでもデジタルでも良いですが、「容易に書けること」「容易に検索できる」ことが非常に重要です。書きづらい場所にはそもそも蓄積されませんし、いろいろ蓄積しても探しづらかったらそのうち使わなくなってしまいます。スマホでもPCでも見れるように、Evernoteのようなメモサービスに蓄積して、全文検索できるようにしましょう。</p>
<h2 id="おわりに">おわりに</h2>
<p>アンテナを張ることについて、「アンテナを張るとはどう言うことか?(要求)」「どうすれば良いのか?(要件)」を文書化してみました。人と会話していると、ここら辺が意外と整理されておらず、漫然と情報収集っぽいことをしている人が見られます。もう少し的を絞って効率的に情報収集すれば良いのに、と思ったので、この記事を書いてみました。</p>
<p>どうすれば良いのかと言うことの概要までを書いたので、次の機会には具体的な手法、筆者がチェックしているブログやサービス、筆者の蓄積や活用の手法などを説明したいと思います。</p>u6ku6k.apps@gmail.com世の中の動きは早く、次々と新しい技術・概念・流行が現れて、広がったり消えたりしていきます。そういった流れに取り残されないために、また次の流れを読むために、「アンテナを張る」ことが大事だと言われます。エンジニアであれば体感的に理解できるでしょう。