<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://www.hidashun.dev/feed.xml" rel="self" type="application/atom+xml" /><link href="https://www.hidashun.dev/" rel="alternate" type="text/html" /><updated>2026-08-10T02:57:02+00:00</updated><id>https://www.hidashun.dev/feed.xml</id><title type="html">hidashunlog</title><subtitle>This is my new website</subtitle><author><name>hidashun</name></author><entry><title type="html">『Web APIの設計』を読んだ</title><link href="https://www.hidashun.dev/book/2021/03/22/the-design-of-web-apis/" rel="alternate" type="text/html" title="『Web APIの設計』を読んだ" /><published>2021-03-22T00:00:00+00:00</published><updated>2021-03-22T00:00:00+00:00</updated><id>https://www.hidashun.dev/book/2021/03/22/the-design-of-web-apis</id><content type="html" xml:base="https://www.hidashun.dev/book/2021/03/22/the-design-of-web-apis/"><![CDATA[<p>2020年8月出版の『Web APIの設計』を読み終わったので、自分が印象に残ったところをまとめようと思います。</p>

<p><a href="https://www.shoeisha.co.jp/book/detail/9784798167008">出版社の紹介ページ</a></p>

<hr />

<h2 id="目次">目次</h2>
<ul id="markdown-toc">
  <li><a href="#目次" id="markdown-toc-目次">目次</a></li>
  <li><a href="#全体の内容と感想" id="markdown-toc-全体の内容と感想">全体の内容と感想</a></li>
  <li><a href="#本の構成" id="markdown-toc-本の構成">本の構成</a></li>
  <li><a href="#紹介されているwebサイト" id="markdown-toc-紹介されているwebサイト">紹介されているWebサイト</a></li>
  <li><a href="#印象に残ったこと" id="markdown-toc-印象に残ったこと">印象に残ったこと</a>    <ul>
      <li><a href="#使う側にとっての設計を常に重視する" id="markdown-toc-使う側にとっての設計を常に重視する">使う側にとっての設計を常に重視する</a>        <ul>
          <li><a href="#提供する側の都合で設計しない" id="markdown-toc-提供する側の都合で設計しない">提供する側の都合で設計しない</a></li>
          <li><a href="#ヒューマンリーダブル" id="markdown-toc-ヒューマンリーダブル">ヒューマン・リーダブル</a></li>
        </ul>
      </li>
      <li><a href="#ゴールキャンバス" id="markdown-toc-ゴールキャンバス">ゴールキャンバス</a></li>
      <li><a href="#httpプロトコルや一般的な規格を利用する" id="markdown-toc-httpプロトコルや一般的な規格を利用する">HTTPプロトコルや一般的な規格を利用する</a></li>
      <li><a href="#拡張しやすい設計" id="markdown-toc-拡張しやすい設計">拡張しやすい設計</a></li>
      <li><a href="#設計の例外あるある" id="markdown-toc-設計の例外あるある">設計の例外あるある</a></li>
      <li><a href="#他おすすめされていること" id="markdown-toc-他おすすめされていること">他おすすめされていること</a></li>
    </ul>
  </li>
  <li><a href="#最後に" id="markdown-toc-最後に">最後に</a></li>
</ul>

<hr />

<h2 id="全体の内容と感想">全体の内容と感想</h2>

<p>この本はフランス人システムアーキテクトのアルノー・ロレの『<a href="https://www.manning.com/books/the-design-of-web-apis?query=design%20api">The Design of Web APIs</a>』の邦訳です。</p>

<p>Web API、もっと言えば <strong>REST</strong> について、基本的なことからセキュリティやネットワーク、ドキュメントに関わることまで、知っておくべきことを広く丁寧に説明している本でした。</p>

<p>RESTの基本に関してはこの本でなくても勉強できると思うので(自分の場合は<a href="https://www.oreilly.co.jp/books/9784873113531/">オライリーの『RESTful Webサービス』</a> でした)、その知識がある人は改めて読まなくてもいいように思います。</p>

<p>ただ、その上で設計について「こういう時はどうすればいいんだろう」みたいなよくある疑問について、選択肢を挙げた上で「私はこのやり方をおすすめします」的な <strong>著者の意見が書かれている</strong> ので、そこに関しては1つの参考になると思います。</p>

<p>あとは <strong>APIのドキュメントをどう書くか</strong> 、については自分はあまり本でこの辺りを勉強していないので、いざ書こうとなったら役立つだろうと思います。<a href="https://swagger.io/specification/">Open API Specification</a> で書く場合の具体例がたくさん出てきます。</p>

<h2 id="本の構成">本の構成</h2>

<p>3部構成になっていて、第1部はAPIの基礎、第2部は設計で、この2つのパートは基本的に「理想」が書かれているように思います。</p>

<p>第3部からはもう少し現実的な話が出てきます。ページングやキャッシュ、バージョニングあたりの話が出てきます。</p>

<p>必要な章だけ独立して読めるか、でいうと、紹介されている例が基本的に続きものなので、順番に読んだ方が分かりやすいと思います。</p>

<h2 id="紹介されているwebサイト">紹介されているWebサイト</h2>

<ul>
  <li>著者のブログ
    <ul>
      <li><a href="https://apihandyman.io/">https://apihandyman.io/</a></li>
    </ul>
  </li>
  <li>色々な公開APIの設計ガイドラインを著者がまとめたサイト
    <ul>
      <li><a href="http://apistylebook.com/">http://apistylebook.com/</a></li>
    </ul>
  </li>
  <li>Open APIでドキュメントを作る際にリファレンスの項目を見つけやすくするためのサイト(著者による)
    <ul>
      <li><a href="https://openapi-map.apihandyman.io/">https://openapi-map.apihandyman.io/</a></li>
    </ul>
  </li>
  <li>Open APIを扱うツールをまとめたサイト
    <ul>
      <li><a href="https://openapi.tools/">https://openapi.tools/</a></li>
    </ul>
  </li>
  <li>Open APIのオンラインエディター
    <ul>
      <li><a href="https://editor.swagger.io/">https://editor.swagger.io/</a></li>
    </ul>
  </li>
  <li>ReDoc - Open APIからHTMLのドキュメントを生成するのに利用
    <ul>
      <li><a href="https://github.com/Redocly/redoc">https://github.com/Redocly/redoc</a></li>
    </ul>
  </li>
  <li>APIに関する情報を扱ったニュースレター
    <ul>
      <li><a href="https://apideveloperweekly.com/">https://apideveloperweekly.com/</a></li>
    </ul>
  </li>
  <li>APIに関するイベントのまとめ（そんなんあるんですねっていう）
    <ul>
      <li><a href="https://webapi.events/">https://webapi.events/</a></li>
    </ul>
  </li>
</ul>

<h2 id="印象に残ったこと">印象に残ったこと</h2>

<h3 id="使う側にとっての設計を常に重視する">使う側にとっての設計を常に重視する</h3>

<p><strong>他の開発者にとって分かりやすい設計をするべき</strong> という考えで一貫した意見を書かれていると思います。</p>

<p>本の中で架空の家電のUI(インターフェース)を何度も例えとして出して、「家電のUIが分かりづらかったら使いづらいですよね？表記や配置、表示単位がばらばらだったら困りますよね？APIも同じですよ」というような話をしていて、分かりやすい例えだなと思いました。</p>

<h4 id="提供する側の都合で設計しない">提供する側の都合で設計しない</h4>

