なみひらブログ
学んだことを日々記録する。~ since 2012/06/24 ~
2019-12-29T09:32:44+09:00
Namihira
Hatena::Blog
hatenablog://blog/12704591929886186426
【発信文書】2019年 活動報告
hatenablog://entry/26006613490292135
2019-12-29T09:32:44+09:00
2019-12-29T09:50:16+09:00 背景 2019年も終わるので、今年のキーワードを雑記します〆(´Д`) キーワード(順不同) IV&V 比率は下がったけどもろもろやった。今年で終わり。 FMEA FMEAの故障をどう発想するかどうレビューするかに取り組む 以下が成果例 本会議1日目 | ソフトウェア品質シンポジウム 2019 海外出張 FMEA成果発表で@アメリカのモンタナ https://aeroconf.org/ Visualization Method to Stimulate Ideas Leading to Failure Mode in Software FMEA - IEEE Conference Public…
<h3>背景</h3>
<p>2019年も終わるので、今年のキーワードを雑記します〆(´Д`)</p>
<h3>キーワード(順不同)</h3>
<h4>IV&V</h4>
<ul>
<li>比率は下がったけどもろもろやった。今年で終わり。</li>
</ul>
<h4>FMEA</h4>
<ul>
<li>FMEAの故障をどう発想するかどうレビューするかに取り組む</li>
<li>以下が成果例
<ul>
<li><a href="https://www.juse.jp/sqip/symposium/detail/day1/#a1-1">本会議1日目 | ソフトウェア品質シンポジウム 2019</a></li>
</ul>
</li>
</ul>
<h4>海外出張</h4>
<ul>
<li>FMEA成果発表で@<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A5%E1%A5%EA">アメリ</a>カのモンタナ
<ul>
<li><a href="https://aeroconf.org/">https://aeroconf.org/</a></li>
<li><a href="https://ieeexplore.ieee.org/document/8741760">Visualization Method to Stimulate Ideas Leading to Failure Mode in Software FMEA - IEEE Conference Publication</a></li>
</ul>
</li>
</ul>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/PHP">PHP</a>/Laravel/React</h4>
<ul>
<li>業務で<a class="keyword" href="http://d.hatena.ne.jp/keyword/PHP">PHP</a>を初めて使ったので、忘れないように自分の個人開発にも利用した</li>
<li>業務では素<a class="keyword" href="http://d.hatena.ne.jp/keyword/PHP">PHP</a>とVue。個人開発の↓ではLaravel+React
<ul>
<li><a href="https://liveshare.namimono.com/">Live Share</a></li>
</ul>
</li>
</ul>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/%BC%AB%C1%B3%B8%C0%B8%EC%BD%E8%CD%FD">自然言語処理</a></h4>
<ul>
<li>word2vecからAttentionもろもろ触り始めた。</li>
<li>来年の主戦場</li>
</ul>
<h4>Kaggle</h4>
<ul>
<li>自己研鑽用に参加し始めた。</li>
</ul>
<h4>マ<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%E9%A5%BD%A5%F3">ラソン</a></h4>
<ul>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A4%C4%A4%AF%A4%D0%A5%DE%A5%E9%A5%BD%A5%F3">つくばマラソン</a>(フル)
<ul>
<li>雨で足裏がふやけてマメがすごいできた(;´Д`)</li>
</ul>
</li>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/%B3%EB%BE%FE">葛飾</a>マ<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%E9%A5%BD%A5%F3">ラソン</a>(ハーフ)
<ul>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A5%E1%A5%EA">アメリ</a>カ出張帰りにそのまま走った(6時羽田着、9時スタート)</li>
</ul>
</li>
</ul>
<h4>本</h4>
<ul>
<li>今年のなみひら賞は↓です</li>
<li>シンプルでわかりやすい。
<div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/exec/obidos/ASIN/4844365177/namihira-22/"><img src="https://images-fe.ssl-images-amazon.com/images/I/41k6HyeHPPL._SL160_.jpg" class="hatena-asin-detail-image" alt="なるほどデザイン〈目で見て楽しむ新しいデザインの本。〉" title="なるほどデザイン〈目で見て楽しむ新しいデザインの本。〉"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/exec/obidos/ASIN/4844365177/namihira-22/">なるほどデザイン〈目で見て楽しむ新しいデザインの本。〉</a></p><ul><li><span class="hatena-asin-detail-label">作者:</span><a href="http://d.hatena.ne.jp/keyword/%C5%FB%B0%E6%20%C8%FE%B4%F5" class="keyword">筒井 美希</a></li><li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A8%A5%E0%A5%C7%A5%A3%A5%A8%A5%CC%A5%B3%A1%BC%A5%DD%A5%EC%A1%BC%A5%B7%A5%E7%A5%F3">エムディエヌコーポレーション</a></li><li><span class="hatena-asin-detail-label">発売日:</span> 2015/07/31</li><li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li></ul></div><div class="hatena-asin-detail-foot"></div></div></li>
</ul>
<h4>映画</h4>
<ul>
<li>今年のなみひら賞は↓です。</li>
<li>映像、音楽、ストーリーをもれなく楽しめた。聖地巡りもした。</li>
</ul>
<iframe allowfullscreen="" src="//www.youtube.com/embed/rzKcrJ77wBY" width="560" height="315" frameborder="0"></iframe>
<h4>雑貨</h4>
<ul>
<li>今年のなみひら賞は↓です</li>
<li>たいへんお世話になりました。
<div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/exec/obidos/ASIN/B009GPJMOU/namihira-22/"><img src="https://images-fe.ssl-images-amazon.com/images/I/31p4YY4KhhL._SL160_.jpg" class="hatena-asin-detail-image" alt="HARIO (ハリオ) V60 ドリップ スケール VST-2000B" title="HARIO (ハリオ) V60 ドリップ スケール VST-2000B"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/exec/obidos/ASIN/B009GPJMOU/namihira-22/">HARIO (ハリオ) V60 ドリップ スケール VST-2000B</a></p><ul><li><span class="hatena-asin-detail-label">メディア:</span> ホーム&キッチン</li></ul></div><div class="hatena-asin-detail-foot"></div></div></li>
</ul>
<h4>コーヒー</h4>
<ul>
<li>コーヒーにハマりだす。</li>
<li>豆、挽き、時間などなどの変数がいっぱいあって変化が面白い。</li>
</ul>
<h4>二科展</h4>
<ul>
<li>初めてデザイン部門に出した。</li>
<li>準入選だったので、展示されず。</li>
</ul>
<h4>乃木坂</h4>
<ul>
<li>抽選に全く当たらず、一般先着でとった。</li>
<li>ステージバックだらけだった。</li>
</ul>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B8%A5%D6%A5%EA%C8%FE%BD%D1%B4%DB">ジブリ美術館</a>、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%B1%EE%C5%E7">猿島</a></h4>
<ul>
<li>長年行きたかったところについに行けた。</li>
</ul>
<h3>まとめ</h3>
<ul>
<li>ご愛読ありがとうございました!なみひらの来年にご期待ください!</li>
</ul>
<p><a href="https://image.middle-edge.jp/medium/4597895e-18ed-4516-abc5-6f706b41e7bd.gif?1479003233" class="http-image"><img src="https://image.middle-edge.jp/medium/4597895e-18ed-4516-abc5-6f706b41e7bd.gif?1479003233" class="http-image" alt="https://image.middle-edge.jp/medium/4597895e-18ed-4516-abc5-6f706b41e7bd.gif?1479003233"></a></p>
Namihira
Kaggle NLPコンペ参加の「はじめの一歩」の「はじめの一歩」 ※コンペ実施中
hatenablog://entry/26006613488965070
2019-12-25T21:24:50+09:00
2019-12-25T21:31:33+09:00 ※この記事は 自然言語処理 #2 Advent Calendar 2019 - Qiita の25日目の記事です。 概要 最近、自然言語処理/機械学習をやりだし、とりあえず勢いだけでKaggleコンペに参加し始めたのでその作業メモです。 執筆時点(2019/12/25)で現在進行系のコンペなので、最終結果はありません(;´Д`) この記事を読んでくださって、全員始めてみればいいじゃないと思っています。 ※[注]BeginnerのBeginnerなので、そこらへんのチュートリアルな解説ブログよりレベルが低いです(´・ω・`)← 前提 Kaggleとは(割愛。以下参照です) www.codexa.…
<p>※この記事は <a href="https://qiita.com/advent-calendar/2019/nlp2">自然言語処理 #2 Advent Calendar 2019 - Qiita</a> の25日目の記事です。</p>
<h3>概要</h3>
<p>最近、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%BC%AB%C1%B3%B8%C0%B8%EC%BD%E8%CD%FD">自然言語処理</a>/<a class="keyword" href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC">機械学習</a>をやりだし、とりあえず勢いだけでKaggleコンペに参加し始めたのでその作業メモです。<br/>
執筆時点(2019/12/25)で現在進行系のコンペなので、最<a class="keyword" href="http://d.hatena.ne.jp/keyword/%BD%AA%B7%EB">終結</a>果はありません(;´Д`)<br/>
この記事を読んでくださって、全員始めてみればいいじゃないと思っています。</p>
<p>※[注]BeginnerのBeginnerなので、そこらへんの<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C1%A5%E5%A1%BC%A5%C8%A5%EA%A5%A2%A5%EB">チュートリアル</a>な解説ブログよりレベルが低いです<a class="keyword" href="http://d.hatena.ne.jp/keyword/%28%A1%AD%A1%A6%A6%D8%A1%A6%60%29">(´・ω・`)</a>←</p>
<h3>前提</h3>
<p>Kaggleとは(割愛。以下参照です)
<iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.codexa.net%2Fwhat-is-kaggle%2F" title="Kaggleとは?機械学習初心者が知っておくべき3つの使い方" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="https://www.codexa.net/what-is-kaggle/">www.codexa.net</a></cite></p>
<h3>作業</h3>
<h4>参加対象</h4>
<p>今回参加しているコンペは以下です。現在進行注中で2月10日締め切りなので、あと1ヶ月ちょいあります。<br/>
質問タイトルや内容、回答などのテキストをもとにラベル(の確率)を予想するコンペです。
<iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.kaggle.com%2Fc%2Fgoogle-quest-challenge%2Foverview" title="Google QUEST Q&A Labeling | Kaggle" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="https://www.kaggle.com/c/google-quest-challenge/overview">www.kaggle.com</a></cite></p>
<h4>まずやったこと:コンペへの参加登録</h4>
<ul>
<li>(割愛)</li>
<li>このコンペはNotebookコンペなので、自分でサーバ(<a class="keyword" href="http://d.hatena.ne.jp/keyword/GPU">GPU</a>含)をもっていなくても、Kaggleが提供するサーバリソースを使って計算処理できます。</li>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/GPU">GPU</a>は使うように設定する</li>
</ul>
<h4>次にやったこと:提出用サンプルファイルをそのまま提出してみる。</h4>
<ul>
<li>コード書く</li>
</ul>
<pre class="code lang-php" data-lang="php" data-unlink>import pandas as pd
sample_submission = pd.read_csv("../input/google-quest-challenge/sample_submission.csv")
sample_submission.to_csv('submission.csv', index=False)
</pre>
<ul>
<li>コミットする ※コミットが完了するまでなんでこんなに時間かかるの?<a class="keyword" href="http://d.hatena.ne.jp/keyword/%28%A1%AD%A1%A6%A6%D8%A1%A6%60%29">(´・ω・`)</a></li>
<li>Notebook/Outputからsubmitする。</li>
</ul>
<p>スコアは-0.03とかでかなり低いですが、とりあえずランキングには載ります。 (しかしビリではない)</p>
<h4>次にやったこと:データの中身を見てみる</h4>
<p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC">機械学習</a>界隈だと<a class="keyword" href="http://d.hatena.ne.jp/keyword/EDA">EDA</a> (Exploratory Data Analysis)というらしく、コンペ内で公開されている他のNotebook(タイトルに<a class="keyword" href="http://d.hatena.ne.jp/keyword/EDA">EDA</a>とか書いてある)を参考しながら、ファイルからデータを扱える状態まで持っていく<br/>
(一部)</p>
<pre class="code lang-python" data-lang="python" data-unlink>train = pd.read_csv(f<span class="synConstant">"{DATA_DIR}/train.csv"</span>)
train.head()
...
train0 = train.iloc[<span class="synConstant">0</span>]
<span class="synIdentifier">print</span>(<span class="synConstant">'question_title : '</span>, train0[<span class="synConstant">'question_title'</span>])
</pre>
<p><a class="keyword" href="http://d.hatena.ne.jp/keyword/csv">csv</a>の中身をみてみると、結局テキストを扱う問題なんだな感で少しでてきて、緊張(?)がほぐれる(´Д`)</p>
<h4>次にやったこと:モデルを組んでみる</h4>
<p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%BC%AB%C1%B3%B8%C0%B8%EC%BD%E8%CD%FD">自然言語処理</a>の基本構成として、テキストをベクトル化して、組んだ<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%CB%A5%E5%A1%BC%A5%E9%A5%EB%A5%CD%A5%C3%A5%C8">ニューラルネット</a>のモデルに流して、学習/予測するので一番簡単そうなやつをやってみる。<br/>
テキストのベクトル化はUniversal Sentence Encoderがまず楽。モデルはDense/Dropoutあたりをとりあえず1層で用意する。<br/>
もちろん他のNotebookを参考に。<br/>
これまでモデルを組んでみたことはなかったですが、他のNotebookを見ながら組めました。</p>
<p>(初学者向けに作ってくれているNotebookもたくさんある)<br/>
(本とか論文とかだと部分的なコードしか出てないのに対して、Notebookは一連のデータ処理/モデルが記載されているのでコードが理解しやすい)<br/>
(都度調べつつ。勉強になる。参考になったNotebookは「いいね」を押す)<br/>
(公開されているNotebookをみんな参考にしているせいか、似たようなコードが多いことに気づく)</p>
<p>(一部)</p>
<pre class="code lang-python" data-lang="python" data-unlink><span class="synStatement">def</span> <span class="synIdentifier">model_fn</span>():
input_title = Input(shape=(<span class="synConstant">1</span>,), dtype=tf.string, name=<span class="synConstant">'input_title'</span>)
embedding_title = Lambda(USEEmbedding, output_shape=(EMBEDDDING_SIZE,))(input_title)
input_body = Input(shape=(<span class="synConstant">1</span>,), dtype=tf.string, name=<span class="synConstant">'input_body'</span>)
embedding_body = Lambda(USEEmbedding, output_shape=(EMBEDDDING_SIZE,))(input_body)
input_answer = Input(shape=(<span class="synConstant">1</span>,), dtype=tf.string, name=<span class="synConstant">'input_answer'</span>)
embedding_answer = Lambda(USEEmbedding, output_shape=(EMBEDDDING_SIZE,))(input_answer)
x = Concatenate()([embedding_title, embedding_body, embedding_answer])
x = Dropout(<span class="synConstant">0.5</span>)(x)
x = BatchNormalization()(x)
x = Dense(<span class="synConstant">512</span>, activation=swish)(x)
x = Dropout(<span class="synConstant">0.5</span>)(x)
x = BatchNormalization()(x)
output = Dense(N_CLASS, activation=<span class="synConstant">'sigmoid'</span>, name=<span class="synConstant">'output'</span>)(x)
model = Model(inputs=[input_title, input_body, input_answer], outputs=[output])
optimizer = optimizers.Adam(LEARNING_RATE)
model.compile(optimizer=optimizer, loss=<span class="synConstant">'binary_crossentropy'</span>)
<span class="synStatement">return</span> model
</pre>
<ul>
<li>パラメータや層ありなしをいろいろ変えてみて遊ぶ。</li>
<li>遊び飽きたら(精度が一番よかったやつ)でコミットする。</li>
<li>提出する。</li>
<li>少しだけランキングが上がる。※何か競争に参加している感がでる(´Д`)</li>
</ul>
<p><b><strong><em> イマココ </em></strong></b></p>
<h4>その他やったこと</h4>
<ul>
<li>Kaggler-ja-Slackに参加した:<a href="https://kaggler-ja.herokuapp.com">Join kaggler-ja on Slack!</a></li>
<li>↓の本を今日買った(これから読みます)
<div class="hatena-asin-detail"><a href="https://www.amazon.co.jp/exec/obidos/ASIN/4297108437/namihira-22/"><img src="https://images-fe.ssl-images-amazon.com/images/I/41zp6hN7f%2BL._SL160_.jpg" class="hatena-asin-detail-image" alt="Kaggleで勝つデータ分析の技術" title="Kaggleで勝つデータ分析の技術"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="https://www.amazon.co.jp/exec/obidos/ASIN/4297108437/namihira-22/">Kaggleで勝つデータ分析の技術</a></p><ul><li><span class="hatena-asin-detail-label">作者:</span><a href="http://d.hatena.ne.jp/keyword/%CC%E7%CF%C6%20%C2%E7%CA%E5" class="keyword">門脇 大輔</a>,<a href="http://d.hatena.ne.jp/keyword/%BA%E5%C5%C4%20%CE%B4%BB%CA" class="keyword">阪田 隆司</a>,<a href="http://d.hatena.ne.jp/keyword/%CA%DD%BA%E4%20%B7%CB%CD%A4" class="keyword">保坂 桂佑</a>,<a href="http://d.hatena.ne.jp/keyword/%CA%BF%BE%BE%20%CD%BA%BB%CA" class="keyword">平松 雄司</a></li><li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%B5%BB%BD%D1%C9%BE%CF%C0%BC%D2">技術評論社</a></li><li><span class="hatena-asin-detail-label">発売日:</span> 2019/10/09</li><li><span class="hatena-asin-detail-label">メディア:</span> 単行本(ソフトカバー)</li></ul></div><div class="hatena-asin-detail-foot"></div></div></li>
</ul>
<h4>次にやりたいこと(これからの予定)</h4>
<ul>
<li>上記をベースにモデルの組み方を変えてみる。</li>
<li>今は項目とテキストをそのままモデルに突っ込んでいるので、ユニークな「特徴」を見つけたい(この作業をfeature selectionというらしい)。</li>
<li>ランキング上位者は「BERTを使わないと上位いけないね」と言っているので、BERT(なにかのキャラ?)を導入してみる。</li>
<li>ランキング上位者は「アンサンブル学習(食べ物?)」の「スタッキング(楽器?)」をしているらしいので導入してみる。</li>
</ul>
<h3>結果</h3>
<p>自分のNotebookは↓こんな感じです(随時更新中)<br/>
<a href="https://www.kaggle.com/namihirak/google-quest-qa-simple-use-solution">Google QUEST QA Simple USE Solution | Kaggle</a></p>
<h3>まとめ</h3>
<p>知識と実践の両輪を回したい(*´ω`*)</p>
Namihira
Laravel Telescopeの導入メモと初見の所感
hatenablog://entry/26006613487732447
2019-12-24T09:19:58+09:00
2019-12-24T09:19:58+09:00 ※この記事は Laravel #2 Advent Calendar 2019 - Qiita の24日目の記事です。 概要 これまでLaravelを関連ツールを使わずに素だけ(?)で使っていたので、デバック用にLaravel Telescopeを入れてみました。 その作業メモと見てみた所感を書いてみます。 ※真実:Adventカレンダーの投稿ネタのために導入。きっかけをありがとう(* ´ω`*) 前提 Laravel Telescope Laravel界隈でデバッグツールを言えば、まず「Laravel Debugbar」らしいですが、Laravel公式がver5.7からデバッグツールをリリース…
<p>※この記事は <a href="https://qiita.com/advent-calendar/2019/laravel-2">Laravel #2 Advent Calendar 2019 - Qiita</a> の24日目の記事です。</p>
<h3>概要</h3>
<p>これまでLaravelを関連ツールを使わずに素だけ(?)で使っていたので、デバック用にLaravel Telescopeを入れてみました。<br/>
その作業メモと見てみた所感を書いてみます。<br/>
※真実:Adventカレンダーの投稿ネタのために導入。きっかけをありがとう(* ´ω`*)</p>
<h3>前提</h3>
<h4>Laravel Telescope</h4>
<p>Laravel界隈で<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C7%A5%D0%A5%C3%A5%B0">デバッグ</a>ツールを言えば、まず「Laravel Debugbar」らしいですが、Laravel公式がver5.7から<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C7%A5%D0%A5%C3%A5%B0">デバッグ</a>ツールをリリースしたらしいです。<br/>
<a href="https://readouble.com/laravel/5.7/ja/telescope.html">Laravel Telescope 5.7 Laravel</a></p>
<h4>動作環境</h4>
<p>Laravel 5.8</p>
<h3>導入</h3>
<p>基本的に公式ページに記載している通りです。
<iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Freadouble.com%2Flaravel%2F5.8%2Fja%2Ftelescope.html" title="Laravel Telescope 5.8 Laravel" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="https://readouble.com/laravel/5.8/ja/telescope.html">readouble.com</a></cite></p>
<p>とりわけ気になった点と少し対応した点について記載します。</p>
<h4>composerで導入</h4>
<p>デフォルトでは入っていないのでcomposerで入れる。</p>
<pre class="code" data-lang="" data-unlink>composer require laravel/telescope</pre>
<h4>アセットの公開と、データベーステーブル追加</h4>
<pre class="code" data-lang="" data-unlink>php artisan telescope:install
php artisan migrate</pre>
<p>以下のファイルが生成される。</p>
<ul>
<li>app/Providers/TelescopeServiceProvider.<a class="keyword" href="http://d.hatena.ne.jp/keyword/php">php</a></li>
<li>config/app.<a class="keyword" href="http://d.hatena.ne.jp/keyword/php">php</a>に「App\Providers\TelescopeServiceProvider::class,」の記載追加</li>
<li>データベースにログ用のテーブル「telescope_xx」が追加される。</li>
</ul>
<p>migrations配下に<a class="keyword" href="http://d.hatena.ne.jp/keyword/DDL">DDL</a>ファイルが生成されなかったので「rollbackできない?別管理?」と思いましたが、</p>
<pre class="code" data-lang="" data-unlink>php artisan migrate:rollback --step=1</pre>
<p>とすると、先ほど作成したtelescope用テーブルが削除されたので同じバージョン管理配下っぽい。(stepの指定とか間違えそう)</p>
<h3>設定</h3>
<h4>コード修正</h4>
<p>isLocal()に呼び出しできないエラーが出てたのでenv指定に変更した。<br/>
app/Providers/TelescopeServiceProvider.<a class="keyword" href="http://d.hatena.ne.jp/keyword/php">php</a></p>
<pre class="code lang-php" data-lang="php" data-unlink> public function register()
{
// before if ($this-<span class="synError">></span>app-<span class="synError">></span>isLocal()) {
// after if ($this-<span class="synError">></span>app-<span class="synError">></span>environment('local')) {
...
</pre>
<h4>アクセス制御</h4>
<p>本来はgate()内で認証済みユーザ情報で認可チェックしますが、作っているサイトに認証機能がないので一時的なランダムパスなパスを設定することで隠す(?)。</p>
<p>.env</p>
<pre class="code" data-lang="" data-unlink>TELESCOPE_PATH=***/***/***</pre>
<h4>ログの定期破棄</h4>
<p>ほっとくとテーブルにどんどんログが溜まっていくので定期的に削除するスケジューラを追加した(毎日24時に前日分削除)。</p>
<p>Kernel.<a class="keyword" href="http://d.hatena.ne.jp/keyword/php">php</a></p>
<pre class="code lang-php" data-lang="php" data-unlink>protected function schedule(Schedule $schedule)
{
...
$schedule-<span class="synError">></span>command('telescope:prune')-<span class="synError">></span>daily();
...
}
</pre>
<h3>動作確認</h3>
<p>上記で設定したパスにアクセスすると画面が表示されました。</p>
<p>Logsは以下で出力したログが集まっている。</p>
<pre class="code" data-lang="" data-unlink>use Illuminate\Support\Facades\Log;
...
Log::info('hoge foo');
...</pre>
<h3>所感</h3>
<p>導入しただけで使いこなしていないですが、初見の所感です。</p>
<ul>
<li>1つのHTTPリク<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A8%A5%B9">エス</a>トで発行された一連のログ・<a class="keyword" href="http://d.hatena.ne.jp/keyword/SQL">SQL</a>クエリが見れるのが良い。</li>
<li>リアルタイムでHTTPリク<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A8%A5%B9">エス</a>ト/レスポンスの内容を見たいときはブラウザのDevツールで十分そう。</li>
<li>リアルタイムで1箇所のLogや例外を見たいときは現状Slackに投げているので不要そう。</li>
<li>1リク<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A8%A5%B9">エス</a>トに紐づくログ、過去ログや傾向を見たいときに出番がありそう</li>
<li>「UI使わずにデータベースのテーブルを直接参照して何か解析できる?」と思いましたが、1カラムに<a class="keyword" href="http://d.hatena.ne.jp/keyword/JSON">JSON</a>(≒No <a class="keyword" href="http://d.hatena.ne.jp/keyword/SQL">SQL</a>っぽい)で格納されているので解析はきつそう</li>
<li>Scheduleログはcronの実行条件ぐらいしか出ないのであまり参考にならない。HTTPと同じように、1回のScheduleジョブにぶら下げる形で一連のログ/<a class="keyword" href="http://d.hatena.ne.jp/keyword/SQL">SQL</a>ログがみたい。</li>
</ul>
<h3>まとめ</h3>
<p>ログって大事(* ´ω`*)</p>
Namihira
サービスの区別をコンテキストパスだったのをサブドメインで区別するようにしたときの作業メモ
hatenablog://entry/26006613463318603
2019-11-09T11:49:32+09:00
2019-11-09T11:49:32+09:00 結果 以下のようなURLだったのを https://www.example.com/サービスA https://www.example.com/サービスB 以下のようにしました。 https://サービスA.example.com/ https://サービスB.example.com/ 前提 自分の環境で関係するものは以下です。 Route53(DNS) Apache(Webサーバ) Let's Encrypt(証明書) Laravel(サービスA) spring-boot(サービスB) 作業 サブドメイン登録 Route53のページに行きレコード追加。 とりあえず既存のトップドメインはサービ…
<h3>結果</h3>
<p>以下のようなURLだったのを</p>
<ul>
<li><a href="https://www.example.com/">https://www.example.com/</a>サービスA</li>
<li><a href="https://www.example.com/">https://www.example.com/</a>サービスB</li>
</ul>
<p>以下のようにしました。</p>
<ul>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/https">https</a>://サービスA.<a class="keyword" href="http://d.hatena.ne.jp/keyword/example.com">example.com</a>/</li>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/https">https</a>://サービスB.<a class="keyword" href="http://d.hatena.ne.jp/keyword/example.com">example.com</a>/</li>
</ul>
<h3>前提</h3>
<p>自分の環境で関係するものは以下です。</p>
<ul>
<li>Route53(<a class="keyword" href="http://d.hatena.ne.jp/keyword/DNS">DNS</a>)</li>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/Apache">Apache</a>(Webサーバ)</li>
<li>Let's Encrypt(証明書)</li>
<li>Laravel(サービスA)</li>
<li>spring-boot(サービスB)</li>
</ul>
<h3>作業</h3>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B5%A5%D6%A5%C9%A5%E1%A5%A4%A5%F3">サブドメイン</a>登録</h4>
<p>Route53のページに行きレコード追加。 とりあえず既存のトップ<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C9%A5%E1%A5%A4%A5%F3">ドメイン</a>はサービスA側に流す(<a class="keyword" href="http://d.hatena.ne.jp/keyword/Google%20Ads">Google Ads</a>対策)。</p>
<ul>
<li>サービスA.<a class="keyword" href="http://d.hatena.ne.jp/keyword/example.com">example.com</a>. A xx.xx.xx.xx</li>
<li>サービスB.<a class="keyword" href="http://d.hatena.ne.jp/keyword/example.com">example.com</a>. A xx.xx.xx.xx</li>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/example.com">example.com</a>. A ALIAS サービスA.<a class="keyword" href="http://d.hatena.ne.jp/keyword/example.com">example.com</a>.</li>
</ul>
<p>今回のようにRoute53でトップ<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C9%A5%E1%A5%A4%A5%F3">ドメイン</a>を他に流すときは以下参照。</p>
<p><a href="https://blog.takuros.net/entry/20121009/1349796375">Route53+S3 Web Hostingでホスト名無しのドメイン設定が出来るのか? - プログラマでありたい</a></p>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/Apache">Apache</a>設定変更</h4>
<p>EC2で動いている<a class="keyword" href="http://d.hatena.ne.jp/keyword/apache">apache</a>の設定を変更する。<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B5%A5%D6%A5%C9%A5%E1%A5%A4%A5%F3">サブドメイン</a>でアクセスしてきたらそれぞれのサービスに流すようにする。</p>
<p>/etc/<a class="keyword" href="http://d.hatena.ne.jp/keyword/httpd">httpd</a>/conf/<a class="keyword" href="http://d.hatena.ne.jp/keyword/httpd">httpd</a>.conf</p>
<pre class="code" data-lang="" data-unlink>NameVirtualHost *:80 ※追加または有効化
<VirtualHost *:80>
...
</VirtualHost>
<VirtualHost *:443> ※Laravelで作ったサービスAの設定。/var/www/直下にコード配置。
ServerName "サービスA.exmaple.com"
DocumentRoot "/var/www/サービスA/public/"
<Directory "/var/www/サービスA/public/">
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
Allow from all
</Directory>
ErrorLog "logs/ssl_error_log"
CustomLog "logs/ssl_access_log" combined
# SSL
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/www.example.com/cert.pem
SSLCertificateChainFile /etc/letsencrypt/live/www.example.com/chain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem
</VirtualHost>
<VirtualHost *:443> ※spring-bootで作ったサービスBの設定。8080で起動中
ServerName "サービスB.example.com"
ProxyPreserveHost On
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
ErrorLog "logs/ssl_error_log"
CustomLog "logs/ssl_access_log" combined
# SSL
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/www.example.com/cert.pem
SSLCertificateChainFile /etc/letsencrypt/live/www.example.com/chain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem
</VirtualHost></pre>
<p>設定が終わったら<a class="keyword" href="http://d.hatena.ne.jp/keyword/apache">apache</a>再起動。</p>
<p>※<a class="keyword" href="http://d.hatena.ne.jp/keyword/SSL">SSL</a>の設定もっと重複しないようにかけそう<a class="keyword" href="http://d.hatena.ne.jp/keyword/%28%A1%AD%A1%A6%A6%D8%A1%A6%60%29">(´・ω・`)</a></p>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B5%A5%D6%A5%C9%A5%E1%A5%A4%A5%F3">サブドメイン</a>でも使える<a class="keyword" href="http://d.hatena.ne.jp/keyword/SSL">SSL</a>証明証を発行</h4>
<p>EC2でコマンドを叩く</p>
<pre class="code" data-lang="" data-unlink>sudo certbot certonly --agree-tos --webroot -w /var/www/html/ -d example.com -d www.example.com -d サービスA.example.com -d サービスB.example.com</pre>
<p>※参考:<a href="https://designsupply-web.com/developmentlab/3542/">https://designsupply-web.com/developmentlab/3542/</a></p>
<h4>Laravel(サービスA)の修正</h4>
<p>コンテキストパス、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C9%A5%E1%A5%A4%A5%F3">ドメイン</a>に依存しているコードを修正する。</p>
<p>以下の修正も忘れずに</p>
<ul>
<li>public/.hatches</li>
</ul>
<pre class="code" data-lang="" data-unlink><IfModule mod_rewrite.c>
...
RewriteBase / ※コンテキストパスの記載があったら消す
...
</pre>
<h4>spring-boot(サービスB)の修正</h4>
<p>コンテキストパス、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C9%A5%E1%A5%A4%A5%F3">ドメイン</a>に依存しているコードを修正する。</p>
<h3>まとめ</h3>
<p>実際はあれもこれもやんなきゃでグダグダにやって、最終的にできた(´Д`)</p>
Namihira
Laravelアプリケーションをapache httpdに配置するときの作業メモ
hatenablog://entry/26006613392023947
2019-08-10T22:16:10+09:00
2019-08-12T10:07:40+09:00 背景 Laravelアプリケーションは本番環境では、apache httpdサーバを使っているのでそれに乗せたときのメモです。 アプリ名(ディレクトリ名)はappとしています。 Laravelアプリケーションはlaravelコマンドで作成済み。 対応 作成されているapp/public/.htaccess に「RewriteBase」を追記する。 <IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews -Indexes </IfModule> RewriteEngine On # Handle Auth…
<h3>背景</h3>
<p>Laravelアプリケーションは本番環境では、<a class="keyword" href="http://d.hatena.ne.jp/keyword/apache">apache</a> <a class="keyword" href="http://d.hatena.ne.jp/keyword/httpd">httpd</a>サーバを使っているのでそれに乗せたときのメモです。</p>
<ul>
<li>アプリ名(<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C7%A5%A3%A5%EC%A5%AF%A5%C8">ディレクト</a>リ名)はappとしています。</li>
<li>Laravelアプリケーションはlaravelコマンドで作成済み。</li>
</ul>
<h3>対応</h3>
<h4>作成されているapp/public/<a class="keyword" href="http://d.hatena.ne.jp/keyword/.htaccess">.htaccess</a> に「RewriteBase」を追記する。</h4>
<pre class="code" data-lang="" data-unlink><IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /app #これを追記
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule></pre>
<h4>/etc/<a class="keyword" href="http://d.hatena.ne.jp/keyword/httpd">httpd</a>/conf/<a class="keyword" href="http://d.hatena.ne.jp/keyword/httpd">httpd</a>.conf に以下を追記する。</h4>
<pre class="code" data-lang="" data-unlink># for app
<Location /app/ >
ProxyPass !
</Location>
Alias /livebook "/var/www/app/public/"
<Directory "/var/www/app/public/">
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
Allow from all
</Directory></pre>
<h4>/var/www/にLaravelアプリケーションの<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C7%A5%A3%A5%EC%A5%AF%A5%C8">ディレクト</a>リを配置する。</h4>
<p>/var/www/appになる</p>
<h3>確認</h3>
<p><a href="https://www.example.com/app/hello">https://www.example.com/app/hello</a> にアクセスして正常に表示されれば(ルーティングされれば)OK</p>
<h3>まとめ</h3>
<p>他のサイトでよく見る「**/public」をDocumentRootに指定するとあるので、最初public配下の静的<a class="keyword" href="http://d.hatena.ne.jp/keyword/php">php</a>ファイルしかアクセスできないかと思った(´,,・ω・,,`)</p>
<h3>参考</h3>
<ul>
<li><a href="https://www.ritolab.com/entry/22">PHPフレームワークLaravelのインストール入門編</a></li>
</ul>
Namihira
Google Adsにads.txtファイルを置いてくれと言われたので対応したときの作業メモ
hatenablog://entry/26006613381343229
2019-07-30T21:55:52+09:00
2019-07-30T21:57:00+09:00 背景 自分の運用しているサイトにGoogle AdSenseを入れていますが、ふとGoogle AdSenseサイトにアクセスしたら「ads.txt」を置いてくれを通知があったので、その対応したのときのメモです。 ※特に難しいことはしていないです。 support.google.com 対応 ルートレベルのドメインに置いてくれと書いてあったので「http://www.example.com/ads.txt」でアクセスできるようにしました。 サイトからダウンロードしたads.txtを「/var/www/htlml/ads.txt」に置く。そのあと、httpdでパスを通した。(httpd.conf…
<h3>背景</h3>
<p>自分の運用しているサイトに<a class="keyword" href="http://d.hatena.ne.jp/keyword/Google%20AdSense">Google AdSense</a>を入れていますが、ふと<a class="keyword" href="http://d.hatena.ne.jp/keyword/Google%20AdSense">Google AdSense</a>サイトにアクセスしたら「ads.txt」を置いてくれを通知があったので、その対応したのときのメモです。<br/>
※特に難しいことはしていないです。</p>
<p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fsupport.google.com%2Fadsense%2Fanswer%2F7532444%3Fhl%3Dja" title="ads.txt で認定販売者を宣言する - AdSense ヘルプ" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="https://support.google.com/adsense/answer/7532444?hl=ja">support.google.com</a></cite></p>
<h3>対応</h3>
<p>ルートレベルの<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C9%A5%E1%A5%A4%A5%F3">ドメイン</a>に置いてくれと書いてあったので「<a href="http://www.example.com/ads.txt">http://www.example.com/ads.txt</a>」でアクセスできるようにしました。
サイトからダウンロードしたads.txtを「/var/www/htlml/ads.txt」に置く。そのあと、<a class="keyword" href="http://d.hatena.ne.jp/keyword/httpd">httpd</a>でパスを通した。(<a class="keyword" href="http://d.hatena.ne.jp/keyword/httpd">httpd</a>.conf)</p>
<pre class="code" data-lang="" data-unlink># for App
<Location / >
ProxyPass http://localhost:8080/
</Location>
# for Google Ads
<Location /ads.txt >
ProxyPass !
</Location></pre>
<h3>まとめ</h3>
<p>収益あがるといいな<a class="keyword" href="http://d.hatena.ne.jp/keyword/%28%A1%AD%A1%A6%A6%D8%A1%A6%60%29">(´・ω・`)</a></p>
Namihira
Let's Encryptの証明書更新でエラーがでて更新に失敗したのでその対応したときの作業メモ
hatenablog://entry/17680117127092913371
2019-04-29T23:23:05+09:00
2019-04-29T23:29:59+09:00 背景 cronで証明書更新できているつもりが突然httpsでアクセスできなくなり、手動で更新コマンドを実行したらエラーがでました。 その対応したときの作業メモです。 問題事象 以下のコマンドを実行したらエラーメッセージがでました。 sudo certbot renew --no-self-upgrade エラーメッセージ(一部修正と略) http-01 challenge for www.example.com Waiting for verification... Cleaning up challenges Attempting to renew cert (www.example.com…
<h3>背景</h3>
<p>cronで証明書更新できているつもりが突然<a class="keyword" href="http://d.hatena.ne.jp/keyword/https">https</a>でアクセスできなくなり、手動で更新コマンドを実行したらエラーがでました。<br/>
その対応したときの作業メモです。</p>
<h3>問題事象</h3>
<p>以下のコマンドを実行したらエラーメッセージがでました。</p>
<pre class="code" data-lang="" data-unlink>sudo certbot renew --no-self-upgrade</pre>
<p>エラーメッセージ(一部修正と略)</p>
<pre class="code" data-lang="" data-unlink>http-01 challenge for www.example.com
Waiting for verification...
Cleaning up challenges
Attempting to renew cert (www.example.com) from /etc/letsencrypt/renewal/www.example.com.conf produced an unexpected error: Failed authorization procedure. www.example.com (http-01): urn:ietf:params:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from http://www.example.com/.well-known/acme-challenge/N9oxxxxxxxxxxxxxxxxxxxxxxxxxxI1UYUgFw0 [52.00.150.00]: 404. Skipping.
All renewal attempts failed. The following certs could not be renewed:
/etc/letsencrypt/live/www.example.com/fullchain.pem (failure)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
All renewal attempts failed. The following certs could not be renewed:
/etc/letsencrypt/live/www.example.com/fullchain.pem (failure)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1 renew failure(s), 0 parse failure(s)
IMPORTANT NOTES:
- The following errors were reported by the server:
Domain: www.example.com
Type: unauthorized
Detail: Invalid response from
http://www.example.com/.well-known/acme-challenge/N9oxxxxxxxxxxxxxxxxxxxxxxxxxxI1UYUgFw0
[52.87.151.42]: 404
To fix these errors, please make sure that your domain name was
entered correctly and the DNS A/AAAA record(s) for that domain
contain(s) the right IP address.</pre>
<h3>対応</h3>
<p>証明書更新の手続きの際、Let's Encrypt側が今回の場合「<a href="http://www.example.com/.well-known/acme-challenge/N9oxxxxxxxxxxxxxxxxxxxxxxxxxxI1UYUgFw0">http://www.example.com/.well-known/acme-challenge/N9oxxxxxxxxxxxxxxxxxxxxxxxxxxI1UYUgFw0</a>」にアクセスして確認するため、外からこのファイルにアクセスできるようにする必要がある。<br/>
なので、空ファイルとして「/var/www/htlml/.well-known/<a class="keyword" href="http://d.hatena.ne.jp/keyword/acme">acme</a>-challenge/N9oxxxxxxxxxxxxxxxxxxxxxxxxxxI1UYUgFw0」を作る。そのあと、<a class="keyword" href="http://d.hatena.ne.jp/keyword/httpd">httpd</a>でパスを通した。(<a class="keyword" href="http://d.hatena.ne.jp/keyword/httpd">httpd</a>.conf)</p>
<pre class="code" data-lang="" data-unlink># for App
<Location / >
ProxyPass http://localhost:8080/
</Location>
# for cert
<Location /.well-known/ >
ProxyPass !
</Location></pre>
<h3>まとめ</h3>
<p>導入時に正常にできていたのでスキップされていただけ?(´・ω・`)</p>
Namihira
Spring Dataで直SQLクエリかつ設定されていないパラメータを無視する方法
hatenablog://entry/17680117127009574229
2019-04-07T11:32:27+09:00
2019-04-07T11:35:44+09:00 背景 Spring Dataで直SQLクエリを使って検索するときに、設定していない検索パラメータ(配列)を無視したいときの対応メモです。 対応 以下のような例の場合、categoriesが文字列配列の値が入っているとき、「:#{#conditions.categories}) IS NULL」と書くとSQLシンタックスに合わない("hoge", "foo" IS NULL)。 ※値を設定していないときはNULLなので、この文法でもいけてしまうのがやらしい。 ※配列ではない「from」はそのまま書ける。 なので、以下のようにCOALESCE関数をかませて、SQLのシンタックスに合うようにする。 …
<h3>背景</h3>
<p>Spring Dataで直<a class="keyword" href="http://d.hatena.ne.jp/keyword/SQL">SQL</a>クエリを使って検索するときに、設定していない検索パラメータ(配列)を無視したいときの対応メモです。</p>
<h3>対応</h3>
<p>以下のような例の場合、categoriesが文字列配列の値が入っているとき、「:#{#conditions.categories}) IS NULL」と書くと<a class="keyword" href="http://d.hatena.ne.jp/keyword/SQL">SQL</a><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B7%A5%F3%A5%BF%A5%C3%A5%AF%A5%B9">シンタックス</a>に合わない("<a class="keyword" href="http://d.hatena.ne.jp/keyword/hoge">hoge</a>", "foo" IS NULL)。<br/>
※値を設定していないときはNULLなので、この文法でもいけてしまうのがやらしい。<br/>
※配列ではない「from」はそのまま書ける。<br/>
なので、以下のようにCOALESCE関数をかませて、<a class="keyword" href="http://d.hatena.ne.jp/keyword/SQL">SQL</a>の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B7%A5%F3%A5%BF%A5%C3%A5%AF%A5%B9">シンタックス</a>に合うようにする。</p>
<pre class="code lang-java" data-lang="java" data-unlink><span class="synPreProc">@Query</span>(value =
<span class="synConstant">"SELECT e "</span> +
<span class="synConstant">"FROM EventDto e "</span> +
<span class="synConstant">"WHERE 1 = 1 "</span> +
<span class="synConstant">" AND ( :#{#conditions.from} IS NULL OR :#{#conditions.from} <= e.from) "</span> +
<span class="synConstant">" AND ( COALESCE(:#{#conditions.categories}) IS NULL OR ec.eventCategory IN ( :#{#conditions.categories} ) )"</span>
)
<span class="synType">public</span> Page<EventDto> findByConditions(<span class="synPreProc">@Param</span>(<span class="synConstant">"conditions"</span>) EventSearchCondition condition, Pageable page);
</pre>
<pre class="code lang-java" data-lang="java" data-unlink><span class="synPreProc">@Data</span>
<span class="synType">public</span> <span class="synType">class</span> EventSearchCondition {
<span class="synType">private</span> List<EventCategoryEnum> categories;
<span class="synType">private</span> LocalDateTime from;
}
</pre>
<h3>まとめ</h3>
<p>もしかたら直<a class="keyword" href="http://d.hatena.ne.jp/keyword/SQL">SQL</a>でなくてもSpring Dataの関数記法でも行けるのかもしれない(´・ω・`)</p>
Namihira
Amazon Linux 2 + Apache + Route53環境にLet's Encrypt を入れたときの作業メモ
hatenablog://entry/98012380848542989
2019-01-29T23:55:32+09:00
2019-02-16T09:21:28+09:00 背景 自分のサイトをhttpsでアクセスできるようにしたかったので、Let's Encryptを使ってhttps化したときもメモです 作業メモ 基本作業 AWSに公式ページがあるので、まずその作業をした。 チュートリアル: Amazon Linux 2 で SSL/TLS を使用できるように Apache ウェブサーバーを設定する - Amazon Elastic Compute Cloud 以下がその差分です。 ※example.comは例。 certbotコマンド 「sudo certbot」だと以下のように言われたので、 Saving debug log to /var/log/lets…
<h3>背景</h3>
<p>自分のサイトを<a class="keyword" href="http://d.hatena.ne.jp/keyword/https">https</a>でアクセスできるようにしたかったので、Let's Encryptを使って<a class="keyword" href="http://d.hatena.ne.jp/keyword/https%B2%BD">https化</a>したときもメモです</p>
<h3>作業メモ</h3>
<h4>基本作業</h4>
<p><a class="keyword" href="http://d.hatena.ne.jp/keyword/AWS">AWS</a>に公式ページがあるので、まずその作業をした。<br/>
<a href="https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/SSL-on-an-instance.html#letsencrypt">チュートリアル: Amazon Linux 2 で SSL/TLS を使用できるように Apache ウェブサーバーを設定する - Amazon Elastic Compute Cloud</a></p>
<p>以下がその差分です。<br/>
※<a class="keyword" href="http://d.hatena.ne.jp/keyword/example.com">example.com</a>は例。</p>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/certbot">certbot</a>コマンド</h4>
<p>「sudo <a class="keyword" href="http://d.hatena.ne.jp/keyword/certbot">certbot</a>」だと以下のように言われたので、</p>
<pre class="code" data-lang="" data-unlink>Saving debug log to /var/log/letsencrypt/letsencrypt.log Certbot doesn't know how to automatically configure the web server on this system. However, it can still get a certificate for you.
Please run "certbot certonly" to do so. You'll need to manually configure your web server to use the resulting certificate.</pre>
<p>以下を実行した。</p>
<pre class="code" data-lang="" data-unlink>sudo certbot certonly --agree-tos --webroot -w /var/www/html/ -d www.example.com</pre>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/httpd">httpd</a>の設定</h4>
<p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C9%A5%E1%A5%A4%A5%F3">ドメイン</a>からIPが引けないといけないらしいので、Route53でIPに紐づけている「www.**」にて設定した。<br/>
443ポート対応追加。httpもあると便利だったりするので残した。</p>
<pre class="code" data-lang="" data-unlink><VirtualHost *:80>
DocumentRoot "/var/www/html"
ServerName "www.example.com"
</VirtualHost>
<VirtualHost *:443>
DocumentRoot "/var/www/html"
ServerName "www.example.com"
ErrorLog "logs/ssl_error_log"
CustomLog "logs/ssl_access_log" combined
# SSL
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/www.example.com/cert.pem
SSLCertificateChainFile /etc/letsencrypt/live/www.example.com/chain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.example.com/privkey.pem
</VirtualHost></pre>
<h3>まとめ</h3>
<p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%BD%A1%BC%A5%B9%A5%B3%A1%BC%A5%C9">ソースコード</a>直書きで「http」でアクセスしているところもこれから直す(´・ω・`)</p>
<h3>参考</h3>
<ul>
<li><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fdocs.aws.amazon.com%2Fja_jp%2FAWSEC2%2Flatest%2FUserGuide%2FSSL-on-an-instance.html%23letsencrypt" title="チュートリアル: Amazon Linux 2 で SSL/TLS を使用できるように Apache ウェブサーバーを設定する - Amazon Elastic Compute Cloud" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/SSL-on-an-instance.html#letsencrypt">docs.aws.amazon.com</a></cite></li>
<li><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fqiita.com%2Ftmatsumot%2Fitems%2Faca49d99558d2646ef36" title="Let'sEncryptの取得&自動更新設定してみた(CentOS7.1&Apache2.4.6) - Qiita" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="https://qiita.com/tmatsumot/items/aca49d99558d2646ef36">qiita.com</a></cite></li>
</ul>
Namihira
2018年 活動報告
hatenablog://entry/10257846132692210610
2018-12-30T07:15:28+09:00
2018-12-30T07:15:28+09:00 背景 2018年も終わるので、今年のキーワードを雑記します〆(´Д`) キーワード(順不同) IV&V 比率は下がったけどもろもろやった。 FMEA FMEAの故障をどう発想するか議論するかに取り組む 以下が1例 本会議1日目 | ソフトウェア品質シンポジウム 2018 論文 以下のカンファレンスに論文通した(ランクは低め) AeroConf 2019 IEEE Aerospace Conference | AWS 昔から使っていた構成を一新したので、その際多少キャッチアップできた。 新しいサービスを作って適宜更新中 Yorimichi 業務の外出 今まで都内だけだったけど、名古屋への出張が増…
<h3>背景</h3>
<p>2018年も終わるので、今年のキーワードを雑記します〆(´Д`)</p>
<h3>キーワード(順不同)</h3>
<h4>IV&V</h4>
<ul>
<li>比率は下がったけどもろもろやった。</li>
</ul>
<h4>FMEA</h4>
<ul>
<li>FMEAの故障をどう発想するか議論するかに取り組む</li>
<li>以下が1例
<ul>
<li><a href="https://www.juse.jp/sqip/symposium/detail/day1/#B1-1">本会議1日目 | ソフトウェア品質シンポジウム 2018</a></li>
</ul>
</li>
</ul>
<h4>論文</h4>
<ul>
<li>以下のカンファレンスに論文通した(ランクは低め)
<ul>
<li><a href="https://www.aeroconf.org/">AeroConf 2019 IEEE Aerospace Conference |</a></li>
</ul>
</li>
</ul>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/AWS">AWS</a></h4>
<ul>
<li>昔から使っていた構成を一新したので、その際多少キャッチアップできた。</li>
<li>新しいサービスを作って適宜更新中
<ul>
<li><a href="http://www.namimono.com/yorimichi/view/welcome">Yorimichi</a></li>
</ul>
</li>
</ul>
<h4>業務の外出</h4>
<ul>
<li>今まで都内だけだったけど、名古屋への出張が増えた</li>
</ul>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/Google%20Home">Google Home</a> Mini</h4>
<ul>
<li>Remoを新しく買ったので、リビング関連は大体声でできるようになった。</li>
<li>来年はもっとフローを組みたい(´Д`)</li>
</ul>
<h4>マ<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%E9%A5%BD%A5%F3">ラソン</a></h4>
<ul>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A4%C4%A4%AF%A4%D0%A5%DE%A5%E9%A5%BD%A5%F3">つくばマラソン</a>参加
<ul>
<li><a href="http://www.tsukuba-marathon.com/">つくばマラソン</a></li>
</ul>
</li>
<li>去年よりも走れる距離が増えた(30 -> 35キロ)</li>
</ul>
<h4>ブログの更新</h4>
<ul>
<li>年々すくなってきている(;´Д`)
<ul>
<li>年(投稿数)</li>
<li>2018 (6)</li>
<li>2017 (14)</li>
<li>2016 (32)</li>
<li>2015 (26)</li>
<li>2014 (53)</li>
<li>2013 (53)</li>
<li>2012 (29)</li>
</ul>
</li>
<li>作業メモでもいいから書きたい(;´Д`)</li>
</ul>
<h4>本</h4>
<ul>
<li>NIKKEI DESIGNが面白い</li>
<li>厚めの本は全然読んでいない(;´Д`)</li>
</ul>
<h4>英語</h4>
<ul>
<li>海外に行く機会があった、今後もあるので普段から英語にふれるようになった</li>
<li>使っているコンテンツは↓
<ul>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/podcast">podcast</a> : <a href="https://bilingualnews.jp/">BILINGUALNEWS | バイリンガルニュース</a></li>
<li>オンライン英会話:<a href="https://nativecamp.net/">オンライン英会話のネイティブキャンプ | 英会話7日間無料トライアル開催中</a></li>
</ul>
</li>
</ul>
<h4>乃木坂</h4>
<ul>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/%C3%E1%C9%E3%B5%DC">秩父宮</a>公演に行った。
<ul>
<li>好きな曲一通りやってくれたので良かった(*´Д`*)</li>
</ul>
</li>
</ul>
<h3>まとめ</h3>
<ul>
<li>ご愛読ありがとうございました!</li>
<li>なみひらの来年にご期待ください!</li>
<li><a href="https://image.middle-edge.jp/medium/4597895e-18ed-4516-abc5-6f706b41e7bd.gif?1479003233" class="http-image" target="_blank"><img src="https://image.middle-edge.jp/medium/4597895e-18ed-4516-abc5-6f706b41e7bd.gif?1479003233" class="http-image" alt="https://image.middle-edge.jp/medium/4597895e-18ed-4516-abc5-6f706b41e7bd.gif?1479003233"></a></li>
</ul>
Namihira
vue-headで動的にhead metaを変えたときのメモ
hatenablog://entry/10257846132663799052
2018-11-03T15:53:22+09:00
2018-11-03T15:53:22+09:00 背景 vueを使っててタグ内のタグを動的に追加する必要があったので、vue-headで対応したときのメモです。 ※説明に公式のドキュメントをかぶる点あり。 GitHub - ktquez/vue-head: Manager the meta information of the head tag, a simple and easy way 作業 取り込み <script src="https://cdn.rawgit.com/ktquez/vue-head/master/vue-head.js"></script> JS headパラメータを追加して、追加するmetaを定義 vue側のdat…
<h3>背景</h3>
<p>vueを使ってて<head>タグ内の<meta>タグを動的に追加する必要があったので、vue-headで対応したときのメモです。<br/>
※説明に公式のドキュメントをかぶる点あり。</p>
<p><a href="https://github.com/ktquez/vue-head">GitHub - ktquez/vue-head: Manager the meta information of the head tag, a simple and easy way</a></p>
<h3>作業</h3>
<h4>取り込み</h4>
<pre class="code lang-html" data-lang="html" data-unlink><span class="synIdentifier"><</span><span class="synStatement">script</span><span class="synIdentifier"> </span><span class="synType">src</span><span class="synIdentifier">=</span><span class="synConstant">"https://cdn.rawgit.com/ktquez/vue-head/master/vue-head.js"</span><span class="synIdentifier">></</span><span class="synStatement">script</span><span class="synIdentifier">></span>
</pre>
<h4>JS</h4>
<ul>
<li>headパラメータを追加して、追加するmetaを定義</li>
<li>vue側のdataを使いたい場合は、headはfunctionじゃないとだめ。</li>
<li>「this.$emit('updateHead');」しないとhtmlへ変化が更新されない。</li>
</ul>
<pre class="code" data-lang="" data-unlink>new Vue({
el: '#hoge',
data () {
return {
x: {},
};
},
head: {
meta () {
return [
{ name: 'og:foo', content: this.x },
];
},
},
mounted () {
axios.get('/api')
.then(res => { this.x = res.x; });
},
updated () {
this.$emit('updateHead');
},
</pre>
<h3>まとめ</h3>
<p>ここまでやったけど、動的に追加したmetaタグを使ってくれないサービスがあるので注意(<a class="keyword" href="http://d.hatena.ne.jp/keyword/twitter">twitter</a>のcardとか)<a class="keyword" href="http://d.hatena.ne.jp/keyword/%28%A1%AD%A1%A6%A6%D8%A1%A6%60%29">(´・ω・`)</a></p>
Namihira
MaterializeでのselectとdatepickerをVue.jsで扱うときのメモ
hatenablog://entry/10257846132638810076
2018-09-24T23:20:03+09:00
2018-09-24T23:20:03+09:00 背景 Materializeの動きのせいで、select/option, datepicker/timepickerをVue.jsで使おうとしたら、うまくいかなかったのでメモっときます(;´Д`) materializecss.com materializecss.com 事象1:selectに選択された値が、バインディングした変数に格納されない。 vue側でもっている配列hogesで選択肢を作って選択されたものを変数fooに同期したいイメージ。 <select id="id" v-model="foo"> <option v-for="h in hoges" v-bind:value="h.…
<h3>背景</h3>
<ul>
<li>Materializeの動きのせいで、select/option, datepicker/timepickerをVue.jsで使おうとしたら、うまくいかなかったのでメモっときます(;´Д`)</li>
</ul>
<p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fmaterializecss.com%2Fselect.html" title="Select - Materialize" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="https://materializecss.com/select.html">materializecss.com</a></cite></p>
<p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fmaterializecss.com%2Fpickers.html" title="Pickers - Materialize" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="https://materializecss.com/pickers.html">materializecss.com</a></cite></p>
<h3>事象1:selectに選択された値が、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D0%A5%A4%A5%F3%A5%C7%A5%A3%A5%F3%A5%B0">バインディング</a>した変数に格納されない。</h3>
<p>vue側でもっている配列hogesで選択肢を作って選択されたものを変数fooに同期したいイメージ。</p>
<pre class="code lang-html" data-lang="html" data-unlink><span class="synIdentifier"><</span><span class="synStatement">select</span><span class="synIdentifier"> </span><span class="synType">id</span><span class="synIdentifier">=</span><span class="synConstant">"id"</span><span class="synIdentifier"> v-model=</span><span class="synConstant">"foo"</span><span class="synIdentifier">></span>
<span class="synIdentifier"><</span><span class="synStatement">option</span><span class="synIdentifier"> v-</span><span class="synType">for</span><span class="synIdentifier">=</span><span class="synConstant">"h in hoges"</span><span class="synIdentifier"> v-bind:</span><span class="synType">value</span><span class="synIdentifier">=</span><span class="synConstant">"h.id"</span><span class="synIdentifier">></span>{{ h.name }}<span class="synIdentifier"></</span><span class="synStatement">option</span><span class="synIdentifier">></span>
<span class="synIdentifier"></</span><span class="synStatement">select</span><span class="synIdentifier">></span>
</pre>
<p>Materializeは、画面描画時にこのselectとは別に要素を挿入して、その要素をユーザに操作させるため、vue側で変化が検知できないもよう。</p>
<h4>解決</h4>
<p>以下のようブラウザのデフォルト動作(class="browser-default)にすると、別要素を作らなくなりvue側で変化を検知できるようになった。※UIのリッチさ落ちる(;´Д`)</p>
<pre class="code lang-html" data-lang="html" data-unlink><span class="synIdentifier"><</span><span class="synStatement">select</span><span class="synIdentifier"> </span><span class="synType">id</span><span class="synIdentifier">=</span><span class="synConstant">"id"</span><span class="synIdentifier"> </span><span class="synType">class</span><span class="synIdentifier">=</span><span class="synConstant">"browser-default"</span><span class="synIdentifier"> v-model=</span><span class="synConstant">"foo"</span><span class="synIdentifier">></span>
<span class="synIdentifier"><</span><span class="synStatement">option</span><span class="synIdentifier"> v-</span><span class="synType">for</span><span class="synIdentifier">=</span><span class="synConstant">"h in hoges"</span><span class="synIdentifier"> v-bind:</span><span class="synType">value</span><span class="synIdentifier">=</span><span class="synConstant">"h.id"</span><span class="synIdentifier">></span>{{ h.name }}<span class="synIdentifier"></</span><span class="synStatement">option</span><span class="synIdentifier">></span>
<span class="synIdentifier"></</span><span class="synStatement">select</span><span class="synIdentifier">></span>
</pre>
<h3>事象2 :</h3>
<p>Datepickerで選択された日付が、vue側の変数startDateに同期されるイメージ。</p>
<pre class="code lang-html" data-lang="html" data-unlink><span class="synIdentifier"><</span><span class="synStatement">div</span><span class="synIdentifier"> </span><span class="synType">class</span><span class="synIdentifier">=</span><span class="synConstant">"input-field"</span><span class="synIdentifier">></span>
<span class="synIdentifier"><</span><span class="synStatement">input</span><span class="synIdentifier"> </span><span class="synType">id</span><span class="synIdentifier">=</span><span class="synConstant">"startDate"</span><span class="synIdentifier"> </span><span class="synType">class</span><span class="synIdentifier">=</span><span class="synConstant">"datepicker"</span><span class="synIdentifier"> </span><span class="synType">type</span><span class="synIdentifier">=</span><span class="synConstant">"text"</span><span class="synIdentifier"> v-model=</span><span class="synConstant">"startDate"</span><span class="synIdentifier">></span>
<span class="synIdentifier"><</span><span class="synStatement">label</span><span class="synIdentifier"> </span><span class="synType">for</span><span class="synIdentifier">=</span><span class="synConstant">"startDate"</span><span class="synIdentifier">></span>開始日<span class="synIdentifier"></</span><span class="synStatement">label</span><span class="synIdentifier">></span>
<span class="synIdentifier"></</span><span class="synStatement">div</span><span class="synIdentifier">></span>
</pre>
<p>先程のselectと同じで、別要素を挿入されそちらで処理されるため、vueが変化に気付けないっぽい。</p>
<h4>解決</h4>
<p>今回は<a class="keyword" href="http://d.hatena.ne.jp/keyword/API">API</a>を叩く必要に値が必要だったので、submitする際に、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A4%A5%F3%A5%B9%A5%BF%A5%F3%A5%B9">インスタンス</a>からプロパティを参照して取得した。<br/>
※この方法でなくても、もしかしたらDatepickerのonSelectとかで同期できるかも。</p>
<pre class="code lang-html" data-lang="html" data-unlink><span class="synIdentifier"><</span><span class="synStatement">div</span><span class="synIdentifier"> </span><span class="synType">class</span><span class="synIdentifier">=</span><span class="synConstant">"input-field"</span><span class="synIdentifier">></span>
<span class="synIdentifier"><</span><span class="synStatement">input</span><span class="synIdentifier"> </span><span class="synType">id</span><span class="synIdentifier">=</span><span class="synConstant">"startDate"</span><span class="synIdentifier"> </span><span class="synType">class</span><span class="synIdentifier">=</span><span class="synConstant">"datepicker"</span><span class="synIdentifier"> </span><span class="synType">type</span><span class="synIdentifier">=</span><span class="synConstant">"text"</span><span class="synIdentifier">></span>
<span class="synIdentifier"><</span><span class="synStatement">label</span><span class="synIdentifier"> </span><span class="synType">for</span><span class="synIdentifier">=</span><span class="synConstant">"startDate"</span><span class="synIdentifier">></span>開始日<span class="synIdentifier"></</span><span class="synStatement">label</span><span class="synIdentifier">></span>
<span class="synIdentifier"></</span><span class="synStatement">div</span><span class="synIdentifier">></span>
...
<span class="synIdentifier"><</span><span class="synStatement">button</span><span class="synIdentifier"> </span><span class="synType">class</span><span class="synIdentifier">=</span><span class="synConstant">"btn waves-effect waves-light"</span><span class="synIdentifier"> v-on:click.prevent=</span><span class="synConstant">"submit"</span><span class="synIdentifier">></span>登録する<span class="synIdentifier"><</span><span class="synStatement">i</span><span class="synIdentifier"> </span><span class="synType">class</span><span class="synIdentifier">=</span><span class="synConstant">"material-icons right"</span><span class="synIdentifier">></span>send<span class="synIdentifier"></</span><span class="synStatement">i</span><span class="synIdentifier">></span>
</pre>
<pre class="code" data-lang="" data-unlink>methods: {
submit () {
var startDate = M.Datepicker.getInstance($('#startDate')).date;
...
},
</pre>
<h3>まとめ</h3>
<p>UIライブラリは、既存の要素にも値を格納するようにしてほしい<a class="keyword" href="http://d.hatena.ne.jp/keyword/%28%A1%AD%A1%A6%A6%D8%A1%A6%60%29">(´・ω・`)</a></p>
Namihira
Materializeのdatepickerの初期化でエラーがでたときの対応メモ
hatenablog://entry/10257846132636907554
2018-09-22T10:46:04+09:00
2018-09-22T10:46:04+09:00 背景 Materializeのdatepicker, timepickerを使おうとしたら、初期化でエラーができたのでその対応のメモです(;´Д`) ※結論的には、Materializeのdatepickerどうこうではなく、ライブラリの読み方の問題。 materializecss.com エラー TypeError: $('.datepicker').datepicker is not a function. (In '$('.datepicker').datepicker()', '$('.datepicker').datepicker' is undefined) だめだった例 <scr…
<h3>背景</h3>
<ul>
<li>Materializeのdatepicker, timepickerを使おうとしたら、初期化でエラーができたのでその対応のメモです(;´Д`)</li>
<li>※結論的には、Materializeのdatepickerどうこうではなく、ライブラリの読み方の問題。</li>
</ul>
<p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fmaterializecss.com%2Fpickers.html" title="Pickers - Materialize" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="https://materializecss.com/pickers.html">materializecss.com</a></cite></p>
<h3>エラー</h3>
<pre class="code" data-lang="" data-unlink>TypeError: $('.datepicker').datepicker is not a function. (In '$('.datepicker').datepicker()', '$('.datepicker').datepicker' is undefined)</pre>
<h3>だめだった例</h3>
<pre class="code lang-html" data-lang="html" data-unlink> <span class="synIdentifier"><</span><span class="synStatement">script</span><span class="synIdentifier"> </span><span class="synType">src</span><span class="synIdentifier">=</span><span class="synConstant">"https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0-rc.2/js/materialize.min.js"</span><span class="synIdentifier">></</span><span class="synStatement">script</span><span class="synIdentifier">></span>
<span class="synIdentifier"><</span><span class="synStatement">script</span><span class="synIdentifier"> </span><span class="synType">src</span><span class="synIdentifier">=</span><span class="synConstant">"https://code.jquery.com/jquery-3.1.1.min.js"</span><span class="synIdentifier">></</span><span class="synStatement">script</span><span class="synIdentifier">></span>
<span class="synIdentifier"><</span><span class="synStatement">script</span><span class="synIdentifier"> </span><span class="synType">type</span><span class="synIdentifier">=</span><span class="synConstant">"text/javascript"</span><span class="synIdentifier">></span>
<span class="synSpecial"> $</span>(<span class="synIdentifier">function</span>()<span class="synIdentifier">{</span>
<span class="synSpecial"> $</span>(<span class="synConstant">'.datepicker'</span>)<span class="synSpecial">.datepicker</span>()<span class="synSpecial">;</span>
<span class="synSpecial"> $</span>(<span class="synConstant">'.timepicker'</span>)<span class="synSpecial">.timepicker</span>()<span class="synSpecial">;</span>
<span class="synSpecial"> </span><span class="synIdentifier">}</span>)<span class="synSpecial">;</span>
<span class="synSpecial"> </span><span class="synIdentifier"></</span><span class="synStatement">script</span><span class="synIdentifier">></span>
</pre>
<h3>正しい</h3>
<pre class="code lang-html" data-lang="html" data-unlink> <span class="synIdentifier"><</span><span class="synStatement">script</span><span class="synIdentifier"> </span><span class="synType">src</span><span class="synIdentifier">=</span><span class="synConstant">"https://code.jquery.com/jquery-3.1.1.min.js"</span><span class="synIdentifier">></</span><span class="synStatement">script</span><span class="synIdentifier">></span>
<span class="synIdentifier"><</span><span class="synStatement">script</span><span class="synIdentifier"> </span><span class="synType">src</span><span class="synIdentifier">=</span><span class="synConstant">"https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0-rc.2/js/materialize.min.js"</span><span class="synIdentifier">></</span><span class="synStatement">script</span><span class="synIdentifier">></span>
<span class="synIdentifier"><</span><span class="synStatement">script</span><span class="synIdentifier"> </span><span class="synType">type</span><span class="synIdentifier">=</span><span class="synConstant">"text/javascript"</span><span class="synIdentifier">></span>
<span class="synSpecial"> $</span>(<span class="synIdentifier">function</span>()<span class="synIdentifier">{</span>
<span class="synSpecial"> $</span>(<span class="synConstant">'.datepicker'</span>)<span class="synSpecial">.datepicker</span>()<span class="synSpecial">;</span>
<span class="synSpecial"> $</span>(<span class="synConstant">'.timepicker'</span>)<span class="synSpecial">.timepicker</span>()<span class="synSpecial">;</span>
<span class="synSpecial"> </span><span class="synIdentifier">}</span>)<span class="synSpecial">;</span>
<span class="synSpecial"> </span><span class="synIdentifier"></</span><span class="synStatement">script</span><span class="synIdentifier">></span>
</pre>
<h3>その他の備忘録</h3>
<ul>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/jquery">jquery</a>はver3.0.0以上じゃないとだめっぽい(;´Д`)</li>
</ul>
<h3>まとめ</h3>
<p>こういうのぱっと気付けない<a class="keyword" href="http://d.hatena.ne.jp/keyword/%28%A1%AD%A1%A6%A6%D8%A1%A6%60%29">(´・ω・`)</a></p>
Namihira
IV&Vに関する関連情報
hatenablog://entry/17391345971641029545
2018-05-03T10:34:44+09:00
2018-05-03T10:34:44+09:00 背景 業務に参考になりそうな情報をまとめておきます(´Д`) 各種情報 JAXAでのIV&V ホームページ JAXA IV&V まとめ 百聞一見にしかず(´・ω・`)
<h3>背景</h3>
<p>業務に参考になりそうな情報をまとめておきます(´Д`)</p>
<h3>各種情報</h3>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/JAXA">JAXA</a>でのIV&V</h4>
<ul>
<li>ホームページ
<ul>
<li><a href="http://stage.tksc.jaxa.jp/jedi/devel/ivv_project/home/index.html">JAXA IV&V</a></li>
</ul>
</li>
</ul>
<h3>まとめ</h3>
<p>百聞一見にしかず(´・ω・`)</p>
Namihira
Google AnalyticsでPDFビュー数をカウントするときの作業メモ
hatenablog://entry/17391345971632149790
2018-04-04T09:05:47+09:00
2018-04-04T09:17:41+09:00 背景 Google Analytics(GA)を導入しているサイトにてPDFを公開しているときに、そのPDFの閲覧数をカウントしたかったので対応したときのメモです。 作業メモ サイト修正 以下のようなときに (※bootstrapタグ含む) <a class="btn btn-primary" href="file/hoge.pdf" role="button">見る</a> 以下のようにする <a class="btn btn-primary" href="file/hoge.pdf" role="button" onclick="gtag('event', 'action', {'even…
<h3>背景</h3>
<p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Google%20Analytics">Google Analytics</a>(GA)を導入しているサイトにてPDFを公開しているときに、そのPDFの閲覧数をカウントしたかったので対応したときのメモです。</p>
<h3>作業メモ</h3>
<h4>サイト修正</h4>
<p>以下のようなときに (※bootstrapタグ含む)</p>
<pre class="code lang-html" data-lang="html" data-unlink><span class="synIdentifier"><</span><span class="synStatement">a</span><span class="synIdentifier"> </span><span class="synType">class</span><span class="synIdentifier">=</span><span class="synConstant">"btn btn-primary"</span><span class="synIdentifier"> </span><span class="synType">href</span><span class="synIdentifier">=</span><span class="synConstant">"file/hoge.pdf"</span><span class="synIdentifier"> role=</span><span class="synConstant">"button"</span><span class="synIdentifier">></span><span class="synUnderlined">見る</span><span class="synIdentifier"></</span><span class="synStatement">a</span><span class="synIdentifier">></span>
</pre>
<p>以下のようにする</p>
<pre class="code lang-html" data-lang="html" data-unlink><span class="synIdentifier"><</span><span class="synStatement">a</span><span class="synIdentifier"> </span><span class="synType">class</span><span class="synIdentifier">=</span><span class="synConstant">"btn btn-primary"</span><span class="synIdentifier"> </span><span class="synType">href</span><span class="synIdentifier">=</span><span class="synConstant">"file/hoge.pdf"</span><span class="synIdentifier"> role=</span><span class="synConstant">"button"</span><span class="synIdentifier"> </span><span class="synSpecial">onclick="gtag</span>(<span class="synConstant">'event'</span><span class="synSpecial">, </span><span class="synConstant">'action'</span><span class="synSpecial">, </span><span class="synIdentifier">{</span><span class="synConstant">'event_category'</span><span class="synSpecial">:</span><span class="synConstant">'file'</span><span class="synSpecial">, </span><span class="synConstant">'event_label'</span><span class="synSpecial">:</span><span class="synConstant">'file/hoge.pdf'</span><span class="synSpecial">, </span><span class="synConstant">'nonInteraction'</span><span class="synSpecial">:</span><span class="synConstant">'1'</span><span class="synIdentifier">}</span>)<span class="synSpecial">;"</span><span class="synIdentifier">></span><span class="synUnderlined">見る</span><span class="synIdentifier"></</span><span class="synStatement">a</span><span class="synIdentifier">></span>
</pre>
<h5>ポイント</h5>
<ul>
<li>GAはページ描画時だけでなく任意の操作(イベント)時も集計できる仕組みがあるので、それを仕込む。(イベント ト<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%E9%A5%C3%A5%AD%A5%F3%A5%B0">ラッキング</a>)</li>
<li>よく分かっていない点(いろいろ試した結果)
<ul>
<li>gtagの第二引数は"action"でないと集計されない?(´・ω・`)ドキュメント上は任意っぽいけど。</li>
<li>"nonInteraction"入れないと集計されない?(´・ω・`)<a class="keyword" href="http://d.hatena.ne.jp/keyword/%C4%BE%B5%A2%CE%A8">直帰率</a>のルール決め要素だから関係なさそうだけど。</li>
</ul>
</li>
</ul>
<h4>確認する</h4>
<p>GAで「イベント」のところに出る。今回の場合は</p>
<ul>
<li>イベント アクション:action</li>
<li>イベント カテゴリ:file</li>
<li>イベント ラベル:file/<a class="keyword" href="http://d.hatena.ne.jp/keyword/hoge">hoge</a>.pdf</li>
</ul>
<p>で集計される。</p>
<h3>参考</h3>
<ul>
<li><a href="https://developers.google.com/analytics/devguides/collection/gtagjs/events">Track Google Analytics Events | Analytics for Web (gtag.js) | Google Developers</a></li>
</ul>
<h3>まとめ</h3>
<p>謎が多い(;´Д`)</p>
Namihira
HTMLリファレンス
hatenablog://entry/8599973812343651297
2018-02-04T10:06:51+09:00
2018-02-04T10:06:51+09:00 背景 簡単なHTML(+JS)を使うときに操作の備忘録です。 操作 hrefのリンクを差し替えたい 固定のプレフィックスを付けたいとき。あとで修正が起こりそうな場所に利用。 ・・・ <a id="id_link_download" class="btn btn-link" href="download/index.html">Download</a> ・・・ <script> var prefix = "../20180204/"; var obj = $("#id_link_download") var before = obj.attr("href"); obj.attr("href", …
<h3>背景</h3>
<p>簡単なHTML(+JS)を使うときに操作の備忘録です。</p>
<h3>操作</h3>
<h4>hrefのリンクを差し替えたい</h4>
<ul>
<li>固定のプレフィックスを付けたいとき。あとで修正が起こりそうな場所に利用。</li>
</ul>
<pre class="code lang-html" data-lang="html" data-unlink>・・・
<span class="synIdentifier"><</span><span class="synStatement">a</span><span class="synIdentifier"> </span><span class="synType">id</span><span class="synIdentifier">=</span><span class="synConstant">"id_link_download"</span><span class="synIdentifier"> </span><span class="synType">class</span><span class="synIdentifier">=</span><span class="synConstant">"btn btn-link"</span><span class="synIdentifier"> </span><span class="synType">href</span><span class="synIdentifier">=</span><span class="synConstant">"download/index.html"</span><span class="synIdentifier">></span><span class="synUnderlined">Download</span><span class="synIdentifier"></</span><span class="synStatement">a</span><span class="synIdentifier">></span>
・・・
<span class="synIdentifier"><</span><span class="synStatement">script</span><span class="synIdentifier">></span>
<span class="synIdentifier">var</span><span class="synSpecial"> prefix = </span><span class="synConstant">"../20180204/"</span><span class="synSpecial">;</span>
<span class="synIdentifier">var</span><span class="synSpecial"> obj = $</span>(<span class="synConstant">"#id_link_download"</span>)
<span class="synIdentifier">var</span><span class="synSpecial"> before = obj.attr</span>(<span class="synConstant">"href"</span>)<span class="synSpecial">;</span>
<span class="synSpecial">obj.attr</span>(<span class="synConstant">"href"</span><span class="synSpecial">, prefix + before</span>)<span class="synSpecial">;</span>
<span class="synIdentifier"></</span><span class="synStatement">script</span><span class="synIdentifier">></span>
</pre>
<h4>HTMLの一部にHTMLを入れたいとき</h4>
<ul>
<li>HTMLの共通化。</li>
<li>※テンプレートとか使わない縛りのとき。</li>
</ul>
<pre class="code lang-html" data-lang="html" data-unlink>・・・
<span class="synIdentifier"><</span><span class="synStatement">div</span><span class="synIdentifier"> </span><span class="synType">id</span><span class="synIdentifier">=</span><span class="synConstant">"id_footer"</span><span class="synIdentifier">></span>
<span class="synIdentifier"></</span><span class="synStatement">div</span><span class="synIdentifier">></span>
・・・
<span class="synIdentifier"><</span><span class="synStatement">script</span><span class="synIdentifier">></span>
<span class="synSpecial">$</span>(<span class="synIdentifier">function</span>()<span class="synIdentifier">{</span>
<span class="synSpecial"> $</span>(<span class="synConstant">"#id_footer"</span>)<span class="synSpecial">.load</span>(<span class="synConstant">"../common/footer.html"</span>)<span class="synSpecial">;</span>
<span class="synIdentifier">}</span>)<span class="synSpecial">;</span>
<span class="synIdentifier"></</span><span class="synStatement">script</span><span class="synIdentifier">></span>
</pre>
<h3>まとめ</h3>
<p>ゴリゴリヽ(^o^)丿</p>
Namihira
2017年 活動報告
hatenablog://entry/8599973812331093248
2017-12-29T18:19:11+09:00
2017-12-30T10:09:26+09:00 背景 2017年も終わるので、今年のキーワードを雑記します〆(´Д`) キーワード(順不同) IV&V もろもろやった。 ソフトウェアに対する第三者によるリスク評価 以下、参照 宇宙機ソフトウェアの信頼性向上|第三研究ユニット(旧 情報・計算工学センター) 以下、聴講 「第15回クリティカルソフトウェアワークショップ(15thWOCS2)」に行ってきました - なみひらブログ 来年は作業比率が下がりそう。 GSN よく使った。 主張のモデルするための手法、記法(ツリー型) 主張を支える前提や根拠を示せることが特徴。 自動車業界や航空業界での安全保証や、上記のIV&Vで活用されている。 以下、参…
<h3>背景</h3>
<p>2017年も終わるので、今年のキーワードを雑記します〆(´Д`)</p>
<h3>キーワード(順不同)</h3>
<h4>IV&V</h4>
<ul>
<li>もろもろやった。</li>
<li>ソフトウェアに対する第三者によるリスク評価</li>
<li>以下、参照
<ul>
<li><a href="http://stage.tksc.jaxa.jp/jedi/devel/devel01.html">宇宙機ソフトウェアの信頼性向上|第三研究ユニット(旧 情報・計算工学センター)</a></li>
</ul>
</li>
<li>以下、聴講
<ul>
<li><a href="http://namihira.hatenablog.com/entry/20171202/1512176104">「第15回クリティカルソフトウェアワークショップ(15thWOCS2)」に行ってきました - なみひらブログ</a></li>
</ul>
</li>
<li>来年は作業比率が下がりそう。</li>
</ul>
<h4>GSN</h4>
<ul>
<li>よく使った。</li>
<li>主張のモデルするための手法、記法(ツリー型)</li>
<li>主張を支える前提や根拠を示せることが特徴。</li>
<li>自動車業界や航空業界での安全保証や、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%BE%E5%B5%AD">上記</a>のIV&Vで活用されている。</li>
<li>以下、参照
<ul>
<li><a href="http://blogs.itmedia.co.jp/hiranabe/2013/11/goal-structuring-network.html">GSN(Goal Structuring Notation)解説:An Agile Way:オルタナティブ・ブログ</a></li>
</ul>
</li>
</ul>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/ICSE">ICSE</a></h4>
<ul>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%BD%A5%D5%A5%C8%A5%A6%A5%A7%A5%A2%B9%A9%B3%D8">ソフトウェア工学</a>のトップカンファレンスに論文を投稿。<a href="https://www.icse2018.org/">ICSE 2018</a>
<ul>
<li>結果は落選(´・ω・`)</li>
</ul>
</li>
<li>論文英語10ページ書いたのは良い経験。</li>
<li>新規性と有効性の明確さが大切。
<ul>
<li>先行研究を調べるのも大変。</li>
</ul>
</li>
<li>この学会は意外と現場寄りの内容が多くて面白い。
<ul>
<li><a href="https://sites.google.com/site/sereadings/icse2017-reading">ICSE 2017 勉強会 - #sereading</a></li>
</ul>
</li>
<li>来年もちょくちょく出す予定。</li>
</ul>
<h4>安全分析</h4>
<ul>
<li>リスクをみつけるためのもろもろの手法に触れた。</li>
<li>STAMP/STPA
<ul>
<li>モジュール間のやりとり(相互作用)に着目したリスク分析手法</li>
<li>新しめの手法。安全保証の重鎮であるナンシー・G・レブソンが提唱</li>
</ul>
</li>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%EC%A5%B8%A5%EA%A5%A8%A5%F3%A5%B9">レジリエンス</a>エンジニアリング/FRAM
<ul>
<li>成功事象に着目したリスク分析手法</li>
<li>「想定外に起こりそうなリスクを探すのもよいけど、実際のサービスはほとんど成功してるね。なぜ成功しているかを分析しようよ」という着眼点が面白い。</li>
<li>新しめの考え方、手法。</li>
</ul>
</li>
<li>FMEA/<a class="keyword" href="http://d.hatena.ne.jp/keyword/FTA">FTA</a>
<ul>
<li>FMEA:最小構成物の壊れ方、その影響を調べる手法(<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%DC%A5%C8%A5%E0%A5%A2%A5%C3%A5%D7">ボトムアップ</a>)</li>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/FTA">FTA</a>:<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C8%A5%C3%A5%D7%A5%C0%A5%A6%A5%F3">トップダウン</a>で起こってほしくないことの分解手法</li>
<li>古い手法だが、安全保証界隈で良く使われている。</li>
</ul>
</li>
</ul>
<h4>HTML</h4>
<ul>
<li>部署の情報提供のサイトを作ってと言われたので作った。</li>
<li>以下の縛りプレイが面白い。
<ul>
<li>庶務さんが今後メンテできるやつ。</li>
<li>サーバへの<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%DF%A5%C9%A5%EB%A5%A6%A5%A7%A5%A2">ミドルウェア</a>導入ダメ。(厳密にいうとお願いすればたぶん導入してくれる)</li>
</ul>
</li>
<li>静的ファイル、簡易なJSだけで頑張った。</li>
<li>お世話になったサービス
<ul>
<li><a href="http://www.venezia-works.com/bst/">Bootstrap Editor & AMP</a>
<ul>
<li>おしゃれな雛形</li>
</ul>
</li>
<li><a href="https://forms.office.com/">Microsoft Forms</a>
<ul>
<li>申請者登録に利用</li>
</ul>
</li>
<li><a href="https://flow.microsoft.com/ja-jp/">プロセスとタスクの自動化 | Microsoft Flow</a>
<ul>
<li>申請者登録後のあれこれに利用。</li>
</ul>
</li>
</ul>
</li>
</ul>
<h4>TED</h4>
<ul>
<li>初めて行けたので良かった。</li>
<li><a href="http://namihira.hatenablog.com/entry/20170604/1496538632">「TEDxTsukuba2017」に行ってきました - なみひらブログ</a></li>
</ul>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/Firefox">Firefox</a></h4>
<ul>
<li>昔から<a class="keyword" href="http://d.hatena.ne.jp/keyword/Firefox">Firefox</a>派。</li>
<li>大型更新があった。</li>
<li>気持ち早くなった気がする( ゚д゚ )</li>
<li>利用してたアドインがほとんど死んだ(´・ω・`)</li>
</ul>
<h4>業務の外出</h4>
<ul>
<li>これまで引きこもりエンジニアだったけど、多々の別企業さんとの打ち合わせで週一以上で外出するようになった。</li>
<li>つくばからの移動が大変(;´Д`)</li>
</ul>
<h4>もろもろの技術</h4>
<ul>
<li>流行り(?)の技術はちょこっと触るけど、形になっているものがない(;´Д`)
<ul>
<li>Go, Docker, AI(TensorFlow)</li>
</ul>
</li>
<li>今年の<a class="keyword" href="http://d.hatena.ne.jp/keyword/Java">Java</a>統合環境は、<a class="keyword" href="http://d.hatena.ne.jp/keyword/NetBeans">NetBeans</a>に一瞬切り替えたけど、馴染まなかったので結局<a class="keyword" href="http://d.hatena.ne.jp/keyword/Eclipse">Eclipse</a>に戻った。</li>
<li>今年のエディタは<a class="keyword" href="http://d.hatena.ne.jp/keyword/Atom">Atom</a>に落ち着いた。</li>
<li>来年なんか頑張る</li>
</ul>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/Google%20Home">Google Home</a> Mini</h4>
<ul>
<li>半額で売っていたので買った。</li>
<li>「<a class="keyword" href="http://d.hatena.ne.jp/keyword/OK%20Google">OK Google</a> 音楽かけて」
<ul>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/Spotify">Spotify</a>内の音楽が適当にかかるか、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Google%20Play%20Music">Google Play Music</a>内の音楽がかかるのでよい。</li>
</ul>
</li>
<li>「<a class="keyword" href="http://d.hatena.ne.jp/keyword/OK%20Google">OK Google</a> おはよう」
<ul>
<li>天気、気温、今日のスケジュール、英語ニュース、時事ニュースがかかるのがよい</li>
</ul>
</li>
<li>他の家電についても「声で操作したい」と思うようになってきた。</li>
<li>来年はもっとハックしたい(´Д`)</li>
</ul>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/iPad">iPad</a> Pro</h4>
<ul>
<li>5年前(?)に買った<a class="keyword" href="http://d.hatena.ne.jp/keyword/iPad">iPad</a>(第三世代)から買い替え。</li>
<li>薄くて、サクサク動いてよい(´Д`)</li>
</ul>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/MacBook%20Pro">MacBook Pro</a></h4>
<ul>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/MacBook%20Air">MacBook Air</a>(2010)から買い替え。</li>
<li>画面きれい。作業体感はそれほど変わらない(´・ω・`)?</li>
</ul>
<h4>マラソン</h4>
<ul>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A4%C4%A4%AF%A4%D0%A5%DE%A5%E9%A5%BD%A5%F3">つくばマラソン</a>参加
<ul>
<li><a href="http://www.tsukuba-marathon.com/">つくばマラソン</a></li>
</ul>
</li>
<li>「板橋Cityマラソン2015」以来。</li>
<li>練習を定期的にできていた(週1、12キロ)ので、自己ベストだせた(*´Д`*)</li>
</ul>
<h4>ブログ</h4>
<ul>
<li>少ない(;´Д`)
<ul>
<li>年(投稿数)</li>
<li>2017 (14)</li>
<li>2016 (32)</li>
<li>2015 (26)</li>
<li>2014 (53)</li>
<li>2013 (53)</li>
<li>2012 (29)</li>
</ul>
</li>
<li>書くことの<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A4%B7%A4%AD%A4%A4%C3%CD">しきい値</a>を下げる予定(;´Д`)</li>
</ul>
<h4>本</h4>
<ul>
<li>ざっくり印象に残った本
<ul>
<li>サピエンス全史
<ul>
<li>印象に残った。面白かった。(まだ上巻だけ)</li>
<li>下巻もそろそろ(?)読む。</li>
<li><div class="hatena-asin-detail"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/430922671X/namihira-22/"><img src="https://images-fe.ssl-images-amazon.com/images/I/51MSnnvzg7L._SL160_.jpg" class="hatena-asin-detail-image" alt="サピエンス全史(上)文明の構造と人類の幸福" title="サピエンス全史(上)文明の構造と人類の幸福"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/430922671X/namihira-22/">サピエンス全史(上)文明の構造と人類の幸福</a></p><ul><li><span class="hatena-asin-detail-label">作者:</span> ユヴァル・ノア・ハラリ,柴田裕之</li><li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%B2%CF%BD%D0%BD%F1%CB%BC%BF%B7%BC%D2">河出書房新社</a></li><li><span class="hatena-asin-detail-label">発売日:</span> 2016/09/08</li><li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li><li><a href="http://d.hatena.ne.jp/asin/430922671X/namihira-22" target="_blank">この商品を含むブログ (41件) を見る</a></li></ul></div><div class="hatena-asin-detail-foot"></div></div></li>
</ul>
</li>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/%BF%CD%B9%A9%C3%CE%C7%BD">人工知能</a>は人間を超えるか
<ul>
<li>印象に残った。面白かった。</li>
<li>人口知能の歴史、課題がわかりやすい。</li>
<li><div class="hatena-asin-detail"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00UAAK07S/namihira-22/"><img src="https://images-fe.ssl-images-amazon.com/images/I/51mWcqy%2BipL._SL160_.jpg" class="hatena-asin-detail-image" alt="人工知能は人間を超えるか (角川EPUB選書)" title="人工知能は人間を超えるか (角川EPUB選書)"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00UAAK07S/namihira-22/">人工知能は人間を超えるか (角川EPUB選書)</a></p><ul><li><span class="hatena-asin-detail-label">作者:</span> 松尾豊</li><li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/KADOKAWA">KADOKAWA</a> / <a class="keyword" href="http://d.hatena.ne.jp/keyword/%C3%E6%B7%D0%BD%D0%C8%C7">中経出版</a></li><li><span class="hatena-asin-detail-label">発売日:</span> 2015/03/10</li><li><span class="hatena-asin-detail-label">メディア:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Kindle">Kindle</a>版</li><li><a href="http://d.hatena.ne.jp/asin/B00UAAK07S/namihira-22" target="_blank">この商品を含むブログ (35件) を見る</a></li></ul></div><div class="hatena-asin-detail-foot"></div></div></li>
</ul>
</li>
</ul>
</li>
</ul>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/SpaceX">SpaceX</a></h4>
<ul>
<li>もろもろの進歩がすごい</li>
<li>来年はBlue Originとの競争が激しそう</li>
<li>日本もHAKUTO、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%DB%A5%EA%A5%A8%A5%E2%A5%F3">ホリエモン</a>あたりの活躍が楽しみ。<a class="keyword" href="http://d.hatena.ne.jp/keyword/JAXA">JAXA</a>もがんがん打ち上げてほしい(*´Д`*)
<ul>
<li>HAKUTOに<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%AF%A5%E9%A5%A6%A5%C9%A5%D5%A5%A1%A5%F3%A5%C7%A5%A3%A5%F3%A5%B0">クラウドファンディング</a>した。
<ul>
<li><a href="https://team-hakuto.jp/">HAKUTO</a></li>
</ul>
</li>
</ul>
</li>
</ul>
<h4>乃木坂</h4>
<ul>
<li>東京ドーム公演に行った。
<ul>
<li>好きな曲一通りやってくれたので良かった(*´Д`*)</li>
</ul>
</li>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/%BF%B7%B9%F1%CE%A9%C8%FE%BD%D1%B4%DB">新国立美術館</a>(@六本木、乃木坂)も行った。
<ul>
<li>おしゃれだった(*´Д`*)
<ul>
<li><a href="http://www.nact.jp/">国立新美術館 THE NATIONAL ART CENTER, TOKYO</a></li>
</ul>
</li>
</ul>
</li>
</ul>
<h3>まとめ</h3>
<ul>
<li>ご愛読ありがとうございました!</li>
<li>なみひらの来年にご期待ください!</li>
<li><a href="https://image.middle-edge.jp/medium/4597895e-18ed-4516-abc5-6f706b41e7bd.gif?1479003233" class="http-image" target="_blank"><img src="https://image.middle-edge.jp/medium/4597895e-18ed-4516-abc5-6f706b41e7bd.gif?1479003233" class="http-image" alt="https://image.middle-edge.jp/medium/4597895e-18ed-4516-abc5-6f706b41e7bd.gif?1479003233"></a></li>
</ul>
Namihira
「第15回クリティカルソフトウェアワークショップ(15thWOCS2)」に行ってきました
hatenablog://entry/8599973812322395880
2017-12-02T09:55:04+09:00
2017-12-02T09:55:49+09:00 お仕事に関係するので行ってきました。メモっときます。 primal-colors.com https://www.ipa.go.jp/sec/events/20171129.html 開催概要 (以下抜粋) クリティカルソフトウェアワークショップ(WOCS2: Workshop on Critical Software System)は、国立研究開発法人宇宙航空研究開発機構(JAXA)と独立行政法人情報処理推進機構(IPA)が共催するワークショップです。 WOCS2は、宇宙・航空、医療、鉄道、自動車などのミッションクリティカルなソフトウェアの開発・運用・保守に関する技術やプロセスに焦点を当て、…
<p>お仕事に関係するので行ってきました。メモっときます。</p>
<p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fprimal-colors.com%2F15thwocs2%2F" title="15th WOCS2 | 15th workshop on critical Software System" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="https://primal-colors.com/15thwocs2/">primal-colors.com</a></cite></p>
<p><a href="https://www.ipa.go.jp/sec/events/20171129.html">https://www.ipa.go.jp/sec/events/20171129.html</a></p>
<h3>開催概要</h3>
<p>(以下抜粋)</p>
<blockquote><p> クリティカルソフトウェアワークショップ(WOCS2: Workshop on Critical Software System)は、国立研究開発法人<a class="keyword" href="http://d.hatena.ne.jp/keyword/%B1%A7%C3%E8%B9%D2%B6%F5%B8%A6%B5%E6%B3%AB%C8%AF%B5%A1%B9%BD">宇宙航空研究開発機構</a>(<a class="keyword" href="http://d.hatena.ne.jp/keyword/JAXA">JAXA</a>)と<a class="keyword" href="http://d.hatena.ne.jp/keyword/%C6%C8%CE%A9%B9%D4%C0%AF%CB%A1%BF%CD">独立行政法人</a><a class="keyword" href="http://d.hatena.ne.jp/keyword/%BE%F0%CA%F3%BD%E8%CD%FD%BF%E4%BF%CA%B5%A1%B9%BD">情報処理推進機構</a>(<a class="keyword" href="http://d.hatena.ne.jp/keyword/IPA">IPA</a>)が共催するワークショップです。</p>
<p> WOCS2は、宇宙・航空、医療、鉄道、自動車などのミッションクリティカルなソフトウェアの開発・運用・保守に関する技術やプロセスに焦点を当て、産業分野の枠、さらには産・学・官の枠をも超えた技術者・研究者の情報交換の場として実施してきました。組込みシステムや社会インフラに関わるシステムで、いかに信頼性・安全性を確保したソフトウェアシステムを作り上げるかを議論し、ソフトウェアシステムの信頼性・安全性の分野で貴重な役割を果たしています。</p>
<p> 第15回目となる今回のWOCS2は「現場で働き始めたシステムズエンジニアリングなモデルたち」をメインテーマに掲げ、サブテーマを「STAMP,FRAM and IV&V」として、開催します。</p></blockquote>
<ul>
<li>日時
<ul>
<li>2017/11/29(水)13:30~17:30</li>
<li>2017/11/30(木)10:00~17:00
<ul>
<li>自分は都合により、2017/11/30(木)10:00~15:00だけ参加。</li>
</ul>
</li>
</ul>
</li>
<li>場所
<ul>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/%B7%C4%D8%E6%B5%C1%BD%CE%C2%E7%B3%D8">慶應義塾大学</a> 三田キャンパス</li>
</ul>
</li>
<li>主催
<ul>
<li>国立研究開発法人<a class="keyword" href="http://d.hatena.ne.jp/keyword/%B1%A7%C3%E8%B9%D2%B6%F5%B8%A6%B5%E6%B3%AB%C8%AF%B5%A1%B9%BD">宇宙航空研究開発機構</a>(<a class="keyword" href="http://d.hatena.ne.jp/keyword/JAXA">JAXA</a>)</li>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/%C6%C8%CE%A9%B9%D4%C0%AF%CB%A1%BF%CD">独立行政法人</a><a class="keyword" href="http://d.hatena.ne.jp/keyword/%BE%F0%CA%F3%BD%E8%CD%FD%BF%E4%BF%CA%B5%A1%B9%BD">情報処理推進機構</a>(<a class="keyword" href="http://d.hatena.ne.jp/keyword/IPA">IPA</a>)</li>
</ul>
</li>
<li>参加者数
<ul>
<li>2日で約200人?
<ul>
<li>40代以上が7割?</li>
</ul>
</li>
</ul>
</li>
<li>発表資料
<ul>
<li>以下にのちほど添付される?
<ul>
<li><a href="https://www.ipa.go.jp/sec/events/20171129.html">https://www.ipa.go.jp/sec/events/20171129.html</a></li>
</ul>
</li>
</ul>
</li>
</ul>
<h3>会場雰囲気</h3>
<p><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/N/Namihira/20171130/20171130091713.jpg" alt="f:id:Namihira:20171130091713j:plain" title="f:id:Namihira:20171130091713j:plain" class="hatena-fotolife" itemprop="image"></span></p>
<h3>セッションメモ</h3>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/IPA">IPA</a>最新成果紹介</h4>
<ul>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/IPA">IPA</a>でまとめた現在のソフトウェア開発事情、傾向、ハンドブック制定の紹介</li>
<li>組み込み製品と<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A8%A5%F3%A5%BF%A1%BC%A5%D7%A5%E9%A5%A4%A5%BA">エンタープライズ</a>製品の比較
<ul>
<li>組み込みのほうがより後工程に工数がかかる</li>
<li>全体をみれる人が求められる</li>
</ul>
</li>
<li>マネージャの一番の関心事は品質向上</li>
<li>組み込みもIoTの流れから新たな保証要求(セキュリティなど)が必要。</li>
<li>所感
<ul>
<li>人材や工数比率のデータが、組み込み固有の傾向と問題という感じがしなかった(´・ω・`)</li>
</ul>
</li>
</ul>
<h4>IV&Vセッション</h4>
<ul>
<li>IV&V(Independent Verification and Validation)とは、第三者による検証や評価のこと。</li>
<li>IV&V技術伝承問題
<ul>
<li>初心者に熟練者の技術や考え方を伝えるか。</li>
<li>IV&Vで必要となる知見をGSNを使って可視化・体系化している。
<ul>
<li>GSN:<a href="http://blogs.itmedia.co.jp/hiranabe/2013/11/goal-structuring-network.html">GSN(Goal Structuring Notation)解説:An Agile Way:オルタナティブ・ブログ</a></li>
</ul>
</li>
</ul>
</li>
<li>IV&Vトレーニングの開発~技術者を育てるのは難しい~
<ul>
<li>ソフトウェア開発者が自分で学ぶことが多い。他業界だとその傾向が低いらしい</li>
<li>ソフトウェア技術者がソフトウェア技術者に教育するノウハウがない。</li>
<li>教育も要求が曖昧なソフトウェア開発だと思って、<a class="keyword" href="http://d.hatena.ne.jp/keyword/PDCA">PDCA</a>を回しながら改善すること。</li>
<li>体系化と改善に「<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A4%A5%F3%A5%B9%A5%C8%A5%E9%A5%AF%A5%B7%A5%E7%A5%CA%A5%EB%A5%C7%A5%B6%A5%A4%A5%F3">インストラクショナルデザイン</a>(ID)」という思想を活用した。
<ul>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A4%A5%F3%A5%B9%A5%C8%A5%E9%A5%AF%A5%B7%A5%E7%A5%CA%A5%EB%A5%C7%A5%B6%A5%A4%A5%F3">インストラクショナルデザイン</a>:<a href="http://satt.jp/dev/instructional-design.htm">インストラクショナルデザインとは - 最適な学習効果のための教育設計 | SATT</a></li>
</ul>
</li>
</ul>
</li>
<li>宇宙飛行士訓練開発手法を適用したIV&Vトレーニング
<ul>
<li>宇宙飛行士の教育に使った<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D5%A5%EC%A1%BC%A5%E0%A5%EF%A1%BC%A5%AF">フレームワーク</a>をIV&V技術者の教育にも適用。</li>
<li>その人がもつ「素質」と「能力」は区別すること。</li>
<li>教育を受けることができるのは「素質」がある人。素質とは論理的思考など。</li>
<li>教育で伸ばせるのは「能力」だけ。</li>
<li>IV&V技術者教育のサービス提供します。
<ul>
<li><a href="http://www.jamss.co.jp/training/training_ivv.html">ソフトウェアの安全性・信頼性を高めるIV&V技術者教育コース│JAMSS(有人宇宙システム株式会社)</a></li>
</ul>
</li>
</ul>
</li>
</ul>
<h3>STAMP/FRAMセッション</h3>
<ul>
<li>安全解析に利用されるSTAMPとFRAMについての考え方や使い方について説明
<ul>
<li>STAMP:<a href="http://monoist.atmarkit.co.jp/mn/articles/1702/03/news041.html">6年かかっていた分析が3年で終わる、新たな安全解析手法「STAMP/STPA」とは? (1/2) - MONOist(モノイスト)</a></li>
<li>FRAM:<a href="http://www.kaibundo.jp/2013/05/72998/">http://www.kaibundo.jp/2013/05/72998/</a></li>
</ul>
</li>
<li>FRAMは安全分析手法ではなく、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%E2%A5%C7%A5%EA%A5%F3%A5%B0">モデリング</a>方法。<a class="keyword" href="http://d.hatena.ne.jp/keyword/UML">UML</a>と同列。</li>
<li>FRAMは<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%EC%A5%B8%A5%EA%A5%A8%A5%F3%A5%B9">レジリエンス</a>エンジニアリングでの<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%E2%A5%C7%A5%EA%A5%F3%A5%B0">モデリング</a>手法。<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%EC%A5%B8%A5%EA%A5%A8%A5%F3%A5%B9">レジリエンス</a>エンジニアリングでの安全解析手法(リスクを見つける、対策する)は提唱者が現在検討中。
<ul>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%EC%A5%B8%A5%EA%A5%A8%A5%F3%A5%B9">レジリエンス</a>エンジニアリング:<a href="http://techon.nikkeibp.co.jp/atcl/column/15/412221/121900017/">Resilience Engineeringの適用 - 日経テクノロジーオンライン</a></li>
</ul>
</li>
<li>STAMPよりもFRAMのほうが情報量が多い。データやり取りの位置付けが表現され、あやしそうなところに気づける。</li>
<li>STAMPは仕様が曖昧な段階(上流工程)でも実施できる。いつでも実施できる。</li>
<li>FRAMで機能間やり取りを可視化することにより、機能配置や<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A1%BC%A5%AD%A5%C6%A5%AF%A5%C1%A5%E3">アーキテクチャ</a>の改善にも利用できる。</li>
<li>機能において隠れている前提を見つけるのが難しい。</li>
<li>どうしてJRの全ての踏切が協調してうまく動作しているのか誰も分かっていない。</li>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/%C0%F8%BA%DF%C5%AA">潜在的</a>にリスクを見つける(STAMP)のと、うまくいく成功を分析する(FRAM)は両方必要。</li>
<li>現在AIに対してFRAMを適用することを検討している。</li>
<li>所感
<ul>
<li>前から気になっていた<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%EC%A5%B8%A5%EA%A5%A8%A5%F3%A5%B9">レジリエンス</a>エンジニアリングとFRAMの丁寧な説明がわかりやすくよかった。</li>
</ul>
</li>
</ul>
<h3>全体所感</h3>
<ul>
<li>STAMP/FRAMの安全関連の手法について理解が深まったので良かった(*´Д`*)</li>
<li>IV&V・STAMP・FRAMの各業界での適用事例が知りたい(*´Д`*)</li>
</ul>
<h3>まとめ</h3>
<p>想定外を想定したい( ˘ω˘ )</p>
Namihira
Dockerコマンドリファレンス
hatenablog://entry/8599973812294200372
2017-09-02T11:35:52+09:00
2017-09-02T11:36:25+09:00 背景 Docker関連のコマンドをメモっときます。(自分用) コマンド ローカルディレクトリをマウントしつつ、コンテナ名を指定しつつ、TensorFlowコンテナを起動しつつ、シェルに入る docker run --name tf -v /Users/namihira/work/tensorflow:/tensorflow_dev -it gcr.io/tensorflow/tensorflow bash
<h3>背景</h3>
<p>Docker関連のコマンドをメモっときます。(自分用)</p>
<h3>コマンド</h3>
<h4>ローカル<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C7%A5%A3%A5%EC%A5%AF%A5%C8">ディレクト</a>リをマウントしつつ、コンテナ名を指定しつつ、TensorFlowコンテナを起動しつつ、シェルに入る</h4>
<pre class="code" data-lang="" data-unlink>docker run --name tf -v /Users/namihira/work/tensorflow:/tensorflow_dev -it gcr.io/tensorflow/tensorflow bash</pre>
Namihira
「TEDxTsukuba2017」に行ってきました
hatenablog://entry/10328749687259130797
2017-06-04T10:10:32+09:00
2017-06-04T10:10:32+09:00 だいぶ遅くなったが、TEDxTsukuba2017に参加したのでメモっときます。 TEDxTsukuba2017 開催概要 日時 2017/05/14(日) 12:30 - 17:30 場所 宇宙航空研究開発機構筑波宇宙センター 主催 TEDxTsukuba 参加者数 約100人? 公演資料 見当たらない(;´Д`)非公開? 会場雰囲気 ロゴ 会場雰囲気 セッションメモ 筑波大学芸術系特命教授 逢坂 卓郎 宇宙・科学を使った芸術家 www.takuro-osaka.com 所感 宇宙ステーションで芸術の実験も行われていることを初めて知った(;´Д`) 益子焼陶芸家 ユアン クレイグ 自然との向…
<p>だいぶ遅くなったが、TEDxTsukuba2017に参加したのでメモっときます。<br/>
<a href="http://www.tedxtsukuba.com/index.html">TEDxTsukuba2017</a></p>
<h3>開催概要</h3>
<ul>
<li>日時
<ul>
<li>2017/05/14(日) 12:30 - 17:30</li>
</ul>
</li>
<li>場所
<ul>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/%B1%A7%C3%E8%B9%D2%B6%F5%B8%A6%B5%E6%B3%AB%C8%AF%B5%A1%B9%BD">宇宙航空研究開発機構</a>筑波宇宙センター</li>
</ul>
</li>
<li>主催
<ul>
<li>TEDxTsukuba</li>
</ul>
</li>
<li>参加者数
<ul>
<li>約100人?</li>
</ul>
</li>
<li>公演資料
<ul>
<li>見当たらない(;´Д`)非公開?</li>
</ul>
</li>
</ul>
<h3>会場雰囲気</h3>
<ul>
<li>ロゴ<br/>
<span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/N/Namihira/20170514/20170514151028.jpg" alt="f:id:Namihira:20170514151028j:plain" title="f:id:Namihira:20170514151028j:plain" class="hatena-fotolife" itemprop="image"></span></li>
<li>会場雰囲気<br/>
<span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/N/Namihira/20170514/20170514141926.jpg" alt="f:id:Namihira:20170514141926j:plain" title="f:id:Namihira:20170514141926j:plain" class="hatena-fotolife" itemprop="image"></span></li>
</ul>
<h3>セッションメモ</h3>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/%C3%DE%C7%C8%C2%E7%B3%D8">筑波大学</a>芸術系特命教授 逢坂 卓郎</h4>
<ul>
<li>宇宙・科学を使った芸術家<br/>
<iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fwww.takuro-osaka.com%2Findex.html" title="逢坂卓郎" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="http://www.takuro-osaka.com/index.html">www.takuro-osaka.com</a></cite></li>
<li>所感
<ul>
<li>宇宙ステーションで芸術の実験も行われていることを初めて知った(;´Д`)</li>
</ul>
</li>
</ul>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/%B1%D7%BB%D2%BE%C6">益子焼</a>陶芸家 <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%E6%A5%A2%A5%F3">ユアン</a> クレイグ</h4>
<ul>
<li>自然との向き合い方<br/>
<iframe src="//hatenablog-parts.com/embed?url=https%3A%2F%2Feuanpottery.blogspot.jp" title="ユアン クレイグ的 陶芸生活" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="https://euanpottery.blogspot.jp">euanpottery.blogspot.jp</a></cite></li>
<li>所感
<ul>
<li>自然がなりたがっている形に私はしているだけ。という言葉が印象的(´Д`)</li>
</ul>
</li>
</ul>
<h4>元シルクドソレイユ 粕尾 将一</h4>
<ul>
<li>元シルクドソレイユを解雇されてからどうしたかの話。
<ul>
<li>※解雇は能力不足ではなく、演目構成の変更により縄跳びが演目から外れたため。
<iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fwww.shoichikasuo.com" title="なわとび1本で何でもできるのだ | 元シルクドソレイユ出演者 縄のまっちゃん(粕尾将一)" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="http://www.shoichikasuo.com">www.shoichikasuo.com</a></cite></li>
</ul>
</li>
<li>所感
<ul>
<li>やり通すことがすごい(´Д`)</li>
</ul>
</li>
</ul>
<h4>スピーカーディスカッション①</h4>
<ul>
<li>上の3名のパネルディスカッションがあった。</li>
</ul>
<h4>振付師 黒田 なつ子</h4>
<ul>
<li>体を使った芸術家(?)</li>
<li><a href="https://ameblo.jp/natsuko-kuroda/">黒田なつ子オフィシャルブログ Powered by Ameba</a></li>
<li>所感
<ul>
<li>人の仕草を後世に残すために、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%E2%A1%BC%A5%B7%A5%E7%A5%F3%A5%AD%A5%E3%A5%D7%A5%C1%A5%E3%A1%BC">モーションキャプチャー</a>を使った実験をしているとは発想が面白い。</li>
</ul>
</li>
</ul>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/JAXA">JAXA</a>研究開発部門 開発員 川瀬 誠</h4>
<ul>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/JAXA">JAXA</a>の研究者</li>
<li>所感
<ul>
<li>面白いことを想像しましょうということ大切。</li>
</ul>
</li>
</ul>
<h4>キャリアデザインスクール 我究館館長 熊谷智宏</h4>
<ul>
<li>なりたい姿になるためには小さな決断をするということ。</li>
<li><a href="http://www.gakyukan.net/coaches/kumagai.html">熊谷 智宏(くまがい ともひろ)|就職・転職支援 キャリアデザインスクールの我究館</a></li>
<li>所感
<ul>
<li>確かに節目節目は小さな決断(´Д`)</li>
</ul>
</li>
</ul>
<h3>全体所感</h3>
<ul>
<li>初めてTEDを参加してみて、良い刺激になった。</li>
<li>迫力がすごい。いろいろおしゃれ。</li>
<li>次は前列のクッションに座って聴きたい
<ul>
<li>クッション席は早い者勝ち。</li>
</ul>
</li>
</ul>
<h3>まとめ</h3>
<p>一流すごい(*´Д`*)</p>
Namihira
「JJUG CCC 2017 Spring」に行ってきました
hatenablog://entry/10328749687249740537
2017-05-26T09:25:52+09:00
2017-05-31T07:56:44+09:00 Javaの日本ユーザ会のカンファレンスに行ってきたのでメモっときます。 ※CCCは「Cross Community Conference」の略らしい。 www.java-users.jp 開催概要 日時 2017/05/20(土)9:30-18:30 場所 ベルサール新宿グランド コンファレンスセンター 主催 日本Javaユーザーグループ 参加者数 約1000人? 発表資料 適宜twitterなどを漁る java_cccなど (追記)まとめてくれている人がいた。 ryoichi0102.hatenablog.com 会場雰囲気 受付 会場(このような部屋が8部屋ほどある) セッションメモ 日本…
<p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Java">Java</a>の日本ユーザ会のカンファレンスに行ってきたのでメモっときます。<br/>
※CCCは「Cross Community Conference」の略らしい。</p>
<p><iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fwww.java-users.jp%2Fccc2017spring%2F" title="JJUG CCC 2017 Spring" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="http://www.java-users.jp/ccc2017spring/">www.java-users.jp</a></cite></p>
<h3>開催概要</h3>
<ul>
<li>日時
<ul>
<li>2017/05/20(土)9:30-18:30</li>
</ul>
</li>
<li>場所
<ul>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D9%A5%EB%A5%B5%A1%BC%A5%EB">ベルサール</a>新宿グランド コンファレンスセンター</li>
</ul>
</li>
<li>主催
<ul>
<li>日本<a class="keyword" href="http://d.hatena.ne.jp/keyword/Java">Java</a>ユーザーグループ</li>
</ul>
</li>
<li>参加者数
<ul>
<li>約1000人?</li>
</ul>
</li>
<li>発表資料
<ul>
<li>適宜<a class="keyword" href="http://d.hatena.ne.jp/keyword/twitter">twitter</a>などを漁る
<ul>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/java">java</a>_cccなど</li>
</ul>
</li>
<li>(追記)まとめてくれている人がいた。
<ul>
<li><iframe src="http://ryoichi0102.hatenablog.com/embed/2017/05/20/183624" title="JJUG CCC 2017 Spring スライドまとめ(随時更新) #jjug_ccc - メンチカツには醤油でしょ!!" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="http://ryoichi0102.hatenablog.com/entry/2017/05/20/183624">ryoichi0102.hatenablog.com</a></cite></li>
</ul>
</li>
</ul>
</li>
</ul>
<h3>会場雰囲気</h3>
<ul>
<li>受付<br/>
<span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/N/Namihira/20170520/20170520122926.jpg" alt="f:id:Namihira:20170520122926j:plain" title="f:id:Namihira:20170520122926j:plain" class="hatena-fotolife" itemprop="image"></span></li>
<li>会場(このような部屋が8部屋ほどある)<br/>
<span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/N/Namihira/20170520/20170520141943.jpg" alt="f:id:Namihira:20170520141943j:plain" title="f:id:Namihira:20170520141943j:plain" class="hatena-fotolife" itemprop="image"></span></li>
</ul>
<h3>セッションメモ</h3>
<h4>日本<a class="keyword" href="http://d.hatena.ne.jp/keyword/Java">Java</a>ユーザーグループ 年次総会</h4>
<ul>
<li>会長による活動</li>
<li>申し込んでいて当日不参加が多くて困る。ちゃんとキャンセルしましょう。</li>
<li>参加者の半分が30代なので、託児所を始めてみた。</li>
<li>ユーザグループ結成来年10周年</li>
<li>所感
<ul>
<li>収支報告もあって総会感がすごい( ゚д゚ )</li>
</ul>
</li>
</ul>
<h4>ふつうの<a class="keyword" href="http://d.hatena.ne.jp/keyword/Java">Java</a>コーディング</h4>
<ul>
<li>irofさん
<ul>
<li><a href="http://irof.hateblo.jp">日々常々</a></li>
</ul>
</li>
<li>コードの<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A5%F3%A5%C1%A5%D1%A5%BF%A1%BC%A5%F3">アンチパターン</a>紹介</li>
<li>コードは読み物
<ul>
<li>コードは書くよりも読むことのほうが多い</li>
</ul>
</li>
<li>説明できるコードは良いコード。</li>
<li>所感
<ul>
<li>日頃気をつけていることと、気をつけないといけないことを言ってもらった感じ。</li>
<li>自分は六段ぐらい?</li>
</ul>
</li>
<li><iframe allowfullscreen="true" allowtransparency="true" frameborder="0" height="596" id="talk_frame_392212" mozallowfullscreen="true" src="//speakerdeck.com/player/d04035486c994e2f9c43551bc88b4579" style="border:0; padding:0; margin:0; background:transparent;" webkitallowfullscreen="true" width="710"></iframe><cite class="hatena-citation"><a href="https://speakerdeck.com/irof/hutuufalsejavakodeingu-number-ccc-e1">speakerdeck.com</a></cite></li>
</ul>
<h4>エンプラ開発におけるレガシーアプリケーションの巻き取りとモジュール分割の戦い</h4>
<ul>
<li>元大手<a class="keyword" href="http://d.hatena.ne.jp/keyword/SIer">SIer</a>の方の発表</li>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%EC%A5%AC%A5%B7%A1%BC%A5%B7%A5%B9%A5%C6%A5%E0">レガシーシステム</a>や開発方法の改善事例紹介。
<ul>
<li>元々あったらシステムの運用開発にて、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D5%A5%EC%A1%BC%A5%E0%A5%EF%A1%BC%A5%AF">フレームワーク</a>選定やチームビルディング(振り返り)からCI/CDなど適用事例。</li>
</ul>
</li>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/%C3%B1%C2%CE%A5%C6%A5%B9%A5%C8">単体テスト</a>コードのメソッド名を日本語にしてレビューしやすさを向上させた。</li>
<li>以前の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%EC%A5%AC%A5%B7%A1%BC%A5%B7%A5%B9%A5%C6%A5%E0">レガシーシステム</a>では、本番のwarを解凍して、修正したclassファイルを置き換えて再圧縮してデプロイする。</li>
<li>流行りにのるのではなく、モジュール分割の意味をちゃんと考える
<ul>
<li>「ベンダーを切り口としたモジュール分割」から「リグレッションの局所化など」が目的へ。</li>
</ul>
</li>
<li>所感
<ul>
<li>教科書的な改善事例。</li>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/SIer">SIer</a>などお客さん意向や予算もあるので、改善も進めるもの大変そう。</li>
</ul>
</li>
<li><iframe src="https://www.slideshare.net/slideshow/embed_code/key/hcPQRQEW1ULquM" width="427" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe> <div style="margin-bottom:5px"> <strong> <a href="https://www.slideshare.net/KazuhiroWada/2017spring-jjug-cccf2-76144077" title="2017spring jjug ccc_f2" target="_blank">2017spring jjug ccc_f2</a> </strong> from <strong><a target="_blank" href="https://www.slideshare.net/KazuhiroWada">Kazuhiro Wada</a></strong> </div><cite class="hatena-citation"><a href="https://www.slideshare.net/KazuhiroWada/2017spring-jjug-cccf2-76144077">www.slideshare.net</a></cite></li>
</ul>
<h4>SpotBugs(<a class="keyword" href="http://d.hatena.ne.jp/keyword/FindBugs">FindBugs</a>)による大規模<a class="keyword" href="http://d.hatena.ne.jp/keyword/ERP">ERP</a>のコード品質改善</h4>
<ul>
<li>HUEを作っている会社の人。SpotBugsのコミッタ。</li>
<li>静的解析の動向と運用事例</li>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/checkstyle">checkstyle</a>の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3">プラグイン</a>は簡単につくれる。
<ul>
<li>Java8サポートが弱い。Lamdaの扱いも弱い。</li>
</ul>
</li>
<li>PMD:コピペが検出できる。<a class="keyword" href="http://d.hatena.ne.jp/keyword/Java">Java</a>以外も使える。</li>
<li>SpotBugs:<a class="keyword" href="http://d.hatena.ne.jp/keyword/Findbugs">Findbugs</a>の後継(開発が止まっていたのでフォークした)。<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3">プラグイン</a>が豊富。</li>
<li>Checker Framework:Java8のJSR308(<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A5%CE%A5%C6%A1%BC%A5%B7%A5%E7%A5%F3">アノテーション</a>)を利用する。
<ul>
<li>型変数や<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A5%CE%A5%C6%A1%BC%A5%B7%A5%E7%A5%F3">アノテーション</a>を利用したnullチェックなど。</li>
</ul>
</li>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/Google">Google</a> error-prone
<ul>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%BD%A1%BC%A5%B9%A5%B3%A1%BC%A5%C9">ソースコード</a>の自動修正。<a class="keyword" href="http://d.hatena.ne.jp/keyword/Findbugs">Findbugs</a>は<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D0%A5%A4%A5%C8%A5%B3%A1%BC%A5%C9">バイトコード</a>を解析するから。</li>
<li>静的解析が流行らないのは修正方法を教えてくれないから、というモチベーション。</li>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/Eclipse">Eclipse</a>連携がない。</li>
</ul>
</li>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/Eclipse">Eclipse</a>の<a class="keyword" href="http://d.hatena.ne.jp/keyword/Findbugs">Findbugs</a>は<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%ED%A5%B0%A5%EC%A5%B9%A5%D0%A1%BC">プログレスバー</a>表示の処理が重い。SpotBugsで治っている。</li>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/Findbugs">Findbugs</a>、SpotBugsはシングルスレッド。コアを使い切れない。</li>
<li>静的解析はnice to haveではなくmust to have。やったほうが効果が高い。</li>
<li>大事なのは、開発効率を下げないこと。</li>
<li>運用
<ul>
<li>対象クラスを絞り込む。(onlyAnalysis)</li>
<li>見つける問題を絞り込む。(Vistor)</li>
<li>独自<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3">プラグイン</a>で、差分Classファイルだけ解析する</li>
</ul>
</li>
<li>所感
<ul>
<li>普段なかなか聞くことのない静的解析の深いところまで聴けたので良かった。</li>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/Findbugs">Findbugs</a>の現状が知れてよかった。</li>
</ul>
</li>
</ul>
<h4>What you need to know about HotSpot and Your Code</h4>
<ul>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/Java">Java</a>パフォーマンスの第一人者(らしい)のKirk Pepperdineさん</li>
<li>JITWatch
<ul>
<li><a href="http://jyukutyo.hatenablog.com/entry/2014/12/04/202747">JITWatchでJITコンパイルを見よう! - Fight the Future</a></li>
</ul>
</li>
<li>所感
<ul>
<li>英語が早くて理解できなかった(;´Д`)</li>
<li>以下参照(;´Д`)助かる
<ul>
<li><blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">テストゼロからイチへ進むための戦略と戦術を聞いたメモ。<a href="https://twitter.com/hashtag/ccc_e4?src=hash">#ccc_e4</a> <a href="https://twitter.com/hashtag/jjug_ccc?src=hash">#jjug_ccc</a> <a href="https://t.co/GF80xXvFCi">pic.twitter.com/GF80xXvFCi</a></p>— Nakayama san (@nakayama_san) <a href="https://twitter.com/nakayama_san/status/733907544821760000">2016年5月21日</a></blockquote><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script></li>
</ul>
</li>
</ul>
</li>
</ul>
<h4>Introduction of Project Jigsaw</h4>
<ul>
<li>スライドの作成サービスを使っていた。匿名で質問できる。
<ul>
<li><a href="https://www.sli.do">Slido - Audience Interaction Made Easy</a></li>
</ul>
</li>
<li>JigsawはPublic Review Bolletで棄却された
<ul>
<li>7月リリースは厳しそう</li>
<li>ただしJava9(別の<a class="keyword" href="http://d.hatena.ne.jp/keyword/RFP">RFP</a>)にはJigsawが入っているので、そちら分はリリースされそう。</li>
</ul>
</li>
<li>Module
<ul>
<li>現状の課題:mavanを使えば依存性は書けるが、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Java">Java</a>としては依存性は管理できない。
<ul>
<li>必要なところだけ読み込む。ヒープの節約。ロード時間の短縮。</li>
</ul>
</li>
<li>現状の課題:意図しないPublicクラスが別jarから利用されるケースがある。Publicのスコープを制限したい。</li>
</ul>
</li>
<li>module-info.<a class="keyword" href="http://d.hatena.ne.jp/keyword/java">java</a>に依存パッケージと公開パッケージと書く。</li>
<li>新規では導入簡単だが、既存は使えなくメソッドがある可能性がある。</li>
<li>Moduleかどうかかわからなかったら、<a class="keyword" href="http://d.hatena.ne.jp/keyword/java">java</a> -dをすると、module-infoの情報がでる。出力があればModule。</li>
<li>module一覧をだす=<a class="keyword" href="http://d.hatena.ne.jp/keyword/java">java</a> –list-module</li>
<li>JLink=モジュール指定して自分用の最小構成の<a class="keyword" href="http://d.hatena.ne.jp/keyword/JRE">JRE</a>を作れる。</li>
<li>jdeps=既存jarの依存モジュールを調べ方。jdeps -s hello.jar。–generate-module-infoで自動作成できる。</li>
<li>Moduleではないjarは、Moduleの<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C7%A5%A3%A5%EC%A5%AF%A5%C8">ディレクト</a>リにおけば使える。モジュール名に議論があり(ファイル名を採用するか or MANIFEST.MFに定義するか)検討中。</li>
<li>所感
<ul>
<li>Jigsawについて理解できていなかったので良かった。</li>
<li>ビルドツール(gradleなど)との兼ね合いを考えると、結構運用が複雑になりそう。</li>
</ul>
</li>
<li><iframe src="https://www.slideshare.net/slideshow/embed_code/key/rBdGbo82yehHfM" width="427" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe> <div style="margin-bottom:5px"> <strong> <a href="https://www.slideshare.net/skrb/introduction-of-project-jigsaw" title="Introduction of Project Jigsaw" target="_blank">Introduction of Project Jigsaw</a> </strong> from <strong><a target="_blank" href="https://www.slideshare.net/skrb">Yuichi Sakuraba</a></strong> </div><cite class="hatena-citation"><a href="https://www.slideshare.net/skrb/introduction-of-project-jigsaw">www.slideshare.net</a></cite></li>
</ul>
<h4>U-NEXT学生<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A4%A5%F3%A5%BF%A1%BC%A5%F3">インターン</a>、過激な<a class="keyword" href="http://d.hatena.ne.jp/keyword/Java">Java</a>の学び方と過激な要求</h4>
<ul>
<li>社内システムを一から作成した話。</li>
<li>Optional=空という状態がある。般若心経の考えと同じ。</li>
<li>構造的なコード=<a class="keyword" href="http://d.hatena.ne.jp/keyword/%B4%C1%BB%ED">漢詩</a>の統一感の美しさと同じ。</li>
<li>アナロジー(暗喩)が理解が進む。</li>
<li>所感
<ul>
<li>例え大事。</li>
</ul>
</li>
<li><iframe src="https://www.slideshare.net/slideshow/embed_code/key/Hp378p7mFR0hFY" width="427" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe> <div style="margin-bottom:5px"> <strong> <a href="https://www.slideshare.net/hajimefunaki1/unextjava" title="U-NEXT学生インターン、過激なJavaの学び方と過激な要求" target="_blank">U-NEXT学生インターン、過激なJavaの学び方と過激な要求</a> </strong> from <strong><a target="_blank" href="https://www.slideshare.net/hajimefunaki1">hajime funaki</a></strong> </div><cite class="hatena-citation"><a href="https://www.slideshare.net/hajimefunaki1/unextjava">www.slideshare.net</a></cite></li>
</ul>
<h4>マチコ&河村の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%C5%DC%A4%EA%BF%B7%C5%DE">怒り新党</a> 〜真の最終回〜</h4>
<ul>
<li>事前投稿された怒りについて、参加者含めディスカッション。</li>
<li>総論。困りごとは自分が動いて解決する。解決できなかったら環境を変える。</li>
<li>あった怒り
<ul>
<li>勉強会が都市部で行われており、地方組が大変。</li>
<li>同僚が勉強しない</li>
<li>上司の頭が固い。</li>
</ul>
</li>
</ul>
<h3>全体所感</h3>
<ul>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/Java">Java</a>の新しい仕様など噂では聞いていたが、今回ちゃんと理解できた気がする。</li>
<li>新しい仕様を導入されたらみんな試行錯誤で使っている感じ。学びなど共有大切。</li>
<li>↓も聴こうと思ったけど満席で入れなかった(´・ω・`)
<ul>
<li><iframe allowfullscreen="true" allowtransparency="true" frameborder="0" height="596" id="talk_frame_392183" mozallowfullscreen="true" src="//speakerdeck.com/player/3859d62979cd45e7aa4896ce6ec0b94b" style="border:0; padding:0; margin:0; background:transparent;" webkitallowfullscreen="true" width="710"></iframe><cite class="hatena-citation"><a href="https://speakerdeck.com/kikutaro/javatoaidorufalsekorabo-mou-aidorubotkai-fa-falseli-ce">speakerdeck.com</a></cite></li>
</ul>
</li>
</ul>
<h3>まとめ</h3>
<ul>
<li>調べるより聞いたほうが早かったりする。</li>
</ul>
Namihira
Go製Webアプリのサーバ実行環境整備の作業メモ
hatenablog://entry/10328749687242965749
2017-05-04T11:44:05+09:00
2017-05-04T11:59:28+09:00 背景 golangで作ったWebアプリをサーバで動かすためのやったサーバ整備の作業メモです。 作業メモ golangをinstallする 参考 Getting Started - The Go Programming Language yum install go 実際は「golang」というキーワードでいれるらしいが、知らずに「go」でも検索に引っかかって入れられた。 GOPATHを設定する golangのワークスペース的なパスを設定する。 とりあえずアプリを配置した「/usr/golang」を以下のように設定するようにした。 ※お作法がわかっていない(´,,・ω・,,`) .bash_pr…
<h3>背景</h3>
<p><a class="keyword" href="http://d.hatena.ne.jp/keyword/golang">golang</a>で作ったWebアプリをサーバで動かすためのやったサーバ整備の作業メモです。</p>
<h3>作業メモ</h3>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/golang">golang</a>をinstallする</h4>
<ul>
<li>参考
<ul>
<li><a href="https://golang.org/doc/install">Getting Started - The Go Programming Language</a></li>
</ul>
</li>
</ul>
<pre class="code lang-sh" data-lang="sh" data-unlink>yum install go
</pre>
<p>実際は「<a class="keyword" href="http://d.hatena.ne.jp/keyword/golang">golang</a>」というキーワードでいれるらしいが、知らずに「go」でも検索に引っかかって入れられた。</p>
<h4>GOPATHを設定する</h4>
<p><a class="keyword" href="http://d.hatena.ne.jp/keyword/golang">golang</a>の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%EF%A1%BC%A5%AF%A5%B9%A5%DA%A1%BC%A5%B9">ワークスペース</a>的なパスを設定する。<br/>
とりあえずアプリを配置した「/usr/<a class="keyword" href="http://d.hatena.ne.jp/keyword/golang">golang</a>」を以下のように設定するようにした。<br/>
※お作法がわかっていない(´,,・ω・,,`)</p>
<ul>
<li>.<a class="keyword" href="http://d.hatena.ne.jp/keyword/bash">bash</a>_profile</li>
</ul>
<pre class="code lang-sh" data-lang="sh" data-unlink><span class="synIdentifier">GOPATH</span>=/usr/golang
<span class="synStatement">export</span><span class="synIdentifier"> GOPATH</span>
<span class="synIdentifier">PATH</span>=<span class="synPreProc">$PATH</span>:<span class="synPreProc">$HOME</span>/bin:<span class="synPreProc">$GOPATH</span>
<span class="synStatement">export</span><span class="synIdentifier"> PATH</span>
</pre>
<h4>Echoパッケージを入れる</h4>
<p>上記のあとに実行したら、Echoがないと言われたので入れた。<br/>
※今回のアプリは「Echo」という<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D5%A5%EC%A1%BC%A5%E0%A5%EF%A1%BC%A5%AF">フレームワーク</a>を使っている。</p>
<ul>
<li>参考
<ul>
<li><a href="https://echo.labstack.com/guide/installation">Installation | Echo - High performance, minimalist Go web framework</a></li>
</ul>
</li>
</ul>
<pre class="code" data-lang="" data-unlink>go get -u github.com/labstack/echo/...</pre>
<p>※「…」のところは本当に「…」と入れる。(バージョンかと思った(´,,・ω・,,`)</p>
<h4>サーバのポートを開放する</h4>
<p>※サーバ環境は<a class="keyword" href="http://d.hatena.ne.jp/keyword/AWS">AWS</a>を利用している<br/>
本当はWebサーバを介してルーティングしたほうがよいが、今回はさぼってEchoで指定したポートをそのままセキュリティグループの設定に追加する。</p>
<h4>実行する</h4>
<p>実行すると、ブラウザで見れる。</p>
<pre class="code lang-sh" data-lang="sh" data-unlink>go run server.go &
</pre>
<h3>まとめ</h3>
<p>セットアップが結構楽(´Д`)</p>
Namihira
golang+EchoでREST APIを作った話
hatenablog://entry/10328749687235789955
2017-04-09T12:54:53+09:00
2017-04-09T13:00:05+09:00 背景 新しいWebアプリ(今回はREST API層だけ)を作るにあたって、これまでJava+SpringFrameworkばかりだったので、他の言語で作ってみることにしました。 (ちょうど仕事上もJava+SpringFrameworkから離れているので) 言語候補として、近くで使っている人が多いのが「Ruby」か「Go」という感じで、ちょうど以下の記事をみて、 employment.en-japan.com 「Webサービス+Ruby(Rails)」が多かったので、「Go言語」を選択した(?) やったこと golangをインストールする 自PC(Mac)にGo実行環境がなかったので整備。 以…
<h3>背景</h3>
<p>新しいWebアプリ(今回は<a class="keyword" href="http://d.hatena.ne.jp/keyword/REST%20API">REST API</a>層だけ)を作るにあたって、これまで<a class="keyword" href="http://d.hatena.ne.jp/keyword/Java">Java</a>+SpringFrameworkばかりだったので、他の言語で作ってみることにしました。 (ちょうど仕事上も<a class="keyword" href="http://d.hatena.ne.jp/keyword/Java">Java</a>+SpringFrameworkから離れているので)<br/>
言語候補として、近くで使っている人が多いのが「<a class="keyword" href="http://d.hatena.ne.jp/keyword/Ruby">Ruby</a>」か「Go」という感じで、ちょうど以下の記事をみて、
<iframe src="https://employment.en-japan.com/engineerhub/embed/2017/04/07/110000" title="[49選]国内注目のWebサービス・アプリを大調査! プログラミング言語、フレームワーク、アーキテクチャの一覧【2017年 春 ver.】 - エンジニアHub|若手Webエンジニアのキャリアを考える!" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="https://employment.en-japan.com/engineerhub/entry/2017/04/07/110000">employment.en-japan.com</a></cite>
「<a class="keyword" href="http://d.hatena.ne.jp/keyword/Web%A5%B5%A1%BC%A5%D3%A5%B9">Webサービス</a>+<a class="keyword" href="http://d.hatena.ne.jp/keyword/Ruby">Ruby</a>(<a class="keyword" href="http://d.hatena.ne.jp/keyword/Rails">Rails</a>)」が多かったので、「Go言語」を選択した(?)</p>
<h3>やったこと</h3>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/golang">golang</a>をインス<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C8%A1%BC%A5%EB">トール</a>する</h4>
<p>自PC(<a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a>)にGo実行環境がなかったので整備。<br/>
以下参照。</p>
<ul>
<li><a href="https://golang.org/doc/install">Getting Started - The Go Programming Language</a></li>
</ul>
<h4>Webフレームワークを調べる</h4>
<p><a class="keyword" href="http://d.hatena.ne.jp/keyword/golang">golang</a>界隈だと現状「とりあえずこれ」な<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D5%A5%EC%A1%BC%A5%E0%A5%EF%A1%BC%A5%AF">フレームワーク</a>がないらしく、とりあえず少し調べて一番軽量そうだった「Echo」を使ってみることにした。<br/>
※それをいうと他の言語も多種多様な<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D5%A5%EC%A1%BC%A5%E0%A5%EF%A1%BC%A5%AF">フレームワーク</a>があるけど(;´Д`) <br/>
<a href="https://echo.labstack.com">Echo - High performance, minimalist Go web framework</a><br/>
以下、参考。</p>
<ul>
<li><a href="http://blog.iktakahiro.sh/entry/2016/12/10/090000">Go 言語 Webフレームワークはこれを使おう 2016年12月版 - Witch on the Other Shore</a></li>
<li><a href="http://aial.shiroyagi.co.jp/2016/07/golang-api-server-developing/">Go で API サーバーを開発してきて1年が過ぎました | カメリオ開発者ブログ</a></li>
</ul>
<p>※他に良さげなものがあったら変えるかも。</p>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/REST%20API">REST API</a>を作ってみる</h4>
<p>Echo 本家と、Goの仕様を見ながら実装。</p>
<ul>
<li><a href="https://echo.labstack.com/guide">Guide | Echo - High performance, minimalist Go web framework</a></li>
<li><a href="http://golang-jp.org/doc/">ドキュメント - The Go Programming Language</a></li>
</ul>
<pre class="code lang-go" data-lang="go" data-unlink><span class="synStatement">package</span> main
<span class="synStatement">import</span> (
<span class="synConstant">"github.com/labstack/echo"</span>
<span class="synConstant">"net/http"</span>
<span class="synConstant">"strconv"</span>
)
<span class="synStatement">type</span> User <span class="synStatement">struct</span> {
Id <span class="synType">int</span> <span class="synConstant">`json:"id"`</span>
Email <span class="synType">string</span> <span class="synConstant">`json:"email"`</span>
}
<span class="synStatement">func</span> main() {
e := echo.New()
<span class="synComment">// Routing</span>
e.GET(<span class="synConstant">"/"</span>, <span class="synType">func</span>(c echo.Context) <span class="synType">error</span> {
<span class="synStatement">return</span> c.String(http.StatusOK, <span class="synConstant">"Hello, World!"</span>)
})
e.GET(<span class="synConstant">"/users/:id"</span>, <span class="synType">func</span>(c echo.Context) <span class="synType">error</span> {
id, _ := strconv.Atoi(c.Param(<span class="synConstant">"id"</span>))
<span class="synStatement">return</span> c.JSON(http.StatusOK, getUser(id))
})
e.Logger.Fatal(e.Start(<span class="synConstant">":1323"</span>))
}
<span class="synStatement">func</span> getUser(id <span class="synType">int</span>) *User {
email := strconv.Itoa(id) + <span class="synConstant">"@example.com"</span>
u := &User{
Id: id,
Email: email,
}
<span class="synStatement">return</span> u
}
</pre>
<p>以下のコマンドを実行して、<a href="http://localhost:1323/users/1234">http://localhost:1323/users/1234</a>とかにアクセスすると<a class="keyword" href="http://d.hatena.ne.jp/keyword/JSON">JSON</a>データが返ってくる。</p>
<pre class="code lang-sh" data-lang="sh" data-unlink>go run server.go
</pre>
<p>また、サーバを止める手段がないらしいので</p>
<pre class="code lang-sh" data-lang="sh" data-unlink><span class="synStatement">kill</span> <span class="synConstant">-9</span> <span class="synSpecial">{</span>PID<span class="synSpecial">}</span>
</pre>
<p>した(;´Д`)</p>
<h3>その他にやったこと</h3>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/vim">vim</a>環境整備(<a class="keyword" href="http://d.hatena.ne.jp/keyword/vim">vim</a>-go)</h4>
<p>今回のことぐらいは素の<a class="keyword" href="http://d.hatena.ne.jp/keyword/vim">vim</a>でもできるが、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B7%A5%F3%A5%BF%A5%C3%A5%AF%A5%B9">シンタックス</a>ハイライトが効かないのはさすがに気持ち悪かったので導入(あとで要整備)<br/>
以下参照。</p>
<ul>
<li><a href="https://github.com/fatih/vim-go">GitHub - fatih/vim-go: Go development plugin for Vim</a></li>
</ul>
<p>※パッケージマネージャは、READMEが分かりやすかった「<a class="keyword" href="http://d.hatena.ne.jp/keyword/vim">vim</a>-plug」を選択。</p>
<ul>
<li><a href="https://github.com/junegunn/vim-plug">GitHub - junegunn/vim-plug: Minimalist Vim Plugin Manager</a></li>
</ul>
<h3>所感</h3>
<ul>
<li>意外とさくっと動いた\(^o^)/
<ul>
<li>が、このままDB連携や認証管理などなどWebアプリまで到達できるか不安<a class="keyword" href="http://d.hatena.ne.jp/keyword/%28%A1%AD%A1%A6%A6%D8%A1%A6%60%29">(´・ω・`)</a></li>
</ul>
</li>
<li>Go仕様で「関数とメソッド(←?)」「ポインタ」あたりがでてきたとき逃げたくなった(;´Д`)←もっと<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%AA%A5%D6%A5%B8%A5%A7%A5%AF%A5%C8%BB%D8%B8%FE">オブジェクト指向</a>、上位レイヤー寄りかと思っていた。</li>
<li>Goについて結構日本語の情報が豊富。</li>
<li>GoFmt便利</li>
<li>タブの幅(?)もっと狭くしたい。</li>
<li>文字列+数値の連結めんどい(;´Д`)</li>
</ul>
<h3>まとめ</h3>
<p>いけるところまでいくε≡≡ヘ( ´Д`)ノ</p>
Namihira
Androidアプリでのセキュリティ情報の定義方法
hatenablog://entry/10328749687230860474
2017-03-26T11:34:34+09:00
2017-03-26T11:34:34+09:00 背景 Androidアプリ開発にてセキュリティ情報(他サービスのAPIキーなど)を定義しますが、それらの情報はGithubなどのソースコード管理にコミットはしないほうがいいので、その定義方法を書いておきます。 定義方法 セキュリティ情報の定義 security.properties セキュリティ情報を記載するプロパティファイル。このファイルはコミットしない(要ignoreファイルに追記)。 コミット防止観点からいうとできるだけ一箇所でまとめたい。サービスごとに分けるなら「security-{サービス}.properties」とかにして、「security-*」とかでignoreしたほうがいいか…
<h3>背景</h3>
<p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Android">Android</a>アプリ開発にてセキュリティ情報(他サービスの<a class="keyword" href="http://d.hatena.ne.jp/keyword/API">API</a>キーなど)を定義しますが、それらの情報は<a class="keyword" href="http://d.hatena.ne.jp/keyword/Github">Github</a>などの<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%BD%A1%BC%A5%B9%A5%B3%A1%BC%A5%C9">ソースコード</a>管理にコミットはしないほうがいいので、その定義方法を書いておきます。</p>
<h3>定義方法</h3>
<h4>セキュリティ情報の定義</h4>
<ul>
<li>security.properties<br/>
セキュリティ情報を記載するプロパティファイル。このファイルはコミットしない(要ignoreファイルに追記)。<br/>
コミット防止観点からいうとできるだけ一箇所でまとめたい。サービスごとに分けるなら「security-{サービス}.properties」とかにして、「security-*」とかでignoreしたほうがいいかも。<br/>
例:</li>
</ul>
<pre class="code" data-lang="" data-unlink># Fabric
fabric.api.key={実際の値をいれる}
# twitter
twitter.api.key={実際の値をいれる}
twitter.api.secret={実際の値をいれる}</pre>
<h4>セキュリティ情報(プロパティ)の取り込み</h4>
<p>別の設定ファイルや<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%BD%A1%BC%A5%B9%A5%B3%A1%BC%A5%C9">ソースコード</a>等で利用するために、先に記載したプロパティ値を読み込む。<br/>
設定ファイルが参照したいときは「manifestPlaceholders」にいれる。<br/>
<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%BD%A1%BC%A5%B9%A5%B3%A1%BC%A5%C9">ソースコード</a>から参照したいときは「buildConfigField」にいれる。※BuildConfigというファイルに設定値が書き出されるので、定義したらビルドが必要。(もちろんBuildConfigもコミットしてはいけない) <br/>
* build.gradle</p>
<pre class="code lang-groovy" data-lang="groovy" data-unlink>・・・
Properties props = <span class="synStatement">new</span> Properties()
<span class="synStatement">try</span> {
props.load(file(<span class="synConstant">'security.properties'</span>).newDataInputStream())
} <span class="synStatement">catch</span> (<span class="synStatement">Exception</span> ex) {
<span class="synStatement">throw</span> <span class="synStatement">new</span> <span class="synStatement">GradleException</span>(<span class="synConstant">"can not load *.properties"</span>);
}
・・・
android {
・・・
defaultConfig {
・・・
manifestPlaceholders = [fabricApiKey: <span class="synConstant">"</span><span class="synIdentifier">${props.getProperty("fabric.api.key")}</span><span class="synConstant">"</span>];
・・・
}
buildTypes {
debug {
buildConfigField <span class="synConstant">"String"</span>, <span class="synConstant">"TWITTER_API_KEY"</span>, <span class="synConstant">"</span><span class="synSpecial">\"</span><span class="synIdentifier">${props.getProperty("twitter.api.key")}</span><span class="synSpecial">\"</span><span class="synConstant">"</span>
buildConfigField <span class="synConstant">"String"</span>, <span class="synConstant">"TWITTER_API_SECRET"</span>, <span class="synConstant">"</span><span class="synSpecial">\"</span><span class="synIdentifier">${props.getProperty("twitter.api.secret")}</span><span class="synSpecial">\"</span><span class="synConstant">"</span>
・・・
}
}
productFlavors {
}
}
・・・
</pre>
<h4>設定ファイルから値を利用する</h4>
<p>登録した参照キーで参照できる。<br/>
* 例:AndroidManifest.<a class="keyword" href="http://d.hatena.ne.jp/keyword/xml">xml</a></p>
<pre class="code lang-xml" data-lang="xml" data-unlink><span class="synIdentifier"><meta-data</span>
<span class="synIdentifier"> </span><span class="synType">android</span><span class="synComment">:</span><span class="synType">name</span>=<span class="synConstant">"io.fabric.ApiKey"</span>
<span class="synIdentifier"> </span><span class="synType">android</span><span class="synComment">:</span><span class="synType">value</span>=<span class="synConstant">"${fabricApiKey}"</span><span class="synIdentifier"> /></span>
</pre>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%BD%A1%BC%A5%B9%A5%B3%A1%BC%A5%C9">ソースコード</a>から値を参照する</h4>
<p>登録した参照キーで参照できる。<br/>
* 例</p>
<pre class="code lang-java" data-lang="java" data-unlink><span class="synType">public</span> <span class="synType">class</span> MainActivity <span class="synType">extends</span> AppCompatActivity {
・・・
<span class="synError">#</span> 参照しているところ
<span class="synType">private</span> <span class="synType">static</span> <span class="synType">final</span> String TWITTER_API_KEY = BuildConfig.TWITTER_API_KEY;
<span class="synType">private</span> <span class="synType">static</span> <span class="synType">final</span> String TWITTER_API_SECRET = BuildConfig.TWITTER_API_SECRET;
<span class="synPreProc">@Override</span>
<span class="synType">protected</span> <span class="synType">void</span> onCreate(Bundle savedInstanceState) {
<span class="synType">super</span>.onCreate(savedInstanceState);
<span class="synError">#</span> 利用しているところ
<span class="synType">final</span> TwitterAuthConfig authConfig = <span class="synStatement">new</span> TwitterAuthConfig(TWITTER_API_KEY, TWITTER_API_SECRET);
・・・
</pre>
<h3>まとめ</h3>
<p>これが最適かどうかわかっていない<a class="keyword" href="http://d.hatena.ne.jp/keyword/%28%A1%AD%A1%A6%A6%D8%A1%A6%60%29">(´・ω・`)</a></p>
Namihira
Fabric環境構築の作業メモ
hatenablog://entry/10328749687223543276
2017-03-20T12:03:59+09:00
2017-03-24T08:46:21+09:00 背景 Androidアプリ開発にてアプリでTwitter連携がしたくなったところ、それを実現する際、最近は「Fabric」というフレームワークがよいらしい(なみひら調べ) なのでFabricを導入してみたときの作業メモです。 Fabric - App Development Platform for teams ※以前は、twitter4jでゴリゴリ書いていた気がする(;´Д`) 作業メモ アカウントをつくる Fabricを利用するにはアカウント登録が必要なのでやる。 ↓ 登録申請してから登録完了のメールがくるまで1〜2時間かかった( ˘ω˘)スヤァ… 仮登録完了メールがきたら、URLから本登…
<h3>背景</h3>
<p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Android">Android</a>アプリ開発にてアプリで<a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a>連携がしたくなったところ、それを実現する際、最近は「Fabric」という<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D5%A5%EC%A1%BC%A5%E0%A5%EF%A1%BC%A5%AF">フレームワーク</a>がよいらしい(なみひら調べ)<br/>
なのでFabricを導入してみたときの作業メモです。</p>
<p><a href="https://get.fabric.io">Fabric - App Development Platform for teams</a></p>
<p>※以前は、twitter4jでゴリゴリ書いていた気がする(;´Д`)</p>
<h3>作業メモ</h3>
<h4>アカウントをつくる</h4>
<p>Fabricを利用するにはアカウント登録が必要なのでやる。<br/>
↓<br/>
登録申請してから登録完了のメールがくるまで1〜2時間かかった( ˘ω˘)スヤァ…<br/>
仮登録完了メールがきたら、URLから本登録をする。</p>
<h4>開発環境にFabric<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3">プラグイン</a>をいれる</h4>
<p>アカウント登録からそのまま<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3">プラグイン</a>導入マニュアルがあるので、その手順どおりに開発環境(<a class="keyword" href="http://d.hatena.ne.jp/keyword/Android%20Studio">Android Studio</a>)にFabric<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3">プラグイン</a>をいれる。<br/>
導入し終わって、ウィザードを進めていくと、以下の画面に行きつく。</p>
<p><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/N/Namihira/20170320/20170320113828.png" alt="f:id:Namihira:20170320113828p:plain" title="f:id:Namihira:20170320113828p:plain" class="hatena-fotolife" itemprop="image"></span></p>
<p>がその先どうすればいいのか路頭に迷う(;´Д`)(=リンクがない)<br/>
docsのページに行ったほうがいい。</p>
<p><a href="https://docs.fabric.io">Fabric Docs —</a></p>
<h4>使い方に慣れる</h4>
<p>このFabric<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3">プラグイン</a>を使って、必要ライブラリ(<a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a>ライブラリとか)を入れておかないと、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C1%A5%E5%A1%BC%A5%C8%A5%EA%A5%A2%A5%EB">チュートリアル</a>のコードが適用・理解できない(パッケージインポートができないから)。<br/>
このFabric<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3">プラグイン</a>の使い方の説明が見当たらなかったので、操作イメージをちょっと書いておきます。(;´Д`)</p>
<hr />
<p>上記の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3">プラグイン</a>をいれると、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Android">Android</a> Stadio上に画面が追加される。<br/>
例:<br/>
<span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/N/Namihira/20170320/20170320114431.png" alt="f:id:Namihira:20170320114431p:plain" title="f:id:Namihira:20170320114431p:plain" class="hatena-fotolife" itemprop="image"></span><br/>
その画面でやりたいこと(例:<a class="keyword" href="http://d.hatena.ne.jp/keyword/Twitter">Twitter</a>アカウントでログインするとか)を選んでいくとサンプルコードで表示されるので、それを自分のコードにコピペする。<br/>
自動適用もできるが、自分で意図的に変更したことを上書きされるので、あまり使えない(;´Д`)(例:変数化しといたところが、値の直書きにされる)</p>
<h4>その他</h4>
<p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3">プラグイン</a>を入れたら、Crashlyticsを早めに入れておくと、デバックが楽( *´Д`*)<br/>
<a href="https://try.crashlytics.com">The most powerful, yet lightest weight crash reporting solution for iOS and Android developers. | Crashlytics</a></p>
<h3>まとめ</h3>
<p>導入手順の提供大事(;´Д`)</p>
Namihira
「Developers Summit 2017(2日目)」に行ってきました
hatenablog://entry/10328749687218166496
2017-02-19T09:08:41+09:00
2017-02-20T12:52:40+09:00 毎年恒例のデブサミへ参加したので、レポートを書いておきます。 event.shoeisha.jp 開催概要 日時 1日目:2017/02/17(木)10:00-18:30 ※一日目は不参加 2日目:2017/02/17(金)10:00-18:30 場所 目黒雅叙園 主催 翔泳社 参加者数 約2000人? 年齢層が広く感じた テーマ エンジニアとして生きる、技術の先にある現実に踏み出す 発表資料 参加者アンケートに答えたらもらえる。 会場雰囲気 セッションメモ 自動化はどこに向かうのか ~まだ開発・運用の自動化で消耗しているの?~(仮) さくらインターネットの人 ツール導入や自動化を目的にしては…
<p>毎年恒例の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C7%A5%D6%A5%B5%A5%DF">デブサミ</a>へ参加したので、レポートを書いておきます。<br/>
<iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fevent.shoeisha.jp%2Fdevsumi%2F20170216" title="Developers Summit 2017 エンジニアとして生きる、技術の先にある現実に踏み出す" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="http://event.shoeisha.jp/devsumi/20170216">event.shoeisha.jp</a></cite></p>
<h3>開催概要</h3>
<ul>
<li>日時
<ul>
<li>1日目:2017/02/17(木)10:00-18:30 ※一日目は不参加</li>
<li>2日目:2017/02/17(金)10:00-18:30</li>
</ul>
</li>
<li>場所
<ul>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/%CC%DC%B9%F5%B2%ED%BD%F6%B1%E0">目黒雅叙園</a></li>
</ul>
</li>
<li>主催
<ul>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/%E6%C6%B1%CB%BC%D2">翔泳社</a></li>
</ul>
</li>
<li>参加者数
<ul>
<li>約2000人?</li>
<li>年齢層が広く感じた</li>
</ul>
</li>
<li>テーマ
<ul>
<li>エンジニアとして生きる、技術の先にある現実に踏み出す</li>
</ul>
</li>
<li>発表資料
<ul>
<li>参加者アンケートに答えたらもらえる。</li>
</ul>
</li>
</ul>
<h3>会場雰囲気</h3>
<p><span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/N/Namihira/20170217/20170217172124.jpg" alt="f:id:Namihira:20170217172124j:plain" title="f:id:Namihira:20170217172124j:plain" class="hatena-fotolife" itemprop="image"></span></p>
<h3>セッションメモ</h3>
<h4>自動化はどこに向かうのか ~まだ開発・運用の自動化で消耗しているの?~(仮)</h4>
<ul>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A4%B5%A4%AF%A4%E9%A5%A4%A5%F3%A5%BF%A1%BC%A5%CD%A5%C3%A5%C8">さくらインターネット</a>の人</li>
<li>ツール導入や自動化を目的にしてはいけない。</li>
<li>ツール利用において業務環境、背景はそれぞれ。要件は組織ごとに異なる。</li>
<li>何を達成したいのかが大切。</li>
<li>自動化する理由は以下。
<ul>
<li>省力化、時間短縮、人的ミス防止</li>
<li>ペットから家畜へ。大事に育てる。</li>
<li>現実的な課題解決のための自動化。</li>
</ul>
</li>
<li>現場視点と全体俯瞰を考える必要がある。
<ul>
<li>現場視点・・・常に正しい努力をしているか。</li>
<li>組織視点・・・みんなが同じ方向を向いているか。</li>
</ul>
</li>
<li>必要だったから作ったが自然。</li>
<li>自動化「したい」ではなく、自動化「すべき」か否か。</li>
<li>HashiCorpが定義しているDevOpsの定義
<ul>
<li><a href="https://pocketstudio.net/2016/11/29/devops-defined-translate/">【参考訳】HashiCorp の DevOps Defined とアプリケーション・デリバリ・プロセス · Pocketstudio Technology Log</a></li>
</ul>
</li>
<li>自分で手を動かしてからツールは利用する。他社で導入されたからはいけない。自分の業務にあるか確かめてから。</li>
<li>所感
<ul>
<li>最近Slackを導入して「コミュニケーション促進」となんとなく言っていましたが具体化しないといけない(;´Д`)</li>
</ul>
</li>
</ul>
<h4>Re: ゼロから文化を創り、技術を伝承する ~客先常駐エンジニアと「社内勉強会」で築いた価値と変化</h4>
<ul>
<li>お客様先駐在主体の会社での勉強会の取り組みと効果の紹介</li>
<li>エンジニアの成長にプラスになる「場」の形成が必要だった。</li>
<li>伝える力と求める力が必要。</li>
<li>営業身だしなみ勉強会とかもあった。</li>
<li>長続きさせるコツ
<ul>
<li>スケジュール(年間)を予め決める。特別なイベントなど強弱をつける。</li>
<li>プロジェクト<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%EB%A5%A4%A1%BC%A5%C0">ルイーダ</a>:<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C9%A5%E9%A5%AF%A5%A8">ドラクエ</a>の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%EB%A5%A4%A1%BC%A5%C0%A4%CE%BC%F2%BE%EC">ルイーダの酒場</a>のように、同じ目的の仲間探しを支援する仕組み。予算提供もあり。</li>
</ul>
</li>
<li>勉強会の効果
<ul>
<li>教育期間の節約。自己研鑽が見えるとお客様からの信頼が上がる。</li>
<li>現場としての気持ちが伝えられる。体験談なども。</li>
<li>ビジョン、価値観の共有。</li>
</ul>
</li>
<li>成長の見えないエンジニアは本人は諦めていても、会社は諦めない。</li>
<li>所感
<ul>
<li>同じ基礎知識と価値観を持つことが大切(;´Д`)</li>
</ul>
</li>
</ul>
<h4>まだ見ぬコミュニケーションAIの実現に向けて</h4>
<ul>
<li>NTTPCの作ったAIの紹介</li>
<li>見た目の第一印象から性格を仮決めして、質問(とそのときの見た目)を通して性格を最終決定する。</li>
<li>仕組みは、表情の画像から画像特徴量を抽出して解析し、事前登録してあるデータベースからレスポンスを返す。</li>
<li>素材は以下。
<ul>
<li><a href="http://nakasis.com/">中野シスターズ(ナカシス) 公式サイト</a></li>
</ul>
</li>
<li>所感
<ul>
<li>AIに詳しくないけど、やっていることは結構ベタ?(´・ω・`)</li>
<li>言葉を使わずに性格を見積もるのは何か使えそう。犯罪者とか?感情が分かれば赤ちゃんとか?</li>
</ul>
</li>
</ul>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%AA%A5%EB%A5%BF%A5%CA%A5%C6%A5%A3%A5%D6">オルタナティブ</a>なチーム開発のすゝめ</h4>
<ul>
<li>「<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%AA%A5%EB%A5%BF%A5%CA%A5%C6%A5%A3%A5%D6">オルタナティブ</a>」= 「わくわくする」</li>
<li>一般的なラインマネージメント(ツリー構造)の問題点。
<ul>
<li>上に行くほどいけば現場から離れるので責任を回避する。</li>
<li>伝言ゲームが発生する。</li>
<li>管理能力を発揮しないと階段を登れない。</li>
</ul>
</li>
<li>機能的組織チームづくり
<ul>
<li>仕事をすべて洗い出す。どこに課題があるか認識する。</li>
<li>機能を洗い出す。
<ul>
<li>やらなくてはいけないこと=必須機能、できること=仕事とは関係ない機能(<a class="keyword" href="http://d.hatena.ne.jp/keyword/%C0%B0%B9%FC%B1%A1">整骨院</a>の資格など)。やりたいこと=将来的に必要なこと(個人ではなく、組織としてやりたいこと)。
* 機能に人をアサインする。アサインできない機能を外部に求める。または捨てる。</li>
</ul>
</li>
</ul>
</li>
<li>お客様とともに楽しむ</li>
<li>以下の役割の人をいれた
<ul>
<li>Webディレクター・・・たぶんデザイン寄りの人のこと</li>
<li>サービスプロデューサー・・・たぶん他の製品に関わった人のこと</li>
</ul>
</li>
<li>給与日を意識した施策をいれる。</li>
<li>新技術検証も計画に入れる。世間的に注目度の高い技術をお客様と共に検証する。</li>
<li>最近マイソースファクトリーというものを作った。
<ul>
<li><a href="https://mysaucefactory.com/">MySauceFactory(マイソースファクトリー)</a></li>
</ul>
</li>
<li>設計書も自社らしく(楽しく)
<ul>
<li>アイコンと矢印だけでシステムで表現する。</li>
</ul>
</li>
<li>所感
<ul>
<li>わくわくするような開発良い。</li>
<li>「機能」について具体的な例や文言がなかったので掴みきれなかった(;´Д`)</li>
</ul>
</li>
</ul>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/DeNA">DeNA</a>の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC">機械学習</a>基盤と分析基盤</h4>
<ul>
<li>深層学習=<a class="keyword" href="http://d.hatena.ne.jp/keyword/GPU">GPU</a>基盤。<a class="keyword" href="http://d.hatena.ne.jp/keyword/GPU">GPU</a>はCPUと比べ早く処理できる。並列処理が得意。24コア、2000コアとか。</li>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/GPU">GPU</a>は分岐処理が苦手。行列計算が得意。</li>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/AWS">AWS</a>や<a class="keyword" href="http://d.hatena.ne.jp/keyword/GCP">GCP</a>で<a class="keyword" href="http://d.hatena.ne.jp/keyword/GPU">GPU</a>の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A4%A5%F3%A5%B9%A5%BF%A5%F3%A5%B9">インスタンス</a>が用意されている。</li>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/GPU">GPU</a>サーバのオンデマンドスケールの話</li>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/AWS">AWS</a>は1時間課金なので、起動時間%60分 > 55分のインスタントを破棄する。できるだけ<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A4%A5%F3%A5%B9%A5%BF%A5%F3%A5%B9">インスタンス</a>を使いまわす。</li>
<li>スポット<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A4%A5%F3%A5%B9%A5%BF%A5%F3%A5%B9">インスタンス</a>を利用してコストを下げた。
<ul>
<li><a href="http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/using-spot-instances.html">http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/using-spot-instances.html</a></li>
</ul>
</li>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC">機械学習</a>でも、冪等性やatomicとかDBと同じ設計方針がある。</li>
<li>絶対に重複したくないデータはuuidをいれて担保する。</li>
<li>データ取り込みを簡単にしておく。NOW()の利用の際とか。</li>
<li>データフローの制御ツールを作った。
<ul>
<li><a href="https://github.com/triglav-dataflow">triglav-dataflow · GitHub</a></li>
</ul>
</li>
<li>所感
<ul>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC">機械学習</a>とか詳しくなかったし、<a class="keyword" href="http://d.hatena.ne.jp/keyword/GPU">GPU</a>などのインフラよりの話は初見で勉強になった(*´Д`*)</li>
</ul>
</li>
</ul>
<h4>コミュニティとエンジニアの生き方(仮)</h4>
<ul>
<li>コミュニティを運営している方の発表(二名)</li>
<li>信条(<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%AF%A5%EC%A5%C9">クレド</a>)、概要書作成しそれを軸にして活動。
<ul>
<li><a href="http://www.slideshare.net/YoshinoriKoba/swiftswift">Swiftビギナーズ勉強会のご紹介 - Swiftビギナーズ倶楽部 #swfitbg</a></li>
</ul>
</li>
<li>運営時のコツ
<ul>
<li>参加者にスポットライトを当てる仕組み。アイスブレイク、名刺交換。初心者を登壇させる。</li>
<li>はじめにセッション、そのあと<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A4%E2%A4%AF%A4%E2%A4%AF%B2%F1">もくもく会</a>だと効果が広い。</li>
</ul>
</li>
<li>関西<a class="keyword" href="http://d.hatena.ne.jp/keyword/Java">Java</a>エンジニアの会の人</li>
<li>「こうなりたい」人に近づく、触れる。運営をやっているとそれが得やすい。</li>
<li>すごい人と接すると、すごい人がやっている普通のことがわかる。自分の普通が変化していく。</li>
<li>変化が周りに伝染する。</li>
<li>コミュニティは「貢献」で成り立つ。何かしら貢献が必要。</li>
<li>所感
<ul>
<li>今住んでいるところにコミュニティない(;´Д`)</li>
<li>搾取だけではいけない。貢献しないと(;´Д`;)</li>
</ul>
</li>
</ul>
<h4>『もしも<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%E9%A5%E0">スクラム</a>マスターがテストエンジニアだったら』(もしテス)</h4>
<ul>
<li>テストの会社のツール開発の話。</li>
<li>既存のファイル(<a class="keyword" href="http://d.hatena.ne.jp/keyword/Excel">Excel</a>)以外のインターフェースだとなじまない。</li>
<li>小さくリリースするための仕組み
<ul>
<li>要件の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%C1%C7%B0%F8%BF%F4%CA%AC%B2%F2">素因数分解</a>:ユーザーストーリーの分解、スパイク・ストーリー(技術検証のストーリー)</li>
</ul>
</li>
<li>6W1Hでユーザーストーリーを書く。テストが書きやすい。</li>
<li>最低限の仕様書
<ul>
<li>製品コンセプト、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A1%BC%A5%AD%A5%C6%A5%AF%A5%C1%A5%E3">アーキテクチャ</a>図が必須。</li>
<li>ER、画面遷移図、ディビジョンテーブル、画面<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%E2%A5%C3%A5%AF%A5%A2%A5%C3%A5%D7">モックアップ</a>は任意(議論のため)</li>
</ul>
</li>
<li>テストエンジニアがテストを実施するときは全体を見る必要がある。それはプロダクトマネージャの視点に似ている。</li>
<li>所感
<ul>
<li>テスト会社の製品づくりの話おもしろい。</li>
<li>テスト駆動でプロセスも構築できそう。</li>
</ul>
</li>
</ul>
<h4>『ジョイ・インク』Joy, Inc. 〜 共感のソフトウェアづくりについてみんなで考えるワークショップ</h4>
<ul>
<li>以下の書籍の翻訳者によるワークショップ
<ul>
<li><div class="hatena-asin-detail"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4798148784/namihira-22/"><img src="https://images-fe.ssl-images-amazon.com/images/I/51Ndb5GY32L._SL160_.jpg" class="hatena-asin-detail-image" alt="ジョイ・インク 役職も部署もない全員主役のマネジメント" title="ジョイ・インク 役職も部署もない全員主役のマネジメント"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4798148784/namihira-22/">ジョイ・インク 役職も部署もない全員主役のマネジメント</a></p><ul><li><span class="hatena-asin-detail-label">作者:</span> リチャード・シェリダン,原田騎郎,安井力,吉羽龍太郎,永瀬美穂,川口恭伸</li><li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%E6%C6%B1%CB%BC%D2">翔泳社</a></li><li><span class="hatena-asin-detail-label">発売日:</span> 2016/12/20</li><li><span class="hatena-asin-detail-label">メディア:</span> 単行本(ソフトカバー)</li><li><a href="http://d.hatena.ne.jp/asin/4798148784/namihira-22" target="_blank">この商品を含むブログ (1件) を見る</a></li></ul></div><div class="hatena-asin-detail-foot"></div></div></li>
</ul>
</li>
<li>知識構成型ジグソー法を使った参加型セッション
<ul>
<li><a href="http://coref.u-tokyo.ac.jp/archives/5515">CoREF - 知識構成型ジグソー法</a></li>
</ul>
</li>
<li>みんなを喜ばせるではなくて、この人を喜ばせるとしたほうが良い(ペルソナ)</li>
<li>同じ喜びを共有できること。</li>
<li>所感
<ul>
<li>ワークショップだと他の参加者と話して講演とは違って生々しい話があって面白い。</li>
<li>「喜」についてはセッション内だけでは理解できなかった。本買わないと(;´Д`)</li>
</ul>
</li>
</ul>
<h3>ブース関連</h3>
<ul>
<li>New Relic
<ul>
<li>サービス・アプリのモニタリングサービス。New Relicのサービスが自サービスを叩く形態。</li>
<li><a href="https://newrelic.com/">Application Performance Management and Monitoring | New Relic</a></li>
<li>Tシャツもらった。</li>
</ul>
</li>
<li>SendGrid
<ul>
<li>メールサービス</li>
<li><a href="https://sendgrid.kke.co.jp/">SendGrid | メールを成功の原動力に。</a></li>
<li>Event Hookで叩かれるリクエストのフォーマットがわかりにくい(複雑)だと伝えた(´Д`)</li>
</ul>
</li>
<li>elastic
<ul>
<li>ロギングサービス</li>
<li><a href="https://www.elastic.co/jp/">Elastic · Revealing Insights from Data (Formerly Elasticsearch) | Elastic</a></li>
<li>elasticと書かれているゴムボールもらった。</li>
</ul>
</li>
</ul>
<h3>所感</h3>
<ul>
<li>ソフトウェア全般の話が聞けてよかった。</li>
<li>今回は気づいたら聴講したセッションがプロセス関連やチームづくり関連が多かった。多くの書籍分の知識を効率的に吸収できた感じ。</li>
<li>(逆に技術的な収穫はあまりなかった(;´Д`))</li>
<li>今回講演前にシャッター音、キーボードタイピング音とか注意があってよかった。去年は結構気になった(;´Д`)今年も多少あったが。</li>
<li>参加者も多く、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%CC%DC%B9%F5%B2%ED%BD%F6%B1%E0">目黒雅叙園</a>では手狭になっている気がする(;´Д`)</li>
</ul>
<h3>まとめ</h3>
<ul>
<li>これからがんばりたいです(小並感)</li>
</ul>
Namihira
All-Pairs法(Pariwise法)による組み合わせ表生成ツール
hatenablog://entry/10328749687214672079
2017-02-08T08:43:50+09:00
2017-02-08T08:43:50+09:00 背景 以下の本を読んだところ、複数の要素(条件)が重なり合う条件にて、2つの要素の組み合わせを完全網羅すればほとんどの不具合を発見できるとのこと。 本内で紹介されていた、その組み合わせ表を生成してくれるツール。 【この1冊でよくわかる】ソフトウェアテストの教科書―品質を決定づけるテスト工程の基本と実践作者: 石原一宏,田中英和,田中真史出版社/メーカー: ソフトバンククリエイティブ発売日: 2012/02/01メディア: 単行本購入: 2人 クリック: 12回この商品を含むブログ (9件) を見る Pict Master PictMaster プロジェクト日本語トップページ - OSDN 上記…
<h3>背景</h3>
<p>以下の本を読んだところ、複数の要素(条件)が重なり合う条件にて、2つの要素の組み合わせを完全網羅すればほとんどの不具合を発見できるとのこと。
本内で紹介されていた、その組み合わせ表を生成してくれるツール。
<div class="hatena-asin-detail"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4797365811/namihira-22/"><img src="https://images-fe.ssl-images-amazon.com/images/I/51ftxuPB2IL._SL160_.jpg" class="hatena-asin-detail-image" alt="【この1冊でよくわかる】ソフトウェアテストの教科書―品質を決定づけるテスト工程の基本と実践" title="【この1冊でよくわかる】ソフトウェアテストの教科書―品質を決定づけるテスト工程の基本と実践"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4797365811/namihira-22/">【この1冊でよくわかる】ソフトウェアテストの教科書―品質を決定づけるテスト工程の基本と実践</a></p><ul><li><span class="hatena-asin-detail-label">作者:</span> 石原一宏,田中英和,田中真史</li><li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%BD%A5%D5%A5%C8%A5%D0%A5%F3%A5%AF%A5%AF%A5%EA%A5%A8%A5%A4%A5%C6%A5%A3%A5%D6">ソフトバンククリエイティブ</a></li><li><span class="hatena-asin-detail-label">発売日:</span> 2012/02/01</li><li><span class="hatena-asin-detail-label">メディア:</span> 単行本</li><li><span class="hatena-asin-detail-label">購入</span>: 2人 <span class="hatena-asin-detail-label">クリック</span>: 12回</li><li><a href="http://d.hatena.ne.jp/asin/4797365811/namihira-22" target="_blank">この商品を含むブログ (9件) を見る</a></li></ul></div><div class="hatena-asin-detail-foot"></div></div></p>
<h3>Pict Master</h3>
<p><a href="https://ja.osdn.net/projects/pictmaster/">PictMaster プロジェクト日本語トップページ - OSDN</a><br/>
上記のプロジェクトは停止していて、今は以下らしい。<br/>
<a href="https://ja.osdn.net/projects/pictmasteroa/">PictMasterOA プロジェクト日本語トップページ - OSDN</a></p>
<h3>まとめ</h3>
<p>あとで試しに使ってみる。</p>
Namihira
Java IDEの所感メモ
hatenablog://entry/10328749687213257344
2017-02-04T22:05:55+09:00
2017-02-04T22:05:55+09:00 背景 最近やったIDE関連の作業にあたっての所感をメモっときます。 メモ NetBeans NetBeans 8.2の話 使い勝手的にはEclipseと大差なし。 コンソール出力がコマンドベースで詳細に表示される、リポジトリとの差分などがテキスト形式でも表示されるので、裏の動きが知れて勉強になる。 作業中のブランチ名が表示されないので、たまに間違う(表示することができるのかもしれない) Gradleプロジェクトをアプリサーバ(tomcatなど)で動作させるのが面倒。Netbeans 8.2以降正式サポートまだない(←自分にとって致命的)。 Gradle JavaEE Support - Net…
<h3>背景</h3>
<p>最近やった<a class="keyword" href="http://d.hatena.ne.jp/keyword/IDE">IDE</a>関連の作業にあたっての所感をメモっときます。</p>
<h3>メモ</h3>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/NetBeans">NetBeans</a></h4>
<ul>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/NetBeans">NetBeans</a> 8.2の話</li>
<li>使い勝手的には<a class="keyword" href="http://d.hatena.ne.jp/keyword/Eclipse">Eclipse</a>と大差なし。</li>
<li>コンソール出力がコマンドベースで詳細に表示される、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%EA%A5%DD%A5%B8%A5%C8%A5%EA">リポジトリ</a>との差分などがテキスト形式でも表示されるので、裏の動きが知れて勉強になる。</li>
<li>作業中のブランチ名が表示されないので、たまに間違う(表示することができるのかもしれない)</li>
<li>Gradleプロジェクトをアプリサーバ(<a class="keyword" href="http://d.hatena.ne.jp/keyword/tomcat">tomcat</a>など)で動作させるのが面倒。<a class="keyword" href="http://d.hatena.ne.jp/keyword/Netbeans">Netbeans</a> 8.2以降正式サポートまだない(←自分にとって致命的)。
<ul>
<li><a href="http://plugins.netbeans.org/plugin/55529/gradle-javaee-support">Gradle JavaEE Support - NetBeans Plugin detail</a></li>
</ul>
</li>
</ul>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/Eclipse">Eclipse</a></h4>
<ul>
<li><a class="keyword" href="http://d.hatena.ne.jp/keyword/Eclipse">Eclipse</a> 4.6(<a class="keyword" href="http://d.hatena.ne.jp/keyword/Neon">Neon</a>)の話</li>
<li>4.6 <a class="keyword" href="http://d.hatena.ne.jp/keyword/Neon">Neon</a>から<a class="keyword" href="http://d.hatena.ne.jp/keyword/Mac">Mac</a>用にAll in Oneパッケージが提供されているので助かった(*´Д`*)</li>
</ul>
<h3>まとめ</h3>
<p><a class="keyword" href="http://d.hatena.ne.jp/keyword/Netbeans">Netbeans</a>を使おうと思ったが、結局<a class="keyword" href="http://d.hatena.ne.jp/keyword/Eclipse">Eclipse</a>に戻ってきた(;´Д`)</p>
Namihira
書籍「NASAより宇宙に近い町工場」の備忘録
hatenablog://entry/10328749687209066932
2017-01-22T23:08:48+09:00
2017-01-22T23:08:48+09:00 背景 以下の書籍を読んで、印象に残ったところを備忘録的にメモっときます。 NASAより宇宙に近い町工場 僕らのロケットが飛んだ作者: 植松努出版社/メーカー: ディスカヴァー・トゥエンティワン発売日: 2013/01/29メディア: Kindle版この商品を含むブログを見る 概要 ロケット・設備開発をしている北海道の田舎の小さな企業の取締役、植松氏の著書 宇宙開発をするにあたって大切にしている、学んだ考え方 自分で思ってしまう、他人に言われてしまう「どうせ無理」という考え方を捨てることが大切。 メモ 知恵(知識)と経験は大切 (p.70) (樺太のソビエト侵攻によって円の価値がなくなった話があ…
<h3>背景</h3>
<p>以下の書籍を読んで、印象に残ったところを備忘録的にメモっときます。
<div class="hatena-asin-detail"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00B8IXM3K/namihira-22/"><img src="https://images-fe.ssl-images-amazon.com/images/I/41vEDEsEfKL._SL160_.jpg" class="hatena-asin-detail-image" alt="NASAより宇宙に近い町工場 僕らのロケットが飛んだ" title="NASAより宇宙に近い町工場 僕らのロケットが飛んだ"></a><div class="hatena-asin-detail-info"><p class="hatena-asin-detail-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/B00B8IXM3K/namihira-22/">NASAより宇宙に近い町工場 僕らのロケットが飛んだ</a></p><ul><li><span class="hatena-asin-detail-label">作者:</span> 植松努</li><li><span class="hatena-asin-detail-label">出版社/メーカー:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C7%A5%A3%A5%B9%A5%AB%A5%F4%A5%A1%A1%BC%A1%A6%A5%C8%A5%A5%A5%A8%A5%F3%A5%C6%A5%A3%A5%EF%A5%F3">ディスカヴァー・トゥエンティワン</a></li><li><span class="hatena-asin-detail-label">発売日:</span> 2013/01/29</li><li><span class="hatena-asin-detail-label">メディア:</span> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Kindle">Kindle</a>版</li><li><a href="http://d.hatena.ne.jp/asin/B00B8IXM3K/namihira-22" target="_blank">この商品を含むブログを見る</a></li></ul></div><div class="hatena-asin-detail-foot"></div></div></p>
<h3>概要</h3>
<ul>
<li>ロケット・設備開発をしている北海道の田舎の小さな企業の取締役、植松氏の著書</li>
<li>宇宙開発をするにあたって大切にしている、学んだ考え方</li>
<li>自分で思ってしまう、他人に言われてしまう「どうせ無理」という考え方を捨てることが大切。</li>
</ul>
<h3>メモ</h3>
<h4>知恵(知識)と経験は大切</h4>
<blockquote><p>(p.70)<br/>
(<a class="keyword" href="http://d.hatena.ne.jp/keyword/%B3%F2%C2%C0">樺太</a>の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%BD%A5%D3%A5%A8%A5%C8">ソビエト</a>侵攻によって円の価値がなくなった話があって)<br/>
(略)ばあちゃんは教えてくれました。お金はくだらないよ、一晩で価値が変わっちゃうからね、と。お金があったら本を買いなさい、頭に入れてしまえば誰にも取れないし、その知識が必ず新しいことを生みだすと教えてくれたんです。ばあちゃんは知恵と経験にはお金と同じ価値があるということを教えてくれました。</p></blockquote>
<p>知恵(知識)と経験が大切。</p>
<h4>「何もしない」は何も生まない</h4>
<blockquote><p>(p.84)<br/>
(略)社会も人生も問題だらけです。 その問題を、知ったかぶりをしたり間違いを認めなかったりしていては、全然解決できないんです。<br/>
知らないことは知りたいと思わなければいけません。そして、間違えたら、もうい っペんやればいいんです。それで問題は解決できます。でも、問題解決能力を与えられていない人たちは、しょうがないから問題を先送りしたり無視したりするしかなくなってしまいます。<br/>
また、知らなくてもいい状態や間違えないですむ状態、すなわち「何もしない」という道を選択してしまった場合も、問題解決能力は永久に身につくことがありません。</p></blockquote>
<h4>暇なら勉強する</h4>
<blockquote><p>(p.122)<br/>
暇だったら勉強すればいいんです。腕組んで待っていたってしょうがありません。<br/>
暇というのは、実は大事なことなんです。<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%AE%A5%EA%A5%B7%A5%A2%B8%EC">ギリシア語</a>で暇を「スコーレ」といって、これがスクールの語源だそうです。つまり、暇というのは学ぶべき時間なんです。ギリシア人は、暇というものから学校をつくりだしたそうです。だから、暇なら学べばいいんです。</p></blockquote>
<p>暇なときテレビを見続けるのを是正したい<a class="keyword" href="http://d.hatena.ne.jp/keyword/%28%A1%AD%A1%A6%A6%D8%A1%A6%60%29">(´・ω・`)</a></p>
<h4>夢と仕事に違い</h4>
<blockquote><p>(p.170)<br/>
夢とは、大好きなこと、やってみたいことです。<br/>
そして仕事とは、社会や人のために役に立つことです。</p></blockquote>
<p>ちゃんと仕事したい(;´Д`)</p>
<h4>趣味とは自分ですること</h4>
<blockquote><p>(p.123)<br/>
僕はアメリカに行ったときに自己紹介で、本が好きですと言ったら、どんな本を書いているんですかと聞かれてしまいました。次に会った人に僕は映画が好きですと言ったら、どんな映画を撮っているんですかと聞かれてしまいました。<br/>
彼らは言いました。<br/>
「お金を払ってしてもらうことはサービスですよ。それは趣味じゃありません」<br/>
趣味とは自分ですることだと教えてくれました。</p></blockquote>
<p>趣味のハードルが高い(;´Д`)</p>
<h3>まとめ</h3>
<p>技術的なこととか、苦労話、開発物語の話かと思ったら、人生哲学本だった(´Д`)<br/>
無理だと思わずやってみたらできちゃうところがすごい。</p>
Namihira
お道具箱の整理(2017年版)
hatenablog://entry/10328749687208755077
2017-01-21T23:43:36+09:00
2017-01-21T23:48:11+09:00 背景 最近もろもろ環境が変わったので、前にやった(2014年←(´Д`)!)使っているツールやサイトの情報を更新します。 お道具箱の整理 - なみひらブログ 普段使っているツールやサイト NetBeans netbeans.org Javaの開発環境はこれまでEclipseを使っていましたが、PCを買い替えた際にNetBeansをいれてお試し中。 Atom atom.io テキストエディタはAtomを利用。かゆいところに手が届くパッケージ(プラグイン)が良い。 良いパッケージは以下(まだ使い始めたばかり(;´Д`)) minimap split-diff monokai Slack slack…
<h3>背景</h3>
<p>最近もろもろ環境が変わったので、前にやった(2014年←(´Д`)!)使っているツールやサイトの情報を更新します。<br/>
<a href="http://namihira.hatenablog.com/entry/2014/11/01/104935">お道具箱の整理 - なみひらブログ</a></p>
<h3>普段使っているツールやサイト</h3>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/NetBeans">NetBeans</a></h4>
<p><iframe src="//hatenablog-parts.com/embed?url=https%3A%2F%2Fnetbeans.org" title="Welcome to NetBeans" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="https://netbeans.org">netbeans.org</a></cite>
<a class="keyword" href="http://d.hatena.ne.jp/keyword/Java">Java</a>の開発環境はこれまで<a class="keyword" href="http://d.hatena.ne.jp/keyword/Eclipse">Eclipse</a>を使っていましたが、PCを買い替えた際に<a class="keyword" href="http://d.hatena.ne.jp/keyword/NetBeans">NetBeans</a>をいれてお試し中。</p>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/Atom">Atom</a></h4>
<p><iframe src="//hatenablog-parts.com/embed?url=https%3A%2F%2Fatom.io" title="A hackable text editor for the 21st Century" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="https://atom.io">atom.io</a></cite>
<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C6%A5%AD%A5%B9%A5%C8%A5%A8%A5%C7%A5%A3%A5%BF">テキストエディタ</a>は<a class="keyword" href="http://d.hatena.ne.jp/keyword/Atom">Atom</a>を利用。かゆいところに手が届くパッケージ(<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3">プラグイン</a>)が良い。<br/>
良いパッケージは以下(まだ使い始めたばかり(;´Д`))</p>
<ul>
<li><a href="https://atom.io/packages/minimap">minimap</a></li>
<li><a href="https://atom.io/packages/split-diff">split-diff</a></li>
<li><a href="https://atom.io/packages/monokai">monokai</a></li>
</ul>
<h4>Slack</h4>
<p><iframe src="//hatenablog-parts.com/embed?url=https%3A%2F%2Fslack.com" title="Slack: Where work happens" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="https://slack.com">slack.com</a></cite>
チームの状況共有、コミュケーションに利用。</p>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/Visio">Visio</a></h4>
<p><a href="https://products.office.com/ja-jp/visio/flowchart-software">Visio 2016 - プロフェッショナルなフローチャート作成ソフトウェア</a><br/>
最近GSNを書くことが多いので、その作図に利用。</p>
<ul>
<li><a href="http://blogs.itmedia.co.jp/hiranabe/2013/11/goal-structuring-network.html">GSN(Goal Structuring Notation)解説:An Agile Way:オルタナティブ・ブログ</a></li>
</ul>
<h4>SnapCrab for <a class="keyword" href="http://d.hatena.ne.jp/keyword/Windows">Windows</a></h4>
<p><iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fwww.fenrir-inc.com%2Fjp%2Fsnapcrab%2F" title="高機能スクリーンショットツール SnapCrab - マウスひとつで、即キャプチャ | フェンリル" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="http://www.fenrir-inc.com/jp/snapcrab/">www.fenrir-inc.com</a></cite>
デスクトップの画面キャプチャツール。いろいろ設定できて、かゆいところに手が届いて良いです。</p>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A4%CF%A4%C6%A4%CA%A5%D6%A5%ED%A5%B0">はてなブログ</a></h4>
<p><iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fhatenablog.com" title="はてなブログ" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="http://hatenablog.com">hatenablog.com</a></cite>
引き続きお世話になっています。</p>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/Feedly">Feedly</a></h4>
<p><iframe src="//hatenablog-parts.com/embed?url=https%3A%2F%2Ffeedly.com%2F" title="feedly: organize, read and share what matters to you." class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="https://feedly.com/">feedly.com</a></cite>
情報収集手段。</p>
<h4>Qiita</h4>
<p><iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fqiita.com" title="Qiita - プログラマの技術情報共有サービス - Qiita" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="http://qiita.com">qiita.com</a></cite>
情報収集手段(サブ)</p>
<h4>TechClips</h4>
<p><iframe src="//hatenablog-parts.com/embed?url=https%3A%2F%2Ftech-clips.com" title="TechClips[テッククリップス]|エンジニアの情報アンテナを加速させるニュース共有サービス" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="https://tech-clips.com">tech-clips.com</a></cite>
情報収集手段(サブサブ)</p>
<h4>iStock</h4>
<p><iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fwww.istockphoto.com%2Fjp" title="写真素材、イラスト、ビデオ" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="http://www.istockphoto.com/jp">www.istockphoto.com</a></cite>
<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D1%A5%EF%A5%DD">パワポ</a>に使える画像はこちらから探しています。しかし、定期的にもらえる無料画像のみの利用です(´Д`)</p>
<h4>いらすとや</h4>
<p><iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fwww.irasutoya.com" title="かわいいフリー素材集" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="http://www.irasutoya.com">www.irasutoya.com</a></cite>
<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D1%A5%EF%A5%DD">パワポ</a>に使う用。</p>
<h4>LGTM.in</h4>
<p><a href="http://www.lgtm.in">LGTM.in » Home</a><br/>
<a class="keyword" href="http://d.hatena.ne.jp/keyword/Github">Github</a>やSlackに貼る用。</p>
<h4>煽り画像・レス画像まとめ</h4>
<p><a href="http://e-village.main.jp/gazou/">煽り画像・ネタ画像・レス画像まとめ</a><br/>
Slackに貼る用。</p>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/Firefox">Firefox</a></h4>
<p>ブラウザは<a class="keyword" href="http://d.hatena.ne.jp/keyword/Firefox">Firefox</a>一本。<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3">プラグイン</a>にロックインされている(;´Д`)</p>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/Google%A5%AB%A5%EC%A5%F3%A5%C0%A1%BC">Googleカレンダー</a>、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Google">Google</a>ドライブ、<a class="keyword" href="http://d.hatena.ne.jp/keyword/Gmail">Gmail</a></h4>
<p>生活の基本は<a class="keyword" href="http://d.hatena.ne.jp/keyword/Google">Google</a>サービス。</p>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/Github">Github</a></h4>
<p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%BD%A1%BC%A5%B9%A5%B3%A1%BC%A5%C9">ソースコード</a>管理。<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C7%A5%D5%A5%A1%A5%AF%A5%C8">デファクト</a>。</p>
<h4>Trello</h4>
<p><iframe src="//hatenablog-parts.com/embed?url=https%3A%2F%2Ftrello.com" title="Trello" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="https://trello.com">trello.com</a></cite>
公私においてタスク管理として利用。使いやすい。</p>
<h4>Eight</h4>
<p><iframe src="//hatenablog-parts.com/embed?url=https%3A%2F%2F8card.net" title="「名刺は、こうなる。」(名刺アプリEight)" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="https://8card.net">8card.net</a></cite>
もらった名刺はこのサービスに登録。検索性、アクセス性が良い。</p>
<h4><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D6%A5%AF%A5%ED%A5%B0">ブクログ</a></h4>
<p><a href="http://booklog.jp">http://booklog.jp</a><br/>
読書管理はこのサービス。バーコードから書籍を登録や検索できるのが助かります。</p>
<h4>Fitbit</h4>
<p><iframe src="//hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.fitbit.com%2Fjp" title="アクティビティ記録デバイスなどの情報が得られる Fitbit オフィシャルサイト" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="https://www.fitbit.com/jp">www.fitbit.com</a></cite>
<a class="keyword" href="http://d.hatena.ne.jp/keyword/%B3%E8%C6%B0%CE%CC%B7%D7">活動量計</a>測はこのサービス。主に「One」で日々歩数を取っています。高機能な上位機種が欲しい今日このごろ(´Д`)</p>
<h4>The Big Picture</h4>
<p><iframe src="//hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.bostonglobe.com%2Fnews%2Fbigpicture" title="The Big Picture - The Boston Globe" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="https://www.bostonglobe.com/news/bigpicture">www.bostonglobe.com</a></cite>
海外ニュース収集と<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A4%A5%F3%A5%D1%A5%AF">インパク</a>トのある写真の撮り方が勉強になります(´Д`)</p>
<h3>まとめ</h3>
<p>もろもろ変えて変わった(´Д`)</p>
Namihira