<p>使う側の立場で設計するということは、提供する側、つまり <strong>開発する側の都合を設計に反映させてはいけない</strong> ということです。</p>

<p>データベースにこう格納されているからそれをそのまま返す、みたいなことはやめましょうという話です。この辺は個人的にはかなりやりがちではと思います。</p>

<p>ついでにいうと同じリソースの情報を返すAPIでも、<strong>各APIのコンテキストに必要なプロパティだけ返しましょう</strong> ということも書かれています。現実には複数のコンテキストに対応できる、プロパティがいっぱい生えたオブジェクトを返しがちだと思うので、これを守るのはちょっと手間がかかりそうです。</p>

<h4 id="ヒューマンリーダブル">ヒューマン・リーダブル</h4>

<p>APIがやりとりする内容は機械が読み書きするために存在していますが、それでも開発するのは人間なので <strong>内容を人間が読める方がベター</strong>、というスタンスです。</p>

<p>例えば日付を返す時にUNIXタイムスタンプとして返すというやり方がありますが、それでは人間には分からないので <code class="language-plaintext highlighter-rouge">"2021-03-22"</code> のように人間が読めるようにしましょうという内容です(あるいはヒューマン・リーダブルなプロパティを別に用意する)。</p>

<p>他にenumをnumberで返しているところも、理解できる文字列で返した方が開発者にとってはいいという話です。</p>

<h3 id="ゴールキャンバス">ゴールキャンバス</h3>

<p>設計に使うツールとして「ゴールキャンバス」という表が2章以降よく出てきます。</p>

<p>1つ1つのAPIを、ユーザーが何かを達成するための「<strong>ゴール(目標)</strong>」ととらえて、それぞれのゴールを洗い出しながら設計するやり方を説明しています。表の列は以下の6つです:</p>
<ul>
  <li>誰が</li>
  <li>何を</li>
  <li>どのように</li>
  <li>入力(ソース)</li>
  <li>出力(用途)</li>
  <li>ゴール</li>
</ul>

<p>この表を埋めていくことで全体を把握して、足りないところや統一性のないところ、そして無駄なものに気付ける、というのがメリットだと思います。</p>

<h3 id="httpプロトコルや一般的な規格を利用する">HTTPプロトコルや一般的な規格を利用する</h3>

<p>音楽プレーヤーの「再生」「一時停止」のシンボル(マーク)はISO 7000で定義されているそうで、このアイコンを知っているユーザはこれが使われているどの製品でもその使い方を推測できる、という話が6章に出てきます。</p>

<p>これと同じで、APIの開発者は <strong>既に誰かが定義したものを使うことでAPIの使い方を推測しやすくできます</strong> 。また車輪の再発明を防ぐことにもなります。</p>

<p>以下は紹介されている規格(他)です:</p>

<ul>
  <li>基本は HTTP 1.1 RFC7231</li>
  <li>ステータスコード（以下はこういう使い方もできる、という例)
    <ul>
      <li>409 Conflict … 直近で似たリクエストがあった</li>
      <li>400 … クライアント側のエラーかつカテゴリをまたぐエラーの場合 (401と403とか)</li>
      <li>404 … 403等でエラーを返すこと自体が情報漏洩になる場合</li>
      <li>207 Multi Status … 一括処理するAPIのレスポンスとして使う(項目ごとに成功やエラーの情報を含むリストを返す想定)</li>
      <li>202 Accepted … 同期的に処理できないがいずれ実行されることを表す場合（処理に時間がかかる、人の手が必要など)</li>
      <li>410 Gone … リソースが何らかの処理を表していて、それが既に処理済みか、キャンセルされた場合</li>
    </ul>
  </li>
  <li>HTTPヘッダ
    <ul>
      <li>Accept: APIのバージョン指定に使うこともできる。 (例: <code class="language-plaintext highlighter-rouge">application/vnd.bank.2+json</code>。<code class="language-plaintext highlighter-rouge">vnd</code>はvendor)</li>
      <li>Accept: 同じリソースで詳しい情報を含めたものを返してほしい時に使える。 (例： <code class="language-plaintext highlighter-rouge">application/vnd.bankingapi.extended+json</code>)</li>
      <li>Sunset (RFC8594): いつそのリソースが使えなくなるかを表すのに使える</li>
    </ul>
  </li>
  <li>日時や期間は ISO 8601</li>
  <li>通貨は ISO 4217</li>
  <li>言語を選択させる場合は RFC5646</li>
  <li>エラーのレスポンスで、ユーザが送ったJSONのどの部分に問題があるかを示したいときに JSONPath が使えるかもしれない</li>
  <li>ハイパーメディアAPIの参考として (別のAPIを発見できるようにする仕組み)
    <ul>
      <li>HAL</li>
      <li>Collection+JSON</li>
      <li>JSON API</li>
      <li>JSON-LD</li>
      <li>Hydra</li>
      <li>Siren</li>
    </ul>
  </li>
  <li>WebフックAPIの参考として
    <ul>
      <li>WebSub勧告</li>
    </ul>
  </li>
  <li>エラーモデルの参考として
    <ul>
      <li>Graph QLの標準のエラーモデル</li>
    </ul>
  </li>
</ul>

<h3 id="拡張しやすい設計">拡張しやすい設計</h3>

<p>基本的にAPIのバージョニングをしたとしても、後から設計を変更するのは大変なのでどんな構造だと拡張しやすいか、ということを知っておくといいという話です。</p>

<p>例えばリストをそのままJSONで返すのではなく、<code class="language-plaintext highlighter-rouge">items</code> のようなプロパティにリストを入れたオブジェクトを返すようにします。後からページネーションのようなメタデータを追加できるためです。</p>

<p>基本的にはオブジェクト &gt; 文字列 &gt; bool や数値の順で拡張しやすくなります。</p>

<p>例えば <code class="language-plaintext highlighter-rouge">{ "active": false }</code> より <code class="language-plaintext highlighter-rouge">{ "status": "INACTIVE" }</code> の方が後から変更しやすい(この場合はEnumの要素が増やせる)、ということかと思います。</p>

<p>「更新日」「作成日」のように日付を表す情報を「イベント」として表してリストの形でもっておけば、何らかの日付を追加する時に専用のプロパティを追加をする必要がない、みたいな話も載っています。</p>

<p>まあこれに関しては実際にうまくいくかはものによると思います。</p>

<h3 id="設計の例外あるある">設計の例外あるある</h3>

<ul>
  <li>アクションリソース … リソースのアクションをHTTPメソッドで表せない場合(よく動詞でPOSTにするパターン)。これに関して正解はない</li>
  <li>リソースのコレクションのうち一部を返すゴールを用意したい時
    <ul>
      <li><code class="language-plaintext highlighter-rouge">/transfers/delayed/{transferId}</code> ではなく <code class="language-plaintext highlighter-rouge">/delayed-transfers/{transferId}</code> にすればいい(リソースIDの前は複数形、という統一感が失われない)</li>
    </ul>
  </li>
  <li>自分自身のIDを指定する時は <code class="language-plaintext highlighter-rouge">me</code> というパラメータを用意することもできる (<code class="language-plaintext highlighter-rouge">マジックリソースID</code>と読んでいる)</li>
  <li>一括更新/削除/置換はリソースコレクションのAPIでPATCH/DELETE/PUTを追加すればいい</li>
  <li>一括追加については単体作成用のAPI (<code class="language-plaintext highlighter-rouge">POST /some-resources</code>)で複数のパラメータをリストで渡せるようにするか、<code class="language-plaintext highlighter-rouge">POST /some-resources/batch</code> のような専用のAPIを生やす必要がある</li>
</ul>

<h3 id="他おすすめされていること">他おすすめされていること</h3>

<ul>
  <li>200 などの成功のレスポンスではさらに <strong>他のゴールを使うのに役立つ情報を返す</strong></li>
  <li>ユーザが入力パラメータとして使うとエラーになるデータを最初から返さない（使えるデータだけを返すゴールを用意する)</li>
  <li>レスポンスやAPIドキュメントでプロパティやエラーを羅列する時は <strong>使う側にとって重要なものから並べる</strong> (これは賛否両論ありそうというか実装大変そう…)</li>
  <li>レスポンスのオブジェクトのネストはせいぜい3つまで</li>
  <li>シーケンシャルなデータベースのキーを返すのは企業の顧客数のようなセンシティブな情報の手がかりを与えてしまうため<strong>推奨されない</strong> (分かるけどやりがち)</li>
  <li>レスポンスで何かリストを返す場合は常に返せる要素数に制限を設けること(最大100個まで、とか)</li>
  <li>APIのバージョニングはドメインかパスで切り替えるのが無難。一部だけ切り替えるとややこしくなりがち</li>
</ul>

<h2 id="最後に">最後に</h2>

<p>ここまでで書いていないことで他にも参考にできそうなことは色々ありました。セキュリティに関して、スコープの切り方とかも説明されているのですが、実践したことがないので載せていません。</p>

<p>最後の13章に、設計したAPIを検証するためのチェックリストが載っていて、この辺を本当にちゃんとチェックできていれば実際使いやすいAPIになる気がします。</p>

<p>あとは単純にAPIのリファレンス以外にも、<strong>ユースケース</strong>を説明するドキュメントや<strong>設計ガイドライン</strong>も用意しましょうという話がありました。</p>

<p>この本全体を通して言えるんですが、これって<strong>Web APIに限らず通常の開発でもやった方がいいことばかり</strong>なんだよな…と思います。APIに統一感をもたせる、推測しやすくする、必要なものだけ渡す、などもそうです。</p>

<p>最近出ている勉強会で「誰にでも分かる設計というのはフィクション。<strong>いい設計を目指した上で情報共有(教育など)も必要</strong>」的なことを言われている方がいましたが、まさにその通りだなと思いました。</p>

<p>どんなに個々のパッケージやクラスがいい設計と言えるとしても、全体像が見えるかと言われれば他に説明は必要で、APIがAPIリファレンスを見ただけではすぐには使いこなせないのと同じことかな、と思います。</p>

<p>まあ何が言いたいかっていうと「いい設計にしようと頑張るのも大事だけど、ドキュメントを書くなど説明する努力も大事だな…」ということでした。</p>

<hr />

<h2 class="no_toc" id="余談">余談</h2>

<p>そういえば『ハンズオンNode.js』で「Server-Sent Event」というもの(サーバーからのみ非同期でクライアントにデータを送れる)が出てきて、そんなんあったんだ…と思いましたが、ちょっと前に聴いた <a href="https://mozaic.fm/">mozaic.fm</a> のどこかの回で「まだあったんですね」「使ってる人いるんですか」みたいな話になっていた気がします。結局これ活用してる人いるんですかね :thinking:</p>]]></content><author><name>hidashun</name></author><category term="Book" /><summary type="html"><![CDATA[2020年8月出版の『Web APIの設計』を読み終わったので、自分が印象に残ったところをまとめようと思います。]]></summary></entry><entry><title type="html">2020/05/17</title><link href="https://www.hidashun.dev/general/2020/05/17/aoc-gaming-monitor/" rel="alternate" type="text/html" title="2020/05/17" /><published>2020-05-17T00:00:00+00:00</published><updated>2020-05-17T00:00:00+00:00</updated><id>https://www.hidashun.dev/general/2020/05/17/aoc-gaming-monitor</id><content type="html" xml:base="https://www.hidashun.dev/general/2020/05/17/aoc-gaming-monitor/"><![CDATA[<h1 id="ゲーミングモニターを買いました-aoc-ag251fz211">ゲーミングモニターを買いました (AOC AG251FZ2/11)</h1>

<p>　コロナウイルスの流行による緊急事態宣言で、自分の会社でも在宅勤務が始まりしばらく経つのですが、特に在宅勤務が始まった当初は <strong>快適に仕事したい</strong> ということで色々と必要なものを購入しました (主にケーブル類)。</p>

<p>　その買った中で <strong>一番高いもの</strong> が AOC というメーカーのゲーミングモニタでして、その感想を書いておこうと思います。ちなみにゲーミングモニタを買ったのは初めてで、アマゾンで <strong>3万8千円弱</strong> で購入しました。ちなみにさっきアマゾンで同じ商品を見たら9千円くらい値上がりしている気がしますが、理由はよく分かりません。</p>

<h3 id="スペックは">スペックは?</h3>

<p>　「快適に仕事したい」をちゃんと読んだ人は「ゲーミングモニタ」にツッコミを入れたいかもしれませんが、大事なことを先に書きます。</p>

<h5 id="サイズと解像度-245-型-の-1920--1080">・サイズと解像度: 24.5 型 の 1920 * 1080</h5>

<p>　1920 * 1080 はフルHDとも言われます。まわりの人で 4K (3840 * 2160) モニタを買っている/持っている人がいる中、まさかのしょぼい解像度です。というか元々23型で同じ解像度のモニタは持ってました。あと会社から貸与されている 15 インチの MacBookPro は Retina でも 1920 * 1200 で縦幅は負けています。</p>

<h5 id="液晶パネル-tn">・液晶パネル: TN</h5>

<p>　自分はこの辺に詳しくなかったのですが、買うときに調べて分かったのは TN は <strong>正面以外から見ると色が綺麗に見えない</strong> ということです。どうやら昔の MacBook Air はこれだったみたいです。対して 最新の Air や Pro はIPS 液晶というやつで、これは斜めからモニタを見てもちゃんとした色で見えます。</p>

<p>　ちなみに自分が昔から持っていた三菱の23型もIPS液晶です。解像度が同じで色の表示も微妙なTNを買ったらただのダウングレードでは? と思われるかもしれません…</p>

<h5 id="リフレッシュレート-最大240hz">・リフレッシュレート: 最大240Hz</h5>

<p>　すみません、前振りが長かったのですが、欲しかったのはこれです。リフレッシュレートというのは、1秒間に何回画面を書き換えるのか、という数値です。既に持っている三菱の昔のモニタは最高でも 60Hz 、つまり1秒間に 60 回書き換え可能で、それと比較すると  <strong>今回買ったモニタは4倍速く書き換えられる</strong> ということになります。</p>

<p>　書き換える速度が最大で4倍ということは、それだけ <strong>滑らかに見える</strong> 、ということで、だからこそゲーム向きのモニタということになります。</p>

<p>　一方 4K モニタは解像度が高い分、リフレッシュレートは 60 Hz というものが多いと思われます。つまり自分が買ったモニタは 4K と比べて、画面サイズを4分の1にする代わりに4倍の書き換え速度をとったモニタということです。</p>

<h3 id="240-hz-の価値はあるのか">240 Hz の価値はあるのか?</h3>

<p>　データ上のスペックはともかく実際に使ってどうか? という件についてですが、「確かに滑らかだけど、自分のマシンの性能的にコンスタントに 240 fps は出ないので 144Hz でも十分だった」というのが正直なところです :sob:</p>

<p>　 ゲームのリフレッシュレートの話は自分が聞いている Rebuild.fm でも割と最近話題に上がっていたのですが、正直難しいところで、そもそもゲームによって出る fps は変わりますし、各ゲームの設定によっても変わります。解像度を下げたりゲームのグラフィックスをショボくすればその分 fps を稼ぐことはできなくもないです。ただ結局ある程度、綺麗な映像ではやりたいので例えば自分のやっている Borderlands 3 という FPS だと、グラフィックをウルトラ(上から2つ目の綺麗さ)の設定から一部ショボくした感じで落ち着き、それだとせいぜい 100 fps しか出ませんでした。</p>

<p>　という訳で、今までゲーミングノートPCの画面 (ちなみに144Hz) よりも物理的に広い画面である程度滑らかな映像でゲームができる、というのは良かったです。慣れてくると何も思わなくなってきましたが、最初は敵の撃ってくる弾やらが避けやすいかも、と思いました。ただ 240Hz はいらないよね、というのが結論です。:sweat_smile:</p>

<h3 id="ゲーミングモニタならでは">ゲーミングモニタならでは?</h3>

<p>　まあ上で書いたようにオーバースペックでしたが、色々よいこともあります。細かい点では</p>

<ul>
  <li>モニタの横にヘッドセットをかけるすぐに折れそうな棒がついている (深センのゲーミングカフェ?にこういうモニタが並んでいたのを思い出す)</li>
  <li>向き、<strong>高さの調整ができる</strong></li>
  <li>モニターアーム対応</li>
  <li>FPS やレーシングなどジャンル毎にプリセットの表示設定があって、事前にゲームとひもづけておけばゲームの起動時に自動でその表示設定に切り替わる (Windowsのみ)</li>
  <li>超ボタンのでかい(ダサい)操作用の有線リモコンが付属、画面中央に大きめの照準を出すボタンがあるあたりがゲーミングっぽい</li>
  <li>オフタイマーがある。遊びすぎ防止</li>
  <li>MacBookPro の外部モニタにすると 120Hz が選べる</li>
  <li>AMD の FreeSync に対応している。Alienware m15 は mini DisplayPort からのみGPUと直接やりとりできる設計らしく、ここにつなげば G-SYNC の互換として FreeSync が使える。効果の程は正直分からない。横に2画面並べれば分かるかもしれないけどそもそもプレイ中に切り替えて比較したりしないし…</li>
  <li>特に光りません</li>
</ul>

<h3 id="総評">総評?</h3>

<p>　結局、仕事と全く関係ない外部モニタを買った訳ですが、これには個人的な理由があります。最初は仕事用に大きいモニタを買うことを考えて探し始めたのですが、よく考えたらそれを置ける奥行きがあるデスクを持っていないことに気がつきました。</p>

<p>　ならば小さいけど性能がいいものを、と考え始めたらゲーミングモニタに行き着いてしまった、というのが真相です。また在宅勤務はいつかは終わるだろうと思ったので、それもあって仕事よりも趣味用にしました。</p>

<p>　もちろんゲーミングということならワイドな湾曲しているやつ、とかもいつかは欲しいと思いますが、今回買った 24.5 型というサイズは eスポーツの大会でも使われるモニタのサイズらしく、なんだかんだでバランスがいい気がします。会社では 40 型くらいのモニタを使っているのですが、画面が広すぎて全体を把握できません。ゲームによっては <strong>むしろ全体を把握したい</strong> はずなのでそこまで広い必要はなくて(世界観を楽しむジャンルのゲームをのぞく)、液晶パネルが TN なのも <strong>そもそもゲーム用なんだから正面からしか見ない</strong> 、ということを考えると合理的な割り切りだと思います。</p>

<p>　ついでに今回初めてゲーミングモニタを買ってみて、液晶パネルの方式やHDMI/DisplayPortのバージョン、自分のPCのGPUまわりの設計 (NVIDIA の Optimus) や FreeSync と G-SYNC の互換性など色々調べる羽目になり、結果的にちょっと勉強になって良かったと思います。おしまい :triumph:</p>

<h3 id="リンク">リンク</h3>

<p><a href="http://agon.aocmonitorap.com/jp/product_ag251fz2.php">AOC公式の商品ページ</a></p>

<p><a href="https://www.amazon.co.jp/gp/product/B0812YP3XT/ref=ppx_yo_dt_b_asin_title_o03_s00?ie=UTF8&amp;psc=1">Amazonの商品ページ</a></p>

<p><a href="https://rebuild.fm/268/#t=39:53">Rebuild.fm の iPhone SE 2 の話 (リフレッシュレートについて)</a></p>]]></content><author><name>hidashun</name></author><category term="General" /><summary type="html"><![CDATA[ゲーミングモニターを買いました (AOC AG251FZ2/11)]]></summary></entry><entry><title type="html">2019/03/31</title><link href="https://www.hidashun.dev/general/2019/03/31/alienware-m15/" rel="alternate" type="text/html" title="2019/03/31" /><published>2019-03-31T00:00:00+00:00</published><updated>2019-03-31T00:00:00+00:00</updated><id>https://www.hidashun.dev/general/2019/03/31/alienware-m15</id><content type="html" xml:base="https://www.hidashun.dev/general/2019/03/31/alienware-m15/"><![CDATA[<h1 id="alienware-m15-を買って-linux-pop_os-とのデュアルブートにしたメモ">Alienware m15 を買って Linux (Pop!_OS) とのデュアルブートにしたメモ</h1>

<p>とりあえずメモだけでも。自分は普段 Mac 使いで Win/Linux のデュアルブートは初めてなので色々間違ってるかもしれません。</p>

<h2 id="マシンについて">マシンについて</h2>

<p>Dell の Alienware m15 というゲーミングノートPCを買った。数ヶ月で別バージョンが出るけど自分が買ったのはGeForceのRTX 2070 Max-Qが載りCore i7が6コアの世代。
待ってればCPU 8コアでRTX 2080が載るやつが出ると思う。
あと毎週何らかの値引きをしているので焦る必要なし。メモリのアップグレードが無料になったり、ストレージやグラボのアップグレードが安くなったり、5%オフになったりと毎週ネタが変わるので自分のニーズに合わせればよし。
ついでにいうと受注(当然カスタム)から15日後に届きました。</p>

<p>今後の話に関わる部分として、 <em>SSD 2台内蔵 (512GB * 2)</em> オプションにした。デフォルトでは SSHD という SSD と HDD のハイブリッドのやつがついてくるけど、ドライブ毎にOSを変えたかった(これ自体の理由は何となくその方が綺麗そうだし、同じドライブでやるとWindowsアップデート時に何かややこしいことになったりする気がした)ため。その分かなり高くなるけど我慢。あとHDD重いし。</p>

<h2 id="linux-側の-os-について">Linux 側の OS について</h2>

<p>会社の同僚に教えてもらった Pop!_OS にした。Ubuntuのデュアルブート情報を調べてると NVIDIA のグラボ周りでやや作業が必要そうで、その点 Pop は最初から NVIDIA のグラボへの対応が良さそうだった。あと見た目がシンプルかつほのぼのしている。</p>

<p>あとTensorflow(GPU利用)とかそのあたりを入れるのも楽そう。</p>

<h2 id="事前に用意したもの">事前に用意したもの</h2>

<p>東芝製の8GBのUSBメモリーカードを数個。
balenaEtcher というツールでLinuxのインストールメディアを作った。
Windowsの回復用にも使おうと思ったが16GB必要だったので結局コンビニに買いにいった。</p>

<p>あと有線の安いマウス(Linux対応と書いてあるゲーミングマウス)を買っておいた。トラックパッドがうまく動かなかった時用。あとついでにゲームにも使えて一石二鳥。</p>

<h2 id="思い出せる範囲でハマりどころや選択肢">思い出せる範囲でハマりどころや選択肢</h2>

<ul>
  <li>Pop!_OS は2つバージョンがあるけど NVIDIA の方を使う(もう片方は使ってないので分からん)</li>
</ul>

<h4 id="linux-のインストールメディアは-mac-でマウントできない">Linux のインストールメディアは Mac でマウントできない</h4>

<p>Etcherで作成後にマウントできないって怒られるので作るのに失敗したかと思って焦った。ちゃんと作れたか確認したいなら普通にそのメディアから起動してみるのが早い。</p>

<h4 id="windows-10-の回復メディア作成に失敗する">Windows 10 の回復メディア作成に失敗する</h4>

<p>既知の問題。Dell のサイトに解決方法が書いてある。失敗するとこれだけで再度3、40分くらい時間をとられるので注意。</p>

<h4 id="fast-boot-的なオプションは-windows-の方にだけある">Fast boot 的なオプションは Windows の方にだけある</h4>

<p>ネットで情報を見ていると BIOS の Fast boot をオフにする話が出てきたけど、自分のマシンの BIOS にそういう設定は見当たらなかった。</p>

<p>それとは別に Windows 10 の OS の機能としての高速起動はオフにしておく。</p>

<h4 id="bios-の設定で-sata-の設定を-raid-から-ahci-に適当に変更すると起動不可になる">BIOS の設定で SATA の設定を RAID から AHCI に適当に変更すると起動不可になる</h4>

<p>正確には起動しても「問題があって起動できないから再起動するでー」となる。Safe BootをDisableするのと同時にやったらそうなった。下記サイトの通りにやり、Safe bootはこの手順と別にDisableすれば安全。</p>

<p><a href="https://github.com/awesomebytes/alienware15r3_ubuntu14#get-windows-to-boot-on-ahci-mode-sata-options">https://github.com/awesomebytes/alienware15r3_ubuntu14#get-windows-to-boot-on-ahci-mode-sata-options</a></p>

<h4 id="legacy-な-boot-は-enable-にする必要あり">Legacy な Boot は Enable にする必要あり</h4>

<p>これは Pop!_OS 特有なのかもしれないけど Legacy な Boot をオフにすると Pop!_OS の画面が Try の選択後何も表示されないままになった。Ubuntu のインストールではEを押して「nomodeset」を追記しろみたいなのが多くてそれが原因かと思ってたのでしばらくはまってた。この辺の理由は正直詳しくないのでよく分かってない。</p>

<h4 id="pop_os-のインストール画面の解像度が低すぎてボタンが押せない未解決">Pop!_OS のインストール画面の解像度が低すぎてボタンが押せない(未解決)</h4>

<p>800 * 600 で表示されてダイアログの下にあるはずのボタンが押せず非常につらい。結局タブやスペースを駆使してキーボードで操作して何とかした。特にインストールするドライブを選択する時はWindowsの入っている方を選択しないよう要注意。左上のActivityをクリックするとウインドウの全体が見えるのでそれを頼りにやる。ここはもっといい方法があるはず。</p>

<h4 id="linux-のインストール言語は英語がよさげ">Linux のインストール言語は英語がよさげ</h4>

<p>Mac や Win とかだとディレクトリ名を日本語表示した時に「ダウンロード」と表示される一方で実際のディレクトリ名は「Downloads」みたいな仕組みがあると思うけど、Linuxはそうじゃないらしく、あとで cd とかする時に日本語を打つのは気持ちが悪いので英語にしておいた方がよさげ。</p>

<h4 id="pop_os-の今のブートローダーは-grub-ではなく-systemd-boot-らしい">Pop!_OS の今のブートローダーは GRUB ではなく systemd-boot らしい</h4>

<p>よく分かってなくて GRUB の設定をめっちゃ変更してたけどそうじゃなくて bootctl の設定を変更する。mount でWindowsのEFIパーティションをマウントしてMicrosoft以下のファイルをLinuxドライブの /boot/efi にコピペして、さらにtimeoutの設定をファイルに追加すると電源入れた時にLinuxとWindowsが時間制限付きで選択できるようになる。めでたしめでたし</p>

<h2 id="既知の問題ほか">既知の問題ほか</h2>

<ul>
  <li>
    <p>Windows 側で最初OSのライセンス認証が未認証の状態になってるけどトラブルシュート押せば直る。</p>
  </li>
  <li>
    <p>Linux から Win に切り替えた直後は時刻がおかしい。</p>
  </li>
</ul>

<h4 id="全体的な感想">全体的な感想</h4>

<ul>
  <li>
    <p>Linuxとのデュアルブートがうまくいかなかった時用に Windows 10 Pro オプションを選択したけど(Docker使うつもりだった)結果的にはいらなかった。</p>
  </li>
  <li>
    <p>トラックパッドも特に問題なかったけど、何だかんだでMacのトラックパッドに敵わないので有線マウスは買っておいて損なし。</p>
  </li>
  <li>
    <p>モニタを144HzのFHDにするか60HzのUHDにするか迷ったけど、とりあえず開発/ゲームともに前者でも問題はなかった(自分的には画面がそこまで微妙とは思わない)。144Hzの恩恵は正直60Hzと比較してないから分からない。多分…滑らかなはず</p>
  </li>
  <li>
    <p>Pop!_OS すばらしい。OS公式の tensorflow-cuda みたいなパッケージがあってその辺をやりたい場合もインストールは楽。さっきtensorflowのサンプルちょっと実行したけどちゃんとグラボは認識してる(逆にいうと省エネしたい時にCPU内蔵のGPUに切り替えられるかは確認してない…)。あと基本はUbuntuなのでその辺の情報が割と参考になる。</p>
  </li>
  <li>
    <p>Win 側で Borderlands 2 やって全グラフィックオプションをつよつよにしたけど本体の画面(フルHD)ではプレイ中ほとんど144FPSキープしてた。</p>
  </li>
  <li>
    <p>FF15のベンチマークはフルHD高品質で「快適(スコア 7000台、GTX 1070 Tiの結果と同じくらい)」だった。ただたまーにカクつく。最初から最後まで完全に途切れない、ということはなかった。Steamにある体験版やったけどこちらはスムーズそのものだった。ニコ動にあるPS4版の実況動画(ナポリの蘭たん)をそのあとで見たけどまあ動画自体の画質もあるとはいえ自分のマシンの表示よりは微妙な感じがした。</p>
  </li>
  <li>
    <p>Linux側でキーボードを光らせる方法を探したけど、このマシンに対応したツールはまだないっぽい。USBまわりが詳しくないとこの辺は無理そう。</p>
  </li>
  <li>
    <p>普段 MacBookPro 13インチ(2015年の) を入れているA4くらいまで対応のビジネスバッグには入らない。横幅はいけるけど奥行?がはみ出る。</p>
  </li>
  <li>
    <p>今までやりたかったけどできなかったゲームをSteamのウィッシュリストに30本ほど追加したけど、ラストオブアスとデトロイトビカムヒューマンてまだPC版はないのね…まあ他にもいくらでもできるゲームあるからいいんだけど。</p>
  </li>
</ul>

<h4 id="asus-の新マシンについて一言">ASUS の新マシンについて一言</h4>

<p>正直、最後までDellかASUSで迷ってたがこれはまだ出てなかった。Alienwareよりベゼルは最低限だし、サイズも小さく、100gほど軽い。RTX 2080が載る。電源アダプタも多分小さいのが使えそう。もっと早く出しなさいよと(笑)。とはいえ値段とか考えると載るからといって選ぶとも限らないので今のところ後悔はなし。</p>

<p><a href="https://www.asus.com/jp/Laptops/ROG-Zephyrus-S-GX531/">https://www.asus.com/jp/Laptops/ROG-Zephyrus-S-GX531/</a></p>

<p>以上</p>]]></content><author><name>hidashun</name></author><category term="General" /><summary type="html"><![CDATA[Alienware m15 を買って Linux (Pop!_OS) とのデュアルブートにしたメモ]]></summary></entry><entry><title type="html">2019/01/04</title><link href="https://www.hidashun.dev/general/2019/01/04/new-year/" rel="alternate" type="text/html" title="2019/01/04" /><published>2019-01-04T00:00:00+00:00</published><updated>2019-01-04T00:00:00+00:00</updated><id>https://www.hidashun.dev/general/2019/01/04/new-year</id><content type="html" xml:base="https://www.hidashun.dev/general/2019/01/04/new-year/"><![CDATA[<h2 id="主に帰省中にやっていたこと">主に帰省中にやっていたこと</h2>

<h3 id="エンジニアのためのマネジメントキャリアパスを読んだ">「エンジニアのためのマネジメントキャリアパス」を読んだ</h3>

<p>エンジニア組織論への招待に続きマネジメントに関わる本。</p>

<p>後半は複数チームの管理や管理者の管理の話など、自分の今の立場とは遠い立場についての話で逆におもしろい。</p>

<p>2章くらいのメンタリングの話は組織論の方が具体的でおもしろかったかも。</p>

<p>自分が読んで感じたのは、管理者っていうのはどのレベルの人であっても、自分の管理する部下やチームを色んな意味で「成功させる」ために頑張る仕事なんだな、ということ。部下のスキルアップ、昇進やプロジェクトの成功のために頑張って、それが自分自身の成功になるってこと。その辺「マネジメント」っていう単語だけだと伝わりにくいなと思う。</p>

<p>こまかいところで印象に残ったところでは、1on1はやって当たり前、あとリリース頻度を高くするのは当たり前みたいなとこ。特に後者は自分がずっとそのために色々手をつけていることもあって印象に残った。1on1は最近やってないな。</p>

<p>あとはタスクの分割について。メモっとこ:</p>

<blockquote>
  <p>アジャイル開発を導入したにもかかわらず、作業の細分化の価値を理解できていないチームを主導するのは容易なことではありません。</p>
</blockquote>

<blockquote>
  <p>(略) チーム状況を知るのに有効な尺度が「製品アップデートのリリース頻度」です。もしもあなたの会社が頻繁にリリースすることの意義をわかってくれないとすれば実に残念な話です</p>
</blockquote>

<p>ちなみにこの本では週1でも少ないぐらいの空気</p>

<blockquote>
  <p>(略) 上司に求めるべきことの第1ですが、それは「1対1で行うミーティング(以下「1-1」)」です。これは直属の上司と仕事上、良好な関係を保っていく上で不可欠な要件です。</p>
</blockquote>

<p>あとは最後の章がいいな。そこまで読んであー管理者って本当大変だな…て思っているところに、大事なのはいつでも「好奇心をもちつづける」みたいな話になって、それだったらできるかも、って思ってあたたかい気持ちで読み終えられる。他の人と意見が対立する時も、どうしてこの人はこう考えるんだろう? と興味に変えればもっと公平な見方ができるようになる、的な。</p>

<h3 id="shenzhen-io-のソリティアを実装中">Shenzhen IO のソリティアを実装中</h3>

<p>というか最初の実装自体は終わっていて、それを色々改造していっている。</p>

<p>最初にターミナルでやるコマンドラインアプリとしてあえて実装してるけど、今はフロントを RxJSとjQuery、バックエンドが Django のWebアプリにしてみてる。</p>

<p>こっから React にしたり JS だけで完結したり WebSocket にしたり Swift で iOS に移植したりしたい。あとは新しく勉強する言語でこれを移植したら現実の例としていいかもと思っている。</p>

<p>Swift とかパターンマッチのある言語で書くとここは綺麗そうだなみたいな箇所が結構ある。isinstance 使いすぎで正直汚い。テストもない。</p>

<p>直近ではドラッグドロップとかそういうまともなUIじゃないのでその辺をやっていく。</p>

<p>そういやゲーム状況のオブジェクトをそのままDjangoでキャッシュしてたけど、なぜかサーバを再起動したら一部の属性のデータが消えて「何で?」って思ってた。</p>

<p>原因はクラスの属性に間違ってデータをいれていたことだった。キャッシュできていると思っていたらクラスの属性の方に入っていて、オブジェクトには入ってないからキャッシュに残らない。でもクラスの属性にあるからあたかも値がちゃんと入っているように見える。再起動するとクラスも当然新しく作るから前のデータがない…というからくりだった。</p>]]></content><author><name>hidashun</name></author><category term="General" /><summary type="html"><![CDATA[主に帰省中にやっていたこと]]></summary></entry><entry><title type="html">2018/12/09</title><link href="https://www.hidashun.dev/general/2018/12/09/guam/" rel="alternate" type="text/html" title="2018/12/09" /><published>2018-12-09T00:00:00+00:00</published><updated>2018-12-09T00:00:00+00:00</updated><id>https://www.hidashun.dev/general/2018/12/09/guam</id><content type="html" xml:base="https://www.hidashun.dev/general/2018/12/09/guam/"><![CDATA[<h2 id="グアムいった件">グアムいった件</h2>

<ul>
  <li>12月上旬の平日に2泊3日でグアムにいった</li>
  <li>JTBのセール商品で、飛行機が選べない(時間が選べない)かわりに安い
    <ul>
      <li>結果的には昼に向かって夕方に帰るとてもいい便をひきあてた
        <ul>
          <li>連絡は出発1週間前とかいう話だったけど2、3日で連絡きた</li>
        </ul>
      </li>
      <li>しかも勝手にエコノミーからエコノミープラス(なおユナイテッドなので24時間前からチェックインできたけど席はとってくれてるのでやらないこと)</li>
      <li>なおホテル等全込みで9万円弱。予約は出発の2週間ちょい前。航空券が42,000円</li>
    </ul>
  </li>
  <li>飛行機は両方ユナイテッド
    <ul>
      <li>席にモニターはなく、自分のスマホやタブレット、PCで機内のWifiを使ってコンテンツを見るシステム。最初に広告を見る必要あり。あと事前にアプリをダウンロードした方がいい</li>
      <li>Macで見るのはあきらめた。対応ブラウザ/Flashのバージョンが古いので逆に新しいと使えない。Panasonicの謎DRMを入れないといけないっぽいが形式が古いのか入れることもできず</li>
      <li>足下にコンセントがあるけど日本のやつは使えないっぽかった (ちなみにグアムでは普通に使える)</li>
      <li>行きの飛行機の冷房が寒かった。帰りはグアム時の格好のまま乗ったけどブランケットでなんとかなる</li>
      <li>預ける荷物でリュックにPCをいれていたら持ち込みにした方がいいといわれた。入れる用の袋を探してきてくれた</li>
    </ul>
  </li>
  <li>グアムはESTAいらない</li>
  <li>ホテルはビーチ沿いのフィエスタリゾートグアム
    <ul>
      <li>オーシャンビュー固定だったがその中で一番下の3階だった。でもまあ眺めはそんなに悪くないし満足</li>
      <li>商品の特典で朝食のビュッフェつき。日によって少しだけ違うメニューあり</li>
      <li>ビーチタオルカードがあって引き換えにいつでもタオルが借りられる</li>
      <li>ビーチは相当な遠浅。いったん深くなってからまたちょっと浅くなったりするので結構遠くまでいける</li>
      <li>ホテル前のビーチで飲酒は可</li>
      <li>handy 携帯というのが部屋ごとにあって持ち出し可能で電話/ネットも可。ただ壊したりなくしたりしたら2万くらい払うことになる。これがあったのでSIMは買わなかった。買うとしたらGPOかミクロネシアモールに行く必要あり</li>
      <li>フィエスタの前は無料でミクロネシアモールに行くバスもくる。といっても乗らなかったけど。コンチャカードすら不要</li>
      <li>エレベーターは部屋のカードを差してからでないと目的階が押せないやつが2機あったけどその隣の新しいのに乗れば不要</li>
      <li>ホテルのWifiは結構微妙なので快適に使いたければSIMは買った方がいい</li>
      <li>コンセントは4つくらい差せるとこある</li>
      <li>冷房は消せる</li>
      <li>朝が結構涼しいので注意</li>
      <li>入口にハーゲンダッツの店舗があるけど一番小さいやつで 5.5 ドル</li>
    </ul>
  </li>
  <li>成田ではパスポートを広げて機械に認識させれば通れる</li>
  <li>横断歩道は押してからでないと渡れない。1つだけ壊れているのか待っても信号が変わらないやつがあった(フィエスタの向かいの)</li>
  <li>コアBBQいった
    <ul>
      <li>ロブスターとステーキのセットを食ったけど、特にサイズアップとかしなくても満足な量</li>
      <li>生きてるロブスターを調理前に持ってきてくれるので写真を撮りたければ撮る</li>
    </ul>
  </li>
  <li>ココパームビーチにいった
    <ul>
      <li>ランチや送迎込みでVELTRAで11,100円。</li>
      <li>バウチャーは印刷しておいた方がたぶんスムーズ</li>
      <li>送迎は途中まではスムーズにいくが途中から相当でこぼこした道に入りしかもかなり長いので覚悟が必要</li>
      <li>ビール等は有料</li>
      <li>飯時にめっちゃハエがくるので覚悟が必要</li>
      <li>シュノーケルやライフベストが借りられる、というか着用必須だけど見た目はだいぶアレ</li>
      <li>流れがはやく足下もずっとごつごつしているので泳ぐのには向かない</li>
      <li>大きい魚がかなりいる</li>
      <li>穴の中にでかいウニがいたりしてちょっとビビる</li>
      <li>ロッカーの開け方と閉め方が分かりづらい</li>
      <li>最後にスタッフの皆さんとダンスタイムがあるけど自分含めシャイなアジア人はほとんど参加せず。</li>
      <li>喫煙所多い</li>
      <li>更衣室まあまあ広いので現地で着替えてもよし。なおシャワーの水量は少ない</li>
    </ul>
  </li>
  <li>チャモロのナイトマーケット
    <ul>
      <li>水曜だけ。赤いシャトルでGPOにいってからさらに乗り換え。GPOの目の前にチケット売り場があってすぐに7ドル払って次のバスに乗るのでスムーズ。ただGPOまでが結構時間かかるのでいっそDFSにいってからの方がよかったかも</li>
      <li>思ったより広い。ただ食べ物の種類はそこまで多くないのかも、という感じ。たこ焼きが3店舗くらいあるけど高い。</li>
      <li>結局10ドルくらいの弁当を買って済ませた</li>
      <li>肉かジュースの店がやたら多い</li>
      <li>女性は服やアクセサリーも結構売ってるので楽しめるかも</li>
      <li>カードはたぶんあまり使えないので現金で</li>
    </ul>
  </li>
  <li>メスクラドスにいった
    <ul>
      <li>ハンバーガー。グリルドチーズバーガーを頼んだらパン2枚ずつに挟まれてた。ぱっと見意味不明だったけど2枚あるパンの間にチーズが入ってる。美味。バーガーを買うとポテトがついてくるっぽいので別で買う必要なし。</li>
    </ul>
  </li>
  <li>レストランは割とどこにでも割り箸がある</li>
  <li>蚊はいる。シャトルバスのバス停で10箇所ぐらい刺された</li>
  <li>DFS
    <ul>
      <li>おそらく日本円で払える</li>
    </ul>
  </li>
  <li>個人的にあまりいらなかったもの
    <ul>
      <li>サングラス。みんなかけてると思いきや大してかけてないのでなくても多分困らない。</li>
      <li>日焼けどめ。焼けてもいいと思ってたので結局使わなかった</li>
      <li>タオル。海にいくときもホテルででかいのを毎回貸してくれるのでいらない。ココパームも貸しタオルがついてくる</li>
    </ul>
  </li>
  <li>持っていくべきだったもの
    <ul>
      <li>安全カミソリ。ホテルのアメニティになかった</li>
      <li>ボディソープ。ホテルに大して泡立たない小さい石鹸しかなく使いづらかった</li>
      <li>ボールペン。飛行機で例の紙書くため。アテンダントの人に借りたけど全然書けないやつだった</li>
    </ul>
  </li>
  <li>持っていってよかったもの
    <ul>
      <li>ウェットティッシュ。ナイトマーケットで手とか拭くときに</li>
      <li>ゴーグル。泳ぎたいなら。魚も見られる</li>
    </ul>
  </li>
</ul>]]></content><author><name>hidashun</name></author><category term="General" /><summary type="html"><![CDATA[グアムいった件]]></summary></entry><entry><title type="html">2018/12/01</title><link href="https://www.hidashun.dev/general/2018/12/01/diary/" rel="alternate" type="text/html" title="2018/12/01" /><published>2018-12-01T00:00:00+00:00</published><updated>2018-12-01T00:00:00+00:00</updated><id>https://www.hidashun.dev/general/2018/12/01/diary</id><content type="html" xml:base="https://www.hidashun.dev/general/2018/12/01/diary/"><![CDATA[<ul>
  <li>
    <p>Go の並行処理本、2章のほぼ最後まで読んだ。チャネルとかゴルーチンしか知らないので sync ライブラリの使い方が色々出てきてそういうのもあるんだなーという感じ。
チャネルのブロックの挙動とか一度も読んだことないかあるいはすっかり忘れてる。何となくShenzhen IOのブロックする端子思い出したけどあのイメージであってるんだろうか。</p>
  </li>
  <li>
    <p>Django の通知系のライブラリ、調べたけど案外サクッと使えそうなものがない。通知タイプに応じてユーザが通知バックエンドを選べるといいけどそのどちらかが欠けてる感じ</p>
  </li>
  <li>
    <p>Shenzhen IOのソリティアのコマンドライン版大体完成したけどUndoの挙動がおかしいことがある。Pythonistaは実行中の変数の値も見れることに最近気づいたのでスマホでデバッグも頑張ればできるかも</p>
  </li>
  <li>
    <p>バーガーキングのトリプルチーズワッパー
<img src="https://lh3.googleusercontent.com/uushZSNLFPdyksaxUfmEMG2qC8eSsKvmRf9PqABG4TUevSysKqGMv59mmJ8MJD0Djr-r7MfKz0y5h8hDWa0yZiu-VT0q5I64j8VhA9mJZg3Oq6qxRqvmk_x_4fxwQHQ6EDuG-dW5AQ=w2400" alt="" /></p>
  </li>
</ul>]]></content><author><name>hidashun</name></author><category term="General" /><summary type="html"><![CDATA[Go の並行処理本、2章のほぼ最後まで読んだ。チャネルとかゴルーチンしか知らないので sync ライブラリの使い方が色々出てきてそういうのもあるんだなーという感じ。 チャネルのブロックの挙動とか一度も読んだことないかあるいはすっかり忘れてる。何となくShenzhen IOのブロックする端子思い出したけどあのイメージであってるんだろうか。]]></summary></entry><entry><title type="html">2018/11/27</title><link href="https://www.hidashun.dev/general/2018/11/27/diary/" rel="alternate" type="text/html" title="2018/11/27" /><published>2018-11-27T00:00:00+00:00</published><updated>2018-11-27T00:00:00+00:00</updated><id>https://www.hidashun.dev/general/2018/11/27/diary</id><content type="html" xml:base="https://www.hidashun.dev/general/2018/11/27/diary/"><![CDATA[<ul>
  <li>
    <p>ブラックフライデーに続いてサイバーマンデーやけど内容同じやんけ</p>
  </li>
  <li>
    <p>DjangoConの動画見てないな</p>
  </li>
  <li>
    <p>celery_once うまく動かん</p>
  </li>
</ul>]]></content><author><name>hidashun</name></author><category term="General" /><summary type="html"><![CDATA[ブラックフライデーに続いてサイバーマンデーやけど内容同じやんけ]]></summary></entry><entry><title type="html">2018/11/26</title><link href="https://www.hidashun.dev/general/2018/11/26/post/" rel="alternate" type="text/html" title="2018/11/26" /><published>2018-11-26T00:00:00+00:00</published><updated>2018-11-26T00:00:00+00:00</updated><id>https://www.hidashun.dev/general/2018/11/26/post</id><content type="html" xml:base="https://www.hidashun.dev/general/2018/11/26/post/"><![CDATA[<ul>
  <li>
    <p><code class="language-plaintext highlighter-rouge">!#2:t</code> … zsh で今うってるコマンドの2番目の引数(フルパス)をファイル名にして展開</p>
  </li>
  <li>
    <p>Pythonista の Extension 1つ作った。<code class="language-plaintext highlighter-rouge">appex.get_url()</code> でとって <code class="language-plaintext highlighter-rouge">clipboard.set(val)</code> でクリップボードにいれられる</p>
  </li>
  <li>
    <p>netlify、bitbucket だとPR出すとプレビュー作られる機能使えないっぽい。ただまあ別ブランチもビルドするように設定しておいてそっちをプレビュー扱いすれば1人で使う分にはよさげ</p>
  </li>
  <li>
    <p>Pomera で入力したやつはBOMがつくので sed で消せばそのままこのブログのソースとしても使える</p>
  </li>
  <li>
    <p>電脳コイル何度も見たけどまた見てしまった。何度見てもすばらしい</p>
  </li>
  <li>
    <p>オライリーのGoの並行のやつ(名前あやふや)読み始めた。今日は読んでないしまだ1章だけ。デッドロックになる条件は4つあって全て満たしたとき。コフマンの条件という</p>
  </li>
  <li>
    <p>Epos入ると海外保険がついてくる。ただ死亡とか500万まで。結局1600円くらい払って三井海上?かなんかの海外保険にした。リピーター割引があるらしいし</p>
  </li>
  <li>
    <p>Group Power Oct18 の新曲発表いってみた。32人定員だったけど整理券配布時は満員にならなかったっぽい。次回は休憩が多いかわりに重めがいいらしい。メンバーは大体いつもの人だったな</p>
  </li>
</ul>]]></content><author><name>hidashun</name></author><category term="General" /><summary type="html"><![CDATA[!#2:t … zsh で今うってるコマンドの2番目の引数(フルパス)をファイル名にして展開]]></summary></entry><entry><title type="html">2018/11/24</title><link href="https://www.hidashun.dev/general/2018/11/24/image-test/" rel="alternate" type="text/html" title="2018/11/24" /><published>2018-11-24T00:00:00+00:00</published><updated>2018-11-24T00:00:00+00:00</updated><id>https://www.hidashun.dev/general/2018/11/24/image-test</id><content type="html" xml:base="https://www.hidashun.dev/general/2018/11/24/image-test/"><![CDATA[<p>画像テストついでに日比谷公園の海鮮フェス</p>

<p>こぼれいくら丼のミニ。2500円でした</p>

<p><img src="https://lh3.googleusercontent.com/zukX-kIKQ9VL2wPxwSNN2en3gLvFMKl10vPDeyKnAr4L9BUqltS3J-FzQW2NH_AWaCrMXxkvruOZ2JTJ59C_omYdLNfBihUajGxdoEEp0r3M6DpYepwDs0oQbF0waacLmJdlcbBQRA=w2400" alt="" /></p>

<p>うに！ 800円</p>

<p><img src="https://lh3.googleusercontent.com/o7wdUYPPj3K-7A4cERIm7p77-p_5FSyBqsv692XcbtSIXxBzq9Q3jn3BBUhKGdDccKDy3LzE8Z4S9pVh6AS-YpeZFdlAk-oaO0XpQ-SXEF24jzPShiG0A-9bHz7y7yUZXHfLQoFkpQ=w2400" alt="" /></p>]]></content><author><name>hidashun</name></author><category term="General" /><summary type="html"><![CDATA[画像テストついでに日比谷公園の海鮮フェス]]></summary></entry><entry><title type="html">2018/11/23</title><link href="https://www.hidashun.dev/general/2018/11/23/egpu/" rel="alternate" type="text/html" title="2018/11/23" /><published>2018-11-23T00:00:00+00:00</published><updated>2018-11-23T00:00:00+00:00</updated><id>https://www.hidashun.dev/general/2018/11/23/egpu</id><content type="html" xml:base="https://www.hidashun.dev/general/2018/11/23/egpu/"><![CDATA[<p>eGPU
エンクロージャーが6万
GPUが7万?
OSが3万くらい?
Win10上のLinuxでは普通はGPU使えない
素直にTF for Winを使うかdual boot
miniはディスクリートGPUじゃないのでbootcampからeGPUは割と普通にいけるらしい
2018モデルはTB3なのがでかそう
ただMLをやるならメモリもストレージもいりそう</p>

<p>PoE2の割引34パーで過去最高だけど多分クリスマスセールあるはず</p>]]></content><author><name>hidashun</name></author><category term="General" /><summary type="html"><![CDATA[eGPU エンクロージャーが6万 GPUが7万? OSが3万くらい? Win10上のLinuxでは普通はGPU使えない 素直にTF for Winを使うかdual boot miniはディスクリートGPUじゃないのでbootcampからeGPUは割と普通にいけるらしい 2018モデルはTB3なのがでかそう ただMLをやるならメモリもストレージもいりそう]]></summary></entry></feed>