<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Blog Posts (in Japanese) | Democratizing Data</title><link>https://chezo.uno/post/</link><atom:link href="https://chezo.uno/post/index.xml" rel="self" type="application/rss+xml"/><description>Blog Posts (in Japanese)</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>en-us</language><copyright>©</copyright><lastBuildDate>Fri, 24 Apr 2026 17:27:00 -0700</lastBuildDate><image><url>https://chezo.uno/media/icon_hu_423f10ccd06de889.png</url><title>Blog Posts (in Japanese)</title><link>https://chezo.uno/post/</link></image><item><title>TikTokで勝手にアカウントが作られ続けるので、Claudeでカナダのprivacy法に則って通報をした</title><link>https://chezo.uno/post/2026-04-24-tiktok%E3%81%A6%E5%8B%9D%E6%89%8B%E3%81%AB%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%81%8B%E4%BD%9C%E3%82%89%E3%82%8C%E7%B6%9A%E3%81%91%E3%82%8B%E3%81%AE%E3%81%A6claude%E3%81%A6%E3%82%AB%E3%83%8A%E3%82%BF%E3%81%AEprivacy%E6%B3%95%E3%81%AB%E5%89%87%E3%81%A3%E3%81%A6%E9%80%9A/</link><pubDate>Fri, 24 Apr 2026 17:27:00 -0700</pubDate><guid>https://chezo.uno/post/2026-04-24-tiktok%E3%81%A6%E5%8B%9D%E6%89%8B%E3%81%AB%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%81%8B%E4%BD%9C%E3%82%89%E3%82%8C%E7%B6%9A%E3%81%91%E3%82%8B%E3%81%AE%E3%81%A6claude%E3%81%A6%E3%82%AB%E3%83%8A%E3%82%BF%E3%81%AEprivacy%E6%B3%95%E3%81%AB%E5%89%87%E3%81%A3%E3%81%A6%E9%80%9A/</guid><description>
&lt;div class="callout flex px-4 py-3 mb-6 rounded-md border-l-4 bg-orange-100 dark:bg-orange-900 border-orange-500"
data-callout="warning"
data-callout-metadata=""&gt;
&lt;span class="callout-icon pr-3 pt-1 text-orange-600 dark:text-orange-300"&gt;
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0zM12 15.75h.007v.008H12z"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div class="callout-content dark:text-neutral-300"&gt;
&lt;div class="callout-title font-semibold mb-1"&gt;Warning&lt;/div&gt;
&lt;div class="callout-body"&gt;&lt;p&gt;この記事は、Claude Opus 4.7とのやり取りを通じて解決した問題の顛末を、Opusに書かせたものです。ある程度のレビューはしていますが、情報の確実性はご自身で再検証することをおすすめします。&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="tldr"&gt;tl;dr&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;自分が使った覚えのない TikTok アカウントが、僕のメアドで2つ作られていた（@chezou2 と @nigtg679）&lt;/li&gt;
&lt;li&gt;TikTok はメアド認証なしでアカウント登録を許可している。これが構造的な同意の欠落&lt;/li&gt;
&lt;li&gt;TikTok サポート経由で1つ目を削除させたが、しばらくして別のアカウントが同じメアドで作成され再発&lt;/li&gt;
&lt;li&gt;カナダの規制機関2つに通報した
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;（&lt;/strong&gt;
&lt;strong&gt;）&lt;/strong&gt; に
違反として通報&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;（Office of the Privacy Commissioner of Canada）&lt;/strong&gt; に
違反として正式 complaint 提出&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;OPC は2025年9月に既に TikTok 相手に joint investigation の Report of Findings (
) を出しており、僕の complaint はその文脈に乗る形になった&lt;/li&gt;
&lt;li&gt;カナダ居住者なら同様のケースで使える手順をまとめておく&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="何が起きたか"&gt;何が起きたか&lt;/h2&gt;
&lt;p&gt;2025年11月頃から、&lt;code&gt;noreply@account.tiktok.com&lt;/code&gt; という送信元から「新しいデバイス（LGE LM-Q730）からログインがありました」というメールが届くようになりました。僕は LG の Android 端末を持っていません。そもそも TikTok のアカウントを作ったことがありません。&lt;/p&gt;
&lt;p&gt;メールの宛先は僕のプライベートのGmailのメアド。メール内では &lt;code&gt;@chezou2&lt;/code&gt; というハンドルが言及されていて、僕のハンドル（@chezou ベースのもの）に近い名前で誰かがアカウントを作ったらしい、ということがわかりました。&lt;/p&gt;
&lt;p&gt;ここで気付いた違和感: &lt;strong&gt;TikTok は、メアド認証なしでアカウントを作らせている&lt;/strong&gt;。僕のメアドに「このメアドで TikTok アカウントを作ろうとしている人がいます、本人ですか？」という確認メールは一度も来ていない。にもかかわらずアカウントが成立している。&lt;/p&gt;
&lt;p&gt;つまり、登録時のメアド入力に対する所有確認が一切行われていません。誰でも他人のメアドでアカウントを作ることができ、本来の所有者は通知メールを受け取り続ける構造になっている。&lt;/p&gt;
&lt;h2 id="1回目の対応3月にtiktokサポートへ"&gt;1回目の対応：3月にTikTokサポートへ&lt;/h2&gt;
&lt;p&gt;3月15日、TikTok の privacy report フォーム（https://www.tiktok.com/legal/report/privacy）から「Report a potential privacy violation」として通報しました。&lt;/p&gt;
&lt;p&gt;返信は &lt;code&gt;feedback@tiktok.com&lt;/code&gt; から、テンプレ的な内容で「アカウントを削除したい場合は、ログインして設定画面から削除してください」というもの。&lt;strong&gt;そもそも自分のアカウントじゃないからログインできない&lt;/strong&gt;、というのが問題の本質なのに、こちらが所有者であることを前提とした応答が来る。&lt;/p&gt;
&lt;p&gt;返信して「これは僕のアカウントではない、誰かが僕のメアドで作ったものだ、削除してほしい、PIPEDA 適用の話だ」と書きました。すると次の返信で、こう言われた。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;アカウント所有を確認するため、以下の情報を提供してください: 登録日、最初のログイン場所、登録時のデバイス、登録時の電話番号、リンクされた SNS アカウント&amp;hellip;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;これに答えられるわけがない。&lt;strong&gt;答えられないこと自体が、僕が所有者でない証拠&lt;/strong&gt;です。再度返信して、「これらの情報を提供できないこと自体が、僕がアカウントを作っていない証拠だ。所有者であることを示せという要求は、non-user からの申し立てには構造的に応えられない」と書きました。あわせて「30日以内に解決しない場合は OPC に formal complaint を出す」と通告。&lt;/p&gt;
&lt;p&gt;その後、@chezou2 は削除されました。&lt;/p&gt;
&lt;h2 id="ところが再発"&gt;ところが再発&lt;/h2&gt;
&lt;p&gt;僕が TikTok への返信で「30日以内に解決しなければ OPC に formal complaint を出す」と通告していたのですが、その期限が過ぎた翌日の4月16日から、別の送信元（&lt;code&gt;notification@service.tiktok.com&lt;/code&gt;、Reply-To が &lt;code&gt;edm.feedback@tiktok.com&lt;/code&gt;）からメールが来るようになりました。今度は &lt;strong&gt;@nigtg679&lt;/strong&gt; という別のハンドル宛て。フランス語で「Mrs-mama💕✨️😘 t&amp;rsquo;a envoyé un message」みたいな、フランス語圏ユーザーからのメッセージ通知。&lt;/p&gt;
&lt;p&gt;つまり、@chezou2 が削除された後、また別の誰かが僕のメアドでアカウントを作ったわけです。&lt;/p&gt;
&lt;p&gt;ここで個人の問題を超えていることがはっきりしました。&lt;strong&gt;個別アカウントを削除しても、TikTok がメアド認証を実装しない限り、永遠に同じことが繰り返される&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;ちなみに Reply-To にある &lt;code&gt;edm.feedback@tiktok.com&lt;/code&gt; の &lt;code&gt;edm&lt;/code&gt; は業界でいう &amp;ldquo;Electronic Direct Mail&amp;rdquo;、つまりマーケティングメール基盤の符牒。TikTok 自身がこれらの通知メールを marketing email infrastructure 内で扱っている、という小さな証拠でもあります。&lt;/p&gt;
&lt;h2 id="規制当局ルートを2本"&gt;規制当局ルートを2本&lt;/h2&gt;
&lt;p&gt;ここで「個別削除を申請し続ける」のは無限ループだと判断し、規制当局に持ち込むことにしました。カナダで使えるルートは2本あります。&lt;/p&gt;
&lt;h3 id="caslcanadas-anti-spam-legislation--crtc"&gt;
（Canada&amp;rsquo;s Anti-Spam Legislation） /
&lt;/h3&gt;
&lt;p&gt;CASL は同意なき商業電子メッセージ（CEM）の送信を規制する法律。ポイントは：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;違反に対して &lt;strong&gt;罰金を課す権限&lt;/strong&gt; が CRTC にある&lt;/li&gt;
&lt;li&gt;TikTok からの通知メールは「TikTok プラットフォームへの利用を促進する」 = 商業活動の促進、と解釈できる&lt;/li&gt;
&lt;li&gt;transactional notification（アカウント所有者向けの取引通知）の例外は、僕が &lt;strong&gt;アカウント所有者ではない&lt;/strong&gt; ので適用できない&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;通報先は
（spam@fightspam.gc.ca）。実は &lt;strong&gt;メールに直接転送できる&lt;/strong&gt;（オンラインフォームより楽）。コンテキスト説明メールを1通送り、添付として証拠メールを &lt;code&gt;.eml&lt;/code&gt; 形式で5通同梱して送信しました。&lt;/p&gt;
&lt;p&gt;注意点: SRC は個別の case outcome を complainant にフィードバックしません。だから「処理が終わったら教えて」という期待はできない。集積されたデータが enforcement target の特定に使われる、という形。&lt;/p&gt;
&lt;h3 id="pipedapersonal-information-protection-and-electronic-documents-act--opc"&gt;
（Personal Information Protection and Electronic Documents Act） /
&lt;/h3&gt;
&lt;p&gt;PIPEDA は個人情報の収集・使用・開示に同意を求める法律。本件で問われるのは Schedule 1 の Principle 4.3（Consent）。&lt;/p&gt;
&lt;p&gt;OPC への formal complaint は
経由。ここで &lt;strong&gt;罠&lt;/strong&gt; がありました。&lt;/p&gt;
&lt;h4 id="フォームの自動ロック問題"&gt;フォームの自動ロック問題&lt;/h4&gt;
&lt;p&gt;最初に試した時、フォーム内に「他の機関に同じ件で complaint を提出していますか？」という質問がありました。CRTC SRC に出しているので素直に「Yes」と答えたら、システムが自動的にセッションを終了させ、「他の手続きを完了させてからまた来てください」というメッセージで蹴られました。&lt;/p&gt;
&lt;p&gt;しかし SRC は個別フィードバックを出さない（前述）ので、待っていても「終了」は永遠に来ない。これでは PIPEDA 申立てが事実上不可能になる。&lt;/p&gt;
&lt;h4 id="information-centre-経由でリカバリ"&gt;Information Centre 経由でリカバリ&lt;/h4&gt;
&lt;p&gt;OPC には
があり、自由記述2,000文字以内で問い合わせができます。ここに「自動ロックされた、CASL と PIPEDA は対象としている問題が違う、どうしたらいいか」という旨を送ったところ、24時間以内に OPC の担当から書面で返信が来ました。&lt;/p&gt;
&lt;p&gt;返信内容は要約すると：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;TikTok の privacy contact（TikTok Inc., Culver City）へ書面で連絡することを推奨&lt;/li&gt;
&lt;li&gt;それでも解決しない場合は、formal complaint を提出してよい&lt;/li&gt;
&lt;li&gt;フォームの「他機関への complaint」質問には &lt;strong&gt;「No」と答え、free text section で状況を説明&lt;/strong&gt; してほしい&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OPC自身がフォームのバグ的挙動を認識していて、回避方法を書面で指示してくれた、というわけです。&lt;/p&gt;
&lt;h4 id="formal-complaint-の構成"&gt;Formal complaint の構成&lt;/h4&gt;
&lt;p&gt;OPC オンラインフォームは Part A（組織への接触履歴）/ Part B（管轄判定）/ Part C（詳細・救済）の3部構成。Part C は4つの自由記述欄があり、それぞれ500〜2,500文字制限。&lt;/p&gt;
&lt;p&gt;法的根拠の組み立てとしては:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Principle 4.3 (Consent)&lt;/strong&gt;: 同意なしに個人情報（メアド）を収集・使用している&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Principle 4.3.2 (Meaningful consent)&lt;/strong&gt;: メアド認証がない以上、同意の存在を裏付ける機構がそもそも存在しない&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reasonable expectations of a non-user&lt;/strong&gt;: PIPEDA Findings
（Facebook が non-user のメアドを friend suggestion に使った件）が直接の precedent&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;要望としては:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;PIPEDA s.17.1 に基づく Compliance Agreement&lt;/strong&gt; — メアド認証義務化、non-ownership-based の苦情プロセス整備&lt;/li&gt;
&lt;li&gt;僕のメアドに紐づく全アカウントの削除&lt;/li&gt;
&lt;li&gt;僕のメアドの blocklist 登録&lt;/li&gt;
&lt;li&gt;Public Report of Findings の発行（僕と同じ被害に遭っている人がいるはず）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;添付資料は8ページ以内、25MB以内で、TikTok サポートとの3月の往復スレッド・OPC Information Centre からの返信・11月の security notification・4月の social notification サンプルを PDF 化して同梱しました。&lt;/p&gt;
&lt;h2 id="既存の-opc--tiktok-の文脈"&gt;既存の OPC × TikTok の文脈&lt;/h2&gt;
&lt;p&gt;書きながら気付いたのですが、&lt;strong&gt;OPC はすでに2025年9月に TikTok 相手の Report of Findings (&lt;/strong&gt;
&lt;strong&gt;) を出しています&lt;/strong&gt;。OPC、CAI（Quebec）、OIPC BC、OIPC AB の4機関 joint investigation で、主に未成年者からの同意取得とターゲティング広告の問題に焦点が当てられたもの。&lt;/p&gt;
&lt;p&gt;僕のケースは未成年者問題ではなく、non-user の同意を得ない個人情報利用という別の角度ですが、「TikTok の同意取得の実務全般に問題がある」という OPC の認識と整合する話。投稿のタイミングとしては悪くない（OPC の興味の射程内に入りやすい）。&lt;/p&gt;
&lt;p&gt;ちなみにこの Findings の中では、BC PIPA と PIPEDA の jurisdiction 関係についても整理されていて、cross-border data flow の場合は両者が &amp;ldquo;airtight seal&amp;rdquo; で適用される、という理屈が示されています。僕が BC 在住で TikTok（シンガポール法人）相手という構図でも、PIPEDA 適用に問題がない理由がここで補強されます。&lt;/p&gt;
&lt;h2 id="カナダ居住者へのチェックリスト"&gt;カナダ居住者へのチェックリスト&lt;/h2&gt;
&lt;p&gt;同じような状況に遭遇した人向けに、手順を整理します。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ステップ0: 現状把握&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不審なメールの送信元、送信日時、本文内容を保全する&lt;/li&gt;
&lt;li&gt;Gmail なら spam フォルダから救出してラベル付け（30日で自動削除されるので注意）&lt;/li&gt;
&lt;li&gt;本文中に出てくる「自分のものではないアカウントハンドル」をメモ&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;ステップ1: 相手企業に書面で連絡&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;企業の privacy report channel から書面で連絡する（メール、フォーム、どちらでもよい）&lt;/li&gt;
&lt;li&gt;PIPEDA を引用する（信頼性が変わる）&lt;/li&gt;
&lt;li&gt;「自分は所有者ではない」「メアド所有者として削除を要求する」を明確にする&lt;/li&gt;
&lt;li&gt;30日以内の解決を促す&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;ステップ2: CRTC SRC に CASL 通報（マーケ性のあるメール）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
に状況説明＋証拠 .eml を添付して送る&lt;/li&gt;
&lt;li&gt;フォーム経由より、メール直接転送のほうがヘッダー情報が完全に保持されて証拠能力が高い&lt;/li&gt;
&lt;li&gt;個別フィードバックは来ない前提&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;ステップ3: OPC に PIPEDA complaint&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;まず Information Centre に状況を聞く（フォーム経由、2,000字以内）&lt;/li&gt;
&lt;li&gt;24〜48時間で返信が来る&lt;/li&gt;
&lt;li&gt;指示に従って formal complaint を提出&lt;/li&gt;
&lt;li&gt;添付資料は8ページ以内、25MB以内&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;注意点&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OPC は現在処理遅延あり（数ヶ月）。すぐに結果は出ないと割り切る&lt;/li&gt;
&lt;li&gt;BC OIPC（州機関）にも管轄が及ぶ可能性があるが、cross-border の場合は PIPEDA 適用が筋。OPC が必要なら自動的に振り分ける&lt;/li&gt;
&lt;li&gt;OPC は order-making power を持たない（罰金を課したり強制執行したりはできない）。最強のツールは &lt;strong&gt;Compliance Agreement (s.17.1)&lt;/strong&gt; で、これは Federal Court で強制執行可能。だから明示的に要求する価値がある&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="雑感"&gt;雑感&lt;/h2&gt;
&lt;p&gt;（ここは人間が書いています）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;今回、Sonnet 4.6で調査を開始したのだが、正式にcomplaintする段になって念のため出たばかりのOpus 4.7で検証をさせたところ、だいぶ間違いや思い込みを正せたのでよかった
&lt;ul&gt;
&lt;li&gt;たとえば「30日対応がなければ OPC に行ける」という Sonnet の主張は、実は法的根拠がなく Sonnet が圧力装置として勝手に設定した期限だった、というのを Opus に指摘された。これは戦術的には機能するものの、法的デッドラインと誤認すると別の判断ミスにつながるので、確認できてよかった。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;こういう法律系の調査を全部自力でやるの相当厳しいので、リファレンスはAIに取ってこさせて自分でも確認するのが良さそう&lt;/li&gt;
&lt;li&gt;こういった重めのトラブル解決を考えると、個人でLLM系のサービスを契約しないと辛いですね&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>AI時代の転職活動記録</title><link>https://chezo.uno/post/2026-04-17-ai%E6%99%82%E4%BB%A3%E3%81%AE%E8%BB%A2%E8%81%B7%E6%B4%BB%E5%8B%95%E8%A8%98%E9%8C%B2/</link><pubDate>Fri, 17 Apr 2026 21:25:00 -0700</pubDate><guid>https://chezo.uno/post/2026-04-17-ai%E6%99%82%E4%BB%A3%E3%81%AE%E8%BB%A2%E8%81%B7%E6%B4%BB%E5%8B%95%E8%A8%98%E9%8C%B2/</guid><description>&lt;p&gt;今回、転職活動をするにあたって、AIをフル活用して活動をした。前職ではGithub Copilotが個人アカウントだが会社にコントロールされていたので、せっかくだからとClaude Proを契約して望んだ。&lt;/p&gt;
&lt;p&gt;2年前くらいの転職活動でhiring managerと話ができないreferalは全部書類で弾かれた反省から、今回はLinkedInで自社の採用担当から連絡が来たものを受けることにした。並行して知り合いにreferalを頼んだ。今回はLayerXをreferalしてくれた友人と同じチームに入ることになり、採用ペースが全く合わなかったため他の選考は辞退した。&lt;/p&gt;
&lt;h2 id="転職活動でやったこと"&gt;転職活動でやったこと&lt;/h2&gt;
&lt;p&gt;主にやったことは以下のようなことである。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Claudeを使って企業調査をした&lt;/li&gt;
&lt;li&gt;LLMと内省し、何が得意、何がやりたい、何がやりたくない、何が苦手、などを徹底的に言語化した&lt;/li&gt;
&lt;li&gt;毎日Apple Notesにジャーナルをつけた&lt;/li&gt;
&lt;li&gt;スケジュール管理のサポートをClaudeにしてもらった&lt;/li&gt;
&lt;li&gt;過去のプロジェクトで達成したことや苦労したことをエピソードバンクとしてNotionに書き出して、ClaudeにコピペしてSTAR methodのbehavioral interviewスクリプトを生成させた&lt;/li&gt;
&lt;li&gt;resumeは元となるものを用意しておき、エピソードバンクも活用してJDを食わせて都度調整した&lt;/li&gt;
&lt;li&gt;LeetCodeは年間契約していたが、Claudeもやらなくて良いと言ったのでやらなかった（実際には、LeetCode的tech interviewをしないと書いてあるところを中心に受けたのもある）
&lt;ul&gt;
&lt;li&gt;Big TechはLeetCodeの難易度が上がっているという話も聞くので、Data Structure &amp;amp; Algorithm苦手勢としては受けなかった&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Technical interviewの宿題は、週末体調崩していたのでClaude Opusと対話してコードを書かせた&lt;/li&gt;
&lt;li&gt;同時期に転職活動をしていた仲間内で状況を共有し合っていた&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;とにかく、テキストを書いて増やしていくと、LLMに投げると更に深堀りできるし、言語化が加速していくのがしんどいがとても良かった。&lt;/p&gt;
&lt;p&gt;以下には、特にAIを活用するためにしたことを書いていく。&lt;/p&gt;
&lt;h2 id="claudeを使った企業調査"&gt;Claudeを使った企業調査&lt;/h2&gt;
&lt;p&gt;これは、 shiumachiさんに教えてもらったやり方なのだが、会社のカルチャーを理解するために企業調査をClaudeにさせたのがとても良かった。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;XXX という会社について調査してください。会社としてのビジョン、経営者や創業者の思想や価値観、会社の文化、ビジネスモデル、ビジネスとしての発展性など、転職先としてどれだけ魅力的かについて調査してください。レポートは日本語で書いてください。MLEあるいはAI Engineer、Backend Engineerとして転職活動をしようとしています。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;特に経営者や創業者の思想や価値観は非常に重要で、ここを理解することで営業ドリブンの会社なのか、エンジニアリングに重きを置いているのか、投資家に寄っているのかなどがわかる。&lt;/p&gt;
&lt;h2 id="llmを使った内省"&gt;LLMを使った内省&lt;/h2&gt;
&lt;p&gt;これもshiumachiさんに勧められたのでやってみたのだが、以下のことをLLMと問答をすることで整理していった。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;やりたいこと&lt;/li&gt;
&lt;li&gt;やりたくないこと&lt;/li&gt;
&lt;li&gt;できること&lt;/li&gt;
&lt;li&gt;できないこと&lt;/li&gt;
&lt;li&gt;好きなもの&lt;/li&gt;
&lt;li&gt;嫌いなもの&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これは結構重要で、自分がMLEからAIへとフィールドを広げていくのにあたって、「古典的なMLを含んだHuman-in-the-loopの必要なprobablisticなコンポーネントを含むシステムの設計や実装」がやりたいという、MLEとしての自分を再定義することが出来た。&lt;/p&gt;
&lt;h2 id="ジャーナル"&gt;ジャーナル&lt;/h2&gt;
&lt;p&gt;これもshiumachiさんに勧められてはじめた。まあ、日報みたいなもので、そのときにやったこと、あるいは感情を残していった。これも残しておくと更に深堀りするポイントが見つかるので、都度LLMに食わせて問答をしていった。&lt;/p&gt;
&lt;h2 id="エピソードバンク"&gt;エピソードバンク&lt;/h2&gt;
&lt;p&gt;もともとは、レジュメ更新のために過去のプロジェクトの棚卸しをしていったのだが、過去のレジュメには書いたけどもう落としてしまった話や、過去の行動面接対策で書き記したエピソードをNotionで1ページにまとめて、新しいエピソードも追加した。このエピソードバンクを作ったのはとても良く、STARメソッドに従った行動面接の想定問答をOpusに生成させて後はそれを覚えるなりチラ見しながら話せばいいのである。&lt;/p&gt;
&lt;h2 id="同時期に転職活動をしている仲間との進捗共有"&gt;同時期に転職活動をしている仲間との進捗共有&lt;/h2&gt;
&lt;p&gt;エンジニアコミュニティで同時期に転職活動をしている人がいたので、その人たちに活動を共有しつつお互いの状況を把握していた。これは良くて、そういうやり方があるのかー、とか今どきそういう面白い面接あるのねー、などと刺激になった。&lt;/p&gt;
&lt;p&gt;ほとんどshiumachiさんの影響によってAI活用していた気もするが、実際だいぶ初速がついた。転職活動として退職の通知をした後も、様々なことが起こったのだがそれらを解決するためにもプライベートで契約をしたClaudeには大活躍をしてもらった。法律周りとか自分で調べるのめちゃくちゃしんどいし、転職前にLLM関連の予習をするのにも大活躍した。ある意味仕事よりもハードにこちらのリソース管理をされていた気がする。&lt;/p&gt;</description></item><item><title>LayerXで働き始めました</title><link>https://chezo.uno/post/2026-04-17-layerx%E3%81%A6%E5%83%8D%E3%81%8D%E5%A7%8B%E3%82%81%E3%81%BE%E3%81%97%E3%81%9F/</link><pubDate>Fri, 17 Apr 2026 18:33:00 -0700</pubDate><guid>https://chezo.uno/post/2026-04-17-layerx%E3%81%A6%E5%83%8D%E3%81%8D%E5%A7%8B%E3%82%81%E3%81%BE%E3%81%97%E3%81%9F/</guid><description>&lt;p&gt;友人である
に誘われて、4/1にLayerXのAi Workforce事業部に入社しました。居住地は引き続きバンクーバー（の2つ隣の市です。いわゆる「神奈川」の代表点としての「横浜」みたいな説明）です。&lt;/p&gt;
&lt;p&gt;前職でCEOが「AI Native企業になる！」と言い続けていたので、Bet AIする会社に入ってみたらどうなるかな、と思って入りました。&lt;/p&gt;
&lt;p&gt;riywoさんとは同じチームですが、僕はStaff Software Engineerとして働いています。が、やることはいっぱいあるので、よしなに問題を解決していってくれ、という係をやっています。TDでの経験も生きるとこがいっぱいあるなーと思って、口を突っ込ませてもらっています。&lt;/p&gt;
&lt;p&gt;久しぶりにスタートアップな感じの勢いを感じており、クックパッドの時の終わらない文化祭前みたいな感じでとてもワクワクしています。動くものをサクッと作ってデモして、それを見て盛り上がって顧客の課題を解決していこうというのはAI時代にはとてもいいですね。&lt;/p&gt;
&lt;p&gt;CEOのfukkyさんやCTOのymatsuさんが、日々手を動かしたりしつつビジョンを共有してくれるのはとても新鮮です。ymatsuさんと話したときに「手触り感がわからなくなると終わる」という言葉はとても印象に残っています。&lt;/p&gt;
&lt;p&gt;かれこれ10年近くアメリカ企業で働いており直近使ってきたのは英語とルー語だったので、日本語がでなくなっているのが目下の悩みです。とはいえ、元外資系のエンジニアも増えてきているみたいなので、アメリカンな割とダイレクトコミュニケーションでも生きていけそうです。&lt;/p&gt;
&lt;p&gt;転職活動については
のでよければお読みください。&lt;/p&gt;</description></item><item><title>Treasure Dataを退職しました</title><link>https://chezo.uno/post/2026-03-31-treasure-data%E3%82%92%E9%80%80%E8%81%B7%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F/</link><pubDate>Tue, 31 Mar 2026 19:08:00 -0700</pubDate><guid>https://chezo.uno/post/2026-03-31-treasure-data%E3%82%92%E9%80%80%E8%81%B7%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F/</guid><description>&lt;p&gt;2026/3/31付けで7年半務めたTreasure Dataを退職します。&lt;/p&gt;
&lt;h3 id="過去記事"&gt;過去記事&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="原初のmlチーム傭兵期"&gt;原初のMLチーム（傭兵期）&lt;/h2&gt;
&lt;p&gt;入社したのはArm買収直後のタイミングでした。最初は3人しかいない当時CTO（元CEO）直下の遊撃部隊としてのMLチームからはじまりました。前職
ではSales Engineer（AWSで言うところのSA）だったので、実はSWEに戻るための転職活動は結構大変でした。（TDから声をかけていただいた
さんには感謝）&lt;/p&gt;
&lt;p&gt;ただ、その中でも面接でプロダクト志向がとても強い
との出会いがTDの入社の決め手だったのを今でも覚えています。そして、その直感は正しく、
の開発なんかで一緒に働くのはとても楽しいときでした。彼とは今も友人関係として良くしてもらっています。&lt;/p&gt;
&lt;p&gt;この時代は、顧客のMLキャンペーンのお手伝いをさせていただいたり、Custom Scriptと呼ばれるPythonをTreasure Workflow（TDのhosted digdag）上で動かす機能のPythonがまともに動くようなML use case及びそのサンプルコードを作ったり、顧客ミーティングに飛び入りで売り込みをさせていただいたりと、遊撃部隊ならではの幅広い活動をしていました。顧客ミーティングにスライド持っていってデモして売り込んだのは、まだまだ小さい組織だったのもありますがCloudera時代の経験が生きた瞬間でした。&lt;/p&gt;
&lt;h2 id="audienceチームでのcdp開発一人一殺時代"&gt;AudienceチームでのCDP開発（一人一殺時代）&lt;/h2&gt;
&lt;p&gt;CTOのArmでの活動が増えてきて、MLチームが維持できないという話になり、CDPを開発しているAudienceチームに移籍する話になりました。その時、海外で働きたいという話を再度上司であったCTOにしたところ「TDを通じて海外で活躍できるエンジニアを増やしたい」とVancouverへのrelocationを快く応援していただいたのは、とても感謝しています。&lt;/p&gt;
&lt;p&gt;仕事としては、CDPの画面を新しくするのに伴って、フォルダ構造を取り入れるためのプロジェクトで各種機能の実装をRailsでしたり、サーバーサイドKotlinでRealtime ID Stitchingを実装したけど出なかったりといろいろとやりました。一人一殺と言われていた時代です。&lt;/p&gt;
&lt;script defer class="speakerdeck-embed" data-slide="15" data-id="dcef99361823438cb3b542784fa07b56" data-ratio="1.7772511848341233" src="[//speakerdeck.com/assets/embed.js](https://speakerdeck.com/assets/embed.js)"&gt;&lt;/script&gt;
&lt;p&gt;幸いなことに、Vancouverで北米西海岸にいるPdMやUXデザイナーと一緒に仕事する機会も多かったです。Clouderaで英語に多少自信をつけておいたのでガッツで乗り切りました。（そもそも、TDの人々がnon nativeの英語に寛容なのが大きい）&lt;/p&gt;
&lt;p&gt;このとき、Rubyコミッターでもあるnaruseさんとkaneko.yさんのチームで働き始めたのですが、その後もずっと社での戦略的な振る舞いをどうするかのアドバイザー的なことをずっとしてもらい、大変お世話になりました。この二人の現状認識と議論、ツッコミは今思い返しても良い訓練になりました。&lt;/p&gt;
&lt;p&gt;特に、なんかわからんけどうまく行かない、という状況をメタに整理して、「なぜこの人はこのようなことを言っているのだろう」という「筆者の気持ちを推測する」ことを無限に繰り返していたのですが、これが非常に後々まで役に立つスキルとなりました。何かしらの矛盾している声明が出たときに、昔であればともすれば感情的に「何いってんだ？」と反発するようなことを思ってしまったのですが、今では「ああ、これはこの人も混迷を極めており、助けを求めているのだなあ」と判断できるようになりました。&lt;/p&gt;
&lt;p&gt;これは、僕が割とエンジニアとしてはempathyを強めに感じてしまう方なのですが、彼らは現象とその背後にある論理を徹底的に言語化するということに長けており、ある種感情を理詰めで理解するという営みだったと思います。社会性を模倣から獲得することで伸びたスキルなのかもしれないとも思いますが、僕には足りていない要素だったので、他では得難いスキルを得ました。&lt;/p&gt;
&lt;p&gt;また、kaneko.yさんと退職前に反省会をしたときに、「丸くなりましたね」と言われて、ふと人に動いてもらうためにどう言葉をかければいいのか、というのを仕事では使えるようになっていたのだな、と思いました。（家庭ではよく怒られが発生するのでまだまだなんだとは思います）&lt;/p&gt;
&lt;p&gt;naruseさんがkaneko.yさんをEMラダーに移るよう説得したときの「正しいものを作るには、それをできる力を自分で得る必要がある。」という言葉は、後のTech lead業をするに当たって都度都度振り返った言葉でもあります。Principal業は割と境界をどう押し広げるか、ということの繰り返しだったことが大きいです。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;途中でチーム再編があり、Vancouverで一人他は全員東京メンバーになったときにも、ex-Cookpadのよしみでinohiro氏を社内から引き抜いてきたりと、チームを安定化するのにも貢献できたのは良かったです。&lt;/p&gt;
&lt;h2 id="2回目のmlチーム"&gt;2回目のMLチーム&lt;/h2&gt;
&lt;p&gt;2年半くらいMLプロジェクトのTech Lead業をやっていました。MLプロジェクトのエンジニアリングをリードとして何でもやる係を任され投入されたのですが、なんだかんだでMLチームを作っていく仕事も任されるようになりました。最初は、チーム所属を変えないでSr Eng Directorと密にやりながら進めていったのですが、紆余曲折ありMLチームを直接率いる事になりました。&lt;/p&gt;
&lt;p&gt;そのあたりは以下の記事でも書いたとおりなので、よければ見てください。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;自分が骨を砕いたのは、いかにMLという力を使って顧客価値を出していくのかということでした。
、それを実現するためにあの手この手を尽くしました。&lt;/p&gt;
&lt;p&gt;結局、MLプロジェクトのリードをするようになって、3回くらいメンバー入れ替えに伴うチームの立て直しをしました。採用はとても重要で、妥協なくやらないとリカバリに半年とか平気で飛ぶというのも学びました。（自分で言うのもなんですが）粘り強く今持っている手札で出来る打ち手を考え続けるということをやり続けられたかと思います。&lt;/p&gt;
&lt;p&gt;途中で組織変更があって、レポートラインがSr Eng Director直になったことも、自分のキャリアとしては非常に大きな転換でした。彼のコミュニケーションスタイルはとても粘り強く相手の意図を汲み取るために全力を尽くす、というスタイルで、理解が難しい発言や声明も自分がアクション可能な形へと落とし込む力はとても勉強になりました。&lt;/p&gt;
&lt;p&gt;彼はIT業界で長くやっていることもあり、ドットコム・バブルやリーマン・ショックなどの変化を経験してきているわけです。そんな中で、AIによる様々な変化に対してどう向き合ってるか聞いたところ「ソフトウェアエンジニアリングにおいて、新しいパラダイムが来てもいつもすべての問題を解決するわけではない。新しい課題も生まれる。それを解き続けるのがエンジニアリングだ。AIもそうだと思っている」との言葉をもらいました。これは非常に心強い言葉だなと思うとともに、隙間時間でOpenAI Agents SDKを触って自分の業務を自動化したりしてる、という変化に適応し続ける姿勢に裏打ちされているものであるのだと再認識しました。彼の口癖は &amp;ldquo;We should be prepared for the changes, even if that&amp;rsquo;s a hard change.” （先回りして考えておけることは考えておく。たとえどうしようもない変化でも、覚悟しておくだけで折れずにいられる）というもので、これは僕も強く共感を覚えています。&lt;/p&gt;
&lt;p&gt;自分の上司の中でも彼の右腕として働けたのは、とても学びも大きく良かったです。これが、 thought leaderなんだなと感じました。&lt;/p&gt;
&lt;h2 id="終わりに"&gt;終わりに&lt;/h2&gt;
&lt;p&gt;7年半と自分のキャリアとしては一社で過去最長の勤続をすることとなりました。そして気がつけばVancouverに来てちょうど5年経ち、こちらで働いた期間のほうが長いのも感慨深いです。&lt;/p&gt;
&lt;p&gt;次は明日から相変わらずVancouverから新しい会社で働きます。今度は、AIの世界にどっぷり浸かろうと思います。&lt;/p&gt;</description></item><item><title>ワークフローテンプレートをskillに埋め込んで、LLMの役割を「生成」から「レンダリング」に変えた話</title><link>https://chezo.uno/post/2026-03-29-%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%95%E3%83%AD%E3%83%BC%E3%83%86%E3%83%B3%E3%83%95%E3%83%AC%E3%83%BC%E3%83%88%E3%82%92skill%E3%81%AB%E5%9F%8B%E3%82%81%E8%BE%BC%E3%82%93%E3%81%A6llm%E3%81%AE%E5%BD%B9%E5%89%B2%E3%82%92-%E7%94%9F%E6%88%90-%E3%81%8B%E3%82%89-%E3%83%AC%E3%83%B3%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%AF-%E3%81%AB%E5%A4%89%E3%81%88%E3%81%9F%E8%A9%B1/</link><pubDate>Sat, 28 Mar 2026 18:03:00 -0700</pubDate><guid>https://chezo.uno/post/2026-03-29-%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%95%E3%83%AD%E3%83%BC%E3%83%86%E3%83%B3%E3%83%95%E3%83%AC%E3%83%BC%E3%83%88%E3%82%92skill%E3%81%AB%E5%9F%8B%E3%82%81%E8%BE%BC%E3%82%93%E3%81%A6llm%E3%81%AE%E5%BD%B9%E5%89%B2%E3%82%92-%E7%94%9F%E6%88%90-%E3%81%8B%E3%82%89-%E3%83%AC%E3%83%B3%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%AF-%E3%81%AB%E5%A4%89%E3%81%88%E3%81%9F%E8%A9%B1/</guid><description>&lt;h2 id="mlワークフローのllmによる自動生成の夢"&gt;MLワークフローのLLMによる自動生成の夢&lt;/h2&gt;
&lt;p&gt;会社の
というML機能では、(MLではないが)RFMや推薦、Contextual Banditといった処理を行う機能がある。特にMLの予測処理をスケーラブルに実行するために、ML用APIをcallすると裏側でAWS Batchが起動して並列でworkerを立ち上げるという仕組みを取っている。この並列実行をするためには、入力テーブルをprofile（マーケティングキャンペーンの対象となるエンドユーザー）ごとに集約するという割り切りを入れることで、スケーラビリティを確保している。これらの処理は、digdagのworkflow（.digファイル。実際にはTreasure Workflow と呼ばれる hosted digdagで実行される）と、workflow内に記述されるSQL（Hive または Trino）とで管理されるワークフローからML APIがdigdagの &lt;code&gt;http&amp;gt;&lt;/code&gt; operatorで呼び出される。&lt;/p&gt;
&lt;p&gt;元々のプロジェクト開始時の座組としては、こうした前処理的・後処理的なワークフローはProfessional Serviceと呼ばれる有償のポストセールスエンジニアのMLEが自分たちで作成したテンプレートを元に、PSを購入した顧客にそのワークフローを展開していたのだが、この枠組みを超えて多くの顧客へ展開したいということで、LLMによるワークフロー・SQL生成が期待されていた。だが、モデルが日々良くなってるとはいえLLMによるワークフロー・SQL生成を安定して行うことは難しく（例えば、TD固有のUDFはぱっと出てこない）、何度か挑戦していたが諦めていた。&lt;/p&gt;
&lt;h2 id="claude-codeの進化とエージェント用cli"&gt;Claude Codeの進化とエージェント用CLI&lt;/h2&gt;
&lt;p&gt;そんな中、会社でAI Native企業になるというCEOの号令のもとClaude Codeの全社導入が進んだ。ソフトウェアエンジニアだけではなく、PdMやSolution Architect、営業にまでClaude Codeの利用が拡大された。特に重要な取り組みとしては、TDの各種マイクロサービスのAPIを叩ける統一的なエージェント用CLIの
と、tdxを内包したデスクトップアプリケーションである
の貢献が大きい。Claude Codeとtdxが連携することで、エージェントがマーケティングのジャーニーを作成したりTDにあるテーブルの分析結果を可視化したりできるようになったのである。CEO自ら社員向けにオンボーディングチャレンジタスクを作ったりして利用加速を進めた結果、自社内及び顧客環境でも様々な自動化が進んでいる。&lt;/p&gt;
&lt;p&gt;この流れで、
・社内向けのSkills marketplaceが誕生した。これらを利用することで、作業の再現性が高まり、複雑な処理の自動化が加速しているのである。&lt;/p&gt;
&lt;h2 id="ワークフロー生成におけるエージェント用cliの功績"&gt;ワークフロー生成におけるエージェント用CLIの功績&lt;/h2&gt;
&lt;p&gt;tdxの一番大きな功績は、Treasure WorkflowのエンドポイントをCLIから叩けるようにしたことで、Claude Codeがワークフローを作成、push、実行、結果を見て改善というフローが自律的に回せるようになったことである。ワークフローというものは実行するのに少なくとも数分、長ければ1時間以上かかるものもあるため、
。&lt;/p&gt;
&lt;p&gt;それを、Claude Code + tdxのおかげで、生成したワークフローを実行し、バックグラウンドに積んで実行結果を検証というサイクルが実現可能になったのである。これは革命的である。&lt;/p&gt;
&lt;p&gt;APIとのやり取りを含めて一気通貫できるエージェント向けCLIは、もはやなくてはならない存在であろう。&lt;/p&gt;
&lt;h2 id="mlワークフローテンプレートのskill化"&gt;MLワークフローテンプレートのskill化&lt;/h2&gt;
&lt;p&gt;とはいえ、冒頭でも書いたようにClaude Codeのモデルがいかに賢くなったとはいえ、事前知識がない顧客など、誰が実行しても安定的に納得の行くワークフローをLLMに生成させるのは困難である。&lt;/p&gt;
&lt;p&gt;そこで、問題の見方を変えてみた。ワークフロー・SQLをスクラッチで生成するのが難しければ、設定ファイルのパラメータを元にワークフローとSQLを生成するテンプレートを作ればよいのである。つまり、テンプレートをskillに埋め込むことで、LLMの責任範囲は「ワークフローとSQLをスクラッチから生成する」ことから「データや問題に適したパラメータを選ぶ」ことへと狭まる。つまり、欲しいワークフローはあらかじめテンプレート化することでそこは確定的な処理として扱うのである。「
」の応用といったところか。&lt;/p&gt;
&lt;p&gt;この発想は、cdp-apiがDBの値をもとに動的にdigdagのworkflowを生成するというところから着想を得た。&lt;/p&gt;
&lt;script defer class="speakerdeck-embed" data-slide="29" data-id="dcef99361823438cb3b542784fa07b56" data-ratio="1.7772511848341233" src="//speakerdeck.com/assets/embed.js"&gt;&lt;/script&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h2 id="digdagワークフローのjinja2テンプレート"&gt;digdagワークフローのJinja2テンプレート&lt;/h2&gt;
&lt;p&gt;実際にskillとして行ったのは、Jinja2でdigファイルをテンプレート化し、LLMは config.yml をsingle source of truthとしてすべての変更可能なパラメータを置き、設定値を決定することにフォーカスをさせた。 .dig.j2 というあまり世の中で見ない拡張子を見たときは、ちょっとドキドキした。&lt;/p&gt;
&lt;p&gt;内部ではレンダー時に決定するパラメータ &lt;code&gt;{{ }}&lt;/code&gt; と、digdagの変数として記述できるランタイム時のパラメータ &lt;code&gt;${ }&lt;/code&gt; を使い分けている。前者は、例えばSQLのエンジンがHiveかTrinoかによって分岐させたり、使うアルゴリズムやハイパーパラメータの候補が事前に決定できる場合に使われる。後者は、例えばハイパラチューンをした結果をテーブルに格納し、その結果をSQLで取得した際に動的に学習タスクに割り当てる、みたいなときに使う。&lt;/p&gt;
&lt;h2 id="openapi--agentとの契約書"&gt;OpenAPI = agentとの契約書&lt;/h2&gt;
&lt;p&gt;テンプレート化をする際に厄介なのが、ML APIに渡せるパラメータが複雑であり、それをどのようにagentに教えるかということである。幸いにも、自分たちのプロジェクトでは、ML用エンドポイントのパラメータはOpenAPIで管理されており、そのspecで網羅的に渡すことが出来た。&lt;/p&gt;
&lt;p&gt;元々、MLソリューション実行時にはOpenAPIから
で生成されたmodel.pyでパラメータのバリデーションを行っていたのだが、機械可読な仕様である openapi.yml をエージェントに渡すことで、それを翻訳したmarkdownにskill化していた。標準フォーマット万歳である。&lt;/p&gt;
&lt;h2 id="skill作成-agent-vs-skill使用-agent"&gt;skill作成 agent VS skill使用 agent&lt;/h2&gt;
&lt;p&gt;skill作成中に作ったskillのテストどうするのがいいの？とClaudeに聞いたら、別プロセスでagent立ち上げて試行錯誤をするのが良いと教えてもらったので、それを実践した。これは非常に良い体験だった。&lt;/p&gt;
&lt;p&gt;具体的には、skill使用agentを使うときは、OpenAPIやskillのドキュメントを自分で読むわけではないので、「このアルゴリズムとこのパラメータの組み合わせを実行したい」みたいな欲求が湧いてくるのである。通常、手動でやる sanity check だと頭に仕様が乗っており、面倒で複雑なパラメータの組み合わせはサボりがちなのだが、agentに任せれば簡単にできるという欲が湧いてくる。&lt;/p&gt;
&lt;p&gt;しかし、skill使用agentから帰ってきた言葉は「skillを見たけどまだその組み合わせはOpenAPI的には実装されていない」という答えだった。一応、QAのend to endのテストもあると思っていたのに、危ないところであった。実際にはOpenAPIを手動で管理していたため、Pythonコード内部では実装されていたが、リクエストから受け付けるパラメータの漏れがあるのが見つかった。&lt;/p&gt;
&lt;p&gt;このバグを早急に修正して、development環境にdeployし、skillもupdateしたところ、新しい組み合わせのパラメータをさも今までもあったかのようにClaudeは使いこなしていた。流石である。&lt;/p&gt;
&lt;p&gt;開発しながらskillも作ることで、実行環境を用意することがかなり恩恵があるということを学んだ瞬間である。&lt;/p&gt;
&lt;h2 id="まとめ"&gt;まとめ&lt;/h2&gt;
&lt;p&gt;こうして得られたskillを社内skills marketplaceに共有することで、今まで有償PSが作っていたworkflow作成ステップを簡略化し、さらには有償PSを買っていない顧客でも利用可能となった。&lt;/p&gt;
&lt;p&gt;また、Treasure Studioの恩恵として、MLで予測した結果を可視化できるようになり、簡単に分析・モデル改善のサイクルが回せるようになった。これらの分析のパターンもskill化していくと良さそうだが今回はスコープ外とした。&lt;/p&gt;
&lt;p&gt;この記事を書くときにClaudeと壁打ちをしていたのだが、「LLMの強みは問題の構造を理解することとパラメータ推論」とClaudeは主張している。それを支援するための一気通貫したCLIを用意することで、生成→実行→修正のループを自律的に回せるようになる。そこでループの複雑なタスクをテンプレート化することで、ドメイン知識のある人間と、（知識がない人が使う）agentの役割分担ができるのだと学んだ。&lt;/p&gt;</description></item><item><title>Montréalに10年以上ぶりに行った</title><link>https://chezo.uno/post/2026-03-28-montreal%E3%81%AB10%E5%B9%B4%E4%BB%A5%E4%B8%8A%E3%81%B5%E3%82%8A%E3%81%AB%E8%A1%8C%E3%81%A3%E3%81%9F/</link><pubDate>Fri, 27 Mar 2026 18:40:00 -0700</pubDate><guid>https://chezo.uno/post/2026-03-28-montreal%E3%81%AB10%E5%B9%B4%E4%BB%A5%E4%B8%8A%E3%81%B5%E3%82%8A%E3%81%AB%E8%A1%8C%E3%81%A3%E3%81%9F/</guid><description>&lt;p&gt;3月の上旬にworkationとして友人を訪ねがてらMontréalとOttawaに数日行ってきた。&lt;/p&gt;
&lt;p&gt;Vancouver近郊に住んでいるため、東海岸の春はどんなものかと思いながら行ったわけだが、3日いる中であったかくて寒いという東海岸らしい寒暖差を体験した。体感14℃の春の陽気から、体感-10℃のfreezing rainで学校が休みになるという差の激しさは驚きだった。&lt;/p&gt;
&lt;p&gt;
&lt;figure id="figure-モントリオールの寒暖差-httpswwwtimeanddatecomweathercanadamontrealhistoricmonth3year2026-より"&gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="モントリオールの寒暖差 (https://www.timeanddate.com/weather/canada/montreal/historic?month=3&amp;amp;year=2026)"
srcset="https://chezo.uno/post/2026-03-28-montreal%E3%81%AB10%E5%B9%B4%E4%BB%A5%E4%B8%8A%E3%81%B5%E3%82%8A%E3%81%AB%E8%A1%8C%E3%81%A3%E3%81%9F/pasted-image-1774658788930_hu_cc16a5f60f704faf.webp 320w, https://chezo.uno/post/2026-03-28-montreal%E3%81%AB10%E5%B9%B4%E4%BB%A5%E4%B8%8A%E3%81%B5%E3%82%8A%E3%81%AB%E8%A1%8C%E3%81%A3%E3%81%9F/pasted-image-1774658788930_hu_a0be03b4659be444.webp 480w, https://chezo.uno/post/2026-03-28-montreal%E3%81%AB10%E5%B9%B4%E4%BB%A5%E4%B8%8A%E3%81%B5%E3%82%8A%E3%81%AB%E8%A1%8C%E3%81%A3%E3%81%9F/pasted-image-1774658788930_hu_8019d1d214de89be.webp 516w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2026-03-28-montreal%E3%81%AB10%E5%B9%B4%E4%BB%A5%E4%B8%8A%E3%81%B5%E3%82%8A%E3%81%AB%E8%A1%8C%E3%81%A3%E3%81%9F/pasted-image-1774658788930_hu_cc16a5f60f704faf.webp"
width="516"
height="392"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;figcaption&gt;
モントリオールの寒暖差 (
より)
&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;初めて行ったときに比べて変わったのは、自分の年齢とDuolingoで学び続けたカタコトのフランス語力、生きていくには困らない程度の英語力だったわけだが、Vancouverに5年も住んでいると大きな驚きはあまりなくなっている。&lt;/p&gt;
&lt;p&gt;街の感じは、良くも悪くもヨーロッパを感じた。石畳の上をスーツケース引っ張るのが大変なのはヨーロッパっぽいし、街並みに突如と現れる石造りの教会が多いのもそうだ。カフェに入ったらパンもお菓子も美味しいのはフレンチのこだわりを感じて良い。なんだけど、街行く人の歩きタバコも多く、バス停の屋根の下でタバコ吸って占拠してる人、それに伴うゴミに溢れる街並みを見ると、ドイツを思い出した。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="モントリオールの街並み"
srcset="https://chezo.uno/post/2026-03-28-montreal%E3%81%AB10%E5%B9%B4%E4%BB%A5%E4%B8%8A%E3%81%B5%E3%82%8A%E3%81%AB%E8%A1%8C%E3%81%A3%E3%81%9F/IMG_3196_hu_e2081ae6d86f2a63.webp 320w, https://chezo.uno/post/2026-03-28-montreal%E3%81%AB10%E5%B9%B4%E4%BB%A5%E4%B8%8A%E3%81%B5%E3%82%8A%E3%81%AB%E8%A1%8C%E3%81%A3%E3%81%9F/IMG_3196_hu_6c8b3d4eae3a0419.webp 480w, https://chezo.uno/post/2026-03-28-montreal%E3%81%AB10%E5%B9%B4%E4%BB%A5%E4%B8%8A%E3%81%B5%E3%82%8A%E3%81%AB%E8%A1%8C%E3%81%A3%E3%81%9F/IMG_3196_hu_fd2cea6f516b5a97.webp 570w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2026-03-28-montreal%E3%81%AB10%E5%B9%B4%E4%BB%A5%E4%B8%8A%E3%81%B5%E3%82%8A%E3%81%AB%E8%A1%8C%E3%81%A3%E3%81%9F/IMG_3196_hu_e2081ae6d86f2a63.webp"
width="570"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;今回は、友人に教えてもらってBounceを使って荷物を預けたのだが、それはとても良い体験だった。モントリオール中央駅近くのカフェに預けたので、深夜便で空港から移動をして朝ごはんをゆったり楽しむことができた。Bounceは参加しているホテルやカフェなどの施設が荷物を預かってくれるサービスなのだが、自分が預けたところは従業員しか入れないところに置いてくれており、安心感も高かった。
置いておくのでよければどうぞ。&lt;/p&gt;
&lt;p&gt;フランス語初学者としては、Montréalで注文をするのはフランス語の練習にちょうどよい。&amp;ldquo;Je voudrais un café au lait &amp;hellip; with oat milk&amp;quot;なんてチャンポンに嫌な顔せず受け止めてくれた。&lt;/p&gt;
&lt;p&gt;Montréalの街並みは昔の記憶よりもコンパクトで、ノートルダム聖堂を始め多くの道で工事をしており、
のを感じた。しかし、ノートルダム聖堂でフリーWiFiが提供されているのを見たときは時の流れを感じた。YVRでApple Watchのバンドが壊れかけているのに気づいてぶらぶらとApple Storeまで散策をしたのはなかなか良かった。Apple Storeはだいたい目抜き通りにあるので、その都市の中心部を散歩する口実にはちょうどよい。&lt;/p&gt;
&lt;p&gt;
&lt;figure id="figure-ノートルダム聖堂で提供される無料wifi"&gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="ノートルダム聖堂で提供される無料WiFi"
srcset="https://chezo.uno/post/2026-03-28-montreal%E3%81%AB10%E5%B9%B4%E4%BB%A5%E4%B8%8A%E3%81%B5%E3%82%8A%E3%81%AB%E8%A1%8C%E3%81%A3%E3%81%9F/IMG_3209_hu_cf44d2c9fcccecfb.webp 320w, https://chezo.uno/post/2026-03-28-montreal%E3%81%AB10%E5%B9%B4%E4%BB%A5%E4%B8%8A%E3%81%B5%E3%82%8A%E3%81%AB%E8%A1%8C%E3%81%A3%E3%81%9F/IMG_3209_hu_55733e23e48c5141.webp 480w, https://chezo.uno/post/2026-03-28-montreal%E3%81%AB10%E5%B9%B4%E4%BB%A5%E4%B8%8A%E3%81%B5%E3%82%8A%E3%81%AB%E8%A1%8C%E3%81%A3%E3%81%9F/IMG_3209_hu_86fc8250242b1d88.webp 570w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2026-03-28-montreal%E3%81%AB10%E5%B9%B4%E4%BB%A5%E4%B8%8A%E3%81%B5%E3%82%8A%E3%81%AB%E8%A1%8C%E3%81%A3%E3%81%9F/IMG_3209_hu_cf44d2c9fcccecfb.webp"
width="570"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;figcaption&gt;
ノートルダム聖堂で提供される無料WiFi
&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;宿はローカルのところがいいかなー、と、ケベックの会社が運営している host-me.ca という会社で民泊を予約したのだが、本当に酷い体験をしたのでマジでおすすめしない。お値打ちな宿をGoogleが「host-me.caが大元です」と出したので、Claudeに相談しながらも駄目だったら話の種になるわーと予約を取った。&lt;/p&gt;
&lt;p&gt;が、チェックインのための鍵のコードが待てど暮らせど来ない。事前にearly checkinか早めの荷物預け入れができないか問い合わせた時についでに聞いたら「チェックイン24時間前までには送ります」とメールで言っていたにも関わらず来ない。前日の夜空港で（フィリピン等の外部委託の）サポセンに電話で問い合わせたら「お前のクレカの決済が通っていない」と言い始め、当日朝空港についたあとで、メールと電話で「約束のサービスが提供されないのでクレカのチャージバック依頼するからもう泊まらない」と言った直後に電話がかかってきて「今システム登録したから」「24時間前じゃない、24時間以内だ」「夜遅くに問い合わせされても無効だ」などと嘘や言い訳を並べ立ててきた。結局、当日ホテル取り直すよりは安いということでそのまま泊まったが、問い合わせ対応で過ごす空港のラウンジは過去一番時間が経つのが早かった。&lt;/p&gt;
&lt;p&gt;宿自体は小綺麗でさっぱりしていたが、いかんせん
という再開発エリアのため、夜一人で歩く自身はあまりない感じだった。周りに店も多くないので、観光客向けのエリアではない。なので安いんだなと改めて実感した。&lt;/p&gt;
&lt;p&gt;
&lt;figure id="figure-ottawaのfreezing-rainで凍る枝"&gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Ottawaのfreezing rainで凍る枝"
srcset="https://chezo.uno/post/2026-03-28-montreal%E3%81%AB10%E5%B9%B4%E4%BB%A5%E4%B8%8A%E3%81%B5%E3%82%8A%E3%81%AB%E8%A1%8C%E3%81%A3%E3%81%9F/IMG_3239_hu_c2bc4fda6937b17.webp 320w, https://chezo.uno/post/2026-03-28-montreal%E3%81%AB10%E5%B9%B4%E4%BB%A5%E4%B8%8A%E3%81%B5%E3%82%8A%E3%81%AB%E8%A1%8C%E3%81%A3%E3%81%9F/IMG_3239_hu_605fda5727b16c00.webp 480w, https://chezo.uno/post/2026-03-28-montreal%E3%81%AB10%E5%B9%B4%E4%BB%A5%E4%B8%8A%E3%81%B5%E3%82%8A%E3%81%AB%E8%A1%8C%E3%81%A3%E3%81%9F/IMG_3239_hu_ba9e52af8ed8b9d5.webp 570w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2026-03-28-montreal%E3%81%AB10%E5%B9%B4%E4%BB%A5%E4%B8%8A%E3%81%B5%E3%82%8A%E3%81%AB%E8%A1%8C%E3%81%A3%E3%81%9F/IMG_3239_hu_c2bc4fda6937b17.webp"
width="570"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;figcaption&gt;
Ottawaのfreezing rainで凍る枝
&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;翌日はOttawaの友人夫妻の家を訪ね泊めてもらった。Ottawaのブリュワリーも良かったし、友人宅でいただいたMalawi料理のNsimaも美味しかった。freezing rainもice stormも何のそのということで行き帰り無事過ごせたのは良かった。&lt;/p&gt;
&lt;p&gt;
&lt;figure id="figure-montréalに帰る途中の凍った海"&gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Montréalに帰る途中の凍った海"
srcset="https://chezo.uno/post/2026-03-28-montreal%E3%81%AB10%E5%B9%B4%E4%BB%A5%E4%B8%8A%E3%81%B5%E3%82%8A%E3%81%AB%E8%A1%8C%E3%81%A3%E3%81%9F/IMG_3241_hu_9e1a472da897193d.webp 320w, https://chezo.uno/post/2026-03-28-montreal%E3%81%AB10%E5%B9%B4%E4%BB%A5%E4%B8%8A%E3%81%B5%E3%82%8A%E3%81%AB%E8%A1%8C%E3%81%A3%E3%81%9F/IMG_3241_hu_57d7786773a6fa46.webp 480w, https://chezo.uno/post/2026-03-28-montreal%E3%81%AB10%E5%B9%B4%E4%BB%A5%E4%B8%8A%E3%81%B5%E3%82%8A%E3%81%AB%E8%A1%8C%E3%81%A3%E3%81%9F/IMG_3241_hu_b5b4fda69b5064fa.webp 570w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2026-03-28-montreal%E3%81%AB10%E5%B9%B4%E4%BB%A5%E4%B8%8A%E3%81%B5%E3%82%8A%E3%81%AB%E8%A1%8C%E3%81%A3%E3%81%9F/IMG_3241_hu_9e1a472da897193d.webp"
width="570"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;figcaption&gt;
Montréalに帰る途中の凍った海
&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;二都市をふらっと行って思ったのは、なんだかんだOttawaのほうが好きだなあということ。Montréalは思っていたより大都会で、3路線乗り換える地下鉄があるくらいである！poutineもOttawaで食べたもののほうが美味しかったのはココだけの話。もう人の多いところは無理なのだなあと思いVancouverに戻り雪山を堪能したのであった。またOntarioは行きたいものである。&lt;/p&gt;</description></item><item><title>ボランティアデーでWikipediaの太平洋時間（Pacific Time）の改善をした</title><link>https://chezo.uno/post/2026-03-26-%E3%83%9B%E3%83%A9%E3%83%B3%E3%83%86%E3%82%A3%E3%82%A2%E3%83%86%E3%83%BC%E3%81%A6wikipedia%E3%81%AE%E5%A4%AA%E5%B9%B3%E6%B4%8B%E6%99%82%E9%96%93pacific-time%E3%81%AE%E6%94%B9%E5%96%84%E3%82%92%E3%81%97%E3%81%9F/</link><pubDate>Wed, 25 Mar 2026 17:46:00 -0700</pubDate><guid>https://chezo.uno/post/2026-03-26-%E3%83%9B%E3%83%A9%E3%83%B3%E3%83%86%E3%82%A3%E3%82%A2%E3%83%86%E3%83%BC%E3%81%A6wikipedia%E3%81%AE%E5%A4%AA%E5%B9%B3%E6%B4%8B%E6%99%82%E9%96%93pacific-time%E3%81%AE%E6%94%B9%E5%96%84%E3%82%92%E3%81%97%E3%81%9F/</guid><description>&lt;p&gt;会社のボランティアデーというのがあるので、何がいいかなと思って色々とClaudeと話したところ、Wikipediaの
にBC州のタイムゾーンが「太平洋時間」に変わるという発表を受け編集したのを思い出したので、それ関連の改善をした。&lt;/p&gt;
&lt;p&gt;これは、2026/3/2に唐突に発表された
話に基づいて、Wikipediaの太平洋時間という新しい「タイムゾーン」の話を更新したのだが、今日ふらっと見てみるとカナダ時間のページのBC州の項目が山岳部標準時の下の太平洋夏時間という表記になっており、うーんなんじゃそりゃとなったので、
の日本語訳をした。&lt;/p&gt;
&lt;p&gt;成果物は、
を見てほしい。（ついでに太平洋時間の記述を、
）&lt;/p&gt;
&lt;h2 id="ハマりどころ"&gt;ハマりどころ&lt;/h2&gt;
&lt;p&gt;Wikipediaの存在しないページを翻訳するのは今回初めてだったのだが、色々とハマった。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;LLMの翻訳をそのままは当然駄目&lt;/li&gt;
&lt;li&gt;公式翻訳ツール「コンテンツ翻訳」は英日ではなんの訳にも立たないし、なんなら邪魔&lt;/li&gt;
&lt;li&gt;Pacific Timeはタイムゾーンなのか論争&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;1に関しては、機械翻訳について結構ちゃんと
がある。このケースG3のリンクにある表現は一昔前の基準ぽいが、こういうことが書かれており、問題を避けるために自分で翻訳をした。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;ul&gt;
&lt;li&gt;以下のような記事は、機械翻訳が翻訳のベースとされているという事実により、百科事典の記事として正確性の問題が発生する可能性がある誤訳が含まれていることが推定されるため、削除の対象となります。
&lt;ul&gt;
&lt;li&gt;いずれかの機械翻訳の出力結果と完全に一致する文が記事に多数残されていたり、「ですます調」の修正などの翻訳文の微修正にとどまっていたりする場合。&lt;/li&gt;
&lt;li&gt;いずれかの機械翻訳をベースにしつつ人の手が加えられているが、誤訳または日本語として不自然な文章が残されている場合。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;2はケースG3からもリンクされているんだが、翻訳エラーが出るだけならまだしも、原文を転写することもできない。一度翻訳を転写するという規定を選んだが最後、空のブロックを作成しようとすると自分でやった翻訳も消える。多分、一からページ作るほうが速い。&lt;/p&gt;
&lt;h2 id="pacific-timeは山岳部標準時なのかそもそもタイムゾーンなのか論争"&gt;Pacific Timeは山岳部標準時なのか、そもそもタイムゾーンなのか論争&lt;/h2&gt;
&lt;p&gt;この
を見てもらうとわかるのだが、どうも自分が翻訳したブリティッシュコロンビア時間のもととなったTime in British Columbiaというページは Pacific Time (British Columbia)という名前だったようだ。&lt;/p&gt;
&lt;p&gt;Talkをみると、UTC-7は山岳部標準時と呼ぶべきである派閥がPacific TimeはUTC-7なのでMSTの下に入れようとしている。類似例としてサスカチュワン州は通年UTC-6なので
。&lt;/p&gt;
&lt;p&gt;
&lt;figure id="figure-カナダのタイムゾーン"&gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="カナダのタイムゾーン"
srcset="https://chezo.uno/post/2026-03-26-%E3%83%9B%E3%83%A9%E3%83%B3%E3%83%86%E3%82%A3%E3%82%A2%E3%83%86%E3%83%BC%E3%81%A6wikipedia%E3%81%AE%E5%A4%AA%E5%B9%B3%E6%B4%8B%E6%99%82%E9%96%93pacific-time%E3%81%AE%E6%94%B9%E5%96%84%E3%82%92%E3%81%97%E3%81%9F/1280px-2026_Canada_time_zone_map.svg_hu_75d79a81c044e886.webp 320w, https://chezo.uno/post/2026-03-26-%E3%83%9B%E3%83%A9%E3%83%B3%E3%83%86%E3%82%A3%E3%82%A2%E3%83%86%E3%83%BC%E3%81%A6wikipedia%E3%81%AE%E5%A4%AA%E5%B9%B3%E6%B4%8B%E6%99%82%E9%96%93pacific-time%E3%81%AE%E6%94%B9%E5%96%84%E3%82%92%E3%81%97%E3%81%9F/1280px-2026_Canada_time_zone_map.svg_hu_bd3f3d5b056292ad.webp 480w, https://chezo.uno/post/2026-03-26-%E3%83%9B%E3%83%A9%E3%83%B3%E3%83%86%E3%82%A3%E3%82%A2%E3%83%86%E3%83%BC%E3%81%A6wikipedia%E3%81%AE%E5%A4%AA%E5%B9%B3%E6%B4%8B%E6%99%82%E9%96%93pacific-time%E3%81%AE%E6%94%B9%E5%96%84%E3%82%92%E3%81%97%E3%81%9F/1280px-2026_Canada_time_zone_map.svg_hu_237f7bfe26426f.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2026-03-26-%E3%83%9B%E3%83%A9%E3%83%B3%E3%83%86%E3%82%A3%E3%82%A2%E3%83%86%E3%83%BC%E3%81%A6wikipedia%E3%81%AE%E5%A4%AA%E5%B9%B3%E6%B4%8B%E6%99%82%E9%96%93pacific-time%E3%81%AE%E6%94%B9%E5%96%84%E3%82%92%E3%81%97%E3%81%9F/1280px-2026_Canada_time_zone_map.svg_hu_75d79a81c044e886.webp"
width="760"
height="642"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;figcaption&gt;
カナダのタイムゾーン
&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="//commons.wikimedia.org/w/index.php?title=User:Mappify&amp;amp;action=edit&amp;amp;redlink=1" class="new" title="User:Mappify (page does not exist)"&gt;Mappify&lt;/a&gt; - &lt;span class="int-own-work" lang="ja"&gt;投稿者自身による著作物&lt;/span&gt;, &lt;a href="https://creativecommons.org/licenses/by-sa/4.0" title="Creative Commons Attribution-Share Alike 4.0"&gt;CC 表示-継承 4.0&lt;/a&gt;, &lt;a href="https://commons.wikimedia.org/w/index.php?curid=185512650"&gt;リンク&lt;/a&gt;による&lt;/p&gt;
&lt;p&gt;つまり、UTC-6は夏時間であれば山岳部夏時間（MDT）、そうでなければ中部標準時（CST）と表記すべきという話である。同様にして、UTC-7通年のPacific Timeは山岳部標準時（MST）と表現されるべきという主張である。&lt;/p&gt;
&lt;p&gt;だが、BC州民としてはBC州の法律で
という呼称は制定されており、その名称を無視するのはいかがなものかと思うわけである。&lt;/p&gt;
&lt;p&gt;
にも書かれる、BC州首相のDavid Ebyの言葉と、その翻訳を持って締めようと思う。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;British Columbia premier David Eby decided to make the switch before the US due to poor relations between the two countries since the second Trump administration began, saying British Columbia should &amp;ldquo;stand on our own two feet as a province in relation to everything, including time zones&amp;rdquo;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;ブリティッシュコロンビア州のデビッド・イービー首相は、第2次トランプ政権の発足以来の米加関係の冷え込みを受け、米国に先駆けて時間帯を変更する決断を下した。イービー首相は、「時間帯の問題を含め、あらゆる面において、ブリティッシュコロンビア州は州として自立した姿勢を貫くべきだ」と述べている。&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>「Agents SDK+αのTipsを一人で書いていくアドカレ Advent Calendar 2025」を追走した</title><link>https://chezo.uno/post/2026-03-21-agents-sdk-%CE%B1%E3%81%AEtips%E3%82%92%E4%B8%80%E4%BA%BA%E3%81%A6%E6%9B%B8%E3%81%84%E3%81%A6%E3%81%84%E3%81%8F%E3%82%A2%E3%83%88%E3%82%AB%E3%83%AC-advent-calendar-2025%E3%82%92%E8%BF%BD%E8%B5%B0%E3%81%97%E3%81%9F/</link><pubDate>Fri, 20 Mar 2026 18:03:00 -0700</pubDate><guid>https://chezo.uno/post/2026-03-21-agents-sdk-%CE%B1%E3%81%AEtips%E3%82%92%E4%B8%80%E4%BA%BA%E3%81%A6%E6%9B%B8%E3%81%84%E3%81%A6%E3%81%84%E3%81%8F%E3%82%A2%E3%83%88%E3%82%AB%E3%83%AC-advent-calendar-2025%E3%82%92%E8%BF%BD%E8%B5%B0%E3%81%97%E3%81%9F/</guid><description>&lt;p&gt;
さんが書いてくださった、OpenAIの
の追走をした。子供の春休みで有給取っていることもあり、春休みの宿題よろしくやってみた。&lt;/p&gt;
&lt;p&gt;レポジトリはこちら:
&lt;/p&gt;
&lt;p&gt;このスレッドで試した様子を書き出している&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;（追走を）完走した感想だが、以前にLangChainとChromaをベースに社内のConfluenceを検索するRAGシステムを社内のハッカソンで作ったとき以来のフレームワークで、Agentのパターンを頭に入れたうえでどういう実装をしているのかを学ぶのにとても良かった。&lt;/p&gt;
&lt;p&gt;Claude Opus 4.6に自習計画を立ててもらいながら、重要なところ、スキップするところをリストしてもらったが、先にこの記事を読んでおくとパターンが整理されて良かった。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;なお、一番大事なのはネタバレが重要なフィクションを例として使えること。元々の記事では銀魂と終末のワルキューレ、僕の場合は、ヴィンランド・サガでいきました。&lt;/p&gt;
&lt;p&gt;また、並行して会社の業務の一環として
というCLI toolと連携するための社内skillsを作っていたのも理解を深めるのに役に立った。やったこととしては、
というプロダクトのソリューション、RFM、NBP（推薦）といった公開済みのソリューションを中心に、 digdag のworkflowテンプレートをJinja2テンプレート化してskillにまとめるというもの。これにより、スクラッチからdigdagのワークフローを作る必要がなく、パラメターをagentが設定すれば、tdx経由でworkflow push/runをして予測結果も可視化して分析できた。&lt;/p&gt;
&lt;p&gt;世の中の流れ的に、エージェントの制御を自前実装するよりもClaude Codeやcodexに渡したほうが速いみたいなのが来てる感じはするけれども、その裏側でどう動いているのかを考えて設計できるようになったのは何よりだった。&lt;/p&gt;
&lt;p&gt;あとは、メモリ周りの知識がまだ欠けているのもありそこをキャッチアップしつつ、合わせて
なんかも学んでいきたい。&lt;/p&gt;</description></item><item><title>Oh-my-zshを辞めた</title><link>https://chezo.uno/post/2026-03-20-oh-my-zsh%E3%82%92%E8%BE%9E%E3%82%81%E3%81%9F/</link><pubDate>Thu, 19 Mar 2026 18:56:00 -0700</pubDate><guid>https://chezo.uno/post/2026-03-20-oh-my-zsh%E3%82%92%E8%BE%9E%E3%82%81%E3%81%9F/</guid><description>&lt;p&gt;OMZは特に何も考えなくても楽に設定できたので使い続けていたが、GH Copilotなどでshell起動が重いと怒られるようになっていたところ、joker1007さんのこんな投稿を見かけた。&lt;/p&gt;
&lt;blockquote class="bluesky-embed" data-bluesky-uri="at://did:plc:fuqczowdfxvncehn5iu65hus/app.bsky.feed.post/3mfqjogaqsh2g" data-bluesky-cid="bafyreiak6ogb3it2f2axzrtbqc6yvub25v3eq2uqnf46lig2qjmckwolky"&gt;&lt;p lang="ja"&gt;#izumork01 でa_matsudaさんがRubyとAIでshellを作る話をしていたので、久しぶりにzshrcの盆栽やるかーと思い立ちついにoh-my-zshを完全に削除した。zshの起動が大分早くなったので結構影響あったなーと。後、補完がちょっと豪華になるcarapaceとか入れてみた。&lt;/p&gt;&amp;mdash; &lt;a href="https://bsky.app/profile/did:plc:fuqczowdfxvncehn5iu65hus?ref_src=embed"&gt;joker1007 (@joker1007.bsky.social)&lt;/a&gt; &lt;a href="https://bsky.app/profile/did:plc:fuqczowdfxvncehn5iu65hus/post/3mfqjogaqsh2g?ref_src=embed"&gt;2026-02-26T06:05:36.507Z&lt;/a&gt;&lt;/blockquote&gt;&lt;script async src="https://embed.bsky.app/static/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;ので、脱OMZをした。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
: ターミナルの見た目をカスタマイズ用&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
: 主にgitの補完&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;今のところ、WSL2の環境で動かしているけど悪くはない。Starship用にNerd Fontを入れないといけないのだが、JetBrains MonoのNerd Fontを
からダウンロードして使っている。&lt;/p&gt;
&lt;p&gt;starship.tomlもこんな感じにしている。&lt;/p&gt;
&lt;script src="https://gist.github.com/chezou/cf444515c282e825d298e38a57365f32.js?file=.config_starship.toml"&gt;&lt;/script&gt;</description></item><item><title>Pages CMSからSveltia CMSに移行した</title><link>https://chezo.uno/post/2026-03-19-pages-cms%E3%81%8B%E3%82%89sveltia-cms%E3%81%AB%E7%A7%BB%E8%A1%8C%E3%81%97%E3%81%9F/</link><pubDate>Thu, 19 Mar 2026 11:06:00 -0700</pubDate><guid>https://chezo.uno/post/2026-03-19-pages-cms%E3%81%8B%E3%82%89sveltia-cms%E3%81%AB%E7%A7%BB%E8%A1%8C%E3%81%97%E3%81%9F/</guid><description>&lt;p&gt;去年の夏に
のだけど、色々と気になる点が出てきたのでSveltia CMSに移行した。&lt;/p&gt;
&lt;h3 id="モチベーション"&gt;モチベーション&lt;/h3&gt;
&lt;p&gt;
にも書いたけど、Pages CMSの以下の問題が起因だった。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;タイムゾーンの扱いが雑（とにかく+00:00に落とす）だったのと、
けど修正する気があまりなさそうだったこと&lt;/li&gt;
&lt;li&gt;Hugobloxが推奨するコンテンツ(index.md)と画像が同じフォルダに置かれる構成を実現するのがかなり面倒くさい。結局手で画像をuploadしていた&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="やったこと"&gt;やったこと&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;認証のためにCloudflare WorkersにSveltia CMS Authをデプロイした&lt;/li&gt;
&lt;li&gt;Pages CMSの .pages.yml を static/admin/config.yml にClaudeが移植した&lt;/li&gt;
&lt;li&gt;static/admin/index.html をドキュメントからコピペした&lt;/li&gt;
&lt;li&gt;Pages CMSがdropしたタイムゾーンの問題をClaudeで復旧した&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一番の難所は、Sveltia CMS Authのデプロイだけど、元々、Cloudflare Pagesを使っていたのでやることは
のREADMEにあるデプロイボタンを押して手順に従うだけだった。簡単。Herokuを思い出す。&lt;/p&gt;
&lt;p&gt;詳しくは以下のPRを見てください。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="感想"&gt;感想&lt;/h3&gt;
&lt;p&gt;Pages CMSの小さい不満点が色々と解消されているのがとても良い。例えば、400以上のpostがあるときにPages CMSだと10秒以上開くのにかかるのだが、Sveltia CMSは2秒くらいで終わる。速い。&lt;/p&gt;
&lt;p&gt;また、M↓ボタンがあるので、これのおかげで最悪md形式で手動で直せるのがとても良い。今まではGitHubに行って手で修正していた。これは、mobileからの操作を考えたときに最悪の体験だったので、かなり助かる。&lt;/p&gt;
&lt;p&gt;後はきめ細やかさが色々と伝わってくる。この記事を書いているときに、GitHubの障害が発生していたのだが、それのwarningが出ている。Client sideで動いてるのにこれは感動。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="warning notification of GitHub issue on Sveltia CMS"
srcset="https://chezo.uno/post/2026-03-19-pages-cms%E3%81%8B%E3%82%89sveltia-cms%E3%81%AB%E7%A7%BB%E8%A1%8C%E3%81%97%E3%81%9F/pasted-image-1773944380663_hu_c123c458df1a915a.webp 320w, https://chezo.uno/post/2026-03-19-pages-cms%E3%81%8B%E3%82%89sveltia-cms%E3%81%AB%E7%A7%BB%E8%A1%8C%E3%81%97%E3%81%9F/pasted-image-1773944380663_hu_2cf8e649aa4a3c0c.webp 480w, https://chezo.uno/post/2026-03-19-pages-cms%E3%81%8B%E3%82%89sveltia-cms%E3%81%AB%E7%A7%BB%E8%A1%8C%E3%81%97%E3%81%9F/pasted-image-1773944380663_hu_196579ed8fd0c28c.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2026-03-19-pages-cms%E3%81%8B%E3%82%89sveltia-cms%E3%81%AB%E7%A7%BB%E8%A1%8C%E3%81%97%E3%81%9F/pasted-image-1773944380663_hu_c123c458df1a915a.webp"
width="760"
height="110"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;しかも、この画像はクリップボードからスムーズにアップロードすることができた。 Pages CMSではこの画像をスクリーンショットからアップロードしてコンテンツと同じフォルダに置くという営みが非常に難しかったから、感動もひとしおである。(この機能は
ばかりらしい。なんというスピード感!）&lt;/p&gt;
&lt;p&gt;また、作者のkyoshinoさんは日本語話者なので、我々CJKの民がハマるIMEによる入力を気にしてくださっているのが伝わる。変換するのに苦がないのって本当に大事。&lt;/p&gt;
&lt;p&gt;というわけで、しばらくは楽しく試してみようと思うが、大きな問題がない限りはこのままお世話になるだろう。&lt;/p&gt;</description></item><item><title>Principal と器用貧乏のあいだ</title><link>https://chezo.uno/post/2026-03-07-2026-03-08-between-principal-and-glue-work/</link><pubDate>Sat, 07 Mar 2026 20:36:31 -0800</pubDate><guid>https://chezo.uno/post/2026-03-07-2026-03-08-between-principal-and-glue-work/</guid><description>&lt;h2 id="はじめに"&gt;&lt;strong&gt;はじめに&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Staff+ Engineerは高機能雑用と思いながら仕事をしてきたが、思った以上に多様なこともあり、
では書いてきたけど、なかなかまとまって考えを整理することはできていなかった。&lt;/p&gt;
&lt;p&gt;そして、自分の与えたインパクトをレジュメに上手く表現できないことにもしばらく悩んでいた。これは、思ったよりも間に落ちたボールを拾うことが求められており、それをやって価値を出すことが思った以上に重要なんだけど、レジュメではキラキラした成果を求められるからである。&lt;/p&gt;
&lt;p&gt;（キラキラした成果＝
とかね）&lt;/p&gt;
&lt;p&gt;自分の立ち位置はずっと、「顧客に価値のある製品を届けるために何でもやる」である。その何でもの幅は人によって違うのだと思う。なので、取っ掛かりとして
でおなじみのWill Larsonの
と比べることで紐解いていこう。&lt;/p&gt;
&lt;h2 id="4つのstaff-archetypes"&gt;&lt;strong&gt;4つのStaff Archetypes&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Will Larsonの4つのStaff Archetypeをおさらいとしてまとめてみる（Gemini 3 Thinking modeでブログ記事から要約）。&lt;/p&gt;
&lt;h3 id="1-tech-lead"&gt;&lt;strong&gt;1. Tech Lead&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;特定のチーム（あるいは数つのチーム）に深く関わり、技術的な方向性と実行をリードする役割。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;特徴&lt;/strong&gt;: チームの技術的な意思決定に責任を持ち、複雑なタスクの具体化やブロックの解消を行う。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;主な活動&lt;/strong&gt;: 実装よりも、チーム全体の技術的なビジョン策定やメンバーの育成、プロダクトマネージャーとの調整に比重を置く。最も一般的で、シニアエンジニアからの延長線上でなりやすい形態である。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2-architect"&gt;&lt;strong&gt;2. Architect&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;特定の技術ドメイン（API設計、フロントエンド、インフラ戦略など）において、組織横断的な成功と品質に責任を持つ役割。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;特徴&lt;/strong&gt;: 複数のチームにまたがる技術戦略を立案し、長期的な技術的整合性を保つ。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;主な活動&lt;/strong&gt;: ビジネスニーズと技術制約を深く理解し、組織全体のアーキテクチャを導く。大規模な組織や、負債が蓄積した複雑なシステムを持つ企業で必要とされる。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="3-solver"&gt;&lt;strong&gt;3. Solver&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;組織にとって重要かつ困難な技術課題を解決するために、特定のチームに留まらず動く「火消し」のような役割。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;特徴&lt;/strong&gt;: 実行リスクが高い問題や、解決策が見えない複雑な課題に投入される。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;主な活動&lt;/strong&gt;: リーダーシップ層からの要請に基づき、問題が発生している現場へ赴き、解決次第次の課題へと移る。組織レベルの調整よりも、純粋な技術的突破力が求められる。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="4-right-hand"&gt;&lt;strong&gt;4. Right Hand&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;CTOやVPといった経営幹部の「右腕」として、その権限を借りて組織の複雑な問題を解決する役割。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;特徴&lt;/strong&gt;: 技術だけでなく、ビジネス、人、プロセスが交差する領域で、経営陣の意図を組織に浸透させる。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;主な活動&lt;/strong&gt;: 幹部の会議に出席し、組織的なボトルネックの解消や戦略の実行を支援する。エンジニアが数百人規模になるような巨大組織で見られる稀な形態である。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;とはいえ、Will Larsonはこうも言っている（
より引用。naniで翻訳）。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;この分類は網羅性よりも実用性を重視していますが、これまでのところ、話を聞いたスタッフプラスエンジニアは全員、このいずれかのカテゴリに当てはめることができました。もちろん、分類しやすい人もいれば、そうでない人もいますが。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;どうにも自分は「そうでもない人」なのではないかと思ってこの記事を書き始めた。&lt;/p&gt;
&lt;h2 id="自分の仕事をarchetypeで分解する"&gt;&lt;strong&gt;自分の仕事をArchetypeで分解する&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;自分が今の職場でPrincipal Software Engineer、あるいはTech Leadとしてどのような立ち位置にいたかを簡単に説明しよう。&lt;/p&gt;
&lt;p&gt;Tech Leadという正式なタイトルはなく、会社のMLプロダクト開発をエンジニアリング的に全部を引っ張っていくエンジニアの総責任者的な立場として動いていた。組織構造としては、1年ほど前にCTO兼VPoEによって整理がなされ、複数のエンジニアリングチームを統括するSr Engineering Director直下のレポートラインとして、Principalである自分とMLチームのEngineering Managerがピアとして存在する形になった。いわゆるTwo-in-a-boxなどと呼ばれるスタイルである。&lt;/p&gt;
&lt;p&gt;ここ3年くらいでやってきた主なことをArchetypeで分解してみよう。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【Tech Lead / Architectとして】&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;ML学習・予測基盤（Python, FastAPI, AWS Batch）のグランドデザイン設計からPoC、スケール検証、リリースまで一貫して主導し、2人で5ヶ月でリリースした&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;RFMの予測処理をスケーラブルにして最大100倍高速化し10億ユーザーの処理をサポートした&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;推薦のMLソリューションのモデルのPoC実装をし、スケーラブルなアルゴリズム選定を行った&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【Right Handとして】&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;CTOやプロダクトリーダーシップに直接エンジニアリングロードマップを説明し、スポンサーを獲得しにいった&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1年かけてML基盤刷新のスポンサーシップを獲得し、リリースまでこぎつけた&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;プロダクトロードマップのドラフトも作成し、EngだけでなくProduct ManagerやVPoPへのプロダクトの方向性を提案した&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;【Solverとして】&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;PSチームから「お客さんにこの機能が今すぐ必要」とエスカレーションが来た際、遊撃隊として飛び込み、1〜2週間で本番リリースして火消しを行った&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;実装していたメンバーが急遽いなくなったプロジェクトの未完のコードを、プロダクショングレードになるように書き直した&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;書いてて気づいたのだが、これ以外にも以下のようなことに気をつけていた。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;メンバーのモチベーションを考慮したタスクアサインとキャリアを見据えたプロジェクト計画（例：adminコンソール作りなど退屈な作業は自分が巻き取り、チャレンジングなタスクをメンバーに渡す）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;UXデザイナーにデータモデルの複雑さを伝えるためのドラフトUIデザイン案の作成&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;JDの抜本的な書き直しと面接のgatekeeper&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;EMへの1:1での間接的な評価インプット&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ようするに、やっていたことは
（英語圏だと
）なんだけど、注力するところとしてはプロジェクトが失敗しないように＆成功するように必要な隙間に落ちたボールは重要度に応じて全力で拾いに行っていた。それにより、自分の職責ってなんだっけな、などと迷うことも多かったが、世のStaff Engineer本を読んでいると多かれ少なかれ皆やっていることだと思い、歯を食いしばってアンブロックしていた。&lt;/p&gt;
&lt;h2 id="なぜstaffのスコープは広がるのか"&gt;&lt;strong&gt;なぜStaff+のスコープは広がるのか&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;一般的には、Two-in-a-boxの形態は役割分担の幅はあれどよく知られている。例えば、
で Charity MajorsはEMとTLの共同について記している（naniで翻訳）。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;技術系エンジニアのリーダーは、需要が供給をはるかに上回るほど圧倒的に不足しています。最も一般的な解決策は、かつてエンジニアだったものの実務からは長く離れており、今はピープルマネージャーとして概念や専門用語を理解している人材と、現役のテックリードを組ませて、協同でチームを率いさせることです。この少しばかり扱いにくいやり方ですが、多くの場合、かなりうまくいっています。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;また、
では全チームにEMがいて、多くのプロジェクトではTLを別途置きEMと協業する、あるいはTLがいない場合はTech Lead Managerとして両方を兼務する。&lt;/p&gt;
&lt;p&gt;彼らの場合は、EMとTLの役割分担は以下の通りである（naniで翻訳）&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;エンジニアリングマネージャーは、主にピープルマネジメント（人員配置、コーチング、成長支援）と組織戦略（組織のリスク、業務効率、チーム憲章、成果）に注力します。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;テクニカルリードは、主にテクニカルリーダーシップ（技術的な実行、技術戦略、技術文化、ロードマップの実現可能性と実行）に注力します。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;このようにして、様々な領域に注意を払えるように認知負荷を分担していくのがTwo-in-a-boxのメリットである。&lt;/p&gt;
&lt;p&gt;だが、MLのような技術的に深い知識を求められるドメインでは、EMとTLの技術的な深さにギャップがある場合、どうしても精度の高い技術的意思決定ができなくなりがちである。その結果、「分担」から広い範囲でTLへの「委譲」になっていき、TL側のスコープは広がってしまう。例えば僕の場合は、タスクアサインやリソース配分までTLとして決定しており、AsanaのEMの役割のいくらかを委譲されていた。&lt;/p&gt;
&lt;p&gt;自分の場合は、Two-in-a-boxの体制は思った以上にうまく行ったと感じており、特にお互いの棲み分けがきっちりでき領分が決まってしまった後は、互いに自走するだけであった。基本路線としてPeople ManagementはEM、Technical LeadershipはTLといったように分担すること、共通のSr Engineering Directorにピアとしてレポートすることで、TL側のスコープの広がり自体は組織的には受け入れられる体制になっていた。この体制になる前は、結構お互いの仕事を奪い合うような形の衝突がちょこちょこ起きていたため、組織構造をうまく作るというのは大事なのだと実感した。&lt;/p&gt;
&lt;p&gt;結局のところ、EMとTLがお互い信頼しあい、自律的に仕事を進められる体制になっていれば、多少ボーダーがどちらに寄っているかは些細な問題である。&lt;/p&gt;
&lt;h2 id="自分のキャリアとしての振り返りあるいは高機能雑用の再定義"&gt;&lt;strong&gt;自分のキャリアとしての振り返り、あるいは高機能雑用の再定義&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;ここまで色々と文章を書いてきたが、自分のやってきた仕事や広げてきたスコープを改めてArchetypeを元に整理すると&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Tech Lead/Architectとしての技術的意思決定とデリバリー&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Right Handとしてのエグゼクティブへの技術戦略の提案と承認獲得&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Solverとしてのクリティカルな問題解決力&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ときにはStaff+以上の範囲（PdM, PjM, UXデザイナー, EMの一部）でもやるときはやる&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;となる。&lt;/p&gt;
&lt;p&gt;Staff+としての高機能雑用業は、ただの雑用ではなく、「組織に必要な複数のStaff+機能を一人で担っている」と言えるのである。&lt;/p&gt;
&lt;p&gt;Will Larsonもちょっとびっくりするかもしれない。&lt;/p&gt;
&lt;p&gt;でもまあ、こういう動きができる人はスタートアップ色が色濃い企業では重宝されるとは思う。&lt;/p&gt;
&lt;h2 id="同じ悩みを持つ人へ"&gt;&lt;strong&gt;同じ悩みを持つ人へ&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Staff+として働いているときに高機能雑用として何がコアなのかを見失いそうになった場合、まずはArchetypeを振り返ってみて自分が何を成しているのかを言語化してみるのをおすすめする。&lt;/p&gt;
&lt;p&gt;AI時代には言語化をすることで深堀りができるようになるため、AIと壁打ちしてでも言語化してみるとよいだろう。自分自身もshiumachiさんにAIと対話して内省すると、より自分への理解が深まり伸ばす方向が見つかる、という旨のことを教えてもらいやってみているが、（半端な仕事より）集中が求められるため疲れはするが得るものも大きい。&lt;/p&gt;
&lt;p&gt;後は、自分自身が正気を保つためには、スタッフエンジニアに関する書籍の事例がとても心の支えになった。
も
どちらも手元においておくとよいだろう。自分がつらい経験をした後に読むと、スルメのように味わい深い読書体験ができる。&lt;/p&gt;
&lt;p&gt;高機能雑用は、Staff+として活躍していることの表れなのかもしれない。ただし、やるべきことのビジネスインパクトは考えて優先順位付けをすることは忘れないでほしい。&lt;/p&gt;</description></item><item><title>「ちょっとしたことでうまくいく 発達障害の人が上手に働くための本」を読んだ</title><link>https://chezo.uno/post/2025-12-22-2025-12-22-neuro-diversity-book/</link><pubDate>Mon, 22 Dec 2025 18:09:00 -0800</pubDate><guid>https://chezo.uno/post/2025-12-22-2025-12-22-neuro-diversity-book/</guid><description>&lt;p&gt;家族に勧められて冬休みの課題図書よろしくこの本を読んだが、色々と良かった。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;この本は、ADD・ADHD・ASD・LDなどの特性を持った当事者が、どのような特徴的な振る舞いをするのか、それらに対してどのようなワークアラウンドがあるのかを書いた本である。診断されたわけではないが、家族にこういった特性があるというメンバーがいることもあり読んだ。シリーズとしていくつか本が出ているが、この本は働く上でのよくある話とそれの対処法を書いたものになる。&lt;/p&gt;
&lt;p&gt;本書を読んで一番学びが大きかったのが、「時間感覚が乏しい」「強い興味が出ることしかモチベーションがわかなくてできない」という点である。&lt;/p&gt;
&lt;p&gt;前者は、ADHDの傾向として、追い詰められて締め切り直前にわーっとやってしまうというパターンが多い。これは、時間の感覚が薄く、計画を立てるのが非常に苦手、ということから現れる。なので、先延ばしにしてしまいがちである。
のようなカウントダウン式の予定管理アプリを活用したり、締め切りを公言するのが良いという話だった。また、細かいゴールにタスクを分割するという方法も提示されていた。これに関連して、ASDは優先度の判断が苦手、という話も書かれていた。何が最優先なのかは文脈とともに判断されるため、重要性と緊急性とを書き出した判断しようという話があった。&lt;/p&gt;
&lt;p&gt;ADHD傾向が強いと後者は興味がないタスクは完遂できないという振る舞いに現れる。複数のタスクを用意しておいて、飽きたら違うことをやるなどをして対処をするのが良いと書かれていた。&lt;/p&gt;
&lt;p&gt;このように、具体的なあるあるとそれに対してどのように対処するのかを、アプリやソフトウェアの力も借りつつ具体的なワークアラウンドが提案されているため、当事者の人もそうだがボーダーの人が読んでも「こういう振る舞い自分もちょいちょいするけど、こういう対処ができるのか」という学びがある。&lt;/p&gt;
&lt;p&gt;こうしたスペシャルニーズが必要な人に対しては、そうでない人に対して言われている一般的な方法（タスク管理はこうしろ、など）は曖昧性が高く通じないことが多いため、当事者の人の具体的な工夫を知ることで、引き出しを増やせるおくのはとても良かった。&lt;/p&gt;</description></item><item><title>2025年を振り返って</title><link>https://chezo.uno/post/2025-12-20-2025-12-20-year-in-review/</link><pubDate>Sat, 20 Dec 2025 21:30:00 -0800</pubDate><guid>https://chezo.uno/post/2025-12-20-2025-12-20-year-in-review/</guid><description>&lt;p&gt;2025年は記憶が薄いので完全に忘れる前に記録しておこうと思う。&lt;/p&gt;
&lt;h2 id="プライベート"&gt;プライベート&lt;/h2&gt;
&lt;p&gt;今年は引っ越しをしたのでめっちゃバタバタした。それに伴いDIYで家の修繕をしまくった。家の3割くらいの壁を塗りなおしたり、家じゅうの天井のライトを交換しまくったり。後残りの修繕個所は、
と呼ばれるセントラルヒーティングの暖房の交換と乾燥機の排気管の交換、洗面所のボウルと天板の交換くらいか。まだまだ道は長い。&lt;/p&gt;
&lt;p&gt;夏休みにはオタワにも行った。オタワはケベック州と川向なので、フランスの文化の色が濃い。パンやケーキに対する執念が違うため、どこのお店のケーキも程よい甘さでおいしかった。やはり、激アマケーキはアメリカの文化なんだなあというのを再認識した。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2025-12-20-2025-12-20-year-in-review/IMG_2708_hu_21a7dcffbe64b2b4.webp 320w, https://chezo.uno/post/2025-12-20-2025-12-20-year-in-review/IMG_2708_hu_3bc805499b214db5.webp 480w, https://chezo.uno/post/2025-12-20-2025-12-20-year-in-review/IMG_2708_hu_83f4cad81fd77b63.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2025-12-20-2025-12-20-year-in-review/IMG_2708_hu_21a7dcffbe64b2b4.webp"
width="760"
height="570"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;オタワに行ったついでに、オオカミがガラス張りのリビングから見えるParc Omegaにも行った。夜通し遠吠えが聞こえるなど、動物好きの人にはたまらない環境だろう。ハイシーズンはめっちゃ高いけど、一泊だけするのでも楽しいと思う。朝ごはんもつけるとケベックのおいしいパンなどが楽しめるのでお勧め。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2025-12-20-2025-12-20-year-in-review/featured_hu_9d70154617dcb8a5.webp 320w, https://chezo.uno/post/2025-12-20-2025-12-20-year-in-review/featured_hu_4a2ef9dec1b3e498.webp 480w, https://chezo.uno/post/2025-12-20-2025-12-20-year-in-review/featured_hu_36922044f0e1b73d.webp 570w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2025-12-20-2025-12-20-year-in-review/featured_hu_9d70154617dcb8a5.webp"
width="570"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;今年は完全にスノーボードに転向をして黙々と練習をしている。まだまだ初心者コースもまともに滑れないけど、来年こそは中級コースが滑れるようになりたい。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2025-12-20-2025-12-20-year-in-review/IMG_3077_hu_9ec5a5e03e0ce867.webp 320w, https://chezo.uno/post/2025-12-20-2025-12-20-year-in-review/IMG_3077_hu_59abbd3af837075d.webp 480w, https://chezo.uno/post/2025-12-20-2025-12-20-year-in-review/IMG_3077_hu_3e340e990cd15bac.webp 570w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2025-12-20-2025-12-20-year-in-review/IMG_3077_hu_9ec5a5e03e0ce867.webp"
width="570"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id="仕事"&gt;仕事&lt;/h2&gt;
&lt;p&gt;ここ2年くらいは、Tech Leadとして機械学習のプロダクトを作るためのロードマップ策定からチーム作り、果てはCTOなどのエグゼクティブへのスポンサー継続のための活動などずっと続けている。&lt;/p&gt;
&lt;p&gt;ようやく今年は新しいML基盤を本番投入できたし、幾つかのMLソリューションを顧客提供ができた。とはいっても自分はメインでコードを書くことは基本的にはしておらず、チームメンバーに委譲をするというのをこの1年半弱は辛抱強くやっている。チームビルディングも仕事のうちの一つと思って、モチベーションの維持ができるタスクのアサインや、心理的なブロッカーを取り除いたりなんかもやっている。&lt;/p&gt;
&lt;p&gt;ML仕事をしているのに全社トップダウンでスクラムが導入されることになったので、
した。未だに全くうまくいってないので、皆がどうやっているのかが気になっている。&lt;/p&gt;
&lt;p&gt;年の途中でエンジニアリングディレクターが代わったりして大変だったけど、今はなんとかやっている。あと少しでメンバーが一通り揃ってやりたいことができるようになるのだが&amp;hellip;。&lt;/p&gt;
&lt;p&gt;Agentic coding全盛なため、ミーティングやランダムな割り込みだらけだったところでもコードが生成できるようになったのは大きな変化だったが、
たり、
といろいろ歯を食いしばった一年でもあった。&lt;/p&gt;
&lt;h2 id="oss活動"&gt;OSS活動&lt;/h2&gt;
&lt;p&gt;今年は仕事で使っているOSSのPRを二個作ったのと、必要に迫られてforkしてCUDA 12.x対応したりしていた。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;uvxが便利そうなので小物社内ツールを公開したりもした。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;RのパッケージのリリースもLLMの助けを借りてできるようになったのは良かった&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="買ってよかったもの"&gt;買ってよかったもの&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;温度設定ができる電気ケトル。保温機能付き。こちらで使っていた安いケトルとは比べ物にならないくらい速くお湯も沸くし、温度設定ができるのは日本のポット以来なので助かる。難点はカナダで買うと温度がファーレンハイトで書かれていること。しかし、日本の商品は60, 70, 80, 90, 100と書いてあって、そうだよね、、、という気持ちになる。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;引っ越してから6時間以上停電することが2回、3時間程度停電することもちらほらあって、今年は外れ年だなと思いながらUPSを買い足したのだが、無線ルーターとプロバイダのモデムが2時間持ったのはとても助かった。ついでにAnkerの大きいバッテリーも買ってUSB PDから5V2Aのケーブルに変換できるやつも買ったので、次回はトータル8時間くらいはインターネットができそう。&lt;/p&gt;
&lt;h2 id="来年に向けて"&gt;来年に向けて&lt;/h2&gt;
&lt;p&gt;今年は、アニメを見たりB&amp;rsquo;zのライブ動画を無限に見て正気を保とうとしていた。ゲームをやる気力がわかないので、もうすこし運動を増やして体力を増やしていきたい。&lt;/p&gt;</description></item><item><title>AI時代のPrincipal Engineer</title><link>https://chezo.uno/post/2025-12-09-2025-12-09-principal-engineer-in-the-gene-of-ai/</link><pubDate>Tue, 09 Dec 2025 22:30:00 -0800</pubDate><guid>https://chezo.uno/post/2025-12-09-2025-12-09-principal-engineer-in-the-gene-of-ai/</guid><description>&lt;p&gt;AmazonのPrincipal Applied ScientistのEugene Yanさんの記事に触発されたので書いてみる。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;AI時代にPrincipal EngineerがAIとどう向き合い、どう生き残るかを書こうと思う。&lt;/p&gt;
&lt;p&gt;なお、上記の記事にもある通り &amp;ldquo;&lt;strong&gt;1. Different principals will have different flavors.&amp;rdquo;&lt;/strong&gt; なので、Principalと一言で言っても企業・チームによって千差万別であることに注意していただきたい。&lt;/p&gt;
&lt;h2 id="1-aiは-frenemy"&gt;1. AIは &amp;ldquo;frenemy&amp;rdquo;&lt;/h2&gt;
&lt;p&gt;2025年のソフトウェアエンジニアリングにおいて、AIの存在を無視することは難しくなってきている。特にコード生成においては、AIを使わないでコードを書くことが企業で働くうえで許されなくなりつつあるように感じている。企業によっては、AI生成されたコードの行数や使用token数をKPIとしてトラックしているという話も聞く。また、AI Native企業になろうと各社躍起である。&lt;/p&gt;
&lt;p&gt;コードを自分で書いていく上で生成AIを使ったagentic codingは非常に助けになる。結構まとまった量のコードが生成されるので、生成しては捨て、という試行錯誤が速くなる、という話もある。また、隙間時間を使ったコーディングがしやすくなったので、ミーティングの合間にコードを生成する、なんてことも前より格段にしやすくなった。&lt;/p&gt;
&lt;p&gt;ただしこれは、ICとして実装することだけに集中するならば、という前書きがつく。「何か」を生成するスピードは速いのだ。&lt;/p&gt;
&lt;p&gt;なんだけど、過去に
でも書いたように、コードレビューが業務の大きな割合を占めるであろうPrincipalにとっては、自分の背中を打ち抜く何かに代わる。自分ひとりだったり、似たような技術レベルの集団においてagentic codingはかなり有利に働くだろう。が、それはコードをちゃんと読めてレビューができてというのを暗黙のうちに仮定していることになる。このレベル感やコードの質に関する期待値がメンバー間ずれると、 &amp;ldquo;it works&amp;rdquo; と &amp;ldquo;but it&amp;rsquo;s broken&amp;quot;の間でのせめぎあいが発生する。&lt;/p&gt;
&lt;p&gt;言い換えると、AIを使う人間の特性が増幅される傾向にあると言ってもよいかもしれない。人間が手で書いていたころは、およそ同じ方向を向いていたように感じていても、AIが人の営みを加速させずれを増幅させると、コントロールしてすり合わせるのがかなり難しくなる。&lt;/p&gt;
&lt;p&gt;そういう意味では、AIは friend でもあるし enemy となりえるのである。&lt;/p&gt;
&lt;h2 id="2-必要なのは英語力コミュ力次に技術力とキャッチアップできる力"&gt;2. 必要なのは英語力、コミュ力。次に技術力とキャッチアップできる力&lt;/h2&gt;
&lt;p&gt;英語力と言っているのは、筆者がカナダに住みアメリカ企業で働いているからであるが、言語化能力と言い換えてもいいかもしれない。&lt;/p&gt;
&lt;p&gt;コードを書く作業がagentに委譲されると、次第に業務の割合として増えてくるのが、部署間調整だったりメンバーのモチベーションマネジメントだったりといったソフトスキル側になってくる。日々誰かを説得し、何をするべきか、これはやるべきことなのかを言語で表現し、ありとあらゆることをunblockするのが仕事になる。&lt;/p&gt;
&lt;p&gt;例えば、一緒に働いているプロダクトマネージャーに色々と決めてもらいたい、そうしたときに技術的なお膳立てをする必要があるだろう。あるいは、コードレビューをしていて設計的な問題を指摘したときに、自転車小屋の議論かと相手がやる気を失ってるのが伝わってくることもあるだろう。&lt;/p&gt;
&lt;p&gt;そうしたときに、テキストコミュニケーションならば、AIに英語の下書きをしてよい表現に改善してもらうということはできる。&lt;/p&gt;
&lt;p&gt;だが、生成された英語のレビューが迅速に自分でできないと、間違いや怪しい表現などに気づくことができないのである。人間がボトルネックになってしまう。素早く行動に移すためにも、英語力を上げより意図した表現をすぐに出せるようになる必要がある。そして、口頭での会話ではAIなんかに聞いてる暇なんてない。&lt;/p&gt;
&lt;p&gt;コミュニケーション能力の重要性も上がっている。メンバーが非常にフラストレーションを感じているような反応があったときに、なぜそのような反応になったのかを考え想像することが、モチベーションを管理する上でも非常に重要である。例えば、おなかが痛いのかもしれないし、あるいは家族とけんかをしたのかもしれない。あるいは、子供が学校でトラブルに巻き込まれて、担任をすっとばして校長果ては教育委員会にエスカレーションをしているのかもしれない。&lt;/p&gt;
&lt;p&gt;なぜ、このようなことを言っているのか、その真の理由は何なのか。そう、「筆者気持ちを答えなさい」問題である。これを考える作業はPrincipalになって格段に増えたし、その検討をAIを使ってサポートしてもらうことはできても、結局人間の機微は自分で考えないといけないのである。&lt;/p&gt;
&lt;p&gt;何度となく、AIの遺電子の「
」のようにAIがコミュニケーションの文面を全部代わりに作ってくれるようになればいいのに、と思ったことか。&lt;/p&gt;
&lt;p&gt;なお、Principal Engineerになっているのであれば、技術力的には何かしらの専門領域に一家言ある人だと思うので、AIを取り入れて新しいことをキャッチアップし続ける力さえあれば大丈夫だと思う。無論、AIのいうことだけを真に受けていてはハルシネーションの海に溺れてしまうので、論文や書籍、オープンソースのコードを読んだり書いたりするという素振りはとても大事である。&lt;/p&gt;
&lt;p&gt;キャッチアップに対するスピード感は以前よりも求められる速度がぐっと上がっている。&lt;/p&gt;
&lt;h2 id="3-aiを自分で使い倒しai-slop-detectorを身に着ける"&gt;3. AIを自分で使い倒し、AI slop detectorを身に着ける&lt;/h2&gt;
&lt;p&gt;おそらくChatGPTやGeminiなどを使って質問したり議論をするということは、日常的にやっていることだと思う。それに加えて、Claude Codeなどのcoding agentを使ったコード生成もやって日々の業務のコードを書いたり、スクリプトを作ったりなどもしているだろう。&lt;/p&gt;
&lt;p&gt;AIを使い倒して業務活用するのは、今後の生き残りのためにもどんどんした方がいい。そして使い倒しておくと、AIが生成した
を見分ける嗅覚が備わってくる。ここが非常に重要で、ドキュメントやスライド、コードもレビューするときにこの嗅覚があると「あ、これは真面目に読まなくていいな」など早期にフィードバックをすることができる。&lt;/p&gt;
&lt;p&gt;人間の時間は有限であり、ノーレビューでAI生成物を渡されたら突き返すべきである。&lt;/p&gt;
&lt;h2 id="4-principalは孤独aiは良い壁打ち相手でも気をつけろ"&gt;4. Principalは孤独、AIは良い壁打ち相手。でも気をつけろ&lt;/h2&gt;
&lt;p&gt;アメリカ企業ではネガティブフィードバックや改善の提案をするときにお作法がある。最初の9割誉めて最後の1文2文で重要な改善事項を提示する、といった具合だ。あるいは、英語として主語を無生物主語にして遠回しに言う、みたいなやり方もある。&lt;/p&gt;
&lt;p&gt;英語が第一言語ではない筆者にとってこのお作法は、非常にしんどい。文化の違いも大きいし、シュガーコーティングしすぎると相手に伝わらないこともまあまあある。&lt;/p&gt;
&lt;p&gt;そこで活躍するのがGeminiなんかのAIだ。Gemini 3 Proなんかだと、かなりコーチングめいた事も言ってくれ、こういう流れで整理をした方がいいと提案してくれるし、何なら「うまくいきますように」なんてお祈りまでしてくれる。&lt;/p&gt;
&lt;p&gt;でもね、今のLLMはしょせん
なので、人間の都合の良い出力ばかり出しがちなのを忘れてはいけない。どこまで行っても、十分なコンテキストをLLMに渡すことは困難なわけで、再利用できる「前回までのあらすじ」みたいなのを用意して工夫はしているけど、会話を重ねると過去のコンテキストを忘却してしまうものである。&lt;/p&gt;
&lt;p&gt;あと、人間にすっと歩み寄った物言いを言われ続けていると、解消しないといけない衝突が発生したときにLLMが一緒になって「相手が悪いです！その理由を徹底解説します！」なんて言ってくる。&lt;/p&gt;
&lt;p&gt;LLMがいうことは、ある種のフィルターバブルみたいなものである、そのバイアスを補正するのは人間なのである、という強い覚悟が必要である。&lt;/p&gt;
&lt;h2 id="5-aiは996に追い込もうとしてくる"&gt;5. AIは996に追い込もうとしてくる&lt;/h2&gt;
&lt;p&gt;coding agentのおかげでコードを書き始めるまでの静止摩擦係数が激減した。これはミーティングなどで忙しいPrincipalにはありがたい側面ではある。このおかげで何が起こるかと言うと、ちょっと晩御飯を食べる前にプロンプトでコードを生成開始する。すると、ご飯を食べてる時にも結果が気になってソワソワし始めて、見に行ってしまう。通知が出ている。次の指示を出す。&lt;/p&gt;
&lt;p&gt;別の同僚は、飲み会に移動する前のエレベータ待ちの時にプロンプトで指示を出していた。&lt;/p&gt;
&lt;p&gt;コードを書き始める静止摩擦係数がほぼ0になったおかげで、AIが深夜まで残業をするのを誘発するのである。&lt;/p&gt;
&lt;p&gt;Werner Vogelsが言うように、(レビューのない)
、ある種の依存性があるのだ。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;* *&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Staff+と呼ばれるラダーになってくると、皆が皆やっていることがちょっとずつ違うため道を見失いがちである。他の人の本やブログなどの言葉を読むことで、自分が正気を保てて来たところはあるので、この文章が誰かの助けになればうれしい。&lt;/p&gt;
&lt;p&gt;もちろん、何か他にいい話があれば何かしらの方法で教えてほしい。&lt;/p&gt;</description></item><item><title>Principal Engineerが読む「スタッフエンジニアの道」</title><link>https://chezo.uno/post/2025-11-25-staff-engineering-path/</link><pubDate>Tue, 25 Nov 2025 22:32:00 -0800</pubDate><guid>https://chezo.uno/post/2025-11-25-staff-engineering-path/</guid><description>&lt;p&gt;オライリーから出ている「スタッフエンジニアの道」を
を通じてご恵贈いただき、第1部と3部を読み終えてしずかなインターネットに書評を書いたのがおよそ一年前、そこからさらに1年かけて第2部を読み終えたので感想である。1年前に読んだ文は最後の方に貼っておく。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;私は、Principal Engineerとしてコードを書くハンズオンだけではない数々の仕事をこなしてきている。自分はMLを使った製品開発のTech Leadとして、チームメンバーを育てながらロードマップを切り開き、またリーダーシップからのプロジェクトの投資を継続してもらうようにスポンサーになってもらう活動を続けてきている。&lt;/p&gt;
&lt;p&gt;この本では、先達たちの「こうしてきた」エピソードや実例、どのような考え方をもとに動くべきかといった試行錯誤を書き連ねた本だ。どのように考えて自分にとってそして会社にとっても重要なプロジェクトを選び、スポンサーを獲得し、メンバーが助けを求めていれば西へ東へ奔走し、求めていなくても助けに行き、プロジェクトが進むためにあらゆることをする、そういったStaff+と呼ばれるエンジニアに向けての、実例集である。&lt;/p&gt;
&lt;p&gt;なので、体系立てようとしても厳しい。なんだけど、ふた昔前のEngineering Managerが何をするのかわからん状態のように、Staff+ Engineerが何を期待されているのかわからん問題というのがあるので仕方がない。これは、会社やそのステージによって、Staff+に求められる役割が全然違うのである。本書を読んでいると、「Staff+はコードは書いてもいいがクリティカルパスはお前がやるな」と書いてある。ちゃんとほかの人に委譲できる体制を作らないといけないのである。&lt;/p&gt;
&lt;p&gt;この本の見どころは、第2部がプロジェクトをどう進めるか、そして進まないときはどうするか、みたいなことが書いてある。これが良いのである。ただし、胃が痛くなるので心が健康なときしか読めない。なので、読み進めるのに1年かかった。&lt;/p&gt;
&lt;p&gt;また、チームメンバーやProduct Leadershipが総入れ替えみたいな出来事が数回ほど起きる中でのチームメンバーの育成はなかなかヒリヒリする仕事であった。そんな時にもこの本は役に立つ。どうやって、チームメンバーに適切な仕事を与えたりモチベーションアップをしたりするのか、そういうことも書いてある。&lt;/p&gt;
&lt;p&gt;高機能雑用になりがちなStaff+が、心のよりどころとして使える本である。プロダクトマネージャーが「どうしてあなたは一人月分コードを書かないのですか？」と聞いてきたときに、ちゃんと反論できるようになるわけである。「オライリーの本にも書いてあったけどね、誰かが戦略的な意思決定を進めていかないといけないんです。で、コードも片手間に書いているけど、私がブロッカーになってはいけない、そういうことも書いてあるんです。」天下のオライリー印を使うのだ。&lt;/p&gt;
&lt;p&gt;私は社内のPrincipalの中でも、比較的戦略的・政治的な振る舞いが求められることが多く、今はSr Engineering Directorの助けを借りたり、外部からの玉を打ち返せるような支援をするみたいなことをしている。 &lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; そういう時に、自分と同じようなことをしている人が少ないこともあり、どうしても孤独になりがちでGeminiと無限に壁打ちをするみたいなことが発生する。しかし、書籍は（ある程度盛っているかもしれないが）生きた人の爪痕であり、大変に支えになるのである。&lt;/p&gt;
&lt;p&gt;そんな迷えるソフトウェア業界のStaff+ Engineerにお勧めの書籍である。&lt;/p&gt;
&lt;p&gt;最後に、過去にしずかなインターネットに書いた書評を貼っておく。興味がある方は読んでみてほしい。&lt;/p&gt;
&lt;p&gt;終わり&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
からご恵贈いただいて、前々から積んでいた「スタッフエンジニアの道」を冬休みの課題図書よろしく読み進めている。&lt;/p&gt;
&lt;p&gt;本当は、きちんと読み終わってから感想を自分のブログにでも書こうと思っていたのだが、読んでいるうちに色々と思うところが増えてきたので、dumpしておこうと思う。&lt;/p&gt;
&lt;p&gt;この本は、いわゆる&amp;quot;Staff+ Engineer&amp;quot;と呼ばれるIndividual Contributor (IC) の上級職にまつわる話である。順番は色々あれど、Junior, Intermediate, Seniorの上に来るものという位置づけであると本には書いてある。&lt;/p&gt;
&lt;p&gt;なお、Staff+がSeniorより「偉い」というわけではないのは、以下の本書の脚注で書かれている筆者の好きなSeniorの定義からもわかる。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;「昇進するのを止め、現在の生産性、能力、アウトプットのレベルをキャリアの残りの期間継続しても後悔のないレベル」&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;ただ、Staff+と呼ばれるこのポジションに関する書籍がいろいろと出てきているのは理由がある。この本をいただくきっかけになったriywoさん、
とのご飯のきっかけにもなったのだが、Staff Engineer以降になると会社によっても何をやってるかばらばらになるし、道を見失いがちになるのである。&lt;/p&gt;
&lt;p&gt;かくいう自分も、春(注: 執筆当初2024年)にPrincipal Software Engineerにpromotionしてからというものの、やっていることは変わらないと思いきや、プレッシャーは増えて責任範囲も順調に拡大してきて、道を迷いそうになりながらも踏みとどまっているのが現状である。&lt;/p&gt;
&lt;p&gt;Staff+が何をするのかというといろいろと書いてあるのだが、「大局的な思考を持ち、大きなプロジェクトを実行し、よい影響を与えるようなことをする」というのがざっくり良いまとめであると感じる。そのため、&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;戦略を立てたり、プロジェクトを立て直したり、標準を設定したりしている時間には、コーディングや新しいシステムのアーキテクチャを設計したりといった、ソフトウェアエンジニアとして評価されるような多くの仕事はできません。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;という事実にも直面する。自分の与えられる影響を大きくするには、コードを書くことも大事だが、そうではない取り組みも大きい。これは、ステークホルダーが多かったり、重要度の高く困難なプロジェクトを割り当てられるのも大きい。&lt;/p&gt;
&lt;p&gt;そう、結局は重要な技術的課題を解決するためになんでもやるのだ。こういうと、「
」のある種正統進化だなあともさえ思えてくる。&lt;/p&gt;
&lt;p&gt;当然、コミュニケーション力とやらも求められる。ラダーの上の方のエンジニアの機会費用は高いから、ちゃんとVPなどのサポートを得て(得続けて)、やるべきことをやりましょう、という話である。&lt;/p&gt;
&lt;p&gt;これはある種の社内政治だなあ、うーんと思っていると、見透かされたように言われる。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;エンジニアは時々、組織に関するスキルを「政治的なもの」として軽視することがあります。しかし、システムの一部である人間を考慮し、解決べき問題を明確に理解し、長期的な結果を把握し、優先事項についてトレードオフを行うといったスキルは、優れたエンジニアリングの一部です。自分の組織をどのようにうごかすかをわかっていなければ、あらゆる変革がはるかに困難になります。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;そう、ゲームのルールが変わってきているのを直視しないといけないのである。今まではランダムエンカウントのターン制RPGをやっていたと思ったら、リアルタイム性が高くなってきた戦略シミュレーションになっていたのだ。それを示唆するように、本書でも霧のある戦争マップの中でマッピングせよ、みたいな話が出てくる。あー、FEの索敵マップね。社内の色々な関係者のマップ書いたり、プロジェクトのゴールに辿り着くまでのマップ書いたり、それを更新し続けたり。&lt;/p&gt;
&lt;p&gt;これらは、ある意味では(大企業で大嫌いだった)社内政治とどう向き合うかという話に他ならない(そしてそれは
！)。結局は、ビジネスの営みはステークホルダーが色々といて、重要度が上がれば(予算がつくつかないは別にして)出てくる口の数は増える。そういう中では、今いるチームのアーキテクトとマネージャーとで週次である種の「現状認識会」をできていたのは、よかったのかもしれない。この間辞めたCXOのプロジェクトへの影響は、隣のプロジェクトにPdMのリソース持ってかれてる、などなど本書で言うところの、トポグラフィーマップを更新し続けていたのだ。&lt;/p&gt;
&lt;p&gt;ある種の社内政治は、日本、アメリカ、エンプラ、スタートアップを問わず、どこでも発生しうる、というのは過去の経験でも感じていたし、Will Larsonの本でも言及されていた。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;これ以外にも、技術ビジョンや戦略の立て方の話、他のメンバーのロールモデルになる話、どうやってリーダーシップを発揮するのか、みたいな話が本書には書かれており、自分の通ってきた道と過去の失敗の反省をしながら読んでいる。しかし、自著の「
」もそう感じていたが、痛い目を見てはじめてわかる書籍に書かれた事の重みというのはあるのだなあ、と痛感する。&lt;/p&gt;
&lt;p&gt;また、自分が直接の部下ではないが、MLチームの技術リードをすることになった関係で、色々ともがいた年でもあった。いかにチームを回るようにして、タスクブレイクダウンをし、そして来クオーターの計画を立てるのか。ある種のTLM的な感じでICのモチベーションを最大化するのに心を砕いたり、色々とはじめての挑戦も多く、正直に言って今までの経験があまり生きない一年だった。&lt;/p&gt;
&lt;p&gt;そんな中本書を読むと、シニアに対するメンタリングで何ページも書かれていたのは、不要なアドバイスをしてはいけない、何を求められているかを解きほぐすのに労力を割くべきだし、アドバイスをしたくなったら(センシティブな情報は抜きにして)ブログやsocial mediaに書くのがいいだろう、と書かれている。耳が痛いなと思いながら、この文章をdumpしたのであった。&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;そう、どうやったらCTOに投資を継続してもらえるかとか、なぜMLが会社にとって重要なのかを何度も何度も説明する仕事である&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>最近の人類のレビュー疲れ</title><link>https://chezo.uno/post/2025-09-19-review-fatigue/</link><pubDate>Fri, 19 Sep 2025 21:26:00 -0700</pubDate><guid>https://chezo.uno/post/2025-09-19-review-fatigue/</guid><description>&lt;p&gt;今年に入ってやたらレビューの時間が増えた。これはコードもそうだしドキュメントもそうだ。 そして、これによる疲れも急激に増加している。&lt;/p&gt;
&lt;p&gt;もちろんこれは、LLMによる支援によってアウトプットの速度と量が増加したからだ。 そして、必ずしも質が向上しているわけではなく、むしろ下がっているように感じる。 当然、自分の生産性も下がっている。&lt;/p&gt;
&lt;p&gt;自分の頭をダンプし、どういう課題があるか、そして、どう向き合っているかを書いていこうと思う。&lt;/p&gt;
&lt;h2 id="他人を経由したプロンプティング"&gt;他人を経由したプロンプティング&lt;/h2&gt;
&lt;p&gt;私は、機械学習のプロジェクトのテックリードとしてしばらく働いている。 その仕事として、
などの技術文章を書くことも多いが、レビューする機会も多い。&lt;/p&gt;
&lt;p&gt;機械学習で難しいのが、プロジェクトが変わり解く課題がちょっと変わると、がらりと全然違う知識が必要になり、新規に論文を読む必要が出てくる。&lt;/p&gt;
&lt;p&gt;今までずっとRailsでwebアプリケーションを作っていた人が、ある日突然「Rubyだから同じでしょ」とRubyのパーサージェネレーターの仕様のドキュメントをすっと渡され、すべて生成AIで生成されているのはなんか見てわかるがどうそれをレビューするか、真っ当な仕様になるよう意見するかという問題を想像してみてほしい。 きっと、おもむろに他言語の実装を読むなり論文を読むなりして脳内にインデックスを作ったうえで、レビューをすることになるだろう。&lt;/p&gt;
&lt;p&gt;そういう世界観でレビューをする仕様というのは、本当にしんどく、こちらが生成側より知識がある状況に持って行くまで一苦労、そして適切なコメントを繰り広げると待っているのが、すべて生成AIで作られたコメントで反論され、また修正もドラスティックに今までのコンテキスト無視で大規模に上書きされるのである。&lt;/p&gt;
&lt;p&gt;こうした状況を、私は「他人を経由したプロンプティング」と表現しているのだが、はっきり言って自分が論文読みながらLLMと議論したほうが手っ取り早いことがほとんどである。&lt;/p&gt;
&lt;p&gt;「LLMが生成した文章は、LLMにレビューさせればいいじゃない」と思う読者もいるかも知れないが、これは難しい問題をはらんでいる。じゃあ、そのLLMによるレビューの正しさを誰が担保するのか？という問題である。 自分でLLMと対話をしても常々感じるのが、「
」であるということである。出てくる出力は一貫性がなく、同じ質問を3回繰り返すと3回違うことを結構言ってくる。どうするかというと、その傍らで論文や既存実装、ドキュメントを調べて、どれが尤もらしいかを自分で選ぶ必要がある。&lt;/p&gt;
&lt;p&gt;今のLLM・生成AIは人間の能力の限界がすべてを規定すると信じているのだが、proxyたる間に入った人はproxyを貫く限りは必要がなくなるので、適切にマネージャーにエスカレーションをする必要がある。&lt;/p&gt;
&lt;p&gt;なお余談だが、LLMで生成した文章は、特定の単語が高頻度で出てくる、
などで検出されることも多いが、英語が第一言語ではない民にとっては第一言語特有のクセの有無で見抜かれる、ということもままあるので、きちんと生成された結果には自身を持って自分の意見として他人に渡すようにしよう。&lt;/p&gt;
&lt;h2 id="自己レビューの欠如あるいは目が滑る問題"&gt;自己レビューの欠如、あるいは目が滑る問題&lt;/h2&gt;
&lt;p&gt;前節でも書いたが、生成したものを自己レビューをしないというケースは往々にしてある。これはただただ不信感を増やすので今すぐやめたほうがいい。 しかし、自己レビューをしても目が滑ってしまうというケースも多いのが実情である。&lt;/p&gt;
&lt;p&gt;マネージャーとの1:1で教えてもらったが、同一人物であっても自分が生成させたコードのレビューは甘くなり、他人の生成したコードのレビューは厳しくなる傾向があるらしい。わかる。&lt;/p&gt;
&lt;p&gt;なぜこれが起こるかと考えたときに、自分の手で書かないコードは往々にして自分の脳内キャッシュに乗らないのである。それに、Claude Codeでコードを生成させていると、diffをいちいち見るのはかったるくなるようなUXになっている。なので、auto approvalモードで一通り動くものを生成させて、それをレビューすることになる。が、まあ、大量に変更されたときには細かいところの理解は追いつかない。そして、なんかunit test通ってるからOK、となりがちなのである。&lt;/p&gt;
&lt;h2 id="クソデカコミット"&gt;クソデカコミット&lt;/h2&gt;
&lt;p&gt;最近、ほとんど1コミットで +10,000 -7,000 みたいなPRを受け取った。ビッグバンコミットPRである。&lt;/p&gt;
&lt;p&gt;LLM、特にAuto approvalモードでコードを生成すると、agentが試行錯誤を大量にする。そして、agentic codingの特徴として、大きな塊をガンガン上書きする。同一人物が手で書いていたときにはリスペクトしていた既存の設計は、LLMが生成したPRではかなり無視されていた。&lt;/p&gt;
&lt;p&gt;
、という研究がある。大きい複雑な変更をするのは、
を読んだが、まあそうだよねという気持ちになった。&lt;/p&gt;
&lt;p&gt;あとは、タスクを適切な単位に切り出すのはLLMは勝手にはやってくれない。こちらで丁寧に指示しないとなかなか難しいと感じている。&lt;/p&gt;
&lt;p&gt;なお、機械学習のような探索的な実装のときに、適切な粒度のコミットをするのはすごい難しいというのは普遍的な問題であるのは、オープンクエスチョンのままだ。&lt;/p&gt;
&lt;h2 id="生成側とレビュー側のインセンティブ構造の違い"&gt;生成側とレビュー側のインセンティブ構造の違い&lt;/h2&gt;
&lt;p&gt;「LLMを使うとコーディングの生産性があがった！」ということを主張したい人は多く、多くの人々がAIによる生産性改善を強く信じており、それができないといけないというハイプが来ているからだと理解している。&lt;/p&gt;
&lt;p&gt;で、コードを生成するスループットについては、様々な議論があるのは認識しているが、上る可能性はあると思う。なんだけど、レビューする側は特に速くなることはまだない。全部LLMにレビューを任せるにはもうちょっと（最低一年くらい？）かかるだろう。それに、生成する人がLLM（他人）が生成したコードをレビューするのは今までにはなかったフェーズである。一手多くなるのはコストである。&lt;/p&gt;
&lt;p&gt;そうすると、目が滑って自己レビューが甘くなったけど大量に生成されたコードが増えてくる。 つまり、生成側は生成スループットを上げることを最大化し、レビュー側はそんなことはお構いなしに質を担保しなければならない。 このインセンティブ構造の違いが、レビュー疲れの主原因だろう。&lt;/p&gt;
&lt;h2 id="コーディングレビューでの向き合い方"&gt;コーディングレビューでの向き合い方&lt;/h2&gt;
&lt;p&gt;じゃあ、どうしているか。正直銀の弾丸はまだ見つかっていないが、色々と試行錯誤をした結果を共有したい。&lt;/p&gt;
&lt;h3 id="1-生成側がgithubで他人のコードとしてレビューをする"&gt;1. 生成側がGitHubで他人のコードとしてレビューをする&lt;/h3&gt;
&lt;p&gt;これは自分も過去に大きめコミット(+700とか)のPRをやらかした反省から、最近は実装時にローカルのVSCodeで毎回LLMが生成したコードをレビューしてapproveするのに加えて、GitHub上でPRをdraft状態でレビューするようにしている。&lt;/p&gt;
&lt;p&gt;こうすることで、自分の中でのマインドセットがレビュワーモードに切り替わり、色々とだめな点を見つけることができた。&lt;/p&gt;
&lt;p&gt;当たり前に見えるが、レビュー専用のviewを使うというのは、他人のコードレビューと同じメンタルモデルになるのが良いのだろうと思う。&lt;/p&gt;
&lt;h3 id="2-ドキュメントドリブンで開発をする"&gt;2. ドキュメントドリブンで開発をする&lt;/h3&gt;
&lt;p&gt;
で、いくつか参考になる取り組みがなされていたので、それを自分も試してみた。&lt;/p&gt;
&lt;p&gt;私がこの記事と実際のコミットから学んだ重要なポイントは、以下の3点である。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;人間が作業をして30分くらいで実装できるタスク粒度をLLMに必ず与えること（contextがあふれるため）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;要件定義→外部設計→作業計画の流れ&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;さらには上記のドキュメントを一緒にコミットする&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;非常に重要なポイントとしては、要件定義書、外部設計書、作業計画書、（＋受け入れテスト）をドキュメントとして実装とともにコミットすることで、コミットが多少大きくなっても意図が人間に理解しやすいという点である。 また、作業計画をきちんと整理することで、適切な粒度の開発とコミットをLLMの手綱として用意できるのである。これがないと30分程度の&lt;/p&gt;
&lt;p&gt;試しに自分も社内ツールとして書いていたスクリプトをOSS化することで、この方式を試してみた。&lt;/p&gt;
&lt;p&gt;OSS化するときに社内向けのコードを調整するためにちゃんとしたコミットをお見せすることはできないが、大まかには以下のような流れで作業をした。 （GitHub Copilot + Sonnet 4）&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;まず、やりたいことをAgent modeでSonnet 4と議論して、
,
に整理をする。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;さらにやるべき実装のTODOリストをPhase毎にチェックボックスでリストを作らせて、
として保存する&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;これらのドキュメント及び開発のお作法、ツールセットなどを
に作成させる&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Phase毎に実装をして、コミットをする。その際にplan.mdのチェックをしてコミットをしていく。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;次のPhaseに移る際にはagentのコンテキストをclearしてAGENTS.mdとplan.mdを読ませて作業をさせる&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;予定していたPhaseが終わり次のマイルストーンに移るときは、 &lt;code&gt;docs/milestone1&lt;/code&gt; というフォルダを作り、 &lt;code&gt;plan.md&lt;/code&gt; を移動、 &lt;code&gt;docs/plan.md&lt;/code&gt; は空のファイルにして新規マイルストーンを開発開始する。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Commit history"
srcset="https://chezo.uno/post/2025-09-19-review-fatigue/featured_hu_f403e92ef53c0678.webp 320w, https://chezo.uno/post/2025-09-19-review-fatigue/featured_hu_83511fb07c3df511.webp 480w, https://chezo.uno/post/2025-09-19-review-fatigue/featured_hu_97f6c05b091334f3.webp 481w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2025-09-19-review-fatigue/featured_hu_f403e92ef53c0678.webp"
width="481"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;OSSとしての実際のPRは以下のような感じである。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;正直、コミット粒度は大きくて機能がいくつかまとまってコミットされているが、やろうと思えばチェックボックス一個単位でのコミットもplan.mdを管理しているため容易にできる。&lt;/p&gt;
&lt;p&gt;つまり、設計レベルで大きな問題がないかをドキュメントで理解できるのが良い点である。もし、設計がまずっていたら、実装を読まなくてもそこに立ち返って議論ができるので、不毛なレビューも回避しやすいと考えている。&lt;/p&gt;
&lt;h2 id="文章レビューでの向き合い方"&gt;文章レビューでの向き合い方&lt;/h2&gt;
&lt;p&gt;正直わからん。同僚が言っていた「LLMが生成した文章を盲目的にそのままスルーしてくる人は、みのもんたがワイドショーで言ってたから真実！と言ってくる人と変わらないよね」というのがしっくりくる。&lt;/p&gt;
&lt;p&gt;生成文書をproxyしてくる人に対しては、エスカレーションの文言をLLMに作らせて適宜エスカレするのが良いというのが自分の経験上唯一の対策である。日本語で逐一問題となるデータポイントを列挙して、まとめてもらう。元来要約はLLMの得意分野だし、アメリカ企業によってチューニングされたモデル（Gemini）は、アメリカ式フィードバックの方法にチューニングされている。&lt;/p&gt;
&lt;h2 id="まとめられない"&gt;まとめられない&lt;/h2&gt;
&lt;p&gt;色々と課題とそれに対して行ってきたことを書いてきたが、正直今も手探りである。 しかし、基本的にはLLMの限界はそれを使う人間の限界であるため、その人間の能力をどうすれば最大限に活用できるのか、ということを主眼に人間がワークフローを作っていく必要がまだまだあるだろう。&lt;/p&gt;</description></item><item><title>Pages CMSの設定をした</title><link>https://chezo.uno/post/2025-08-24-pages-cms/</link><pubDate>Sun, 24 Aug 2025 12:09:00 -0700</pubDate><guid>https://chezo.uno/post/2025-08-24-pages-cms/</guid><description>&lt;p&gt;以前からiPadなどのモバイル端末でHugoの記事を書く方法を模索していたのだけど、そんななかでmehoriさんのこの記事を知ったのでPages CMSを試してみた。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;結論から言うと、Hugoのフォルダ構造 (/articlename/index.md) はまじめにサポートしていないのと、それにより
なこと、そもそも、iPhoneから
ことなどあるが、まあとりあえずiPadから日本語で文字だけの記事は設定できたのでよし。&lt;/p&gt;
&lt;p&gt;途中、めちゃくちゃマイナーなYAML frontmatterのパースエラーが出たけど、ワークアラウンドも見つけることができた。
&lt;/p&gt;
&lt;p&gt;コードを読めば何とかなるレベルなのだけど、必要最低限のものはあるのでいいかな。&lt;/p&gt;
&lt;p&gt;現状、こんな設定です。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;併せて、wowchemyからhugo-bloxに移行をしたけど、そっちもまあまあ大変だった。詳しくは PRを見てもらえれば。しかし、Hugo Academic -&amp;gt; Wowchemy -&amp;gt; Hugo Bloxと名前変わりすぎだろ&amp;hellip;。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Amazonアフィリエイトの画像が出なくなっていた問題も画像出さないように修正した
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;移行した後に検索が動かないことに気づいたんだけど、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;pagefindのインデックス作る設定をCloudflare上でbuild commandに追加 -&amp;gt; &lt;code&gt;&amp;amp;&amp;amp; npx pagefind --source 'public'&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;CloudflareのRocket Loader周りの試行錯誤をしたけど
にした&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;というので何とか動き始めた。けど、日本語はまともに検索できなさそう。仕方ない。&lt;/p&gt;</description></item><item><title>久しぶりの夏休み</title><link>https://chezo.uno/post/2025-08-23-summer-vacation/</link><pubDate>Fri, 22 Aug 2025 00:49:00 -0700</pubDate><guid>https://chezo.uno/post/2025-08-23-summer-vacation/</guid><description>&lt;p&gt;仕事が珍しく急ぎの仕事がない状態になったので、ふらっと週末にくっつける形で休みを取った。というのも、RTA in Japanをやってるのに全然見れなくて仕事なんてしてる場合じゃない、となったのである。&lt;/p&gt;
&lt;p&gt;休みといっても旅行をするわけでもなく、放置していたお下がりのゲーミングPCにWindows 11を入れて子供に渡したり、ついでに
というVancouverの会社の電動昇降机がセールしていたので子供に買ったりした。&lt;/p&gt;
&lt;p&gt;あとは、妻が壁の色が気に入らないというので、キッチンや風呂の壁にペンキを塗ったりもした。カナダでは人件費が高いことや、そもそも業者が約束の日に来ないなんてこともよくあるので、皆DIYで済ますようになるのである。&lt;/p&gt;
&lt;p&gt;ブリュワリーで子供と物理テトリスをしたり、近所の肉屋を開拓してラム肉のシェパーズパイも堪能した。ドーナツ屋さんも甘くなくて最高の店を見つけることができた。&lt;/p&gt;
&lt;p&gt;仕事に戻ると寝る働く食べる寝る、というだけになりがちなので、まとまった休みは大事である。&lt;/p&gt;</description></item><item><title>機械学習プロジェクトとスクラム</title><link>https://chezo.uno/post/2025-05-02-ml-project-and-scrum/</link><pubDate>Fri, 02 May 2025 13:43:50 -0700</pubDate><guid>https://chezo.uno/post/2025-05-02-ml-project-and-scrum/</guid><description>&lt;p&gt;機械学習プロジェクトをいくつかこなしてきたが、直感的にはスクラムが機械学習に向いていなさそうというのを思っていた。が、社内で議論をしたときに「Technical Storyを使えばタスクを2週間に収まるように分割できるはず。そして、それをすれば2週間で価値がでるはず」と言われて、ちゃんと反論ができなかったので世の中ではどういう取り組みがあるのかも含めて、言語化するためにこの記事を書いている。&lt;/p&gt;
&lt;h2 id="disclaimer"&gt;disclaimer&lt;/h2&gt;
&lt;p&gt;著者はMLの経験は長いが、別にスクラムに詳しいわけではなく、開発メンバーとしていくつかのプロジェクトに参加したことがある程度である。&lt;/p&gt;
&lt;h2 id="調査方法"&gt;調査方法&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Gemini 2.5 Pro (experimental)とブレスト
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Redditを中心に体験談を調査&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="想定していた課題"&gt;想定していた課題&lt;/h2&gt;
&lt;p&gt;MLプロジェクトでは、iterativeな開発が必ず発生する。これは特に途中で探索的なフェーズ（EDAやモデル開発）が必ず挟まり、総じてそれらのフェーズは手戻りが発生する。&lt;/p&gt;
&lt;p&gt;こうした手戻りが高確率で発生するのに対して、「2週間で顧客価値を出す」sprintとの相性はすこぶる悪いと思っていた。&lt;/p&gt;
&lt;h2 id="technical-storyを使う"&gt;Technical Storyを使う&lt;/h2&gt;
&lt;p&gt;Technical Storyとはなんぞや。色々と調べてみたけれど、この記事の冒頭の例がしっくりくる。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;As a developer,
I want an automated build
So that I can be sure my code works.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;実際にこういうstoryをちらほら見かける。&lt;/p&gt;
&lt;p&gt;なのだけど、上記の記事ではビジネス価値（business benefit, 顧客価値と同義だと認識している）はどこにあるのか？ということを考えたときに、以下のようなテンプレートに落とし込んでビジネス価値を確保し、またfeatureを埋め込めばよい、という主張である。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;In order to &lt;deliver some business benefit&gt;
&lt;these people&gt;
will need &lt;these features&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;これを経由して、さらにブラッシュアップするとこうなる。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;In order to &lt;deliver some business benefit&gt;
As a &lt;role&gt; I want &lt;some other role&gt;
to &amp;lt;do something, or use or be restricted by some feature&amp;gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;In order to stop bots from spamming the site
As a member of the commercial team, I want users
to fill in a captcha box.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;めでたしめでたし。本当に？&lt;/p&gt;
&lt;h2 id="mlプロジェクトにおけるビジネス価値"&gt;MLプロジェクトにおけるビジネス価値&lt;/h2&gt;
&lt;p&gt;MLプロジェクト、およびMLプロダクトにおけるビジネス価値は、顧客に何かしらの良い影響を与える何かを提供することであることには変わりない。&lt;/p&gt;
&lt;p&gt;何か良い精度のモデルが学習できたら、即時顧客価値が提供されるわけではなく、実際の本番環境に予測結果をサービングできるようにして、初めて顧客に価値を届けることができる。あるいは、予測結果をもとにした分析結果をまとめて、アクショナブルな提案をレポートにまとめてプレゼンすることかもしれない。&lt;/p&gt;
&lt;p&gt;翻って、こうした顧客価値を数日～2週間のチケットで提供できるか？というと結構難しいと思っている。往々にして、モデルを開発しているタイミングでは、デプロイ先がなかったりすることもある。&lt;/p&gt;
&lt;p&gt;一つの方向性としては、Geminiが言うように「リスク削減や不確実性の低減をsprintゴールとする」という発想である。直接的な顧客価値ではないが、ビジネス価値はたしかにある。「この特徴量が予測に効きそうだ」とか「このアルゴリズムはこの問題には不適当だった」などの知見を得られただけでも価値はある。そう考えるのである。&lt;/p&gt;
&lt;p&gt;しかし、なぜ2週間にフィットさせるのが難しいのか？こうした疑問にヒントを与えてくれたのが、
だった。&lt;/p&gt;
&lt;h2 id="タスクレベルの開発フローの違い"&gt;タスクレベルの開発フローの違い&lt;/h2&gt;
&lt;p&gt;
では、以下のような図をもとに、典型的なソフトウェア開発と、MLでの開発のタスクの進み方を比較している。&lt;/p&gt;
&lt;p&gt;曰く、従来型のソフトウェア開発では、タスクレベルで見れば、タスクの進行が直線的であるのに対し、MLプロジェクトではタスクが循環的であることが多い。（以下の図はともに
から引用）&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="./software_flow.png" alt="Linear flow in software development" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;従来型のソフトウェア開発での直線的なタスクは、言い換えるとプロジェクトを完了させればよい「完了型」のタスクだとも言われている。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="./ml_flow.png" alt="Circular flow in machine learning" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;もちろん、MLプロジェクトでも従来型のソフトウェア開発のような直線的なタスクもある。例えば、データインジェスチョンパイプラインや基本的な前処理、デモ用の
でのアプリ開発、予測用のAPI開発などである。&lt;/p&gt;
&lt;p&gt;一方で、探索的・実験的なタスクは、データ理解・仮説立案・検証という作業を繰り返す循環型のプロセスである。何が難しいのか。2週間のsprintの中で、予測精度が向上する保証はないので何もコミットができないのである。&lt;/p&gt;
&lt;h2 id="mlプロジェクトでのスクラムを実践する方法"&gt;MLプロジェクトでのスクラムを実践する方法&lt;/h2&gt;
&lt;p&gt;ではどうするのか？そうは言ってもトップダウンで2 week sprintが降りてきたから、どのように実践していくかを考える必要がある、という方もいるかもしれない。&lt;/p&gt;
&lt;p&gt;Redditでの議論をいくつか眺めていると、以下の2つのアプローチがあった。&lt;/p&gt;
&lt;h3 id="1-スクラムをやめてkanbanを使う"&gt;1. スクラムをやめてKanbanを使う&lt;/h3&gt;
&lt;p&gt;いきなり身もふたもない話であるが、agileな開発をするのに何もスクラムをworkflowとして採用するのが必須ではない。&lt;/p&gt;
&lt;p&gt;Agile Data Science with Rでも
でこういった指摘がされている。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Both methodologies are applied with great success and it’s important to keep in mind that they are a means to an end, not religions. The Agile values and principles should be the primary guideline and when selecting one of the workflows you do so because it is the best way to work in an Agile way because its the best fit for the given situation.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;ScrumかKanbanかは信仰ではなく、目的を達成するためにチームが最適なもの選び、それが最適かをモニターするのが大事、という指摘である。&lt;/p&gt;
&lt;p&gt;著者の会社では、スクラム経験豊富な人も多かったため当初スクラム採用したが、モデル開発でうまくいかなくなり、結局Kanbanに移行したという話がある(
)。&lt;/p&gt;
&lt;p&gt;理由としては、スクラムは厳格すぎて探索的・実験的フェーズでは柔軟性が低いことがあげられている。またデータも見ないで性能向上にコミットもできないのは先述した通り。そのため、story pointをつけるよりtime boxingの方ががいいという指摘がある。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Scoping for data science is then not just estimating how long a task will take to complete, it is also time boxing. If used in this way, the scoping should be done in time units, not in a subjective measure such as story points. The data scientist should not take longer for the task than the team agreed upfront, wrapping up even when he does not feel completely finished.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;DSは納得いくまで実験をし続ける傾向にあるので、終了条件を厳密に決めるより、時間で区切った方が良いというのは研究フェーズでは合理的である。&lt;/p&gt;
&lt;p&gt;実際には、以下のような6つのレーンを持つKanbanを採用したようである。ただし、いくつかのタスクでは仮説検証段階でモデルの精度が上がらないことを確認して終了することもあったそうだ。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;to do&lt;/li&gt;
&lt;li&gt;test hypothesis&lt;/li&gt;
&lt;li&gt;code review hypothesis&lt;/li&gt;
&lt;li&gt;update model&lt;/li&gt;
&lt;li&gt;code review update model&lt;/li&gt;
&lt;li&gt;done&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;まったく同様の指摘（Kanbanを使え、time boxingをしろ）は
。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Don’t confuse agility with solely scrum and its sprints, which are the root of the problem and work poorly in research mode.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;この具体例なんかはわかりやすい。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Example: build a PoC in a week. If AUC exceeds X then it’s promising and let’s spend another 3 months on further extensions (data, features, architecture, hyperopt) and putting all into production. If there was no AUC gain on the last week, we do not extend any further. Inside this 3 month time box - execute pure Kanban, task by task, which allows you to take different paths as needed (agility), not waiting till your sprint finishes in 3 days. You already know your new feature is poorly designed and you need to start on tweaking it right now.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;つまり、time-boxingをして、その中で仮説検証をしてうまくいったら続きをやる、という意思決定をしていくのである。&lt;/p&gt;
&lt;p&gt;また、もう一つのポイントとして、MVPの代わりにMVM (Minimum Viable Model)をさっさと作ること、というのを Agile Data Science with Rの著者は提案している。例えば、最初は線形回帰などのシンプルなモデルを限定したユーザーにMVMとしてデプロイ、次いで特徴量を追加し、最後により複雑なモデル(本文中ではRandom Forestが挙げられていたが今ならNNベースのアプローチもあるだろう)をデプロイする、というような流れである。&lt;/p&gt;
&lt;p&gt;これは先のtime-boxingとの話ともつながるが、無数の選択肢の中から確度の高い道を探して枝刈りする取り組みの一つとして、MVMをフックにするのはいいアイデアだと思う。&lt;/p&gt;
&lt;h3 id="2-hypothesis-based-storyを使うスクラムに手を入れる"&gt;2. Hypothesis Based Storyを使う（スクラムに手を入れる）&lt;/h3&gt;
&lt;p&gt;別の
では、スクラムとKanbanを組み合わせるというアプローチがあった。長期的なプロジェクトではスクラムを採用し、リサーチタスクではtime boxingを使用しているというものである。&lt;/p&gt;
&lt;p&gt;特に、スクラムに対して以下のような変更をしたようだ。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;hypothesis based stories (instead of user based)&lt;/li&gt;
&lt;li&gt;foregoe stand ups, people keep their tickets as research logs and @ people when they need help. - Product owner can read the tickets if they want to know where we are&lt;/li&gt;
&lt;li&gt;monthly retro rather than per scrum, wider focus&lt;/li&gt;
&lt;li&gt;tickets largely written by the data scientists then priorities by product owner&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;仮説ベースのstoryを書く。スタンドアップをやらないで、チケットにリサーチログを書く。手助けがいるときはチケットでメンションする。Product Ownerは自分から情報を取りに行く。チケットはデータサイエンティストが書いて、優先順位はProduct Ownerがつける。つまり、DS/MLEに自分の仕事に集中してもらう、ということである。&lt;/p&gt;
&lt;p&gt;特に、Hypothesis Based Storyはユニークである。なぜなら、先ほどのTechnical Storyにビジネス価値の話を思い返すと、MLにおける仮説検証フェーズでのビジネス価値は「リスクを低減する、不確実性を下げる」としか書きようがないからである。また、「仮説を立てて検証をする」こと自体をチケットのゴールにすることで、「ちゃんとした仮説を立てないといけない」という意識が生まれ、結果は「仮説が正しかった/間違っていた」ということでcloseできる。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;The point is that the exit criteria is provable and the delivery is typically the proof. Likewise, disapproving the hypothesis is still a success, we learned something.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;storyの例も併せて紹介しておこう。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;“We believe a fine tuned distilbert architectures will allow us to identify cases with a precision of greater than .95 and a recall of greater than .7.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;“We believe it should be possible to transform a given article within our dataset to our standardised form without additional datasets or augmentation”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;“We believe x metric can best be explained to stakeholders using a combination of shap values and distribution charts”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="余談-mlプロジェクトでproduct-ownerは何をするのか"&gt;余談: MLプロジェクトでProduct Ownerは何をするのか&lt;/h2&gt;
&lt;p&gt;余談ではあるが、Product Ownerがチケットを作らないのであれば何をするのか、ということについて詳しく書かれた章がある。(5.6 The Product Owner Role)[https://edwinth.github.io/ADSwR/a-methodology-for-agile-data-science.html#the-product-owner-role]&lt;/p&gt;
&lt;p&gt;まとめると&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Stake holderとのコミュニケーションを一手に引き受ける。DS/MLEにはタスクにfocusしてもらう&lt;/li&gt;
&lt;li&gt;DS/MLEの作ったタスクについて議論をしてscopingを通じて整理をするのを手伝う&lt;/li&gt;
&lt;li&gt;DS/MLEの作ったタスクを優先順位付けする&lt;/li&gt;
&lt;li&gt;DS/MLEの気づかないビジネス側の懸念点を指摘する&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;といったところである。&lt;/p&gt;
&lt;p&gt;読んでいると、DS/MLEの時間はSWEよりも価値が高いように書かれているように感じる。&lt;/p&gt;
&lt;h2 id="まとめ"&gt;まとめ&lt;/h2&gt;
&lt;p&gt;ざっと調査してみたが、以下のような結論に至った。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;厳格なスクラムはMLプロジェクトには向いていない&lt;/li&gt;
&lt;li&gt;研究・探索フェーズと開発フェーズでworkflowを分ける&lt;/li&gt;
&lt;li&gt;研究・探索フェーズでは、story pointではなく時間で区切る&lt;/li&gt;
&lt;li&gt;研究・探索フェーズでは仮説検証を軸に進める（Hypothesis Based Storyを書く、Kanbanを使う）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;time boxingの考え方と仮説検証を中心に調査タスクを進めていくというのは、MLプロジェクトにおいては当たり前であるが非常に強力なサポートとなるだろう。&lt;/p&gt;
&lt;p&gt;では、冒頭の「Technical Storyを使えばタスクを2週間に収まるように分割できるはず。そして、それをすれば2週間で価値がでるはず」という言葉に対する返答としては、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ビジネス価値は「不確実性の低減」という理解をする&lt;/li&gt;
&lt;li&gt;Technical StoryよりもHypothesis Based Storyを使うか、Kanbanに移行する&lt;/li&gt;
&lt;li&gt;2週間という枠で具体的なゴールを決めるよりも、時間で区切って可能性の枝刈りを素早く回していく&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ということになるだろう。&lt;/p&gt;</description></item><item><title>2024年を振り返って</title><link>https://chezo.uno/post/2024-12-31-2024-year-in-review/</link><pubDate>Tue, 31 Dec 2024 16:34:12 -0800</pubDate><guid>https://chezo.uno/post/2024-12-31-2024-year-in-review/</guid><description>&lt;p&gt;2024年中はバタバタしていて書きそびれたので、2025年に書いています。&lt;/p&gt;
&lt;h2 id="仕事"&gt;仕事&lt;/h2&gt;
&lt;p&gt;今年はありがたいことに、春にPrincipal Software Engineerにpromotionした。Staffの時にはPrincipal相当の働きをしているという自負はあったのだが、いざpromotionするとふるまい方が今までとはかなり違ったものを求められて、日々戸惑いながらもがいている。&lt;/p&gt;
&lt;p&gt;ざっくり言うと、会社でのMLプロダクト開発における技術的リーダーシップを発揮する、いわゆるtech leadとしてふるまっているが、チーム編成が色々とトリッキーだったりすることもあり、技術的な方向性をProductチームやSenior Engineering Director陣とすり合わせたり、チームメンバーのモチベーションをどうしたら上げられるかを考えたり、ということを悩みながら進めてきた。&lt;/p&gt;
&lt;p&gt;オライリーの「スタッフエンジニアの道」への
にその辺の話をざっくり書いたので興味があれば読んでほしい。&lt;/p&gt;
&lt;p&gt;子供を育てるのでも七転八倒しているのに、他のチームのメンバーのこともメンタリングしたりするとは、人生とは思いもよらないものである。&lt;/p&gt;
&lt;p&gt;こういう悩みの中、Staff+の仕事は会社によっても全然違うこともあり、Vancouverで働く
、
と飲んでざっくばらんな話をする機会が持てたのはよかった。2025年も続けていきたいし、他にも仲間が欲しい。&lt;/p&gt;
&lt;h2 id="oss活動対外活動"&gt;OSS活動・対外活動&lt;/h2&gt;
&lt;p&gt;今年は、仕事の関係もあって
という推薦のPythonパッケージへといくらか貢献をした。ざっとみると、仕事の合間に書いた割には
ことになる。&lt;/p&gt;
&lt;p&gt;なんだけど、メインの議論がTelegramでされているようで、もうこれ以上コミュニケーションチャンネルを増やしたくないという僕のわがままもあり、Telegramには入っていない。そのため、なかなか大きめの変更を入れてもらえるような丁寧なコミュニケーションができず、時間がかかるものも多い。&lt;/p&gt;
&lt;p&gt;昨年contributeしたChromaはいくつかマージされたが、いくつかは放置されてcloseされたりリポジトリがarchiveされてしまった。仕方ない。&lt;/p&gt;
&lt;p&gt;それ以外だと、
という地元の小さい企業がやっているミールキットの
。GitHub ActionsとCloudflare Pagesを使っているので維持コストもほぼゼロで、Vangohanの方にも公式リンクが貼られてうれしい限り。&lt;/p&gt;
&lt;h2 id="プライベート"&gt;プライベート&lt;/h2&gt;
&lt;p&gt;春に友人と二人でヨーロッパへ行く機会を得た。ドイツはFrankfurt、EstoniaのTallinn、フェリーで渡ったフィンランドのHelsinkiを廻った。15年ぶりのHelsinkiはさらに雰囲気が変わっておりVancouverと比べても大都会だなあという気持ちで圧倒された。フライトも9時間前後でつくので、犬を預けられるようになったら家族でまたヨーロッパは行きたいものである。&lt;/p&gt;
&lt;p&gt;2024年はスノーボードの練習を開始した。昨年も滑りに行ったujihisaさんの奥さんがスノボのインストラクターをやっているということで、家族でレッスンを受けてはじめた。雪山が車で30,40分と近いので自分のペースで練習できるのがとても気に入っている。&lt;/p&gt;
&lt;p&gt;子供は徐々に英語の方がだんだん強くなってきている。日本語学校へ行って漢字の勉強をしたり漢検の取得を目指したりしている。3年半経ってだいぶ馴染んだのは良かった。&lt;/p&gt;
&lt;p&gt;ゲームも久しぶりにSatisfactoryをはじめた。が、途中で仕事が忙し過ぎて無気力になって止まってしまっている。とりあえず一通りクリアしたいところ。探索が楽しいので工場建築が進まない。&lt;/p&gt;
&lt;h2 id="来年に向けて"&gt;来年に向けて&lt;/h2&gt;
&lt;p&gt;直近いろいろと現金が吹っ飛んでいくイベントに見舞われて、本厄ってこれかーと思いながら家計のやりくりをうんうんうなっているここ数週間なのだけど、色々ともう少し落ち着きたいものである。&lt;/p&gt;</description></item><item><title>「海外生活経験ゼロからカナダでソフトウェアエンジニアになった話〜英語勉強＆就活対策〜」を読んだ</title><link>https://chezo.uno/post/2024-06-20-nappan-book-review/</link><pubDate>Thu, 20 Jun 2024 16:46:46 -0700</pubDate><guid>https://chezo.uno/post/2024-06-20-nappan-book-review/</guid><description>&lt;p&gt;@nappan23 さんの「海外生活経験ゼロからカナダでソフトウェアエンジニアになった話〜英語勉強＆就活対策〜」を読みました。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://techbookfest.org/product/5keNij6GAFVNvZyNwUJQ72?productVariantID=bRRRzGuf8wc7HrTqnpLc1s&amp;card=small" data-iframely-url="//iframely.net/iyP3Wvo?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js"&gt;&lt;/script&gt;
&lt;p&gt;この同人誌は、nappan23さんがカナダでソフトウェアエンジニアになるまでに、どういう取り組みをしてきたのか、という話が書かれています。&lt;/p&gt;
&lt;p&gt;目次を見るだけでも、思った以上に真面目に数々のオプションを比較して、それらについて考察をされていて、気合が入っています。(技術書典のサイトには目次ないのね)&lt;/p&gt;
&lt;p&gt;もちろん、（本文中での注意書きがあるように）ビザの情報やジョブマーケットは水物で、最近ではカレッジに対するビザ回りを厳しくしようというカナダ政府の動きもありますし、高金利が続く中北米のTech業界はlayoffが続き、職を得るのが難しい状況になっています。&lt;/p&gt;
&lt;p&gt;そんな中でも、この同人誌に書かれた文章からは、どういったマインドセットがいいんだろう、どういう要素が重要なんだろう、ということに示唆を与えてくれていると感じました。&lt;/p&gt;
&lt;p&gt;特に、以下の文がとても強いメッセージを伝えてくれていると思います。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;ほんの少しだけ英語ができて、コミュニティの力を借りたおかげで海外就職ができた。英語と人脈とビザと運を味方につけられれば、相応の準備をすれば、海外就職は「一握りのすごい人だけ」ができるものではない&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;常々、英語は最低限の文法知識とかがあれば、あとはガッツで補えると思っているのですが、どうやって英語学習を続けるか、が一つの鍵なんだよなあと改めて感じました。
そして、一番の支えとしては、自分が所属する技術コミュニティがあること、ここが大きかったんだろうなというのを強く思いました。&lt;/p&gt;
&lt;p&gt;あと、海外移住をするために必要なのは割と勢いが大事だと思っていて、やっぱりそうなんだなと再確認させていただきました。&lt;/p&gt;
&lt;p&gt;自分自身も、カナダに移って文化の違いを感じ、馴染む部分も大きいなと思いながら生活をしています。&lt;/p&gt;
&lt;p&gt;London Tech Talkでも（たしか
で）話題に上っていましたが、憧れドリブンでえいやっと進めるのが大事な局面も大いにあると思っていて、そういう勢いを大事にしていきたいなと思いました。&lt;/p&gt;
&lt;p&gt;この同人誌は、海外で働くことに興味がある人にとって、本文中では女性やノンバイナリへのメッセージがありましたが、それ以外の多くの人にも得るものがあるのではないかと思います。&lt;/p&gt;</description></item><item><title>2023年を振り返って</title><link>https://chezo.uno/post/2023-12-30-2023-year-in-review/</link><pubDate>Sun, 31 Dec 2023 00:00:00 -0800</pubDate><guid>https://chezo.uno/post/2023-12-30-2023-year-in-review/</guid><description>&lt;p&gt;今年もあと一日になりましたが、
一年を振り返っていきたいと思います。&lt;/p&gt;
&lt;h2 id="oss活動対外活動"&gt;OSS活動・対外活動&lt;/h2&gt;
&lt;p&gt;ChromaというVector DBのOSSにコントリビュートしました。ChromaはRAGやLLMの文脈でよく使われるもののようです。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://github.com/chroma-core/chroma/pull/1361" data-iframely-url="//iframely.net/Zj8hyr9?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js"&gt;&lt;/script&gt;
&lt;p&gt;tabula-pyの裏側にjpype経由で使うようにして速くしたのですが、残念なことに Python 3.12 サポートがかなり時間がかかったので今はoptionalにしています。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/blog/2023-09-09-tabula-py-280/" data-iframely-url="//iframely.net/f64jYQx"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js"&gt;&lt;/script&gt;
&lt;p&gt;また、tabula-pyの質問はStackOverflowに流していたのですが、
ということが分かったので、今までの感謝とともにGitHub Discussionsに移行しました。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://github.com/chezou/tabula-py/discussions" data-iframely-url="//iframely.net/PIG05ED?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js"&gt;&lt;/script&gt;
&lt;br/&gt;
&lt;p&gt;あとは、NotionをscrapingしてPDFにするやつなんかも作りました。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://github.com/chezou/vangohan-pdf" data-iframely-url="//iframely.net/cP0eFmn?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js"&gt;&lt;/script&gt;
&lt;br/&gt;
&lt;p&gt;RubyKaigi 2023にもただの参加者としてですが参加できたので、その様子をバンクーバーのえんじに屋podcastでお話させていただきました。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;blockquote class="instagram-media" data-instgrm-permalink="https://www.instagram.com/p/CsLEfZ0P-0N/?utm_source=ig_embed&amp;utm_campaign=loading" data-instgrm-version="14" style=" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; min-width:326px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);"&gt;&lt;div style="padding:16px;"&gt; &lt;a href="https://www.instagram.com/p/CsLEfZ0P-0N/?utm_source=ig_embed&amp;utm_campaign=loading" style=" background:#FFFFFF; line-height:0; padding:0 0; text-align:center; text-decoration:none; width:100%;" target="_blank"&gt; &lt;div style=" display: flex; flex-direction: row; align-items: center;"&gt; &lt;div style="background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 40px; margin-right: 14px; width: 40px;"&gt;&lt;/div&gt; &lt;div style="display: flex; flex-direction: column; flex-grow: 1; justify-content: center;"&gt; &lt;div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 100px;"&gt;&lt;/div&gt; &lt;div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 60px;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="padding: 19% 0;"&gt;&lt;/div&gt; &lt;div style="display:block; height:50px; margin:0 auto 12px; width:50px;"&gt;&lt;svg width="50px" height="50px" viewBox="0 0 60 60" version="1.1" xmlns="https://www.w3.org/2000/svg" xmlns:xlink="https://www.w3.org/1999/xlink"&gt;&lt;g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"&gt;&lt;g transform="translate(-511.000000, -20.000000)" fill="#000000"&gt;&lt;g&gt;&lt;path d="M556.869,30.41 C554.814,30.41 553.148,32.076 553.148,34.131 C553.148,36.186 554.814,37.852 556.869,37.852 C558.924,37.852 560.59,36.186 560.59,34.131 C560.59,32.076 558.924,30.41 556.869,30.41 M541,60.657 C535.114,60.657 530.342,55.887 530.342,50 C530.342,44.114 535.114,39.342 541,39.342 C546.887,39.342 551.658,44.114 551.658,50 C551.658,55.887 546.887,60.657 541,60.657 M541,33.886 C532.1,33.886 524.886,41.1 524.886,50 C524.886,58.899 532.1,66.113 541,66.113 C549.9,66.113 557.115,58.899 557.115,50 C557.115,41.1 549.9,33.886 541,33.886 M565.378,62.101 C565.244,65.022 564.756,66.606 564.346,67.663 C563.803,69.06 563.154,70.057 562.106,71.106 C561.058,72.155 560.06,72.803 558.662,73.347 C557.607,73.757 556.021,74.244 553.102,74.378 C549.944,74.521 548.997,74.552 541,74.552 C533.003,74.552 532.056,74.521 528.898,74.378 C525.979,74.244 524.393,73.757 523.338,73.347 C521.94,72.803 520.942,72.155 519.894,71.106 C518.846,70.057 518.197,69.06 517.654,67.663 C517.244,66.606 516.755,65.022 516.623,62.101 C516.479,58.943 516.448,57.996 516.448,50 C516.448,42.003 516.479,41.056 516.623,37.899 C516.755,34.978 517.244,33.391 517.654,32.338 C518.197,30.938 518.846,29.942 519.894,28.894 C520.942,27.846 521.94,27.196 523.338,26.654 C524.393,26.244 525.979,25.756 528.898,25.623 C532.057,25.479 533.004,25.448 541,25.448 C548.997,25.448 549.943,25.479 553.102,25.623 C556.021,25.756 557.607,26.244 558.662,26.654 C560.06,27.196 561.058,27.846 562.106,28.894 C563.154,29.942 563.803,30.938 564.346,32.338 C564.756,33.391 565.244,34.978 565.378,37.899 C565.522,41.056 565.552,42.003 565.552,50 C565.552,57.996 565.522,58.943 565.378,62.101 M570.82,37.631 C570.674,34.438 570.167,32.258 569.425,30.349 C568.659,28.377 567.633,26.702 565.965,25.035 C564.297,23.368 562.623,22.342 560.652,21.575 C558.743,20.834 556.562,20.326 553.369,20.18 C550.169,20.033 549.148,20 541,20 C532.853,20 531.831,20.033 528.631,20.18 C525.438,20.326 523.257,20.834 521.349,21.575 C519.376,22.342 517.703,23.368 516.035,25.035 C514.368,26.702 513.342,28.377 512.574,30.349 C511.834,32.258 511.326,34.438 511.181,37.631 C511.035,40.831 511,41.851 511,50 C511,58.147 511.035,59.17 511.181,62.369 C511.326,65.562 511.834,67.743 512.574,69.651 C513.342,71.625 514.368,73.296 516.035,74.965 C517.703,76.634 519.376,77.658 521.349,78.425 C523.257,79.167 525.438,79.673 528.631,79.82 C531.831,79.965 532.853,80.001 541,80.001 C549.148,80.001 550.169,79.965 553.369,79.82 C556.562,79.673 558.743,79.167 560.652,78.425 C562.623,77.658 564.297,76.634 565.965,74.965 C567.633,73.296 568.659,71.625 569.425,69.651 C570.167,67.743 570.674,65.562 570.82,62.369 C570.966,59.17 571,58.147 571,50 C571,41.851 570.966,40.831 570.82,37.631"&gt;&lt;/path&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/div&gt;&lt;div style="padding-top: 8px;"&gt; &lt;div style=" color:#3897f0; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:550; line-height:18px;"&gt;View this post on Instagram&lt;/div&gt;&lt;/div&gt;&lt;div style="padding: 12.5% 0;"&gt;&lt;/div&gt; &lt;div style="display: flex; flex-direction: row; margin-bottom: 14px; align-items: center;"&gt;&lt;div&gt; &lt;div style="background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(0px) translateY(7px);"&gt;&lt;/div&gt; &lt;div style="background-color: #F4F4F4; height: 12.5px; transform: rotate(-45deg) translateX(3px) translateY(1px); width: 12.5px; flex-grow: 0; margin-right: 14px; margin-left: 2px;"&gt;&lt;/div&gt; &lt;div style="background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(9px) translateY(-18px);"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-left: 8px;"&gt; &lt;div style=" background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 20px; width: 20px;"&gt;&lt;/div&gt; &lt;div style=" width: 0; height: 0; border-top: 2px solid transparent; border-left: 6px solid #f4f4f4; border-bottom: 2px solid transparent; transform: translateX(16px) translateY(-4px) rotate(30deg)"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-left: auto;"&gt; &lt;div style=" width: 0px; border-top: 8px solid #F4F4F4; border-right: 8px solid transparent; transform: translateY(16px);"&gt;&lt;/div&gt; &lt;div style=" background-color: #F4F4F4; flex-grow: 0; height: 12px; width: 16px; transform: translateY(-4px);"&gt;&lt;/div&gt; &lt;div style=" width: 0; height: 0; border-top: 8px solid #F4F4F4; border-left: 8px solid transparent; transform: translateY(-4px) translateX(8px);"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;div style="display: flex; flex-direction: column; flex-grow: 1; justify-content: center; margin-bottom: 24px;"&gt; &lt;div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 224px;"&gt;&lt;/div&gt; &lt;div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 144px;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/a&gt;&lt;p style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;"&gt;&lt;a href="https://www.instagram.com/p/CsLEfZ0P-0N/?utm_source=ig_embed&amp;utm_campaign=loading" style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none;" target="_blank"&gt;A post shared by Aki Ariga (@chezo.uno)&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;script async onerror="var a=document.createElement('script');a.src='https://iframely.net/files/instagram_embed.js';document.body.appendChild(a);" src="https://www.instagram.com/embed.js"&gt;&lt;/script&gt;
&lt;p&gt;また、Frogさんでキャリアのインタビューもしてもらいました。行き当たりばったりなキャリア経験ではありますが、きれいにまとめていただきました。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://frogagent.com/interview/ariga/" data-iframely-url="//iframely.net/yH4K5NE?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js"&gt;&lt;/script&gt;
&lt;h2 id="仕事"&gt;仕事&lt;/h2&gt;
&lt;p&gt;昨年炎上プロジェクトに投入されて火消しをするも、いろいろあってぽしゃり、そしてまた、別の炎上プロジェクトに投入されてそちらはなんとかかんとか生き延びている、という状況です。突っ込まれてから、4カ月後の社外カンファレンスでデモまでこぎつけられたのは、ML系プロジェクトだからだなぁという良い経験をさせていただきました。6 pageのレポート作成からのexecutiveの説得、UX設計、PRD議論、アーキテクチャ設計、実装、他のエンジニアリングチームのとりまとめとまあ全部やりました。&lt;/p&gt;
&lt;p&gt;最近の悩みは、クオーターごとに実装期間がほぼ1週間くらいしかないことでしょうか。楽しい時間は一瞬で過ぎ去ってしまう。。。soft skillを生かして仕事では動いていますが、やはりhard skillも伸ばしておかないと上流だけしかできないのね、と言われてしまうのが怖いです。スタッフ+としてどう生きていくのがいいのだろうか。副業などで手を動かす仕事をやりたいものです。&lt;/p&gt;
&lt;p&gt;社内ハッカソンで、RAG (retrieval augmented generation)のアプリを作りました。
を使い、さくっとデモアプリまで行けました。なお、RAGは短文で検索するときの検索性能が全然でないため、OOBじゃ全然使えないということも学びました。しかし、検索と推薦は楽しいですねぇ。&lt;/p&gt;
&lt;h2 id="プライベート"&gt;プライベート&lt;/h2&gt;
&lt;p&gt;PRカードをついに手に入れました。永住権自体は昨年末に得ていたのですが、物理カードを得たので、これでビザ的には一番安心できる状況ですし、海外旅行も行けます。あと、海外の会社で働くのも楽になりました。&lt;/p&gt;
&lt;p&gt;スキーを20年ぶりに再開してドはまりしています。ujihisaさんと何度も滑りに行ってますがローカルの山まで30分、Whistlerまで2時間なので更に滑りまくりたいです。今年はエルニーニョ現象のため、雪が全然なくてつらいです。パラレルをちゃんとものにしていきたい。&lt;/p&gt;
&lt;blockquote class="instagram-media" data-instgrm-permalink="https://www.instagram.com/p/C1Xt0P6yMRV/?utm_source=ig_embed&amp;utm_campaign=loading" data-instgrm-version="14" style=" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:658px; min-width:326px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);"&gt;&lt;div style="padding:16px;"&gt; &lt;a href="https://www.instagram.com/p/C1Xt0P6yMRV/?utm_source=ig_embed&amp;utm_campaign=loading" style=" background:#FFFFFF; line-height:0; padding:0 0; text-align:center; text-decoration:none; width:100%;" target="_blank"&gt; &lt;div style=" display: flex; flex-direction: row; align-items: center;"&gt; &lt;div style="background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 40px; margin-right: 14px; width: 40px;"&gt;&lt;/div&gt; &lt;div style="display: flex; flex-direction: column; flex-grow: 1; justify-content: center;"&gt; &lt;div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 100px;"&gt;&lt;/div&gt; &lt;div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 60px;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="padding: 19% 0;"&gt;&lt;/div&gt; &lt;div style="display:block; height:50px; margin:0 auto 12px; width:50px;"&gt;&lt;svg width="50px" height="50px" viewBox="0 0 60 60" version="1.1" xmlns="https://www.w3.org/2000/svg" xmlns:xlink="https://www.w3.org/1999/xlink"&gt;&lt;g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"&gt;&lt;g transform="translate(-511.000000, -20.000000)" fill="#000000"&gt;&lt;g&gt;&lt;path d="M556.869,30.41 C554.814,30.41 553.148,32.076 553.148,34.131 C553.148,36.186 554.814,37.852 556.869,37.852 C558.924,37.852 560.59,36.186 560.59,34.131 C560.59,32.076 558.924,30.41 556.869,30.41 M541,60.657 C535.114,60.657 530.342,55.887 530.342,50 C530.342,44.114 535.114,39.342 541,39.342 C546.887,39.342 551.658,44.114 551.658,50 C551.658,55.887 546.887,60.657 541,60.657 M541,33.886 C532.1,33.886 524.886,41.1 524.886,50 C524.886,58.899 532.1,66.113 541,66.113 C549.9,66.113 557.115,58.899 557.115,50 C557.115,41.1 549.9,33.886 541,33.886 M565.378,62.101 C565.244,65.022 564.756,66.606 564.346,67.663 C563.803,69.06 563.154,70.057 562.106,71.106 C561.058,72.155 560.06,72.803 558.662,73.347 C557.607,73.757 556.021,74.244 553.102,74.378 C549.944,74.521 548.997,74.552 541,74.552 C533.003,74.552 532.056,74.521 528.898,74.378 C525.979,74.244 524.393,73.757 523.338,73.347 C521.94,72.803 520.942,72.155 519.894,71.106 C518.846,70.057 518.197,69.06 517.654,67.663 C517.244,66.606 516.755,65.022 516.623,62.101 C516.479,58.943 516.448,57.996 516.448,50 C516.448,42.003 516.479,41.056 516.623,37.899 C516.755,34.978 517.244,33.391 517.654,32.338 C518.197,30.938 518.846,29.942 519.894,28.894 C520.942,27.846 521.94,27.196 523.338,26.654 C524.393,26.244 525.979,25.756 528.898,25.623 C532.057,25.479 533.004,25.448 541,25.448 C548.997,25.448 549.943,25.479 553.102,25.623 C556.021,25.756 557.607,26.244 558.662,26.654 C560.06,27.196 561.058,27.846 562.106,28.894 C563.154,29.942 563.803,30.938 564.346,32.338 C564.756,33.391 565.244,34.978 565.378,37.899 C565.522,41.056 565.552,42.003 565.552,50 C565.552,57.996 565.522,58.943 565.378,62.101 M570.82,37.631 C570.674,34.438 570.167,32.258 569.425,30.349 C568.659,28.377 567.633,26.702 565.965,25.035 C564.297,23.368 562.623,22.342 560.652,21.575 C558.743,20.834 556.562,20.326 553.369,20.18 C550.169,20.033 549.148,20 541,20 C532.853,20 531.831,20.033 528.631,20.18 C525.438,20.326 523.257,20.834 521.349,21.575 C519.376,22.342 517.703,23.368 516.035,25.035 C514.368,26.702 513.342,28.377 512.574,30.349 C511.834,32.258 511.326,34.438 511.181,37.631 C511.035,40.831 511,41.851 511,50 C511,58.147 511.035,59.17 511.181,62.369 C511.326,65.562 511.834,67.743 512.574,69.651 C513.342,71.625 514.368,73.296 516.035,74.965 C517.703,76.634 519.376,77.658 521.349,78.425 C523.257,79.167 525.438,79.673 528.631,79.82 C531.831,79.965 532.853,80.001 541,80.001 C549.148,80.001 550.169,79.965 553.369,79.82 C556.562,79.673 558.743,79.167 560.652,78.425 C562.623,77.658 564.297,76.634 565.965,74.965 C567.633,73.296 568.659,71.625 569.425,69.651 C570.167,67.743 570.674,65.562 570.82,62.369 C570.966,59.17 571,58.147 571,50 C571,41.851 570.966,40.831 570.82,37.631"&gt;&lt;/path&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/div&gt;&lt;div style="padding-top: 8px;"&gt; &lt;div style=" color:#3897f0; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:550; line-height:18px;"&gt;View this post on Instagram&lt;/div&gt;&lt;/div&gt;&lt;div style="padding: 12.5% 0;"&gt;&lt;/div&gt; &lt;div style="display: flex; flex-direction: row; margin-bottom: 14px; align-items: center;"&gt;&lt;div&gt; &lt;div style="background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(0px) translateY(7px);"&gt;&lt;/div&gt; &lt;div style="background-color: #F4F4F4; height: 12.5px; transform: rotate(-45deg) translateX(3px) translateY(1px); width: 12.5px; flex-grow: 0; margin-right: 14px; margin-left: 2px;"&gt;&lt;/div&gt; &lt;div style="background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(9px) translateY(-18px);"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-left: 8px;"&gt; &lt;div style=" background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 20px; width: 20px;"&gt;&lt;/div&gt; &lt;div style=" width: 0; height: 0; border-top: 2px solid transparent; border-left: 6px solid #f4f4f4; border-bottom: 2px solid transparent; transform: translateX(16px) translateY(-4px) rotate(30deg)"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-left: auto;"&gt; &lt;div style=" width: 0px; border-top: 8px solid #F4F4F4; border-right: 8px solid transparent; transform: translateY(16px);"&gt;&lt;/div&gt; &lt;div style=" background-color: #F4F4F4; flex-grow: 0; height: 12px; width: 16px; transform: translateY(-4px);"&gt;&lt;/div&gt; &lt;div style=" width: 0; height: 0; border-top: 8px solid #F4F4F4; border-left: 8px solid transparent; transform: translateY(-4px) translateX(8px);"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;div style="display: flex; flex-direction: column; flex-grow: 1; justify-content: center; margin-bottom: 24px;"&gt; &lt;div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 224px;"&gt;&lt;/div&gt; &lt;div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 144px;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/a&gt;&lt;p style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;"&gt;&lt;a href="https://www.instagram.com/p/C1Xt0P6yMRV/?utm_source=ig_embed&amp;utm_campaign=loading" style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none;" target="_blank"&gt;A post shared by Aki Ariga (@chezo.uno)&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt;
&lt;script async onerror="var a=document.createElement('script');a.src='https://iframely.net/files/instagram_embed.js';document.body.appendChild(a);" src="https://www.instagram.com/embed.js"&gt;&lt;/script&gt;
&lt;p&gt;あと、忘れもしないのは銀行のコールセンターに
を受けたこと。Scotiabankという銀行を移住時に開設したのですが、全国一律のコールセンターの人に英語わからない認定を食らって
。上司が出てきて謝罪をもらったんですが、そういう銀行を使うのは癪なので、TDに移行してすべてうまくいっています。1Passwordで自社名とconflictすることくらいがネックなだけです。なお、ショックだったのは、某日本人コミュニティで「あなたの考えすぎじゃないですか」というセカンドレイプを受けたことでした。 unconscious biasのトレーニングを会社で受けていてよかったなと思った瞬間です。&lt;/p&gt;
&lt;p&gt;転んでもただは起きぬということで、
を受けるようになりました。理屈より実践という感じの手法なのですが、なるほど実際そうするのねーというのが身についてきて、けだるい英語のリスニングができるようになった気がしています。&lt;/p&gt;
&lt;p&gt;12月を丸っと休みにしたのですが、家族が次々と怪我をして看護休暇として追われています。ずっとワンオペで子供と犬の世話をしている日々なので、ゆっくりとした休みが欲しいなあと思う次第です。&lt;/p&gt;
&lt;h2 id="振り返りと来年に向けて"&gt;振り返りと来年に向けて&lt;/h2&gt;
&lt;p&gt;今年は、いろいろと迷いの多い一年だったように思います。来年は40の大台に乗るので、仕事方面は人生で一回くらいプロモーションしていきたいなと思いますし、プライベートは英語とスキーを上達したいと思っています。&lt;/p&gt;
&lt;p&gt;中長期的には、Greator Vancouverで家を買うには大体 1M CADが必要なのですが、その頭金として300K CADを貯めればいいことが分かったので、何とかしていきたいと思います。手っ取り早いのは、スタートアップで一発当てて$1M手に入れるか、big techに入って高給取りになることなんですが、まずは地道に貯めていこうかなと思います。&lt;/p&gt;
&lt;p&gt;2年半バンクーバーエリアに住んでみてわかったのは、家賃上昇が激しく（Vancouver cityは2023年12月で
）living costはめちゃくちゃ高いわりに仕事があまりない（シニア以上はシアトルはじめUSに人が流れてしまうのが定番）という現状なんですが、医療費がかからない、スキーに行きやすいなどのメリットとの天秤でまだこの地にとどまることになると思います。が、平均年収$59Kの国で$100K超えの年収がないと一人暮らしできないVancouverやTrontoは異常なので、職があればAlbertaなどに行くのが良いんだろうなぁ。&lt;/p&gt;
&lt;p&gt;Social media関連は色々と整理したり&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;展開しなおしたりしたのですが、人と話すことで刺激を得たいと思っているので、Vancouver近辺にいらした際にはお声がけください。もちろん、近隣にお住いの皆さんは引き続きよろしくお願いいたします。&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;某toxicな持ち主のプラットフォームからは完全撤退しました&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>携帯からSlackを消した</title><link>https://chezo.uno/post/2023-08-20-removed-slack-from-mobile/</link><pubDate>Sun, 20 Aug 2023 17:44:43 -0700</pubDate><guid>https://chezo.uno/post/2023-08-20-removed-slack-from-mobile/</guid><description>&lt;p&gt;休みの時の仕事の通知をコントロールする術をずっと模索していた。
これは、放っておいても仕事のSlackを見てしまい即レスポンスを返してしまう習性があるからだ。&lt;/p&gt;
&lt;p&gt;これをやっていても自分の精神的な疲れは溜まる一方で、別に給料が上がるわけでもないし、そこまで感謝されるわけでもないなということに気づいた。&lt;/p&gt;
&lt;p&gt;友人からiOSの集中モードを教えてもらって「これだ！」と思っていたものの、Googleカレンダーは対応していないなどなかなかうまくいかないことも多かった。&lt;/p&gt;
&lt;p&gt;結局、こんな感じで対応することにした。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Jiraなどの通知系を全部Slackに集約する。モバイルアプリの通知はオフ&lt;/li&gt;
&lt;li&gt;会社のSlackのスペースからログアウトする&lt;/li&gt;
&lt;li&gt;Gmailの会社アカウントの通知を切る&lt;/li&gt;
&lt;li&gt;仕事しないときは睡眠時以外はパーソナルモードにする&lt;/li&gt;
&lt;li&gt;会社のカレンダーは、パーソナルモードの時にはフィルターする&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;つまり、情報は欲しいときにプルで入手するという方針である。&lt;/p&gt;
&lt;p&gt;オンコールのアラート対応など困ったときはPager Dutyで飛んでくるだろうという割り切りである。優秀な同僚が、会社の携帯ポリシーがいやだから自分のスマホに会社関連のものを入れていないというのを聞いたのも決め手となった。&lt;/p&gt;
&lt;p&gt;今のところダウンサイドとしては、ミーティングのために慌てて帰ってきたらホストが体調不良でキャンセルされたのに気づけなかったことくらいである。
スマホがない時代は、PCでしか仕事できなかったし、なんとかなるのではないかと思ってやっている。&lt;/p&gt;
&lt;p&gt;あと、コミュニティ系のやり取りはDiscordですることが増えたのも大きいように思う。&lt;/p&gt;</description></item><item><title>楽天モバイルを利用してiPhoneを海外で機種変するとSMS代がかかる</title><link>https://chezo.uno/post/2023-08-06-rakuten-mobile-activation/</link><pubDate>Sun, 06 Aug 2023 16:50:23 -0700</pubDate><guid>https://chezo.uno/post/2023-08-06-rakuten-mobile-activation/</guid><description>&lt;h2 id="tldr"&gt;tl;dr&lt;/h2&gt;
&lt;p&gt;海外で楽天モバイル回線を使用したままiPhoneを機種変更すると、100円×N回の国際SMS料金が請求されるようになりました。&lt;/p&gt;
&lt;h2 id="詳細"&gt;詳細&lt;/h2&gt;
&lt;p&gt;iPhoneを機種変更するときに、iMessage/Facetimeのアクティベーションに失敗し続けることがあります。&lt;/p&gt;
&lt;p&gt;特に楽天モバイルでは、楽天回線の圏外でiMessageなどのアクティベーションをしようとすると失敗することが観測されてきました。&lt;/p&gt;
&lt;p&gt;アクティベーションがうまくいかない時iPhoneの仕様上 +44 の番号へSMSが自動的に送り続けられます。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://discussions.apple.com/thread/8608970" data-iframely-url="//iframely.net/RDc3t4E"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js"&gt;&lt;/script&gt;
&lt;p&gt;ところで、海外で楽天モバイルを使う際、iPhoneだとSMSの送信や標準電話アプリでの電話の送受信で料金がかかります。&lt;/p&gt;
&lt;p&gt;以前はこのアクティベーションのSMSは料金がかからなかったようなのですが、今年4月に機種変更をした際に2カ月遅れで謎の調整金という費目で1月後れで請求されるようになったようです。&lt;/p&gt;
&lt;p&gt;この仕様はFAQにも書かれており、サポートに問い合わせてもこのドキュメントが出てくるだけです。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://network.mobile.rakuten.co.jp/faq/detail/00001698/" data-iframely-url="//iframely.net/Q04zQES"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js"&gt;&lt;/script&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="楽天モバイルのドキュメント"
srcset="https://chezo.uno/post/2023-08-06-rakuten-mobile-activation/image_hu_2de6b0aee175cb33.webp 320w, https://chezo.uno/post/2023-08-06-rakuten-mobile-activation/image_hu_c0fc0516bed9a804.webp 351w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2023-08-06-rakuten-mobile-activation/image_hu_2de6b0aee175cb33.webp"
width="351"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;調べても、ウェブの情報は海外では楽天モバイルが良いという情報しか出てこなかったので、備忘録として書き残しておきます。&lt;/p&gt;
&lt;p&gt;2023年8月からpovoが海外ローミングをできるようになったようです。海外での番号維持及びSMSでの多要素認証には(eKYCのハードルを除くと)povoが一番よさそうです。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://povo.jp/service/international_roaming/" data-iframely-url="//iframely.net/rLcnF21?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js"&gt;&lt;/script&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://www.itmedia.co.jp/mobile/articles/2307/22/news056.html" data-iframely-url="//iframely.net/fPFk2T7?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js"&gt;&lt;/script&gt;</description></item><item><title>25年ぶりにスキーを再開した</title><link>https://chezo.uno/post/2023-04-05-first-time-skiing-in-25-years/</link><pubDate>Wed, 05 Apr 2023 13:38:23 -0700</pubDate><guid>https://chezo.uno/post/2023-04-05-first-time-skiing-in-25-years/</guid><description>&lt;p&gt;バンクーバーは、最寄りのスキー場まで車で30分で行けるので有名です。30分圏内にスキー場が三つ(Grouse, Cypress, Seymour)もあるので気軽に行けます。
有名なWhistlerも1.5時間で行けます。&lt;/p&gt;
&lt;p&gt;3月の後半に春休みが2週間あり、仕事もどうせ進まないだろうなと思いながら、子供を午前だけの半日スキー教室に5日間通わせました。
子供が気に入ったらシーズン券を買ってもよいかなと思っていたのですが、折角だし休みを取って待ってる間に自分もスキーを滑ってみたのですが、ハマってしまいました。&lt;/p&gt;
&lt;p&gt;自分が最後に滑ったのは25年くらい前の子供の頃なので覚えているか不安だったのですが、マッスルメモリーが覚えているものですね。
ボーゲンを辛うじてできるレベルで止まっていたので、パラレルを目下練習中です。&lt;/p&gt;
&lt;p&gt;長期間やっていたプロジェクトが突如なくなったのもあり、うっかり春のシーズンパスを買って6回くらい滑りに行きました。朝に子供を学校に送って迎えに行くまでに滑るということが気軽にできるのでとても良いです。&lt;/p&gt;
&lt;p&gt;3月後半なのに雪が降った直後の晴れた日に、
さん
さんとGrouse Mountainで滑れたのは最高でした。&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/A1Ek1wiBYs0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;でも、曇ると一気に見えなくなりますね。&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/uoBHnxNc9tk?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;雪と桜が同居している不思議な体験をしました。&lt;/p&gt;
&lt;blockquote class="instagram-media" data-instgrm-captioned data-instgrm-permalink="https://www.instagram.com/p/CqUJoFspUx3/?utm_source=ig_embed&amp;amp;utm_campaign=loading" data-instgrm-version="14" style=" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:540px; min-width:326px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);"&gt;&lt;div style="padding:16px;"&gt; &lt;a href="https://www.instagram.com/p/CqUJoFspUx3/?utm_source=ig_embed&amp;amp;utm_campaign=loading" style=" background:#FFFFFF; line-height:0; padding:0 0; text-align:center; text-decoration:none; width:100%;" target="_blank"&gt; &lt;div style=" display: flex; flex-direction: row; align-items: center;"&gt; &lt;div style="background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 40px; margin-right: 14px; width: 40px;"&gt;&lt;/div&gt; &lt;div style="display: flex; flex-direction: column; flex-grow: 1; justify-content: center;"&gt; &lt;div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 100px;"&gt;&lt;/div&gt; &lt;div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 60px;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="padding: 19% 0;"&gt;&lt;/div&gt; &lt;div style="display:block; height:50px; margin:0 auto 12px; width:50px;"&gt;&lt;svg width="50px" height="50px" viewBox="0 0 60 60" version="1.1" xmlns="https://www.w3.org/2000/svg" xmlns:xlink="https://www.w3.org/1999/xlink"&gt;&lt;g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"&gt;&lt;g transform="translate(-511.000000, -20.000000)" fill="#000000"&gt;&lt;g&gt;&lt;path d="M556.869,30.41 C554.814,30.41 553.148,32.076 553.148,34.131 C553.148,36.186 554.814,37.852 556.869,37.852 C558.924,37.852 560.59,36.186 560.59,34.131 C560.59,32.076 558.924,30.41 556.869,30.41 M541,60.657 C535.114,60.657 530.342,55.887 530.342,50 C530.342,44.114 535.114,39.342 541,39.342 C546.887,39.342 551.658,44.114 551.658,50 C551.658,55.887 546.887,60.657 541,60.657 M541,33.886 C532.1,33.886 524.886,41.1 524.886,50 C524.886,58.899 532.1,66.113 541,66.113 C549.9,66.113 557.115,58.899 557.115,50 C557.115,41.1 549.9,33.886 541,33.886 M565.378,62.101 C565.244,65.022 564.756,66.606 564.346,67.663 C563.803,69.06 563.154,70.057 562.106,71.106 C561.058,72.155 560.06,72.803 558.662,73.347 C557.607,73.757 556.021,74.244 553.102,74.378 C549.944,74.521 548.997,74.552 541,74.552 C533.003,74.552 532.056,74.521 528.898,74.378 C525.979,74.244 524.393,73.757 523.338,73.347 C521.94,72.803 520.942,72.155 519.894,71.106 C518.846,70.057 518.197,69.06 517.654,67.663 C517.244,66.606 516.755,65.022 516.623,62.101 C516.479,58.943 516.448,57.996 516.448,50 C516.448,42.003 516.479,41.056 516.623,37.899 C516.755,34.978 517.244,33.391 517.654,32.338 C518.197,30.938 518.846,29.942 519.894,28.894 C520.942,27.846 521.94,27.196 523.338,26.654 C524.393,26.244 525.979,25.756 528.898,25.623 C532.057,25.479 533.004,25.448 541,25.448 C548.997,25.448 549.943,25.479 553.102,25.623 C556.021,25.756 557.607,26.244 558.662,26.654 C560.06,27.196 561.058,27.846 562.106,28.894 C563.154,29.942 563.803,30.938 564.346,32.338 C564.756,33.391 565.244,34.978 565.378,37.899 C565.522,41.056 565.552,42.003 565.552,50 C565.552,57.996 565.522,58.943 565.378,62.101 M570.82,37.631 C570.674,34.438 570.167,32.258 569.425,30.349 C568.659,28.377 567.633,26.702 565.965,25.035 C564.297,23.368 562.623,22.342 560.652,21.575 C558.743,20.834 556.562,20.326 553.369,20.18 C550.169,20.033 549.148,20 541,20 C532.853,20 531.831,20.033 528.631,20.18 C525.438,20.326 523.257,20.834 521.349,21.575 C519.376,22.342 517.703,23.368 516.035,25.035 C514.368,26.702 513.342,28.377 512.574,30.349 C511.834,32.258 511.326,34.438 511.181,37.631 C511.035,40.831 511,41.851 511,50 C511,58.147 511.035,59.17 511.181,62.369 C511.326,65.562 511.834,67.743 512.574,69.651 C513.342,71.625 514.368,73.296 516.035,74.965 C517.703,76.634 519.376,77.658 521.349,78.425 C523.257,79.167 525.438,79.673 528.631,79.82 C531.831,79.965 532.853,80.001 541,80.001 C549.148,80.001 550.169,79.965 553.369,79.82 C556.562,79.673 558.743,79.167 560.652,78.425 C562.623,77.658 564.297,76.634 565.965,74.965 C567.633,73.296 568.659,71.625 569.425,69.651 C570.167,67.743 570.674,65.562 570.82,62.369 C570.966,59.17 571,58.147 571,50 C571,41.851 570.966,40.831 570.82,37.631"&gt;&lt;/path&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/div&gt;&lt;div style="padding-top: 8px;"&gt; &lt;div style=" color:#3897f0; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:550; line-height:18px;"&gt;この投稿をInstagramで見る&lt;/div&gt;&lt;/div&gt;&lt;div style="padding: 12.5% 0;"&gt;&lt;/div&gt; &lt;div style="display: flex; flex-direction: row; margin-bottom: 14px; align-items: center;"&gt;&lt;div&gt; &lt;div style="background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(0px) translateY(7px);"&gt;&lt;/div&gt; &lt;div style="background-color: #F4F4F4; height: 12.5px; transform: rotate(-45deg) translateX(3px) translateY(1px); width: 12.5px; flex-grow: 0; margin-right: 14px; margin-left: 2px;"&gt;&lt;/div&gt; &lt;div style="background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(9px) translateY(-18px);"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-left: 8px;"&gt; &lt;div style=" background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 20px; width: 20px;"&gt;&lt;/div&gt; &lt;div style=" width: 0; height: 0; border-top: 2px solid transparent; border-left: 6px solid #f4f4f4; border-bottom: 2px solid transparent; transform: translateX(16px) translateY(-4px) rotate(30deg)"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-left: auto;"&gt; &lt;div style=" width: 0px; border-top: 8px solid #F4F4F4; border-right: 8px solid transparent; transform: translateY(16px);"&gt;&lt;/div&gt; &lt;div style=" background-color: #F4F4F4; flex-grow: 0; height: 12px; width: 16px; transform: translateY(-4px);"&gt;&lt;/div&gt; &lt;div style=" width: 0; height: 0; border-top: 8px solid #F4F4F4; border-left: 8px solid transparent; transform: translateY(-4px) translateX(8px);"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;div style="display: flex; flex-direction: column; flex-grow: 1; justify-content: center; margin-bottom: 24px;"&gt; &lt;div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 224px;"&gt;&lt;/div&gt; &lt;div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 144px;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/a&gt;&lt;p style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;"&gt;&lt;a href="https://www.instagram.com/p/CqUJoFspUx3/?utm_source=ig_embed&amp;amp;utm_campaign=loading" style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none;" target="_blank"&gt;有賀 康顕(@c.hezou)がシェアした投稿&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt; &lt;script async src="//www.instagram.com/embed.js"&gt;&lt;/script&gt;</description></item><item><title>また一つ年を取った</title><link>https://chezo.uno/post/2023-01-27-age++/</link><pubDate>Fri, 27 Jan 2023 22:36:50 -0800</pubDate><guid>https://chezo.uno/post/2023-01-27-age++/</guid><description>&lt;p&gt;2023年も1月があっという間に過ぎてしまいました。
先日、誕生日を迎えて40歳の大台目前になりました。誕生日に行った歯医者にケーキを渡されたり、Appleサポートに2時間奪われたりとなかなかよくわからない忙しい日を過ごしました。
今週めちゃくちゃ忙しかったので、今日になってしまいました。&lt;/p&gt;
&lt;p&gt;例のリストはこちらです。
&lt;/p&gt;
&lt;p&gt;
のですが、カナダの永住権を取得しました。
カナダの永住権は5年更新で住み続けられるというもので、市民権とは違い選挙権はありません。が、それ以外は大抵OKというものです。&lt;/p&gt;
&lt;p&gt;で、誕生日の前日にPRカード（アメリカでいうグリーンカード）が届いたので、ようやくカナダ国外に出られるようになりました。
5月の松本でのRubyKaigiに久しぶりに参加しようと思いますので、皆さんよろしくお願いします。&lt;/p&gt;
&lt;p&gt;2021年の4月にバンクーバーにやってきて、もうすぐ2年ですがこちらにタイムラインをまとめました。
&lt;/p&gt;
&lt;p&gt;PR取得に向けて社内の動き出したのが2021年6月だったので、動き出しから1年半、Express Entryの申請からは1年4カ月かかったことになります。&lt;/p&gt;
&lt;p&gt;そもそも、社内のリロケーションを始めたのが2020年3月だったので、work permitで動き始めてから2年9カ月でここまで来たことになります。いやー、長かった。&lt;/p&gt;
&lt;p&gt;カナダのwork permitは通常会社に紐づいていますが、layoffされたりしても
。&lt;/p&gt;
&lt;p&gt;とはいえ、永住権を持っていれば首になっても例えば日本の会社の仕事をすることも問題なくなるわけですね。安心感がだいぶ違います。&lt;/p&gt;
&lt;p&gt;というのも、出身国ではない国にいると、いつ何時政府から追い出されるかというリスクを伴いながら生活をするので、目に見えないストレスが溜まります。
日本だったら、仕事が嫌になったら転職すればいいという気持ちになれますが、なかなか足場が固まらない状態では、日々何が起こるかわからないという不安を抱えながらただ耐えながら生きていくことになります。これが地味にきつかったです。&lt;/p&gt;
&lt;p&gt;今年は、Duolingoでのフランス語の勉強に加えて、ASLを学び始めたり、rebuildでmiyagawaさんが苦手だと言っていた競プロ的なところにもチャレンジしてみようかなーと思っています。&lt;/p&gt;
&lt;p&gt;帰国した際には、遊んでやってください。&lt;/p&gt;</description></item><item><title>Timeline for Canadian PR</title><link>https://chezo.uno/post/2023-01-27-timeline-for-canadian-pr/</link><pubDate>Fri, 27 Jan 2023 16:02:00 -0800</pubDate><guid>https://chezo.uno/post/2023-01-27-timeline-for-canadian-pr/</guid><description>&lt;h3 id="time-line-for-work-permit"&gt;Time line for work permit&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;2020/03 Started internal process for relocation&lt;/li&gt;
&lt;li&gt;2020/11 Got internal approval. Start working with the immigration agent&lt;/li&gt;
&lt;li&gt;2021/01/28 Submit documents for work permit&lt;/li&gt;
&lt;li&gt;2021/02/09 Received work permit with family&lt;/li&gt;
&lt;li&gt;2021/02/22 Received Travel Authorization&lt;/li&gt;
&lt;li&gt;2021/04/02 Relocated to Vancouver&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="time-line-for-pr"&gt;Time line for PR&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;2021/06/28 Ask HR to start process for PR&lt;/li&gt;
&lt;li&gt;2021/07/14 Submit documents for ECA (Educational Credential Assesment)&lt;/li&gt;
&lt;li&gt;2021/07/26 Received ECA&lt;/li&gt;
&lt;li&gt;2021/08/05 Submit Express Entry profile. Score was 337.&lt;/li&gt;
&lt;li&gt;2021/08/18 Register for BC PNP&lt;/li&gt;
&lt;li&gt;2021/08/24 BC PNP Invitation to Apply Notice&lt;/li&gt;
&lt;li&gt;2021/09/23 Missed BC PNP deadline because of the agent forgot it&lt;/li&gt;
&lt;li&gt;2021/09/29 2nd Register for BC PNP&lt;/li&gt;
&lt;li&gt;2021/10/05 2nd BC PNP Invitation to Apply Notice&lt;/li&gt;
&lt;li&gt;2021/10/06 Submit BC PNP&lt;/li&gt;
&lt;li&gt;2021/10/26 Received Express Entry Nomination. Score was 937.&lt;/li&gt;
&lt;li&gt;2021/10/28 Confirmation of Provincial Nomination&lt;/li&gt;
&lt;li&gt;2021/10/30 Took medical exam&lt;/li&gt;
&lt;li&gt;2021/11/22 Submit eAPR&lt;/li&gt;
&lt;li&gt;2022/07/26
&lt;ul&gt;
&lt;li&gt;Received Medical Request Notice while it had been submited&lt;/li&gt;
&lt;li&gt;Re-upload Medical Document&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;2022/12/15 Inviation PR Confirmation Portal&lt;/li&gt;
&lt;li&gt;2022/12/23
&lt;ul&gt;
&lt;li&gt;PR Portal Invitation &amp;amp; Submit&lt;/li&gt;
&lt;li&gt;Took Photo for PR at London Drugs&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;2022/12/29
&lt;ul&gt;
&lt;li&gt;Received eCoPR 🎉&lt;/li&gt;
&lt;li&gt;Submited MSP card status change&lt;/li&gt;
&lt;li&gt;Recreate CRA account&lt;/li&gt;
&lt;li&gt;Request new SIN number&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;2023/01/9-16 Received new SIN number&lt;/li&gt;
&lt;li&gt;2023/01/24 PR card received. Everything completed.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;記事が気に入ったらbuymeacoffeeでサポートしていただけると嬉しいです&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>iOSでの休暇中の仕事の通知管理</title><link>https://chezo.uno/post/2023-01-10-ios-notification-management/</link><pubDate>Tue, 10 Jan 2023 16:58:00 -0800</pubDate><guid>https://chezo.uno/post/2023-01-10-ios-notification-management/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="https://images.unsplash.com/photo-1504507926084-34cf0b939964?ixlib=rb-4.0.3&amp;amp;q=80&amp;amp;fm=jpg&amp;amp;crop=entropy&amp;amp;cs=tinysrgb" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;iOS15から集中モードが加わって、その中でもパーソナル集中モードというのがあったので、年末年始の休暇に試してみた。&lt;/p&gt;
&lt;p&gt;簡単に言うと、パーソナル集中モードでは業務用のアプリからの通知をオフにできるというのが一番のメリットだ。&lt;/p&gt;
&lt;p&gt;以下の記事に大まかな概要が書いてあってわかりやすい。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;Androidではwork profileがあるので、
が、iOSではごちゃまぜの世界観なのがとても厳しいと思っていたところだった。&lt;/p&gt;
&lt;p&gt;実際に試してみた結果、いくつかの問題が出てきた。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;GmailやSlackなど仕事でもプライベートでも使っているアプリで通知がコントロールしきれない&lt;/li&gt;
&lt;li&gt;通知を知らせないアプリに指定しても、対応していないため突き抜けてくる（Confluence、お前のことだぞ）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;2個目は仕方がないので通知を完全にオフにして心の平穏を保つことにした。別にAtlassianアプリからの通知はSlack連携とかもしてるし不要だと気づいた。&lt;/p&gt;
&lt;p&gt;1個目は、Gmailに関しては一応アカウントごとに通知をオフする機能があったので、それでオフにした。ただし、これだと「すべての受信トレイ」で突き抜けてくるので、ぐっと堪える必要がある。正直、気持ち悪い。&lt;/p&gt;
&lt;p&gt;Slackについては、通知のスヌーズはあるけれど、これやってもバッジの数がぐんぐん成長してmentionを受けるたびに数が増えてきて気持ちが悪いので、サポートに問い合わせたところ、その組織からsign outしてください、とのことだった。そうですか、と思いながらサインアウトしたけど、機能要望は出しておいた。&lt;/p&gt;
&lt;p&gt;Gmailもすべての受信トレイのバッジ出すならログアウトするほうがいいのかもしれない。でも、毎週末ログアウトしてサインインするのはとてもじゃないけれどやってられない。&lt;/p&gt;
&lt;p&gt;なお、Apple製のメール、カレンダーなどのアプリはアカウントごとにフィルターする機能がある（のに今気づいた）ので、これを設定すれば通知が来なくなりそうだ。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;Android版Apple Musicといい、iOS版Google Podcastといい、相手のプラットフォームだと痒いところに手が届かなくなるのは、宿命なのだろう。&lt;/p&gt;
&lt;p&gt;サードパーティ製のアプリは、気になるようであれば都度サインアウトして復帰時にサインインするしかやはりなさそうである。ただし、某社のように休日に対応しないとレイオフが走るような会社の人には使えないだろう。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;記事が気に入ったらbuymeacoffeeでサポートしていただけると嬉しいです&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>2022年を振り返って</title><link>https://chezo.uno/post/2022-12-30-2022-year-in-review/</link><pubDate>Fri, 30 Dec 2022 14:59:13 -0800</pubDate><guid>https://chezo.uno/post/2022-12-30-2022-year-in-review/</guid><description>&lt;p&gt;
に引き続き、2022年の振り返りです。
RTA in Japanに触発されてなぜか
を見ながら書いています。&lt;/p&gt;
&lt;p&gt;クリスマスに胃腸をやられて一週間弱ずっと寝込んでいました。ようやくPCの前に座れるくらいの元気が戻ってきました。&lt;/p&gt;
&lt;p&gt;今年はバンクーバー生活も二年目で色々と落ち着いたかと思いきや変化も大きい年でした。&lt;/p&gt;
&lt;h2 id="ossや対外活動"&gt;OSSや対外活動&lt;/h2&gt;
&lt;p&gt;振り返ってみると、おかげさまで今年はちょこちょこといろいろなところで学会活動や、イベント登壇などをしたりできました。&lt;/p&gt;
&lt;p&gt;MLSEのワーキンググループは無事次世代に引き継ぐことができたかなあと思ってほっとしています。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2022-07-15-finished-mlse-infra-wg/" data-iframely-url="//iframely.net/MMOIXdw"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js"&gt;&lt;/script&gt;
&lt;p&gt;ばんくしさんからお声がけいただいて、MLエンジニアのキャリアについて放談させていただきました。
大変準備してくださっていてとても助かりましたし、自分のキャリアを振り返る良いきっかけになりました。
ありがとうございます。&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/yiqVO3vDhvE?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;OSS活動も細かなレコメンド用ツールを作ってリリースしたり、sqllineage や sqlparse の upstream に貢献したりできてよかったです。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2022-01-25-hugo-content-based-recommendation/" data-iframely-url="//iframely.net/qxBEaLt?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js"&gt;&lt;/script&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2022-05-05-sqllineage-with-digdag-log/" data-iframely-url="//iframely.net/jDASwCZ?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js"&gt;&lt;/script&gt;
&lt;p&gt;Netlify CMSがメンテナーが転職したため、Hugo + Netlify CMSの構成が日本語では使い物にならないことが確定したので、そこだけが頭を悩ませています。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2022-12-16-bump-wowchemy-v570/" data-iframely-url="//iframely.net/9gEWE0R"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js"&gt;&lt;/script&gt;
&lt;p&gt;また、不義理をしていた副業社はいったん契約を解除して仕切り直しとなりました。&lt;/p&gt;
&lt;h2 id="仕事"&gt;仕事&lt;/h2&gt;
&lt;p&gt;仕事は昨年とチーム変わらず、西海岸メンバーは1人増えたので大変心の余裕が増えています。
RailsとSQLにdigdagがりがりみたいな生活から、後半はDynamoDBとサーバーサイドKotlin、少しApache Flinkみたいな感じにシフトしています。
新しく入った若いメンバーに、一貫性壊れてませんか？とか言われながら久しぶりのJVM言語にあくせくしています。&lt;/p&gt;
&lt;p&gt;チームの仕事はCookpadでもお世話になった青木峰郎さんのこのトークがわかりやすいかなと思います。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;しかしこのチーム、Rubyコミッタが現旧4人いてすごいですね&amp;hellip;。n月刊ラムダノート著者も2人います。すごい。&lt;/p&gt;
&lt;h2 id="podcast"&gt;Podcast&lt;/h2&gt;
&lt;p&gt;ご縁があってSennaさんとYuyaさんのホストしている、バンクーバーのえんじに屋 Podcastに出演させていただきました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;また、久しぶりに自分のPodcastも更新しました。ニュージーランドでCGアーティストをしているTahkoさんとの海外トークをさせていただきました。Avatarの続編は映画館で見たほうが良い美しい映像となっているようなので、是非。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://randomfacts.club/6" data-iframely-url="//iframely.net/RW84IV1"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js"&gt;&lt;/script&gt;
&lt;h2 id="プライベート"&gt;プライベート&lt;/h2&gt;
&lt;p&gt;詳細は別途まとめようと思いますが、ひとまずeCoPRが出ました。これで永住権（≠市民権）を獲得したことになるので、5年更新で滞在することができます。よかった。&lt;/p&gt;
&lt;p&gt;また、これに合わせて副業等を前よりもやりやすくなったかなと思います。もしご相談があればメールやDMなどでご連絡ください。&lt;/p&gt;
&lt;p&gt;takuti先生と現地の友人にも誘われてハイキングに行くようにもなりました。一回目が残雪残る雪山でしたが、あれくらいなら行けるという自信をもらいました。マイクロスパイクやスノーシューが欲しい今日この頃です。&lt;/p&gt;
&lt;p&gt;日本はモンベルがあるのが安くてよい製品を手軽に手に入れられてよいですね。&lt;/p&gt;
&lt;blockquote class="instagram-media" data-instgrm-captioned data-instgrm-permalink="https://www.instagram.com/p/ChPr-CULeGo/?utm_source=ig_embed&amp;amp;utm_campaign=loading" data-instgrm-version="14" style=" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:540px; min-width:326px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);"&gt;&lt;div style="padding:16px;"&gt; &lt;a href="https://www.instagram.com/p/ChPr-CULeGo/?utm_source=ig_embed&amp;amp;utm_campaign=loading" style=" background:#FFFFFF; line-height:0; padding:0 0; text-align:center; text-decoration:none; width:100%;" target="_blank"&gt; &lt;div style=" display: flex; flex-direction: row; align-items: center;"&gt; &lt;div style="background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 40px; margin-right: 14px; width: 40px;"&gt;&lt;/div&gt; &lt;div style="display: flex; flex-direction: column; flex-grow: 1; justify-content: center;"&gt; &lt;div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 100px;"&gt;&lt;/div&gt; &lt;div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 60px;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="padding: 19% 0;"&gt;&lt;/div&gt; &lt;div style="display:block; height:50px; margin:0 auto 12px; width:50px;"&gt;&lt;svg width="50px" height="50px" viewBox="0 0 60 60" version="1.1" xmlns="https://www.w3.org/2000/svg" xmlns:xlink="https://www.w3.org/1999/xlink"&gt;&lt;g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"&gt;&lt;g transform="translate(-511.000000, -20.000000)" fill="#000000"&gt;&lt;g&gt;&lt;path d="M556.869,30.41 C554.814,30.41 553.148,32.076 553.148,34.131 C553.148,36.186 554.814,37.852 556.869,37.852 C558.924,37.852 560.59,36.186 560.59,34.131 C560.59,32.076 558.924,30.41 556.869,30.41 M541,60.657 C535.114,60.657 530.342,55.887 530.342,50 C530.342,44.114 535.114,39.342 541,39.342 C546.887,39.342 551.658,44.114 551.658,50 C551.658,55.887 546.887,60.657 541,60.657 M541,33.886 C532.1,33.886 524.886,41.1 524.886,50 C524.886,58.899 532.1,66.113 541,66.113 C549.9,66.113 557.115,58.899 557.115,50 C557.115,41.1 549.9,33.886 541,33.886 M565.378,62.101 C565.244,65.022 564.756,66.606 564.346,67.663 C563.803,69.06 563.154,70.057 562.106,71.106 C561.058,72.155 560.06,72.803 558.662,73.347 C557.607,73.757 556.021,74.244 553.102,74.378 C549.944,74.521 548.997,74.552 541,74.552 C533.003,74.552 532.056,74.521 528.898,74.378 C525.979,74.244 524.393,73.757 523.338,73.347 C521.94,72.803 520.942,72.155 519.894,71.106 C518.846,70.057 518.197,69.06 517.654,67.663 C517.244,66.606 516.755,65.022 516.623,62.101 C516.479,58.943 516.448,57.996 516.448,50 C516.448,42.003 516.479,41.056 516.623,37.899 C516.755,34.978 517.244,33.391 517.654,32.338 C518.197,30.938 518.846,29.942 519.894,28.894 C520.942,27.846 521.94,27.196 523.338,26.654 C524.393,26.244 525.979,25.756 528.898,25.623 C532.057,25.479 533.004,25.448 541,25.448 C548.997,25.448 549.943,25.479 553.102,25.623 C556.021,25.756 557.607,26.244 558.662,26.654 C560.06,27.196 561.058,27.846 562.106,28.894 C563.154,29.942 563.803,30.938 564.346,32.338 C564.756,33.391 565.244,34.978 565.378,37.899 C565.522,41.056 565.552,42.003 565.552,50 C565.552,57.996 565.522,58.943 565.378,62.101 M570.82,37.631 C570.674,34.438 570.167,32.258 569.425,30.349 C568.659,28.377 567.633,26.702 565.965,25.035 C564.297,23.368 562.623,22.342 560.652,21.575 C558.743,20.834 556.562,20.326 553.369,20.18 C550.169,20.033 549.148,20 541,20 C532.853,20 531.831,20.033 528.631,20.18 C525.438,20.326 523.257,20.834 521.349,21.575 C519.376,22.342 517.703,23.368 516.035,25.035 C514.368,26.702 513.342,28.377 512.574,30.349 C511.834,32.258 511.326,34.438 511.181,37.631 C511.035,40.831 511,41.851 511,50 C511,58.147 511.035,59.17 511.181,62.369 C511.326,65.562 511.834,67.743 512.574,69.651 C513.342,71.625 514.368,73.296 516.035,74.965 C517.703,76.634 519.376,77.658 521.349,78.425 C523.257,79.167 525.438,79.673 528.631,79.82 C531.831,79.965 532.853,80.001 541,80.001 C549.148,80.001 550.169,79.965 553.369,79.82 C556.562,79.673 558.743,79.167 560.652,78.425 C562.623,77.658 564.297,76.634 565.965,74.965 C567.633,73.296 568.659,71.625 569.425,69.651 C570.167,67.743 570.674,65.562 570.82,62.369 C570.966,59.17 571,58.147 571,50 C571,41.851 570.966,40.831 570.82,37.631"&gt;&lt;/path&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/div&gt;&lt;div style="padding-top: 8px;"&gt; &lt;div style=" color:#3897f0; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:550; line-height:18px;"&gt;View this post on Instagram&lt;/div&gt;&lt;/div&gt;&lt;div style="padding: 12.5% 0;"&gt;&lt;/div&gt; &lt;div style="display: flex; flex-direction: row; margin-bottom: 14px; align-items: center;"&gt;&lt;div&gt; &lt;div style="background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(0px) translateY(7px);"&gt;&lt;/div&gt; &lt;div style="background-color: #F4F4F4; height: 12.5px; transform: rotate(-45deg) translateX(3px) translateY(1px); width: 12.5px; flex-grow: 0; margin-right: 14px; margin-left: 2px;"&gt;&lt;/div&gt; &lt;div style="background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(9px) translateY(-18px);"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-left: 8px;"&gt; &lt;div style=" background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 20px; width: 20px;"&gt;&lt;/div&gt; &lt;div style=" width: 0; height: 0; border-top: 2px solid transparent; border-left: 6px solid #f4f4f4; border-bottom: 2px solid transparent; transform: translateX(16px) translateY(-4px) rotate(30deg)"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-left: auto;"&gt; &lt;div style=" width: 0px; border-top: 8px solid #F4F4F4; border-right: 8px solid transparent; transform: translateY(16px);"&gt;&lt;/div&gt; &lt;div style=" background-color: #F4F4F4; flex-grow: 0; height: 12px; width: 16px; transform: translateY(-4px);"&gt;&lt;/div&gt; &lt;div style=" width: 0; height: 0; border-top: 8px solid #F4F4F4; border-left: 8px solid transparent; transform: translateY(-4px) translateX(8px);"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;div style="display: flex; flex-direction: column; flex-grow: 1; justify-content: center; margin-bottom: 24px;"&gt; &lt;div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 224px;"&gt;&lt;/div&gt; &lt;div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 144px;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/a&gt;&lt;p style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;"&gt;&lt;a href="https://www.instagram.com/p/ChPr-CULeGo/?utm_source=ig_embed&amp;amp;utm_campaign=loading" style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none;" target="_blank"&gt;A post shared by 有賀 康顕 (@c.hezou)&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt; &lt;script async src="//www.instagram.com/embed.js"&gt;&lt;/script&gt;
&lt;p&gt;また、家族に犬が増えたので、犬連れでキャンプデビューもしました。ギアを買いそろえたので来年もまた行きたいです。&lt;/p&gt;
&lt;blockquote class="instagram-media" data-instgrm-captioned data-instgrm-permalink="https://www.instagram.com/p/ChGfb1TrKj8/?utm_source=ig_embed&amp;amp;utm_campaign=loading" data-instgrm-version="14" style=" background:#FFF; border:0; border-radius:3px; box-shadow:0 0 1px 0 rgba(0,0,0,0.5),0 1px 10px 0 rgba(0,0,0,0.15); margin: 1px; max-width:540px; min-width:326px; padding:0; width:99.375%; width:-webkit-calc(100% - 2px); width:calc(100% - 2px);"&gt;&lt;div style="padding:16px;"&gt; &lt;a href="https://www.instagram.com/p/ChGfb1TrKj8/?utm_source=ig_embed&amp;amp;utm_campaign=loading" style=" background:#FFFFFF; line-height:0; padding:0 0; text-align:center; text-decoration:none; width:100%;" target="_blank"&gt; &lt;div style=" display: flex; flex-direction: row; align-items: center;"&gt; &lt;div style="background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 40px; margin-right: 14px; width: 40px;"&gt;&lt;/div&gt; &lt;div style="display: flex; flex-direction: column; flex-grow: 1; justify-content: center;"&gt; &lt;div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 100px;"&gt;&lt;/div&gt; &lt;div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 60px;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="padding: 19% 0;"&gt;&lt;/div&gt; &lt;div style="display:block; height:50px; margin:0 auto 12px; width:50px;"&gt;&lt;svg width="50px" height="50px" viewBox="0 0 60 60" version="1.1" xmlns="https://www.w3.org/2000/svg" xmlns:xlink="https://www.w3.org/1999/xlink"&gt;&lt;g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"&gt;&lt;g transform="translate(-511.000000, -20.000000)" fill="#000000"&gt;&lt;g&gt;&lt;path d="M556.869,30.41 C554.814,30.41 553.148,32.076 553.148,34.131 C553.148,36.186 554.814,37.852 556.869,37.852 C558.924,37.852 560.59,36.186 560.59,34.131 C560.59,32.076 558.924,30.41 556.869,30.41 M541,60.657 C535.114,60.657 530.342,55.887 530.342,50 C530.342,44.114 535.114,39.342 541,39.342 C546.887,39.342 551.658,44.114 551.658,50 C551.658,55.887 546.887,60.657 541,60.657 M541,33.886 C532.1,33.886 524.886,41.1 524.886,50 C524.886,58.899 532.1,66.113 541,66.113 C549.9,66.113 557.115,58.899 557.115,50 C557.115,41.1 549.9,33.886 541,33.886 M565.378,62.101 C565.244,65.022 564.756,66.606 564.346,67.663 C563.803,69.06 563.154,70.057 562.106,71.106 C561.058,72.155 560.06,72.803 558.662,73.347 C557.607,73.757 556.021,74.244 553.102,74.378 C549.944,74.521 548.997,74.552 541,74.552 C533.003,74.552 532.056,74.521 528.898,74.378 C525.979,74.244 524.393,73.757 523.338,73.347 C521.94,72.803 520.942,72.155 519.894,71.106 C518.846,70.057 518.197,69.06 517.654,67.663 C517.244,66.606 516.755,65.022 516.623,62.101 C516.479,58.943 516.448,57.996 516.448,50 C516.448,42.003 516.479,41.056 516.623,37.899 C516.755,34.978 517.244,33.391 517.654,32.338 C518.197,30.938 518.846,29.942 519.894,28.894 C520.942,27.846 521.94,27.196 523.338,26.654 C524.393,26.244 525.979,25.756 528.898,25.623 C532.057,25.479 533.004,25.448 541,25.448 C548.997,25.448 549.943,25.479 553.102,25.623 C556.021,25.756 557.607,26.244 558.662,26.654 C560.06,27.196 561.058,27.846 562.106,28.894 C563.154,29.942 563.803,30.938 564.346,32.338 C564.756,33.391 565.244,34.978 565.378,37.899 C565.522,41.056 565.552,42.003 565.552,50 C565.552,57.996 565.522,58.943 565.378,62.101 M570.82,37.631 C570.674,34.438 570.167,32.258 569.425,30.349 C568.659,28.377 567.633,26.702 565.965,25.035 C564.297,23.368 562.623,22.342 560.652,21.575 C558.743,20.834 556.562,20.326 553.369,20.18 C550.169,20.033 549.148,20 541,20 C532.853,20 531.831,20.033 528.631,20.18 C525.438,20.326 523.257,20.834 521.349,21.575 C519.376,22.342 517.703,23.368 516.035,25.035 C514.368,26.702 513.342,28.377 512.574,30.349 C511.834,32.258 511.326,34.438 511.181,37.631 C511.035,40.831 511,41.851 511,50 C511,58.147 511.035,59.17 511.181,62.369 C511.326,65.562 511.834,67.743 512.574,69.651 C513.342,71.625 514.368,73.296 516.035,74.965 C517.703,76.634 519.376,77.658 521.349,78.425 C523.257,79.167 525.438,79.673 528.631,79.82 C531.831,79.965 532.853,80.001 541,80.001 C549.148,80.001 550.169,79.965 553.369,79.82 C556.562,79.673 558.743,79.167 560.652,78.425 C562.623,77.658 564.297,76.634 565.965,74.965 C567.633,73.296 568.659,71.625 569.425,69.651 C570.167,67.743 570.674,65.562 570.82,62.369 C570.966,59.17 571,58.147 571,50 C571,41.851 570.966,40.831 570.82,37.631"&gt;&lt;/path&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/div&gt;&lt;div style="padding-top: 8px;"&gt; &lt;div style=" color:#3897f0; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:550; line-height:18px;"&gt;View this post on Instagram&lt;/div&gt;&lt;/div&gt;&lt;div style="padding: 12.5% 0;"&gt;&lt;/div&gt; &lt;div style="display: flex; flex-direction: row; margin-bottom: 14px; align-items: center;"&gt;&lt;div&gt; &lt;div style="background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(0px) translateY(7px);"&gt;&lt;/div&gt; &lt;div style="background-color: #F4F4F4; height: 12.5px; transform: rotate(-45deg) translateX(3px) translateY(1px); width: 12.5px; flex-grow: 0; margin-right: 14px; margin-left: 2px;"&gt;&lt;/div&gt; &lt;div style="background-color: #F4F4F4; border-radius: 50%; height: 12.5px; width: 12.5px; transform: translateX(9px) translateY(-18px);"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-left: 8px;"&gt; &lt;div style=" background-color: #F4F4F4; border-radius: 50%; flex-grow: 0; height: 20px; width: 20px;"&gt;&lt;/div&gt; &lt;div style=" width: 0; height: 0; border-top: 2px solid transparent; border-left: 6px solid #f4f4f4; border-bottom: 2px solid transparent; transform: translateX(16px) translateY(-4px) rotate(30deg)"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="margin-left: auto;"&gt; &lt;div style=" width: 0px; border-top: 8px solid #F4F4F4; border-right: 8px solid transparent; transform: translateY(16px);"&gt;&lt;/div&gt; &lt;div style=" background-color: #F4F4F4; flex-grow: 0; height: 12px; width: 16px; transform: translateY(-4px);"&gt;&lt;/div&gt; &lt;div style=" width: 0; height: 0; border-top: 8px solid #F4F4F4; border-left: 8px solid transparent; transform: translateY(-4px) translateX(8px);"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;div style="display: flex; flex-direction: column; flex-grow: 1; justify-content: center; margin-bottom: 24px;"&gt; &lt;div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; margin-bottom: 6px; width: 224px;"&gt;&lt;/div&gt; &lt;div style=" background-color: #F4F4F4; border-radius: 4px; flex-grow: 0; height: 14px; width: 144px;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/a&gt;&lt;p style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; line-height:17px; margin-bottom:0; margin-top:8px; overflow:hidden; padding:8px 0 7px; text-align:center; text-overflow:ellipsis; white-space:nowrap;"&gt;&lt;a href="https://www.instagram.com/p/ChGfb1TrKj8/?utm_source=ig_embed&amp;amp;utm_campaign=loading" style=" color:#c9c8cd; font-family:Arial,sans-serif; font-size:14px; font-style:normal; font-weight:normal; line-height:17px; text-decoration:none;" target="_blank"&gt;A post shared by 有賀 康顕 (@c.hezou)&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt; &lt;script async src="//www.instagram.com/embed.js"&gt;&lt;/script&gt;
&lt;p&gt;しかし、改めて気づいたのがバンクーバーは水がおいしいからか、地酒もありクラフトビールも多く、ワインもおいしい。果物もリンゴやブドウ、ブルーベリー、イチゴなどが豊富でさくらんぼもあるなど非常にローカルの恵が豊かでありがたいです。&lt;/p&gt;
&lt;p&gt;インビザラインも始めたのですが、歯科衛生士が1.5時間首で支える姿勢で歯にいろいろ取り付けをやったため、頚椎椎間板ヘルニアが再発しました。今は少し良くなってきていますが、勘弁してほしいです。お茶も飲めないし22時間装着しろということで、かなりQoL下がっていますが、お金払った分はなんとかやり切りたいと思います。&lt;/p&gt;
&lt;h2 id="2023年に向けて"&gt;2023年に向けて&lt;/h2&gt;
&lt;p&gt;まだ、PRカードが届いていないので日本への渡航ができませんが、運転免許の更新のために一度帰国する予定です。
よければごはんやらビールやら飲みましょう。&lt;/p&gt;</description></item><item><title>Wowchemyをv5.5.0からv5.7.0に上げた</title><link>https://chezo.uno/post/2022-12-16-bump-wowchemy-v570/</link><pubDate>Fri, 16 Dec 2022 17:23:22 -0800</pubDate><guid>https://chezo.uno/post/2022-12-16-bump-wowchemy-v570/</guid><description>&lt;p&gt;毎年アドベントカレンダーの時期にHugoのテーマであるWowchemy (旧 Academic) のバージョンを上げています。&lt;/p&gt;
&lt;p&gt;今年は、唯一参加したアドベントカレンダーもNotionで済ませてしまったので、恩恵にはあずかれませんでしたが、それでもまあ定期アップデートは大事ですね。&lt;/p&gt;
&lt;p&gt;Wowchemyは、スタートするときはサクッとstarter kitから作成できるのですが、変更に追従し続けるのが結構厄介で破壊的変更をガンガン入れてきます。が、ドキュメントは最新のバージョンのものしかなく、 Release noteを見てあとはソースコードを見る羽目になります。正直面倒くさい。&lt;/p&gt;
&lt;p&gt;というわけで、今回v5.5.0からv5.6.0、v5.7.0に上げたので何をしたかを備忘録的にメモしておきます。&lt;/p&gt;
&lt;h3 id="v560"&gt;v5.6.0&lt;/h3&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://github.com/chezou/chezo.uno/pull/42" data-iframely-url="//iframely.net/owZY8PH?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js"&gt;&lt;/script&gt;
&lt;p&gt;v5.5.0からは結構大きな変更が入りました&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;config.yaml (or toml) や params.yaml の構造が大幅に変わった
&lt;ul&gt;
&lt;li&gt;そのままだと検索、Gravaterなどが無効になるので注意&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;go.modの依存するmoduleパスの変更&lt;/li&gt;
&lt;li&gt;Algoliaを検索に使うと壊れる&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;config,params.yamlの変更は、特にどこにも記載がないのでソース読みながら根性で直していきます。特に、 “features” 系は適切に設定しないと、検索が消えたりして大惨事なのでお気をつけてください&lt;/p&gt;
&lt;p&gt;多分、rootの設定はいくつか間違っている気もしますが、もう諦めました。&lt;/p&gt;
&lt;p&gt;しかし、tomlの構造をパースするのは僕には難しいのでyamlのほうが楽かもしれませんね。&lt;/p&gt;
&lt;p&gt;2個目については、ローカルで試すときは例によって &lt;code&gt;hugo mod get&lt;/code&gt; をすればよいです。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hugo mod get github.com/wowchemy/wowchemy-hugo-themes/modules/wowchemy/v5@v5.6.0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Algoliaは試してみたのですが、エラーが止まらなくて諦めました。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://github.com/chezou/chezo.uno/pull/37" data-iframely-url="//iframely.net/ZR4gvfz?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js"&gt;&lt;/script&gt;
&lt;h3 id="v570"&gt;v5.7.0&lt;/h3&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://github.com/chezou/chezo.uno/pull/43" data-iframely-url="//iframely.net/iruvBHp?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js"&gt;&lt;/script&gt;
&lt;p&gt;特に大きな影響もなくそのままいけました。過去一楽なアップグレードでした。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;hugo mod get&lt;/code&gt; も6を7に変えるだけです。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hugo mod get github.com/wowchemy/wowchemy-hugo-themes/modules/wowchemy/v5@v5.7.0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="algoliaを試したけど挫折した"&gt;Algoliaを試したけど挫折した&lt;/h3&gt;
&lt;p&gt;v5.6.0にも書いたのですが、Algoliaを試して辞めました。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://github.com/chezou/chezo.uno/pull/41" data-iframely-url="//iframely.net/wyFUD6u?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js"&gt;&lt;/script&gt;
&lt;p&gt;検索自体はよさげなんですが&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hugoの生成するindex.jsonを取り込むとMedium由来の &lt;code&gt;--&lt;/code&gt; みたいなハイフンが複数つながるURLが &lt;code&gt;-&lt;/code&gt; と一個に正規化されたperemalinkと解釈して、無限にredirectsを設定する羽目になる&lt;/li&gt;
&lt;li&gt;Algolia Crawlerを使うNetlify pluginがあるのですが、それを使ってinstantsearchから検索をすると検索結果が空になる&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;特に後者が致命的でした。なんか、便利そうだけど壊れてて使えないという体験がつらかったので諦めました。&lt;/p&gt;
&lt;p&gt;サポートに問い合わせをすればいいのかもしれませんが、もうその気力もなく…。&lt;/p&gt;
&lt;p&gt;また、来年Wowchemyのアップグレードをしたいと思います。&lt;/p&gt;</description></item><item><title>日本のサービス解約RTA～カナダ編～</title><link>https://chezo.uno/post/2022-11-28-cancel-japanese-service/</link><pubDate>Mon, 28 Nov 2022 16:41:00 -0800</pubDate><guid>https://chezo.uno/post/2022-11-28-cancel-japanese-service/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="https://images.unsplash.com/photo-1660717328578-12f11e8473bf?ixlib=rb-4.0.3&amp;amp;q=80&amp;amp;fm=jpg&amp;amp;crop=entropy&amp;amp;cs=tinysrgb" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;これは
の6日目の記事です。&lt;/p&gt;
&lt;p&gt;昨日は
さんでした。&lt;/p&gt;
&lt;p&gt;さて、
と呼ばれる現象については皆様もご存知かと思います。日本にいるとあのゲームが買えない、このハードが買えない、このサービスが契約できないというアレです。&lt;/p&gt;
&lt;p&gt;日本のサービスもご多分に漏れず、そういうケースがままあります。&lt;/p&gt;
&lt;p&gt;というわけで、カナダで残念ながら解約した日本のサービスたちとその難易度を紹介したいと思います。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;楽天モバイル (おま国なし)&lt;/li&gt;
&lt;li&gt;Disney+ (日本)&lt;/li&gt;
&lt;li&gt;Kyash&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="楽天モバイル-難易度--所要時間10分"&gt;楽天モバイル (難易度 ★☆☆☆☆ 所要時間10分)&lt;/h2&gt;
&lt;p&gt;楽天モバイルは素晴らしい携帯キャリアです。海外でも2GB 980円で通信ができるし、日本の電話番号やSMSも使えるので愛用しています。&lt;/p&gt;
&lt;p&gt;無料で維持できるときに予備のAndroidの番号を発行していたのですが、流石に月額無料は無理になったので、1回線解約しました。&lt;/p&gt;
&lt;p&gt;解約導線がパッとわからなかったので、Googleで
に到達してアプリから解約すればできました。&lt;/p&gt;
&lt;p&gt;おま国もなく、とても簡単にできました。素晴らしい。&lt;/p&gt;
&lt;p&gt;なお、機種変更したときにeSIMの移行がクイック転送に失敗しましたが、eSIM再発行すればよかったので、事なきを得ました。&lt;/p&gt;
&lt;h2 id="disney日本-難易度--所要時間30分"&gt;Disney+(日本) (難易度 ★★☆☆☆ 所要時間30分)&lt;/h2&gt;
&lt;p&gt;日本で契約したDisney+ですが、Avengersを一気に履修するなどいろいろなコンテンツにもお世話になっていました。ですが、カナダで契約し直したほうがいいなと思い解約をしました。&lt;/p&gt;
&lt;p&gt;解約の動機の一つとして、日本のサービスなので日本のIPから接続しないと見れないという問題がありました。そうです、おま国です。&lt;/p&gt;
&lt;p&gt;仕方ないなー、と思ってGoogleで「ディズニープラス」とでも検索してたどり着いたのが、
。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Untitled"
srcset="https://chezo.uno/post/2022-11-28-cancel-japanese-service/Untitled_hu_aec15cb62d1e92c6.webp 320w, https://chezo.uno/post/2022-11-28-cancel-japanese-service/Untitled_hu_e468aca83721b5b.webp 480w, https://chezo.uno/post/2022-11-28-cancel-japanese-service/Untitled_hu_6e05da3790891492.webp 696w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2022-11-28-cancel-japanese-service/Untitled_hu_aec15cb62d1e92c6.webp"
width="696"
height="277"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;解約はおろかアクセスすらさせてもらえません。Cloud Frontレベルで弾かれています。マジか。&lt;/p&gt;
&lt;p&gt;まあ、仕方がないのでこういうときのためのVPNを使い事なきを得ました。&lt;/p&gt;
&lt;p&gt;余談ですが、日本のいろいろな行政サービスは、日本に親族知人がいることを前提としており、なかなかハードルが高くて笑ってしまいます。戸籍謄本を取得するときに、現金での支払のみ（昔は国際郵便為替なるものでギリギリできた）なので、日本に縁者がいない場合は行政書士にお願いする必要があるそうです。日本にVPNサーバーは立てておかないといけないんですねぇ。&lt;/p&gt;
&lt;p&gt;TP-Linkの適当な無線LANルーターは、OpenVPN機能もついているのでおすすめです。TP-Linkアカウントがあれば、遠隔からもファームウェア更新ができます。すごいですね。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;みなさんも、念のため実家等にVPNサーバーを置いておきましょう。&lt;/p&gt;
&lt;h2 id="kyash-難易度--所要時間-約2日"&gt;Kyash (難易度 ★★★★☆ 所要時間 約2日)&lt;/h2&gt;
&lt;p&gt;日本にいたときは割り勘やらAliExpressの支払いなどでお世話になっていたKyashですが、ある日アプリを開いてログインしてみると利用制限されてしまいました。1年ぶり二度目の利用制限です。&lt;/p&gt;
&lt;p&gt;1年前のときは、サポートに問い合わせたら翌営業日には復活したのですが、今回はサポートから現住所が確認できる本人確認書類（免許証、マイナンバーカード、運転経歴証明書、在留カード、住民票の写し）を提出し、居住国を申告してください、と言われました。&lt;/p&gt;
&lt;p&gt;ところで、カナダのBC州では運転免許証はこちらのに切り替えるときに没収される仕組みです。マイナンバーカードもまあカードはあるけど、すでに署名は使えない状態になっています。&lt;/p&gt;
&lt;p&gt;素直に居住国を申告し、毎回本人確認書類提出は面倒なので退会したいと連絡したところ、利用規約
で「日本居住者に限り提供するサービスです」 と書かれているため利用できないという返信が来ました。&lt;/p&gt;
&lt;p&gt;なるほどね、そうですか。&lt;/p&gt;
&lt;p&gt;で、「利用制限中は退会の手続きができない。公的書類等を提示しないと制限中のままにする。退会したい場合は帰国後にサポートに問い合わせてね」という旨のご連絡をいただきました。&lt;/p&gt;
&lt;p&gt;マジかー、帰国費用請求できるかな？などという邪な気持ちも発生しましたが、念のためにスキャンしておいた免許証の画像をお送りして、翌営業日には担当部署に確認していただき、更にもうその翌日、退会処理が無事なされました。めでたしめでたし。&lt;/p&gt;
&lt;p&gt;不正アクセス対策やマネーロンダリング対策が厳しくなっているのはわかります。本人確認書類で免許証やマイナンバーカード必須にすると、それを没収されるケースでにっちもさっちもいかなくなるんですが、エッジケース過ぎて普通気づかないですよねぇ。&lt;/p&gt;
&lt;p&gt;みなさんも、念のため本人確認書類は没収される前に画像でスキャンしておきましょう。&lt;/p&gt;
&lt;h2 id="番外編-日本の郵便の転送届難易度-所要時間-1週間"&gt;番外編: 日本の郵便の転送届（難易度★★★★★ 所要時間 1週間）&lt;/h2&gt;
&lt;p&gt;解約ではないですが、日本の郵便物を念のため実家に転送するように設定していました。出る時は日本にいたのですが、オンラインで設定できて便利だなーと思って今年も今年も延長しようとした所、大きな問題が。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;マイナンバーカードの読み取り！または本人確認書類を写真で読み込み！いわゆるeKYCが導入されました。eKYCのポイントは住所も大抵チェックされるのと物理カードが必要なことです。免許証もないし、マイナンバーカードも実家の住所にはしていません。&lt;/p&gt;
&lt;p&gt;なお、葉書での提出や郵便局への届出はプロセスは変わっていないので、実家の親にお願いをしてことなきを得ました。うーん、最悪そのために帰国するとか考えると頭が痛いですねえ。&lt;/p&gt;
&lt;p&gt;マイナンバーカードが2024年までには海外在住者にも発行できるようになるので2023年には色々と便利になるかも？&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h2 id="カナダのサービスのおま国はないのか"&gt;カナダのサービスのおま国はないのか？&lt;/h2&gt;
&lt;p&gt;あります。Android TVでカナダのCBC（中部日本放送ではない）など放送局のアプリをダウンロードしようとしたときに、日本のGoogleアカウントだとダウンロードできなくて詰んだりします。そういうときは、iOSでカナダのApp StoreからダウンロードしてCastしたりと工夫が必要になってきます。&lt;/p&gt;
&lt;p&gt;明日は
さんです。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;記事が気に入ったらbuymeacoffeeでサポートしていただけると嬉しいです&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>カナダのいいとこ悪いとこ</title><link>https://chezo.uno/post/2022-11-13-canada-good-thing-bad-things/</link><pubDate>Sun, 13 Nov 2022 18:34:00 -0800</pubDate><guid>https://chezo.uno/post/2022-11-13-canada-good-thing-bad-things/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="https://images.unsplash.com/photo-1559511260-66a654ae982a?ixlib=rb-4.0.3&amp;amp;q=80&amp;amp;fm=jpg&amp;amp;crop=entropy&amp;amp;cs=tinysrgb" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;
on
&lt;/p&gt;
&lt;p&gt;カナダ（バンクーバーエリア）のいいところと悪いところを書いていきます。例によって、バンクーバーエリアの半径5km圏内の話しか書いていない可能性が高いのでご注意ください。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style="text-align: left"&gt;名前&lt;/th&gt;
&lt;th style="text-align: center"&gt;タグ&lt;/th&gt;
&lt;th style="text-align: left"&gt;詳細&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;医療費が無料&lt;/td&gt;
&lt;td style="text-align: center"&gt;👍&lt;/td&gt;
&lt;td style="text-align: left"&gt;国民皆保険制度なので、病院での診察や入院での費用がかからない。薬代は会社で入る民間保険である程度カバーされる。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;歯科治療費は高い&lt;/td&gt;
&lt;td style="text-align: center"&gt;👎&lt;/td&gt;
&lt;td style="text-align: left"&gt;会社の入ってる民間保険である程度カバーされるが、基本的に半年に一回の定期チェックしかできない。虫歯が見つかったり詰め物が取れると一回300ドルコース。歯周病の治療が発生すると1500ドルコース。日本で直したほうが良い。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;高校まで公立学校は無料&lt;/td&gt;
&lt;td style="text-align: center"&gt;👍&lt;/td&gt;
&lt;td style="text-align: left"&gt;所得制限も特にない。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;学校でELL (English Language Learning)へのサポートが手厚い&lt;/td&gt;
&lt;td style="text-align: center"&gt;👍&lt;/td&gt;
&lt;td style="text-align: left"&gt;ESLの学生向けに特別な授業が開かれたりしてサポートが厚め。ただし、学年やレベルが進むと薄くなる。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;学校のクラスの人数が少ない&lt;/td&gt;
&lt;td style="text-align: center"&gt;👍&lt;/td&gt;
&lt;td style="text-align: left"&gt;学校にもよるかもしれないが、1クラス20人行かない程度のクラスサイズで助かる。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;特別支援向けのサポート教員がついている&lt;/td&gt;
&lt;td style="text-align: center"&gt;👍&lt;/td&gt;
&lt;td style="text-align: left"&gt;クラスに特別支援が必要な生徒にサポート教員がついてマンツーで支援している。日本と違い支援級が分断されていないので、多様な子がいるのが当たり前と感じられる。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;大人も学び続けることができる&lt;/td&gt;
&lt;td style="text-align: center"&gt;👍&lt;/td&gt;
&lt;td style="text-align: left"&gt;新たな職種にチャレンジするために学校に通っている人や、学びたいことがあるので学校に通う大人が結構いる。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;ビザ・永住権が取りやすい&lt;/td&gt;
&lt;td style="text-align: center"&gt;👍&lt;/td&gt;
&lt;td style="text-align: left"&gt;これは州や職種にもよるだろうけど、移民国家なのでかなりビザが取りやすい。特にテック業界だとBC州では優遇されており、2年目で永住権を取得するという話も普通に聞く。また、配偶者もオープンワークパーミットが簡単に出るので、本人のワークパーミットに加えて配偶者も現地で働くことができる。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;アジア系スーパーで日本食材や中韓の食材が容易に手に入る&lt;/td&gt;
&lt;td style="text-align: center"&gt;👍&lt;/td&gt;
&lt;td style="text-align: left"&gt;日本のお菓子や日本みたいな味のケーキ（ショートケーキ）も食べられる。味覇も売ってる。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;外食が美味しい&lt;/td&gt;
&lt;td style="text-align: center"&gt;👍&lt;/td&gt;
&lt;td style="text-align: left"&gt;物価が上がっているので、値段は上がってきているが、高いお金を払わなくてもそれなりに美味しい物が食べられる。ただ、事前にGoogle Mapなどでのレビューを見たほうが良い。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;食が多様&lt;/td&gt;
&lt;td style="text-align: center"&gt;👍&lt;/td&gt;
&lt;td style="text-align: left"&gt;特にベジタリアンやヴィーガンの人が多いため、代替乳や食材が豊富。どのカフェでも牛乳を変えてもらえるし、コレステロールなしのナッツミルクなどのアイスも普通のスーパーに売っている。冷凍うどんも普通のスーパーにある。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;子連れに優しい&lt;/td&gt;
&lt;td style="text-align: center"&gt;👍&lt;/td&gt;
&lt;td style="text-align: left"&gt;スーパーやホームセンターで子連れでレジに並んでて困ってると助けてくれたりする。バスや電車も小学生までは無料で乗れる。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;犬に優しい&lt;/td&gt;
&lt;td style="text-align: center"&gt;👍&lt;/td&gt;
&lt;td style="text-align: left"&gt;ドッグランも多いし、トレイルで散歩している犬も多い。また、犬が好きな人も多いらしく、丁寧に挨拶してくれる。エリアによるけれど、住宅街は夜女性が一人で犬の散歩をしている人もまあまあ見る。大型犬を飼っている人も多い。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;山や自然が近い&lt;/td&gt;
&lt;td style="text-align: center"&gt;👍&lt;/td&gt;
&lt;td style="text-align: left"&gt;ハイキングやスキー場に車で３０分かからず行ける。アウトドア派じゃなくてもでかけたくなる。散歩にちょうどよい湖も多いし、ダウンタウンから近いスタンレーパークで貸自転車で走るのも気持ちが良い。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;美術館・博物館は少ない&lt;/td&gt;
&lt;td style="text-align: center"&gt;👎&lt;/td&gt;
&lt;td style="text-align: left"&gt;ちょいちょいあるけど東京ほどはない。NYCとかヨーロッパのほうが多いだろう。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;多様性を維持するための取り組みが多い&lt;/td&gt;
&lt;td style="text-align: center"&gt;👍&lt;/td&gt;
&lt;td style="text-align: left"&gt;アメリカと比べると、先住民族（Indigenous people）の問題に真摯に取り組もうとしている（ようにみえる）。もちろん、侵略して土地を奪った歴史に対して、まだまだやるべきことだらけであるがが、地方政府の会見の前にIndigenousの人々への敬意を表明したり、前向きに進んでいるように思う。移民国家として、Asianなど様々な人種をfeatureする月があって学校や図書館でも取り上げているので、子供に教えてもらうことも多い。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;ビールが美味しいしブリュワリーも多い&lt;/td&gt;
&lt;td style="text-align: center"&gt;👍&lt;/td&gt;
&lt;td style="text-align: left"&gt;市にブリュワリーが2個しかないと煽られるくらいにはブリュワリーが盛ん。ローカル感があってとても良い&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;ノンアルコールビールも美味しい&lt;/td&gt;
&lt;td style="text-align: center"&gt;👍&lt;/td&gt;
&lt;td style="text-align: left"&gt;クラフトビールのノンアルビールもある。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;ラーメン屋は結構ある&lt;/td&gt;
&lt;td style="text-align: center"&gt;👍&lt;/td&gt;
&lt;td style="text-align: left"&gt;そんなに並ばなくてもそれなりに美味しいラーメン屋さんを堪能できる。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;近くに大きいモールがある&lt;/td&gt;
&lt;td style="text-align: center"&gt;👍&lt;/td&gt;
&lt;td style="text-align: left"&gt;自然が近い割に、Apple Storeが入ったモールなんかもあって、買い物には困らない。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;車の維持費が安い&lt;/td&gt;
&lt;td style="text-align: center"&gt;👍&lt;/td&gt;
&lt;td style="text-align: left"&gt;良くも悪くも法定点検がないので、自主的な点検を毎年するのと、保険のお金くらい。保険も日本のそれよりは安い。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;車の運転が雑&lt;/td&gt;
&lt;td style="text-align: center"&gt;👎&lt;/td&gt;
&lt;td style="text-align: left"&gt;いろいろな国で免許を取得した人が来るので、結構運転が荒い人が多い。車線変更にウィンカーを出す人は奇跡。右折時にウィンカーを出したら死ぬ病気の人は多く、たまに左折でもウィンカーを出さない人もいる。お互い空気を読みあって運転している。名古屋のほうがマシかもしれない。なお、車線変更や店から出るときの割り込みは入れてくれることが多いので、根は優しい人が多いのだろう。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;おま国が多い&lt;/td&gt;
&lt;td style="text-align: center"&gt;👎&lt;/td&gt;
&lt;td style="text-align: left"&gt;アメリカでは売ってるのに、カナダになると売ってない、売っててもラインナップが少ないということが多い。基本輸入になる。ガジェット類も日本みたいに多くない。だいたい日本より高い。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;図書館のデジタルライブラリーが良い&lt;/td&gt;
&lt;td style="text-align: center"&gt;👍&lt;/td&gt;
&lt;td style="text-align: left"&gt;アプリでデジタルライブラリーから本を借りることが簡単にできる。また、オライリーのSafariも市が提携しており、無料で読める。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;税金は安くはない&lt;/td&gt;
&lt;td style="text-align: center"&gt;👎&lt;/td&gt;
&lt;td style="text-align: left"&gt;所得税も日本と同じかちょっと高い感じ。消費税は食料品にはかからなかったりものにもよるが、嗜好品などは最大13%。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;税関連のシステムがひどい&lt;/td&gt;
&lt;td style="text-align: center"&gt;👎&lt;/td&gt;
&lt;td style="text-align: left"&gt;不足分を支払いしたのに、毎月請求されるとかでその度に朝6時に起きて電話をしないといけないはめに。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;電話での交渉が多い&lt;/td&gt;
&lt;td style="text-align: center"&gt;👎&lt;/td&gt;
&lt;td style="text-align: left"&gt;電話好きすぎる。電話じゃないと話が進まないことが多い。英語で電話で交渉をするガッツが常に求められる。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;携帯電話・インターネットが高い&lt;/td&gt;
&lt;td style="text-align: center"&gt;👎&lt;/td&gt;
&lt;td style="text-align: left"&gt;携帯はMVNOの2GBで $30 、インターネットも1Gbpsの光回線が $110 とかなのでとても高い。光回線は理論値近く出るのはいいんだけど…。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;家賃はとても高い&lt;/td&gt;
&lt;td style="text-align: center"&gt;👎&lt;/td&gt;
&lt;td style="text-align: left"&gt;バンクーバー周辺はカナダ1高い。トロントよりも高い。バンクーバーのスカイトレイン（電車）の駅近郊とかだと、3ベッドルーム月2500～3000ドル以上は覚悟した方がいい。家を買うなら長屋みたいなので3BR 1Mドルコース。宝くじが当たらないと買えない。その原因も、政府の申請フローが重たいからとか、中国系資本がガンガン投資で買いまくってるとか色々言われているが、すぐに安くなる雰囲気はない。お隣アルバータ州は家賃は安いので、Alberta is calling youなんてキャンペーンをしている。が、保守よりな州なので僕はちょっと向いてないかなあ。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;金を払っても仕事をしない人々がいる&lt;/td&gt;
&lt;td style="text-align: center"&gt;👎&lt;/td&gt;
&lt;td style="text-align: left"&gt;不動産屋などに、修理の依頼をしても結局半年くらい修理されるまでにかかったりして、2日に一回くらい電話やSMSで催促をしないといけない。常に何かを追い立て続けることになる。修理を依頼された業者も仕事が雑で、修理を依頼したのに壊されて別の業者にお願いするハメになることも。しかも時間通りに来ないし連絡もなくすっぽかすことも。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;物価が年々上がり続けてる&lt;/td&gt;
&lt;td style="text-align: center"&gt;👎&lt;/td&gt;
&lt;td style="text-align: left"&gt;YoYで8%とか上がるし、食料品は11%とか上がる。如実に物価上昇がわかるレベル。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;銃や刺殺の事件が増えている&lt;/td&gt;
&lt;td style="text-align: center"&gt;👎&lt;/td&gt;
&lt;td style="text-align: left"&gt;ここ最近ではあるが、銃やナイフで人が殺される事件をニュースで見る機会が増えた。ギャングの抗争とかもエリアによってはあるけれど…。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;日本みたいな温泉はない&lt;/td&gt;
&lt;td style="text-align: center"&gt;👎&lt;/td&gt;
&lt;td style="text-align: left"&gt;あっても塩素消毒されて水着で入る温水プールみたいなもの。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;自己主張が求められる&lt;/td&gt;
&lt;td style="text-align: center"&gt;👎&lt;/td&gt;
&lt;td style="text-align: left"&gt;なんでも主張しないと存在しないものと思われるので、日本にいるときよりもガンガン言わないといけない。慣れたけどMPが足りないときがある。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;日本のコンテンツにはあまり困らない&lt;/td&gt;
&lt;td style="text-align: center"&gt;👍&lt;/td&gt;
&lt;td style="text-align: left"&gt;漫画や技術書も電子書籍で買えばいいし、アニメもVPN使えば大きな問題にはならない。いい時代になったなあ&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;ウイスキーもワインもいける&lt;/td&gt;
&lt;td style="text-align: center"&gt;👍&lt;/td&gt;
&lt;td style="text-align: left"&gt;BC州にはオカナガンという一台ワインの産地がありローカルワインが楽しめる。また、ライ麦のウイスキーがカナダでは盛ん。ライ麦のウイスキーはハイボールで気軽に飲める。クラフトビール みたいに小さい醸造場もちらほらあり、いろいろなウイスキーを探す楽しみもある。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;バスや電車が充実してる&lt;/td&gt;
&lt;td style="text-align: center"&gt;👍&lt;/td&gt;
&lt;td style="text-align: left"&gt;都市部のバスや電車は時刻通り(あるいは早く)に来る。バスには自転車も乗せられる。スカイトレインは本数も多く3分に一本とかのペースで来るので、割と東京の感覚に近い。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;パンが美味しい(サワードーやライ麦パン)&lt;/td&gt;
&lt;td style="text-align: center"&gt;👍&lt;/td&gt;
&lt;td style="text-align: left"&gt;日本のふわふわパンも中華系パン屋さんや日本人のパン屋さんに行けば買えるけど、ヨーロッパ系のサワードウやライ麦パンが美味しい。特にサンドイッチにハムやサラミを挟むととても美味しい。&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;p&gt;記事が気に入ったらbuymeacoffeeでサポートしていただけると嬉しいです&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>機械学習工学研究会夏合宿2022でMLインフラ運用WGを終了しました</title><link>https://chezo.uno/post/2022-07-15-finished-mlse-infra-wg/</link><pubDate>Fri, 15 Jul 2022 15:16:04 -0700</pubDate><guid>https://chezo.uno/post/2022-07-15-finished-mlse-infra-wg/</guid><description>&lt;p&gt;2019年から土橋さん (
) と共同幹事をしていた、機械学習工学研究会 (MLSE) の「本番適用のためのインフラと運用WG」を、6月30日～7月2日に開催した
で終了しました。&lt;/p&gt;
&lt;h2 id="2022年mlse夏合宿での議論"&gt;2022年MLSE夏合宿での議論&lt;/h2&gt;
&lt;p&gt;今回の夏合宿では、過去開催してきた討論会やカンファレンスで上がっていた、本番適用をするための課題をリストアップし、現在も課題となっている部分を中心に議論をしました。&lt;/p&gt;
&lt;p&gt;議論に使ったMuralはGitHubにexportしてあります。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;黄色以外の色のものは当日追加したトピック、左下の赤で囲まれた部分はさらにそのまとめになります。&lt;/p&gt;
&lt;p&gt;活動をまとめていて気づいてきたのは、多くのMLOpsツールを提供するベンチャーやクラウドベンダーによって、自動化をするためのOSSやマネージドサービスはそろってきているものの、組織やプロジェクトのフェーズごとに必要なものが違ってくるということでした。&lt;/p&gt;
&lt;p&gt;フェーズによるML基盤の変遷としては、Karteの基盤の変遷の話を思い出しました。&lt;/p&gt;
&lt;iframe class="speakerdeck-iframe" frameborder="0" src="https://speakerdeck.com/player/d2b7118ec5eb461fbe8c79bb6343f6b8" title="History of the ML system in KARTE" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true" style="border: 0px; background: padding-box padding-box rgba(0, 0, 0, 0.1); margin: 0px; padding: 0px; border-radius: 6px; box-shadow: rgba(0, 0, 0, 0.2) 0px 5px 40px; width: 560px; height: 315px;" data-ratio="1.7777777777777777"&gt;&lt;/iframe&gt;
&lt;p&gt;少人数でのML基盤としてはCADDiのマネージドな環境を駆使した基盤も参考になると思います。&lt;/p&gt;
&lt;iframe class="speakerdeck-iframe" frameborder="0" src="https://speakerdeck.com/player/c572de6c163a4b6fb9b268d2a9c1417a" title="CADDi AI LabにおけるマネージドなMLOps" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true" style="border: 0px; background: padding-box padding-box rgba(0, 0, 0, 0.1); margin: 0px; padding: 0px; border-radius: 6px; box-shadow: rgba(0, 0, 0, 0.2) 0px 5px 40px; width: 560px; height: 314px;" data-ratio="1.78343949044586"&gt;&lt;/iframe&gt;
&lt;p&gt;また、組織やチーム作り自体が大きな障壁になりうる話も頻繁に聞いており、これは研究者的なモデル開発をする人と運用をするdeveloperをチームとしてどう構成すればいいのか、どうやってナレッジや成果物を共有すればいいのか（研究開発部門が子会社など）、チーム作りの課題が浮き彫りになりました。&lt;/p&gt;
&lt;p&gt;あとは、機械学習やデータを活用したプロダクトづくりの文化の醸成も、銀の弾丸がない中で各社試行錯誤していることがうかがえました。これは、プロジェクトのKPI設計をビジネスサイドに理解してもらう難しさや、作り切りでOKだった従来型のソフトウェア製品とは違った変化に対応し続ける必要がある機械学習システムの「運用」の理解を得る難しさが課題に挙げられました。&lt;/p&gt;
&lt;h2 id="振り返ってみて"&gt;振り返ってみて&lt;/h2&gt;
&lt;p&gt;企業の事業部門に在籍しながら3年というスパンで学会仕事をするのは、なかなか大変だったなというのを改めて実感しました。COVID-19による社会情勢の変化、海外移住（夏合宿のような長時間イベントは時差的に厳しい）など個人の状況の変化、会社のチームの異動（上司が変わるたびに説得をする必要がある）と、長期的に継続する社外活動というのは思うようには進まないものだなという当たり前のことを感じました。&lt;/p&gt;
&lt;p&gt;もう一回程度、事例共有カンファレンスがしたかったですが、最近では
でそういった話が日本語でも展開されているので、そちらにも期待です。&lt;/p&gt;
&lt;h2 id="今後について"&gt;今後について&lt;/h2&gt;
&lt;p&gt;今後は、（我々も事前にすり合わせたわけではないのですが）ちょうど
をはじめとする皆さんがこの夏合宿から開始した、
に引き継がれていきます。今後の活動が楽しみです。&lt;/p&gt;
&lt;h2 id="過去の活動の様子"&gt;過去の活動の様子&lt;/h2&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2018-05-17_mlse-kickoff/" data-iframely-url="//iframely.net/eSKNDTE"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2020-07-11-mlse-summer-workshop/" data-iframely-url="//iframely.net/roy2DFa"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2020-11-10-mlse-conference/" data-iframely-url="//iframely.net/tRnxnhX"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js" charset="utf-8"&gt;&lt;/script&gt;</description></item><item><title>kawasaki.rb 9年の歴史を振り返って</title><link>https://chezo.uno/post/2022-06-18-kawasaki-rb-9-years-reflection/</link><pubDate>Sat, 18 Jun 2022 13:25:00 -0700</pubDate><guid>https://chezo.uno/post/2022-06-18-kawasaki-rb-9-years-reflection/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Untitled"
srcset="https://chezo.uno/post/2022-06-18-kawasaki-rb-9-years-reflection/Untitled_hu_ecf61ea4ab3017f1.webp 320w, https://chezo.uno/post/2022-06-18-kawasaki-rb-9-years-reflection/Untitled_hu_6f0a50dcf1f4f66a.webp 480w, https://chezo.uno/post/2022-06-18-kawasaki-rb-9-years-reflection/Untitled_hu_1178df1a608fb99e.webp 660w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2022-06-18-kawasaki-rb-9-years-reflection/Untitled_hu_ecf61ea4ab3017f1.webp"
width="660"
height="400"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;これは、kawasaki.rb 10周年突入LT大会に際して、kawasaki.rbの9年の振り返りです。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;もともとは、これの話をする予定でした。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h2 id="第一回開催-2013"&gt;第一回開催 (2013)&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;初回からPythonの話だったりRubyコミッタによるC言語とGCの話だったり、多様な言語の様子が見て取れますね。これは狙っていたところでもあり、言語非依存なRubyコミュニティというある意味矛盾した存在意義を打ち立てるのに成功したのかな、と思います。&lt;/p&gt;
&lt;p&gt;元々は、asakusa.rbちょっと&lt;del&gt;ガチで近寄りがたい&lt;/del&gt;みたいなところもあり緩い場として始めましたが、まあ結果オーライということで。&lt;/p&gt;
&lt;h2 id="迷走期-第26回"&gt;迷走期 (第2～6回)&lt;/h2&gt;
&lt;p&gt;ミューザ川崎の会議室で定期開催するかと思いきや、隔月で居酒屋でLTをするという企画をしていました。焼肉しながらLTするというハードな企画ものもありました。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h2 id="第7回-ntt-atさんの会議室で安住の地を得る-2014"&gt;第7回 NTT-ATさんの会議室で安住の地を得る (2014)&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;長い間お世話になっていた、NTT-ATさんの会議室で開催することができました。&lt;/p&gt;
&lt;p&gt;なお、NTT-ATさんの関係者の方々に教えてもらって、川崎駅の
で懇親会を開催するようになり、紹興酒が定番のお酒になりました。これが、オンライン懇親会も仮想狸で行われるようになった所以です。&lt;/p&gt;
&lt;h2 id="第8回-パーフェクトruby読書会をはじめる-2014"&gt;第8回 パーフェクトRuby読書会をはじめる (2014)&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;yokohama.rbでの読書会をヒントに、楽して安定的に開催をする方法を獲得します。それまでは、主催者がLTの登壇者を一生懸命募り、なさそうなら自分が発表するというストロングスタイルをしていたのですが、この時から安定して開催する目途が立ちました。&lt;/p&gt;
&lt;p&gt;音読してライブコーディングをしながら突っ込むというスタイルは、賛否両論あるかとは思いますが、主催側にとっては福音でした。&lt;/p&gt;
&lt;p&gt;しかし、ツッコミながら読み進めるスタイルは、深く突っ込んだ議論ができる反面、一回で1ページも進まない事態も生み出すのでした。&lt;/p&gt;
&lt;h2 id="ruby-kaja-2014"&gt;Ruby Kaja (2014)&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;Ruby Hirobaというイベントでコミュニティの貢献者を表彰するという取り組みがありました。この当時の地域Rubyコミュニティの数の多さがうかがい知れます。&lt;/p&gt;
&lt;h2 id="第18回-n周年-lt大会を発明する-2014"&gt;第18回 N周年 LT大会を発明する (2014)&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;今でこそ定番になったN周年記念LT大会が始まりました。これは日本で一二を争う緩さのLT大会として有名で、スライドを東海道線でiPhoneで作る人や、ブログで話す人、果ては手ぶらで写真だけで話し始める人など様々でした。&lt;/p&gt;
&lt;p&gt;LT大会を重ねていくと様々な報告も受けることになりました。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h2 id="神奈川-ruby-会議-01-2015"&gt;神奈川 Ruby 会議 01 (2015)&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;yokohama.rbさんと共同で初めての地域Ruby会議を行いました。ペアプロ大会は、出題を鍋谷さんにお願いして企画しましたが、ほかにないもので盛り上がりました。&lt;/p&gt;
&lt;p&gt;初心者からコアな人まで楽しめるようにと、エモい回にしたのですが、あとから歴史を振り返ってみるとRubyConfなどのエモさからコアな内容に振ったRubyKaigiへの流れに逆行していましたね。まあ、無知というのはある時何かを生み出すこともあります。&lt;/p&gt;
&lt;h2 id="川崎-ruby-会議-01-2016"&gt;川崎 Ruby 会議 01 (2016)&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;名前は変わりましたが2年連続で地域Ruby会議を開催していました。よく考えるとすごい。&lt;/p&gt;
&lt;p&gt;mameさんの基調講演Rubyによるファミコンエミュレータの話に始まり、C#、Scala、Roomba、Rails、サーバレスの話など多岐にわたるテーマでした。&lt;/p&gt;
&lt;p&gt;主催者打ち上げで、松田さんが紹興酒をカメでたのんだり、二次会のハードロック居酒屋の思い出が懐かしいです。&lt;/p&gt;
&lt;h2 id="第47回-ミューザ川崎に戻る-2017"&gt;第47回 ミューザ川崎に戻る (2017)&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;諸般の事情から、NTT-ATさんの会議室からミューザ川崎へと拠点を移しました。移転してしばらくしたらWiFiも使えるようになって、電源もプロジェクターも借りられていたのでなかなか良い環境になっていました。&lt;/p&gt;
&lt;h2 id="第49回-joker1007さんによるサインじゃんけん大会が行われる-2017"&gt;第49回 joker1007さんによるサイン＆じゃんけん大会が行われる (2017)&lt;/h2&gt;
&lt;p&gt;kawasaki.rbはその&lt;del&gt;遅い&lt;/del&gt;長い読書会によって、パーフェクトRubyの売り上げに結構貢献したという自負を持っており、ついに著者の一人であるjoker1007さんが乗り込んできていただいて、サイン本のじゃんけん大会がありました。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h2 id="第82回-after-covid-19の時代-2020"&gt;第82回 After COVID-19の時代 (2020)&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;さくっとDiscordで開催をすることで、COVID-19の広がりにも対応してきました。&lt;/p&gt;
&lt;p&gt;しかし、kishimaさんの自作ハード/ファーム/ソフト Family mrubyによるテトリスデモは、リモートとは思わせない熱いプレゼンでした。&lt;/p&gt;
&lt;h2 id="第89回-パーフェクトruby読書会が終わる-2020"&gt;第89回 パーフェクトRuby読書会が終わる (2020)&lt;/h2&gt;
&lt;p&gt;2014年1月に開始したパーフェクトRuby読書会。ようやくその幕を下ろしました。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;進みが遅いのが有名で読み終わったのは
でした。丸6年10か月も読み進める間に第二版も出ていたのでした。&lt;/p&gt;
&lt;h2 id="第93回-プロと読み解くruby-3x-news-を読み始める"&gt;第93回 プロと読み解く&lt;strong&gt;Ruby 3.x NEWS を読み始める&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;パーフェクトRubyの後継として、プロと読み解くRuby 3.0 NEWSを読み始めました。Rubyの最新版についにキャッチアップできるとなって、皆でツッコミながら噛みしめています。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h2 id="kishimaさんruby-kaigiに登壇-2020"&gt;kishimaさん、Ruby Kaigiに登壇 (2020)&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;kawasaki.rbにもよく参加していただいているkishimaさんが、上述のFamiry mruby の話でRuby Kaigiに登壇されました。別にkawasaki.rbが特別何かをしたわけではないんですが、感慨深い思いでした。（多分コミッター以外の参加者から初登壇？）&lt;/p&gt;
&lt;h2 id="第95回-創設者海外逃亡したってよ-2021"&gt;第95回 創設者、海外逃亡したってよ (2021)&lt;/h2&gt;
&lt;p&gt;2021年4月から、ファウンダーのchezouが海外に&lt;del&gt;逃亡&lt;/del&gt;移住したため、ブログ係としてもずっと貢献していただいていたperanikovさんを中心とした皆さんにバトンタッチをしました。&lt;/p&gt;
&lt;p&gt;chezouは毎年節目のLT大会に顔を出すだけのおじさんになってしまいましたが、粘り強く続けていただいて感謝です。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;しかし、こんな雑な振りでなんとか回していただいていてありがとうございます。&lt;/p&gt;
&lt;h2 id="9年を振り返って"&gt;9年を振り返って&lt;/h2&gt;
&lt;p&gt;この記事にも書いたのですが、言語非依存な技術系地域コミュニティとして、地理的特性を生かしたkawasaki.rbははじまりました。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;これは、kawasaki.rbが拠点とする南武線沿線には電機メーカーが多く工場を構えており、東京都心のスタートアップやいわゆるウェブ系の会社よりもお堅い会社が多かったのでした。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;また、始めた当時は「ウェブ系vsエンプラ」「Ruby vs (エンタープライズ）Java」といった対立構造もよくあおられており、「仕事でRubyを書きたい」みたいな人も多かったように思います。今となってはこの対立構造自体も懐かしいですね。&lt;/p&gt;
&lt;p&gt;かくいう私自身も、一社目の年配社員に「休日もコード書いてるの？え、まじで？」と言われて、もっと気軽に技術のことについて話したいなぁと思ったことがあり、テックな話の出来る場所としてありがたい存在でした。&lt;/p&gt;
&lt;p&gt;その後、時代が進むにつれて、Rubyだけではない地域Rubyコミュニティが表れてきているのが観測されています。やはり、地方では技術コミュニティがそもそも希少なことが大きいのだと思います。業務後にカジュアルに技術の話をできる場所、エンジニア同士の話ができる場所というのは貴重ですね。筆者が顔を出している
も似たような効用を発揮しています。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;しかし、COVID-19以降オンライン開催されるようになったことは、善し悪しがありました。遠隔地から気軽に参加できるようになった反面、日本全国のコミュニティとしのぎを削って認知を獲得するという意味ではなかなか大変だなあと感じています。&lt;/p&gt;
&lt;p&gt;地域Ruby会議を開催していた時は、やれば認知を獲得できて新規参入を得られるというのがわかっていたのですが、主催のコストはなかなか高く、LT大会を毎年開催するという形に今は落ち着いています。&lt;/p&gt;
&lt;p&gt;他にやっていてよかったこととしては、会の開催を省力化して惰性で開催できるようにしておいたことです。これにより、引継ぎのコストが比較的抑えられたのではないかと思います（主観でしかないですが）。&lt;/p&gt;
&lt;p&gt;今後もkawasaki.rbの10年目が盛り上がって、ゆるゆると次の10年も進めていけることを楽しみにしています。&lt;/p&gt;
&lt;h2 id="おまけ-kawasakirbの人気言語は何か"&gt;おまけ: kawasaki.rbの人気言語は何か？&lt;/h2&gt;
&lt;p&gt;第1回からのchezouによる
の結果、人気の言語（？）をランキングしてみました。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="Untitled%201.png" alt="Untitled" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;一番人気の言語はRubyでした。ダントツですね。二位はPython、三位はGoでした。&lt;/p&gt;
&lt;p&gt;?はどういれればいいんだろうという悩ましいものを入れています。ふんどしとかね。気になる人は元のスプレッドシートを見てください。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;記事が気に入ったらbuymeacoffeeでサポートしていただけると嬉しいです&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>バンクーバーのえんじに屋 #81,82 宇治拾遺物語</title><link>https://chezo.uno/post/2022-01-09-vancouver-engineer-podcast/</link><pubDate>Thu, 09 Jun 2022 00:15:00 -0700</pubDate><guid>https://chezo.uno/post/2022-01-09-vancouver-engineer-podcast/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="https://images.unsplash.com/photo-1566939028087-c4be299e0593?ixlib=rb-1.2.1&amp;amp;q=80&amp;amp;cs=tinysrgb&amp;amp;fm=jpg&amp;amp;crop=entropy" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;バンクーバーのえんじに屋に出演したので、
の mazzoさんのように話しそびれたことをメモしていきます。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;元ネタはこちら&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h3 id="現職について"&gt;現職について&lt;/h3&gt;
&lt;p&gt;もともとは当時CTOだった太田さん直下のMLチームに配属されたが、紆余曲折あってチームが解散し、Audience Studioという主にマーケター向けにCustomer Data Platformを提供しているサービスの開発をしています。RailsでAPI書いたりSQLやdigdagのworkflowを生成したりしています。最近はサーバーサイドKotlinのプロジェクトも関わり始めました。&lt;/p&gt;
&lt;p&gt;太田さんの記事はこの辺が直近話題になっていました。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h3 id="海外移住"&gt;海外移住&lt;/h3&gt;
&lt;p&gt;よくよく考えてみたら、クックパッド辞めるときに海外で働きたいと思って飛び出たのでした。当時はお家騒動前で海外事業部へ転籍できる人は限られており、今ほど海外へ出向する人は少なかったです。2016年にやめてから2021年だから5年越しに海外移住ができたのでした。それくらいかかるもんですねぇ。&lt;/p&gt;
&lt;p&gt;TD入社当時上司だった太田さんに海外移住に挑戦したいと話したときに、「子供が英語環境で育つことで、グローバルな人材になって将来的な選択肢を増やしたい」という話を聞いてその思いを強くしたのでした。&lt;/p&gt;
&lt;h3 id="ビザと永住権"&gt;ビザと永住権&lt;/h3&gt;
&lt;p&gt;永住権周りに関しては（僕はまだ取得していませんが）、元同僚のtakutiさんの記事がまとまっていてわかりやすいです。しかし、入国して1年4ヶ月で永住権取れるのはすごいですね。アメリカだとこのスピードでグリーンカードの取得は難しいでしょう。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;永住権（Permanent Residency）は市民権と異なり選挙には参加できませんが、5年毎に更新さえすれば（5年間で規定の日数以上カナダに滞在すれば）いいので長く住むなら取ることになると思います。&lt;/p&gt;
&lt;p&gt;カナダのビザのいいところは、本人がsponsorついたwork permitもらえれば、配偶者もOpen work permitを手に入れることができることです。とはいえ、カナダは割と資格重視なところが強く、おとなになってからもcollegeに通ったりして資格を取得する人は多いように見えます。学校のお迎えで話をすると子育てしながら資格を取得して新しい職を得ているという話をゴロゴロききます。&lt;/p&gt;
&lt;h3 id="アメリカ企業への就職"&gt;アメリカ企業への就職&lt;/h3&gt;
&lt;p&gt;Clouderaに誘ってくれたshiumachiさんのこの記事がよくまとまっていますが、英語を使って外資系で働くと給与水準が上がることは大きな魅力でした。Clouderaのときは黙々と仕事をしていたらtotal compensation で前職比1.5倍くらいになっていたのは衝撃でした。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;あと、アメリカ企業でちゃんとマネージをするマネージャーの元で働く機会を得たり、多様性を肌で感じたりすることができました。後者は特に自分にとって大きな事で、日本の企業で働くときはどうしてもモノリシックな文化を前提としがちなので息苦しいなと感じ始めています。&lt;/p&gt;
&lt;p&gt;英語の勉強法はここで書いたとおりですが、DMM英会話を1年近くほぼ毎日やって、Podcastを聞くという感じでした。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;しかし、飲み会で英語がわかるようになったと書いていますが、今思うと完全に嘘でした。「完全に理解した」になっていただけでした（なんもわからん）。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h3 id="mlエンジニアの転職"&gt;MLエンジニアの転職&lt;/h3&gt;
&lt;p&gt;自分の話をするよりも、メタに転職する松岡さんの話を紹介すればよかったなと後悔しています。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;すべての企業でここまでのレベルが求められるかはわからないのと、”ML Engineer”と言っても企業によって求められるスキルセットがまちまちなのでJob Descriptionをよく読むと良いと思います。&lt;/p&gt;
&lt;h3 id="多様性の話"&gt;多様性の話&lt;/h3&gt;
&lt;p&gt;前職の時にまあ色々あった話をしたと思いますが、その時に支えになったのが、エリンメイヤーの「異文化理解力」でした。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;こちらに書評があります。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;Nakamataさんの回も、多様性の話が聞けてとても面白かったです。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;家族がNetflixのクィアアイが好きなので、そういう意味ではリベラル寄りな好みだという自覚はあります。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;しかし、自分のpodcastも久しぶりに収録したくなりました。話すのは楽しいですね。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;記事が気に入ったらbuymeacoffeeでサポートしていただけると嬉しいです&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>sqllineage を使って digdag のログから Treasure Data のクエリのリネージを作ってみた</title><link>https://chezo.uno/post/2022-05-05-sqllineage-with-digdag-log/</link><pubDate>Thu, 05 May 2022 19:58:10 -0700</pubDate><guid>https://chezo.uno/post/2022-05-05-sqllineage-with-digdag-log/</guid><description>&lt;p&gt;データリネージとは、DBなどでどのデータがどこから来てどこに行った、という「来歴」とも呼ばれる情報です。&lt;/p&gt;
&lt;p&gt;自分がこの言葉を知ったのは、前職でCloudera Navigatorという製品を扱ったときにこの機能が実装されていることを知りました。
引き継いだ複雑なSQLなどのワークフローを渡されたときに、どういう流れになっているのかを可視化できるのがとても魅力でした。&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://chezo.uno/post/2022-05-05-sqllineage-with-digdag-log/nav_lineage.webp"&gt;&lt;figcaption&gt;
&lt;h4&gt;Cloudera Navigatorのlineage。 https://docs.cloudera.com/documentation/enterprise/6/6.3/topics/cn_lineage_generation.html より&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;そんなlineageですが、Pythonの sqllineage というパッケージで分析・可視化できることを知りました。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://github.com/reata/sqllineage" data-iframely-url="//iframely.net/4q6WPtz?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;sqllineage は Pythonで実装されているSQLのlinegaeを解析する部分と、Reactで実装された可視化のウェブアプリケーション sqllineagejs で成り立っています。&lt;/p&gt;
&lt;p&gt;実は去年ぐらいにちらほら使っている人がいたのは後から知りました。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://dev.classmethod.jp/articles/try-sqllineage/" data-iframely-url="//iframely.net/XlQhNj3?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;/br&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://zenn.dev/yohei/articles/2021-05-08-sql-lineage-snowflake" data-iframely-url="//iframely.net/jwgoEni?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;これを使ってTreasure Dataのデータの流れの可視化をしてみたいと思ったのですが、TDではちょうどworkflowエンジンのdigdagのログに実行されたSQLが書かれているのに気づきました。&lt;/p&gt;
&lt;p&gt;そこで、digdagのTDのSQLを実行する &lt;code&gt;td&amp;gt;&lt;/code&gt;, &lt;code&gt;td_ddl&amp;gt;&lt;/code&gt; オペレータからSQLを抽出・変換するコマンド、 digdaglog2sql を作り、可視化をしてみました。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://github.com/chezou/digdaglog2sql" data-iframely-url="//iframely.net/5Up1iQ9?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;詳しい使い方は、GitHubを見ていただければと思いますが、Python 3.7以上が入っている環境であれば、pipで簡単にインストールできます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install --user digdaglog2sql
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;TDからダウンロードしてきたワークフローのログがあれば、そこからSQLを抽出して保存できます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;digdaglog2sql --input workflow-log.txt --output output.sql
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;また、ワークフローのSession IDを指定すれば、そこからSQLに変換した結果を保存できます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;TD_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1234XXX/YYYYYYYY
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;digdaglog2sql --session-id &lt;span class="m"&gt;12345&lt;/span&gt; --site us --output output.sql
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;また、endpointオプションを使えば自前でホストしたdigdagからもSQLを取得できます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;digdaglog2sql --session-id &lt;span class="m"&gt;12345&lt;/span&gt; --endpoint digdag.example.com --output output.sql
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;del&gt;注意点としては、2022/05/05現在のPyPIにある sqllineage と その裏側で依存している sqlparse の最新バージョンでは、 Trino やHiveなどの一部の機能がうまくColumnレベルのlineageの解析ができません。&lt;/del&gt;&lt;/p&gt;
&lt;div class="callout flex px-4 py-3 mb-6 rounded-md border-l-4 bg-blue-100 dark:bg-blue-900 border-blue-500"
data-callout="note"
data-callout-metadata=""&gt;
&lt;span class="callout-icon pr-3 pt-1 text-blue-600 dark:text-blue-300"&gt;
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m16.862 4.487l1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8l.8-2.685a4.5 4.5 0 0 1 1.13-1.897zm0 0L19.5 7.125"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div class="callout-content dark:text-neutral-300"&gt;
&lt;div class="callout-title font-semibold mb-1"&gt;Note&lt;/div&gt;
&lt;div class="callout-body"&gt;&lt;p&gt;2022/05/11 現在、sqllineageの Hive, Trino に関する問題は修正され 1.3.5 でリリースされました。
これに伴い、sqllineageをsourceからインストールする際に必要だったnodeも不要になりました。&lt;/p&gt;
&lt;p&gt;2022/10/06 sqlparseの 0.4.3 もリリースされたので　upstreamの修正はすべて反映されました。&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;del&gt;今、Pull Requestを出しているところなので、これらがリリースされれば解決されると思います。&lt;/del&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅
-&amp;gt; 1.3.5 でリリース済み&lt;/li&gt;
&lt;li&gt;✅
-&amp;gt; 1.3.5 でリリース済み&lt;/li&gt;
&lt;li&gt;✅
-&amp;gt; 0.4.3 でリリース済み&lt;/li&gt;
&lt;li&gt;✅
-&amp;gt; 0.4.3 でリリース済み&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;del&gt;ひとまず、パッチを当てたbranchをGitHubに用意したので、 nodeをインストールした環境で 以下のようにインストールしてください。&lt;/del&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install git+https://github.com/chezou/sqlparse.git@trino#egg&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;sqlparse&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;0.4.3.dev0
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install sqllineage
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;sqllineageをインストールした後は、出力したSQLファイルを指定すれば、可視化できます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sqllineage -g -f output.sql
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; * SQLLineage Running on http://localhost:5000/?f&lt;span class="o"&gt;=&lt;/span&gt;output.sql
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ブラウザを開けば、このようなColumnレベルやテーブルレベルの lineage が作成でき、拡大縮小もしながら眺められます。&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://chezo.uno/post/2022-05-05-sqllineage-with-digdag-log/featured.webp"&gt;&lt;figcaption&gt;
&lt;h4&gt;SQL lineageの例&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;ぜひ、試してみてください。&lt;/p&gt;</description></item><item><title>年度途中に海外移住した年の給与・退職所得の扱い</title><link>https://chezo.uno/post/2022-02-07-foregin-tax/</link><pubDate>Mon, 07 Feb 2022 18:34:00 -0800</pubDate><guid>https://chezo.uno/post/2022-02-07-foregin-tax/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="https://images.unsplash.com/photo-1598432439250-0330f9130e14?ixlib=rb-1.2.1&amp;amp;q=85&amp;amp;fm=jpg&amp;amp;crop=entropy&amp;amp;cs=srgb" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;日本法人を年度途中に退職し、海外移住で非居住者になった場合、様々な気づきにくいポイントがあります。&lt;/p&gt;
&lt;p&gt;ここでは、その基本を簡単にまとめておきます。&lt;/p&gt;
&lt;aside&gt;
⚠️ この記事は2022/02/07現在調査した内容をもとに書かれています。その内容は、できる限り正確になるように努めていますが、税法が変わる可能性もあります。
最新の情報は、国税庁のサイトや税務署にお問い合わせください。
&lt;/aside&gt;
&lt;p&gt;&lt;strong&gt;関連する税金の話&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h2 id="支払日が移住後の給与所得退職所得の扱い"&gt;支払日が移住後の給与所得、退職所得の扱い&lt;/h2&gt;
&lt;h3 id="移住後に受け取った給与所得"&gt;移住後に受け取った給与所得&lt;/h3&gt;
&lt;p&gt;例えば、3月31日付けで日本法人を退職し、4月1日に海外へ移住、最終月の給与支払いが4月25日に行われたとします（月末締め翌月25日払い）。その時、3月いっぱいの給与は国内源泉所得に当たるため、日本での所得税の課税対象になります。&lt;/p&gt;
&lt;p&gt;ただし、支払日が4月なので既に税法上の非居住者の扱いになるため、所得税は20.42%の課税になります。また、退職後の給与、賞与であっても雇用保険料は引かれます。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;なお、非居住者になった後の給与所得は源泉分離課税のため、出国前の所得税に関する確定申告（総合課税）とは別になります。源泉分離課税は控除等対象ではなく、引かれて終わりになるため、総合課税の申告に混ぜないように注意してください。&lt;/p&gt;
&lt;h3 id="移住後に受け取った退職所得"&gt;移住後に受け取った退職所得&lt;/h3&gt;
&lt;p&gt;例えば、3月までの退職金が、4月移住後5月25日に支払われたとします。&lt;del&gt;これは受取日が非居住者になっているため、源泉所得税が20.42%かかります。&lt;/del&gt;&lt;/p&gt;
&lt;aside&gt;
⚠️ [2022/02/08追記]
退職所得の居住判定は「[所得税基本通達36-10](https://www.nta.go.jp/law/tsutatsu/kihon/shotoku/05/01.htm#a-02)」に基づき、支給の起因となった退職日に判定するとのことです。この場合「退職所得受給申告書」を申請していれば、退職日に日本国内に税法上居住していれば、居住者として源泉所得税、住民税および退職所得控除が適用されます。
&lt;/aside&gt;
&lt;p&gt;居住者の退職所得であれば、短期間の勤務であれば &lt;strong&gt;勤続年数×40万円&lt;/strong&gt; の退職所得の控除が発生します。ですが、非居住者の場合は控除は発生せず何もしないと 20.42% の所得税が源泉分離課税されて終了になってしまいます。&lt;/p&gt;
&lt;p&gt;なお、非居住者の退職所得には20.42%の所得税以外が引かれることは通常ありません。源泉徴収票を見て、そうなっていなければ会社に問い合わせましょう。&lt;/p&gt;
&lt;p&gt;それでは不公平だというので、非居住者に対して退職所得の選択課税という制度があります。&lt;/p&gt;
&lt;h2 id="非居住者の退職所得の選択課税について"&gt;非居住者の退職所得の選択課税について&lt;/h2&gt;
&lt;p&gt;非居住者の退職所得に対する不公平感をなくすため、申請すれば控除されて還付される「退職所得の選択課税」という制度があります。これは、自動では適用されず申請すると退職所得の控除が適用されるという制度です。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;ただ、相当特殊な話なようで、国税庁のサイトから適切な説明を見つけることはできませんでした。&lt;/p&gt;
&lt;p&gt;書き方は、以下のサイトの書き方を参考に確定申告書Bの申告書に「退職所得の選択課税の申告書」という但し書きをタイトル付近の余白に書いて提出すればよいそうです（川崎南税務署談）。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;この書類は、分離課税に関する申告書ため、通常の確定申告書とは別に用意する必要があるので注意が必要です。&lt;/p&gt;
&lt;p&gt;それぞれ、納税管理人に提出してもらいましょう。&lt;/p&gt;
&lt;h2 id="納税証明書を会社経由で申請しよう"&gt;納税証明書を会社経由で申請しよう&lt;/h2&gt;
&lt;p&gt;一般的に、国内源泉所得については日本に源泉分離課税で所得税を支払うことになります。そのため、その分の所得税を支払い済みであることを居住国（私の場合はカナダ）に証明することで、控除等が受けられるでしょう。&lt;/p&gt;
&lt;p&gt;その際の証明には、非居住者の源泉所得税の納税証明書を取得すると英文併記の公的な書面が手に入るため有用です。&lt;/p&gt;
&lt;p&gt;詳しくは以下を御覧ください。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;基本的にはこの書類が支払金額等の源泉所得税ベースで計算できる、正しい書類となります。&lt;/p&gt;
&lt;p&gt;なお、源泉徴収票が間違っていることはままあるようなので、自分で検算して間違っていたら訂正を要求できるような胆力が必要です。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;また、国税局電話相談センターの回答も間違っていることが往々にしてあります。結局は納税者自身がどうあるべきかを先に学び、それをもとに納税先の税務署に不明点がなくなるまで確認をするのが良さそうです。また、自分の置かれてる条件はきっちりと説明しないと、想定しなかった分岐が発生するケースもありますので、気を付けてください。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;記事が気に入ったらbuymeacoffeeでサポートしていただけると嬉しいです&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>3ファイル追加してGitHub ActionsでHugoにレコメンド記事を表示する</title><link>https://chezo.uno/post/2022-01-25-hugo-content-based-recommendation/</link><pubDate>Tue, 25 Jan 2022 18:41:33 -0800</pubDate><guid>https://chezo.uno/post/2022-01-25-hugo-content-based-recommendation/</guid><description>&lt;p&gt;こんにちは、早いものでもう40の大台が迫ってくる誕生日を迎えました。前日にブースターショットを打ったので、一日中ほとんど寝込んでいました。必要な人のために、
を置いておきます。&lt;/p&gt;
&lt;p&gt;さて、Hugoにはキーワードベースの関連記事の表示をする機能があります。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://gohugo.io/content-management/related/" data-iframely-url="//iframely.net/q1grvUY?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;しかし、キーワードベースの関連記事も悪くはないのですが、折角なので自分で関連記事のレコメンドをしてみたくないですか？
そう思っていたら、
さんの Prelims というオープンソースを見つけました。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://github.com/takuti/prelims" data-iframely-url="//iframely.net/omDBVa8?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;Prelimsは、Hugo（やJekyll）のFront matterと呼ばれるメタデータの部分にキーワードやレコメンド記事を足してくれるものになります。&lt;/p&gt;
&lt;p&gt;レコメンドの方式自体は、今実装されているのは古典的なTF-IDFを用いたコンテンツベースの類似文書を出してくる方式ですが、Front matterを後から処理してレコメンド記事を追加するというシンプルだけどスマートな方法に感銘を受けました。&lt;/p&gt;
&lt;p&gt;ただし、Prelimsはflexibilityを重視しているため、例えば日本語のtokenizerやstop wordsなどは自分で設定をする必要があります。&lt;/p&gt;
&lt;p&gt;このあたり、ちょっと慣れていないと難しいかなとも思ったので、
というCLIツールを作り、config用のYAMLファイルを用意すればGitHub Actionsでrecommendできるようにしました。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://github.com/chezou/prelims-cli" data-iframely-url="//iframely.net/m9C9uKt?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;用意するものは以下の3つです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;prelims-cli用の scripts/config/myconfig.yaml&lt;/li&gt;
&lt;li&gt;関連ページを表示する layouts/partials/page_related.html&lt;/li&gt;
&lt;li&gt;prelims-cliを実行する GitHub Actions&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;実際の例をgistに貼りました。&lt;/p&gt;
&lt;script src="https://gist.github.com/chezou/a9cb0ab2a086b3ce9ce9bf1abbc5b347.js"&gt;&lt;/script&gt;
&lt;p&gt;myconfig.yaml については、 &lt;code&gt;content/blog&lt;/code&gt; が英語の &lt;code&gt;content/post&lt;/code&gt; が日本語の記事をおいている想定です。
この3つのファイルを追加すればHugoであれば関連記事が、冒頭の画像のように出てくるはずです。&lt;/p&gt;
&lt;p&gt;内部的には日本語のtokenizerはSuachiPyのfull辞書を使い、最も長いCモードで形態素単位を設定しています。
ただし、prelimsが生成する &lt;code&gt;keywords&lt;/code&gt; は少しノイジーだなと思ったので、自分のサイトでは &lt;code&gt;recommendations&lt;/code&gt; のみを利用しています。&lt;/p&gt;
&lt;p&gt;僕はものぐさなので、タグやカテゴリを豆にメンテナンスできないのですが、レコメンドのおかげで過去の関連記事のリンクも出せるので便利だと感じています。
また、自分の記事は自分の持ち物なので、それに対してレコメンドしてML的なsandboxとして遊ぶのは楽しいなと感じています。&lt;/p&gt;
&lt;p&gt;この環境を使うことで、Netlify CMSでの執筆等Python環境を用意することができないところでも執筆して、レコメンド記事を作成することができます。
もしよければ、 prelims を使ったレコメンドを試してみてください。&lt;/p&gt;</description></item><item><title>prelimsを使ってHugoの記事にレコメンドを追加する</title><link>https://chezo.uno/post/2022-01-14-prelims-recommend-hugo/</link><pubDate>Fri, 14 Jan 2022 21:35:00 -0800</pubDate><guid>https://chezo.uno/post/2022-01-14-prelims-recommend-hugo/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="https://images.unsplash.com/photo-1457369804613-52c61a468e7d?ixlib=rb-1.2.1&amp;amp;q=85&amp;amp;fm=jpg&amp;amp;crop=entropy&amp;amp;cs=srgb" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;シンプルだけど、アイデアは賢いなーと思ったHugoやJekyllの記事にレコメンドを足す、prelimsを使ってみた。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;prelimsはなんてことない、TD・IDFでキーワード生成したり、そのコサイン類似度で記事の類似度を出してコンテンツベースのレコメンドを生成してくれるもの。&lt;/p&gt;
&lt;p&gt;takutiさんは、gulpでやっているようだっただけど、僕が使ってるHugoのWowchemyに対してやってみた。&lt;/p&gt;
&lt;p&gt;実際のcommitを見てもらうのが早い気もするが、JekyllやHugoにあるFrontmatterというメタデータに &lt;code&gt;recommendations&lt;/code&gt; というキーワードを追加して生成してくれるというもの。Hugoのビルド自体はそんなに遅くならない、はず（というのは、サイトの相対URLを生成して名前解決はビルド時に行うので、記事数が多くなると重くなりうる）。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;ちょっとハードルあるかなというのが、自分で下記のようなPython scriptを書かないといけないところ。まあtokenizerとかstop wordsとかどうすんねん問題があるので致し方なし。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;あとは、Hugoの Wowchemyというテーマを使っているけど、 &lt;code&gt;layouts/partials/page_related.html&lt;/code&gt; という名前でこういうものをつくる必要があるのです。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{{ if isset .Params &amp;#34;recommendations&amp;#34; }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;article-widget content-widget-hr&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;{{ i18n &amp;#34;related&amp;#34; }}&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h3&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;ul&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{ $candidates := where .Site.RegularPages &amp;#34;Type&amp;#34; &amp;#34;in&amp;#34; site.Params.mainSections }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{ $rec := apply .Params.recommendations &amp;#34;lower&amp;#34; &amp;#34;.&amp;#34; }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{ $filtered := where $candidates &amp;#34;RelPermalink&amp;#34; &amp;#34;in&amp;#34; $rec }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{ range $filtered }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;{{ .Permalink }}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;{{ .Title }}&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;a&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;li&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {{ end }}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;ul&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{{ end }}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;config.toml&lt;/code&gt; には &lt;code&gt;params.mainSections&lt;/code&gt; を指定することで、指定したSectionのタイプに対して表示されるようにできます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[params]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; mainSections = [&amp;#39;post&amp;#39;, &amp;#39;blog&amp;#39;]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ゆくゆくはclickかなにかでCLI作ってwrapしてしまうかなぁ。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>2021年を振り返って</title><link>https://chezo.uno/post/2021-12-31-2021-year-review/</link><pubDate>Fri, 31 Dec 2021 16:05:03 -0800</pubDate><guid>https://chezo.uno/post/2021-12-31-2021-year-review/</guid><description>&lt;p&gt;
に引き続き、年末の振り返りです。まだ西海岸時間は2021年です。&lt;/p&gt;
&lt;p&gt;なにより、家族で
のが大きな変化でした。&lt;/p&gt;
&lt;h2 id="仕事"&gt;仕事&lt;/h2&gt;
&lt;p&gt;去年とチームは変わらず、場所だけが変わってコツコツと働いています。
ただ、組織改編等もあり蓋を開けてみれば元々の東京のメンバー＋西海岸タイムゾーンに一人という状況になったので、だいぶ働き方は変わりました。
結果としてスピード感は上がったので良かったかなと思います。&lt;/p&gt;
&lt;p&gt;今年もRailsとSQLとdigdagをガリガリと書いているのは変わらず、更には様々なYAMLをRubyで生成するみたいなこともやっています。
DynamoDBの気持ちになって考えたりと少し毛色が違うこともできました。&lt;/p&gt;
&lt;p&gt;SEや営業の皆さんと議論しながら仕様に落としていくみたいなことをやっていたので、
ほどではないけど、現実的な落とし所とお客さんの必要な物とを抽象化していくみたいなことを楽しんでおります。&lt;/p&gt;
&lt;p&gt;西海岸タイムゾーンで仲間が増えると僕が嬉しいので、興味のある方はご連絡お待ちしております。&lt;/p&gt;
&lt;p&gt;副業は、上に書いたとおり東京とのやり取りが平日増えて、オーバーラップタイムが多くなったので、後半は何もできない状態になってしまいました。このまま不義理を果たし続けるのも良くないので、来年はちょっと枠組み変えていきたいなと思います。&lt;/p&gt;
&lt;h2 id="執筆など"&gt;執筆など&lt;/h2&gt;
&lt;p&gt;怒涛の一年だったので忘れていましたが、
。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4873119472/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
仕事ではじめる機械学習 第2版
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;執筆当時はML Opsはだいぶふわふわしてるかなぁと思っていたのですが、その後1年でだいぶ戦うエリアが固まって来たのかなぁといういみでギリギリ間に合ったという印象です。&lt;/p&gt;
&lt;p&gt;また、嬉しいことに他の人の人生に少なからず良い影響を与えることができたようなので、出してよかったなと思います。&lt;/p&gt;
&lt;blockquote class="twitter-tweet"&gt;&lt;p lang="ja" dir="ltr"&gt;「仕事ではじめる機械学習」は広く問題を見直したいときによく読み返しています、何度読み直しても良い本ですね！&lt;br&gt;コミュニティへの貢献がつながったのは計算してこうなったのではなく、あとから見返すとこうなっていたというものなので、振り返りをやってよかったと思います&lt;/p&gt;&amp;mdash; 龍一郎 (f.k.a Asei Sugiyama) (@K_Ryuichirou) &lt;a href="https://twitter.com/K_Ryuichirou/status/1476427693575258113?ref_src=twsrc%5Etfw"&gt;December 30, 2021&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;なお、ML Ops界隈でご活躍されている @K_Ryuichirouさんのこの振り返りは良かったので、ML Ops界隈の人は是非読むといいと思います。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://medium.com/@K_Ryuichirou/2019%E5%B9%B4-2021%E5%B9%B4%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%81%AE%E6%8C%AF%E3%82%8A%E8%BF%94%E3%82%8A-e842876c3b5" data-iframely-url="//cdn.iframe.ly/pgVP0dG?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;しかし、執筆のない年越しは穏やかなものですね。&lt;/p&gt;
&lt;h2 id="プライベート"&gt;プライベート&lt;/h2&gt;
&lt;p&gt;あとは、お金のトラブルに悩まされる一年でした。増えるはずだったお金が消えそうになったり、もらえるはずだったお金が突如なしになって最終的にはダマで2割引されたり、源泉徴収された所得税がなかったことになってるぽかったり、税率多く取られてたり、、、。&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;その度に関係者に殴り込みにいったり、国税局に電話したりと様々なことをしていましたが、お金の基盤が揺らぐと安定なんて軽く吹っ飛びますね。&lt;/p&gt;
&lt;p&gt;MLSEに関してはドタバタだったので、大きな貢献があまりできずに終わってしまいました。来年は締めの年なのでそこに向けてがんばります。&lt;/p&gt;
&lt;p&gt;移住関連に関してはこの記事に書いたので、興味がある人は読んでください。子供が落ち着いたのが本当に良かった。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 170px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2021-12-18-8-months-after-relocating-vancouver/" data-iframely-url="//cdn.iframe.ly/XtraZVl"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;h2 id="趣味や漫画アニメ"&gt;趣味や漫画、アニメ&lt;/h2&gt;
&lt;p&gt;趣味というほどではないですが、YouTubeにGoProで撮った車載タイムラプス動画や自転車動画を上げてます。
カラグレまでは至らないけど、それでも楽しいです。&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/9WAgr6Q3520?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/R4X9yN0I4O4?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;見る方でもYouTubeは色々見るようになりました。&lt;/p&gt;
&lt;p&gt;ドラクエ3のチーフプログラマの内藤かんチャンや&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/gwvYKPOzKzk?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;AIciaさんの動画なんかを見ています。&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/CBZWzQVcXE4?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;他にも、Duolingoでフランス語をぼちぼち続けています。&lt;/p&gt;
&lt;p&gt;漫画は去年紹介した6冊のうち、元々アニメ化していたものも含めて4冊がアニメ化した・するということで、メジャーなものしか追っかけてないのかなという気持ちです。&lt;/p&gt;
&lt;p&gt;Landreaallと最果てのパラディンは、個人的に大好きなファンタジーの双頭なので今後も元気に続くといいなと思います。&lt;/p&gt;
&lt;p&gt;毛色が違うところでは、この辺は面白いです。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B084D77LY3/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
国境のエミーリャ 1
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;もし、第二次大戦後に東京がベルリンのように東と西で分断されたら、という世界を描いた作品。
独特の世界観が惹き込まれます。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B085VNN6FV/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
紛争でしたら八田まで 1
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;地政学の知識を活用して様々な問題を解決していく、令和のマスターキートンみたいな漫画。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B06XFRTGKS/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
辺境の老騎士 バルド・ローエン（１）
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;ファンタジー系でいうと、バルドローエンも渋いおっさん好きにはたまりません。&lt;/p&gt;
&lt;p&gt;アニメは色々と豊作でしたが、最果てのパラディン、ブルーピリオド、本好きの下剋上、無職転生、蜘蛛ですがなにか？、転スラ、灼熱カバディ、ドラゴン家を買うなどを見ていました。&lt;/p&gt;
&lt;p&gt;アニメではありませんが、水曜どうでしょうのヨーロッパ21カ国完全制覇を通しで見ました。ついにアイルランドにたどり着いたときは感激でしたね。自分の価値観と大きく違うんだなぁという認識ができたのもよかったです。&lt;/p&gt;
&lt;h2 id="2022年に向けて"&gt;2022年に向けて&lt;/h2&gt;
&lt;p&gt;ドッタンバッタンと変化の激しかった一年だったので、来年は落ち着いて精神と肉体の健康第一で行きたいと思います。&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;今はもうそれらの問題を引き起こした原因はいないので、今後は新たな問題は起こらないはず&amp;hellip;。失ったお金は投資で取り戻すかな&amp;hellip;。&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>バンクーバーに移住して8か月が経った</title><link>https://chezo.uno/post/2021-12-18-8-months-after-relocating-vancouver/</link><pubDate>Fri, 17 Dec 2021 07:00:00 -0800</pubDate><guid>https://chezo.uno/post/2021-12-18-8-months-after-relocating-vancouver/</guid><description>&lt;p&gt;この記事は
の18日目です。昨日は
のリンゴの話でした。&lt;/p&gt;
&lt;p&gt;今年も早いもので12月になってしまいました。&lt;/p&gt;
&lt;p&gt;実は6月にもkawasaki.rbでこんな話をしていたのですが、今年4月にグレーターバンクーバーエリア（東京圏みたいな感じ）に家族で移住したので、ぼちぼちと一年振り返って生存報告を書こうと思います。&lt;/p&gt;
&lt;iframe src="https://docs.google.com/presentation/d/e/2PACX-1vTtVnyA4NtvADohcQo_yt5_ua9JmXdfbc40bBEO0N4VVD_YQWqN7dFqrwjjtVAm3hvyTuUgI1H3YvkS/embed?start=false&amp;loop=false&amp;delayms=3000" frameborder="0" width="960" height="569" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true"&gt;&lt;/iframe&gt;
&lt;p&gt;カナダもリンゴの種類は豊富で、毎日食べてます。酸味が多い種が多く売られていますが、フジなんかもこちらで栽培したものが手に入ります。&lt;/p&gt;
&lt;h2 id="四季が豊か"&gt;四季が豊か&lt;/h2&gt;
&lt;p&gt;春はあちこちに植えられた桜がお出迎えしてくれましたが、（熱波も来たけど）30度を超えることがまずない乾燥した爽やかな夏、色とりどりの紅葉がきれいな秋、たまに雪が降る冬と、とても変化がはっきりしています。東京より少し寒い地域にいるのとあまり変わらない感じですね。&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img src="./spring.webp"&gt;&lt;figcaption&gt;
&lt;h4&gt;Spring&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;&lt;img src="./summer_1.webp"&gt;&lt;figcaption&gt;
&lt;h4&gt;Summer 1&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;&lt;img src="./summer_2.webp"&gt;&lt;figcaption&gt;
&lt;h4&gt;Summer 2&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;&lt;img src="./fall_1.webp"&gt;&lt;figcaption&gt;
&lt;h4&gt;Fall 1&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;&lt;img src="./fall_2.webp"&gt;&lt;figcaption&gt;
&lt;h4&gt;Fall 2&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;&lt;img src="./winter.webp"&gt;&lt;figcaption&gt;
&lt;h4&gt;Winter&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id="インターネットは速い"&gt;インターネットは速い&lt;/h2&gt;
&lt;p&gt;Shawというケーブルテレビ系のネットを使っていますが、1GBの契約で900Mbps前後出るので結構速いです。
先日、gfx氏の奥さんのお勧めするtp-linkのdeco AX3000にしたら無線でも800Mbps台出ました。&lt;/p&gt;
&lt;figure&gt;&lt;img src="./IMG_0625.webp"&gt;&lt;figcaption&gt;
&lt;h4&gt;deco AX3000&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B0873HWX1W/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
TP-Link WiFi 無線LANルーター Wi-Fi6 2402 &amp;#43; 574 Mbps メッシュWi-Fiシステム 3年保証 Deco X60 1ユニット
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="ビールはおいしい"&gt;ビールはおいしい&lt;/h2&gt;
&lt;p&gt;スライドでも書きましたが、ビールはあちこちにクラフトビール屋さんがありおいしいです。&lt;/p&gt;
&lt;p&gt;
さんのこの記事を見ると、より雰囲気がわかるんじゃないでしょうか。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;また、BC州では酒屋じゃないとアルコール飲料が買えないこともあり、ノンアルコールビールもよく売っています。
basukeさんがお勧めしてるノンアルコールビールAthletic Brewingも Amazon.ca で買えるし、クラフトビールのノンアルコールビールもあります。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h2 id="料理をするようになった"&gt;料理をするようになった&lt;/h2&gt;
&lt;p&gt;バンクーバー周辺ではリッチモンド市を中心に中国系コミュニティが強いです。
そのおかげもあり、T&amp;amp;Tというバンクーバーを拠点とするアジア系スーパーがあちこちにあり、日系スーパーにいかなくても日本の食材も比較的手に入りやすいです。&lt;/p&gt;
&lt;p&gt;野菜の違いに最初は戸惑ったものの、カボチャがKabochaとして売られていたり、さつまいもも日本からの輸入やKorean YamとかAsian Yamとか呼ばれて普通に売っています。&lt;/p&gt;
&lt;p&gt;また、賃貸の家に大抵ガスオーブン（ないしは電気でそれに相当するもの）がついているため、bakeするのはとても楽です。&lt;/p&gt;
&lt;figure&gt;&lt;img src="./IMG_0567.webp"&gt;&lt;figcaption&gt;
&lt;h4&gt;Tortia Pizza&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;トルティーヤ記事を使ったピザ(
)。サルサソースやワカモレ、トルティーヤチップなどメキシカンの食材も豊富なのが楽しい。&lt;/p&gt;
&lt;figure&gt;&lt;img src="./IMG_0535.webp"&gt;&lt;figcaption&gt;
&lt;h4&gt;Sanma&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;日系スーパーでサンマを買って焼いた様子(
)。これもガスオーブンでいい感じに焼ける。&lt;/p&gt;
&lt;figure&gt;&lt;img src="./IMG_0207.webp"&gt;&lt;figcaption&gt;
&lt;h4&gt;Home made humburger&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;チーズをとけさせるのを忘れたお手製ハンバーガー。ハンバーガー用の冷凍パティとパンを買ってきて挟むだけのお手軽品。&lt;/p&gt;
&lt;figure&gt;&lt;img src="./IMG_0622.webp"&gt;&lt;figcaption&gt;
&lt;h4&gt;karaage&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;エアフライヤーで揚げた唐揚げ(
)。こっちだと肉は塊でドンと売ってることや、油を固める製品が高いので、エアフライヤーでトンカツや唐揚げをしてる&lt;/p&gt;
&lt;figure&gt;&lt;img src="./IMG_0621.webp"&gt;&lt;figcaption&gt;
&lt;h4&gt;Air fryer&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;ティファールのエアフライヤー。中を見てみると電熱線とファン、そしてアナログタイマーというシンプルな一品。&lt;/p&gt;
&lt;p&gt;あと、こちらはベジタリアンやヴィーガンの人も多いため、乳製品の代替食材が豊富です。例えば、アーモンドミルクやカシューナッツのアイスなどが比較的手ごろな値段で手に入ります。なので、コレステロールが気になる人としては大助かりです。&lt;/p&gt;
&lt;h2 id="時差は大変"&gt;時差は大変&lt;/h2&gt;
&lt;p&gt;今のチームのメンバーは東京に結構いるので、時差を考慮した働き方は割とすぐに体調を崩したりしてしまいがちです。
月曜から木曜は日本とオーバーラップしている時間帯を長めにとりたくなるけど、朝は学校の送りもあり起きる時間はずらせないので、ペースを作るまでが大変でした。&lt;/p&gt;
&lt;p&gt;ある時、同僚から月～木は少し遅めまで働いて木金の勤務を少し短めにしているという話を聞いて、今は金曜日勤務する時間を短めにしています。
このスタイルにするようになって、だいぶ肉体的にも精神的にも負荷感が減ったかなという感じです。&lt;/p&gt;
&lt;h2 id="家賃は高い"&gt;家賃は高い&lt;/h2&gt;
&lt;p&gt;家族4人で住むのに、押し詰めて2 Bed Rooms、仕事部屋も確保しながらだと3 Bed Roomsの部屋くらいはほしいところですが、Vancouver市内で
。&lt;/p&gt;
&lt;p&gt;Greater Vancouver Areaは海に近いVancouver City, North Vancouver, West Vancouverは高く、Burnaby, New Westminster, Surrey, Coquitlam東の内陸部に行くほど安くなっていきます。
そもそも、賃貸では2BRまでの物件が多いことに加えて、コロナ下で郊外の広めの家の需要が増えたため、家族住まいによい部屋を探すのが大変です。&lt;/p&gt;
&lt;p&gt;家の値段はずっと横這いだったのが上昇し始めたので、できればさっさと買ってしまいたいものです。が、戸建ては8 Bed Rooms 10 Bath Roomsとかで1M CAD以上からスタート、マンション的なコンドも900K CAD前後が多いので、まとまったお金を得ないと厳しそうです。&lt;/p&gt;
&lt;p&gt;家を借りるのに保険が必要です。うちはSquare Oneを使っていますが安くて良いです。
こちらの
から見積もりをすると$10のアマゾンギフト券が手に入るそうです。&lt;/p&gt;
&lt;h2 id="医療費は基本タダ"&gt;医療費は基本タダ&lt;/h2&gt;
&lt;p&gt;MSPと呼ばれる皆保険に入るのですが、これに入っていれば医者の診療は無料です。薬代はかかりますが、会社のextended health careを使うことである程度帰ってきます。
その代わり、予約をして待つ必要があるため、日本のようにふらっと立ち寄ることがしにくいです。walk in専門の病院もCOVID-19の時勢で原則予約必須になりました。&lt;/p&gt;
&lt;p&gt;子供がいる家庭としては医療費には結構敏感なので、結構助かっています。&lt;/p&gt;
&lt;p&gt;なお、歯医者やレーシックの治療なんかはお金がかかるので、なんでもかんでもただというわけではありません。&lt;/p&gt;
&lt;h2 id="小学校も無料"&gt;小学校も無料&lt;/h2&gt;
&lt;p&gt;小学校に上がる前のday careは結構高いようですが、小学校では保護者がwork permitを持っていれば学費はかかりません。
日本でいう高校までかからないので、助かりますね。&lt;/p&gt;
&lt;p&gt;なお、英語が全く話せなかった子供も、10か月経った最近になってようやくクラスの子とやり取りができるようになってきて、学校生活も落ち着いてきたように思います。上の子は授業でフランス語も始まっているので、英語に加えて少し大変そうです。&lt;/p&gt;
&lt;p&gt;バスや電車も子供の料金が今年無料になり、BC州は子育て支援を加速しており子持ち世帯には優しいように感じます。&lt;/p&gt;
&lt;p&gt;子連れ移住については別途まとめたのでこちらを見てください。
&lt;/p&gt;
&lt;h2 id="夏は日が長く冬は短い"&gt;夏は日が長く冬は短い&lt;/h2&gt;
&lt;figure&gt;&lt;img src="./IMG_0470.webp"&gt;&lt;figcaption&gt;
&lt;h4&gt;Deer lake&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;緯度が高いけれど、夏の気温は30度いかない程度、冬も下は0度前後とカナダの中でも過ごしやすいVancouverですが、日照時間はかなり変化が激しいです。&lt;/p&gt;
&lt;p&gt;夏は夜9時半くらいまで空が明るいため、近所の公園で子供が遊んでいる声も聞こえてきます。一方、冬になると朝8時になっても日が昇らず、4時には日が落ちます。そもそも、冬は雨期のため日が出る日が少なく週に一回でも雨が降っていなければテンションがあがります。&lt;/p&gt;
&lt;p&gt;外に積極的に散歩に出かけるようになったり、公園や山に子供と一緒にハイキングをするようになったりと、今までとは違うことをいろいろチャレンジして楽しいです。そして、今になって夏の大切さをかみしめています。&lt;/p&gt;
&lt;figure&gt;&lt;img src="./IMG_9697.webp"&gt;&lt;figcaption&gt;
&lt;h4&gt;Light house park&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;とはいえ、今年は夏の40度近くまであがるheat waveや、先月にBC州内陸部で起こった洪水など、今までとは違うことがいろいろと起こっているのを感じます。&lt;/p&gt;
&lt;h2 id="振り返ってみて"&gt;振り返ってみて&lt;/h2&gt;
&lt;p&gt;保険の面や教育の面で、アメリカよりも子育てがしやすいと思ってカナダに来ましたが、思った以上に楽しんでいます。
特に、食の面が東京ほど安くはないですが充実しており、自分としてはよかったと思っています。&lt;/p&gt;
&lt;p&gt;また、このエリアはAsianの比率も高いため、多様な文化に触れながらもある種の安心感もあります。&lt;/p&gt;
&lt;p&gt;実は、今年1月にビザ申請を提出して移住をしたわけですが、11月には永住権の申請も出すことができました。まだ、結果の受け取り待ちですが、アメリカに比べてもSoftwareを生業としている人にとっては、ビザも取りやすく移りやすい国だと思います。
取得出来たら、また時間を見つけてtimelineを整理していきたいと思います。&lt;/p&gt;
&lt;p&gt;明日は
です。&lt;/p&gt;</description></item><item><title>カナダのバンクーバーエリアに子連れ移住した</title><link>https://chezo.uno/post/2021-12-15-relocated-to-vancouver/</link><pubDate>Wed, 15 Dec 2021 13:01:00 -0800</pubDate><guid>https://chezo.uno/post/2021-12-15-relocated-to-vancouver/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Untitled"
srcset="https://chezo.uno/post/2021-12-15-relocated-to-vancouver/Untitled_hu_6b02bff870aab32a.webp 320w, https://chezo.uno/post/2021-12-15-relocated-to-vancouver/Untitled_hu_f1df10fa1140cf2c.webp 480w, https://chezo.uno/post/2021-12-15-relocated-to-vancouver/Untitled_hu_12caf5a8288691a4.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2021-12-15-relocated-to-vancouver/Untitled_hu_6b02bff870aab32a.webp"
width="760"
height="570"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;この記事は、「
」のスピンオフである。&lt;/p&gt;
&lt;p&gt;「バンクーバーエリア」と書いているのはいわゆるGreater Vancouverと呼ばれる場所に住んでいる（具体的には隣のBurnaby）けどわかりやすいのでそう書いている。（神奈川県民だけど横浜らへんに住んでるという感じのあれ）&lt;/p&gt;
&lt;h2 id="移住タイミング"&gt;移住タイミング&lt;/h2&gt;
&lt;p&gt;日本の学校の年度が切り替わる2021年4月の頭に移住をした。これは学年が変わると諸々大変だろうなと言う思いからそうした。結局、2週間の隔離や家探しをしていたおかげで現地のelementary schoolに通い始めたのが5月の頭で6月末にはこちらの学校が終わってしまったので、慣らし運転という感じになった。&lt;/p&gt;
&lt;h2 id="子連れ隔離生活"&gt;子連れ隔離生活&lt;/h2&gt;
&lt;p&gt;隔離の条件は情勢によって様々変わるだろうが、自分のときは2021年2月に急遽カナダ政府が14日隔離のうち冒頭3日間は政府指定ホテルを確保しろという今思えば一番厳しいときで、バタバタだった。&lt;/p&gt;
&lt;p&gt;最初3日間は政府指定ホテルに宿泊、その後別のホテルで11日間宿泊するという流れだった。&lt;/p&gt;
&lt;p&gt;教訓としては、窓の開かない部屋で14日間子供と一緒に生活すると、親も子も共に発狂しそうになるということであった。ホテルでは外の空気を吸うことができないのが息苦しく、また子供もちょっとでも退屈になると親を呼び立てるという状況であった。最初のホテルは広くて日当たりも良好だったが、一部屋全部つながっており常に子供と対峙する必要があり気づかれをし、後半のホテルは二部屋あるが一部屋は陽が全く当たらない部屋だったのでテレビを常に付けて明かり代わりにしていた。&lt;/p&gt;
&lt;p&gt;事前の対策としては、takuti氏のこのブログを穴が空くほど読みこんでいた。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;インスタントの食料なども含めて荷物の輸送には、プラ段とキャリーカートが良かった。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;あと、人間の数以上のPCやiPadを持ち運ぶために、各自リュックを用意して機内に持ち込んだ。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;洗濯はホテルの部屋で家族4人分を手洗いするのがなかなかハードだった。元CAのブログなどを読み漁って実際役に立ったのは、セームタオル。洗濯物をこれに包んでシャワースペースで踏むと脱水ができる。めちゃくちゃ吸水して絞ればすぐに乾くので必需品。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;その他、携帯ハンガーと物干しロープを持っていった。ロープはかけるところがあるかどうかは賭けだが、折りたたみハンガーは非常に重宝した。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;エンタメとしては家族で3台のSwitchを持っていき、現地でリングフィットアドベンチャーをやるつもりだったが、荷物預かりの部屋にリングコンを入れっぱなしにしてしまったので、フィットボクシング2を購入した。やはりフィジカルに体を動かすのは非常によく、これを買ってから子供も親も落ち着きが増した。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;薄手のヨガマットはホテル生活にあると運動もストレッチもできるのでかなり便利。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;Chromecast with Google TVは、ホテルの無線LANの認証もブラウザ経由で突破できるため、非常に重宝した。これのおかげでNetflixで無限にジブリを子供が見たため、今では僕よりジブリ作品のカバー率が高い。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h2 id="家学校探し"&gt;家＆学校探し&lt;/h2&gt;
&lt;p&gt;子連れでの家探しとはすなわち学校探しのことでもある。&lt;/p&gt;
&lt;p&gt;市や州にもよって学校の年度の切れ目が違うようだが、
と呼ばれる期間、幼稚園、elementary school、secondary schoolに通う。子供が通っているelementaryはGrade K,1,&amp;hellip;とはじまり7まである。年齢的には日本の1年生がGrade 2になる感じで1 grade上になる。&lt;/p&gt;
&lt;p&gt;バンクーバーエリアでは現地の公立小学校（elementary school）に入るしか選択肢はなく（あとはホームスクーリング）、通うとしたらどのあたりの小学校が良いかというのを検討した。&lt;/p&gt;
&lt;p&gt;公立のelementary schoolはcatchment areaと呼ばれる学区があり、住む場所が決まると自動的に学校が決まる。ただし、越境通学も教育委員会から許可が下りれば可能らしく、そこはネゴシエーションの世界のようだ。この国は何でもネゴシエーションである。&lt;/p&gt;
&lt;p&gt;具体的にはSchool Rankingサイトでスコアが高すぎず低すぎず（以下のサイトで6〜7.5くらい）のところを見つけて、その中でESL率が相対的に高く、Special Neesもそれなりに割合が高く、French Immersionが高くないかを調べた。また、可能であればアジア人の割合も調べた。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;というのも、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ESL率が低いとnativeしかおらず英語が全くできないうちの子供への対応が手薄になるであろう&lt;/li&gt;
&lt;li&gt;French Immersionもフランス語に特化していると、いきなり英語とフランス語を同時に習得するのは厳しいだろうしESLへの配慮が薄いかもという危惧&lt;/li&gt;
&lt;li&gt;Special Needsが低いと学校としてそういう子を受け入れない方針だったりする可能性があるだろいうという危惧&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;を考えていたからである。（実際、別の小学校のKinderに入れようとしたら発達に問題があるかもとか言われて断られたから学区を越えたという話も聞いた）&lt;/p&gt;
&lt;p&gt;アジア人の割合が高いと良いと感じているのは、「当たり前」がそれぞれのルーツの数だけあるであろいうという目論見からであった。ランチや各自持ち込むおやつの時間での食べ物に対するいじめや偏見が少ないだろうという予想もあった。実際、韓国のりをおやつに持ち込む子もいて、今までで不評だったのは食べる煮干し（魚の頭が残ってるから？）とナッツ入りのお菓子（ナッツアレルギーの子がいるため）くらいであった。&lt;/p&gt;
&lt;p&gt;ちなみに、ランチは学校で注文することもできるが、ピザとかそういう感じなのでおにぎりとおかずを小さい弁当箱に詰めて持たせている。ランチが終わると昼休みは雨でも雪でも外に駆り出されるので、防水の靴や長靴、上から履くレインパンツは必須。&lt;/p&gt;
&lt;p&gt;家のタイプは、一軒家、コンドミニアム（いわゆるマンション）、タウンハウス（縦長の長屋スタイル）が主にある。高層階のコンドミニアム以外は基本的に木造で、日本よりも古めの物件が多いことも有り上の階の足音が普通に聞こえる。これは日本では普通やる吸音材などを床下に入れないためらしい。なので、子供の騒音が気になるなら高層のコンドミニアムか（階下に人がいない）タウンハウスが良いかもしれない。こっちに来て驚いたのが一軒家の地下階や二階だけを賃貸に出すというのも多いので、そういうスタイルの場合は騒音トラブルはそれなりにある様子。&lt;/p&gt;
&lt;p&gt;なお、家を借りるときは大抵Home Insuranceに入っていることが求められるのだが、同僚などに聞く感じ Square Oneがネットで申し込めて安いのでよく使われている。以下のURLから見積もりをすれば$10の、契約をすれば$25のAmazonギフト券がもらえるのでよければ使ってみてほしい。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;あと、家を借りるときは半月分のSecurity Depositを払うなどまとまったお金がいるので、もしカナダの銀行にお金が入っていなければ、Wiseを使って日本から送金するとよいだろう。以下のリンクから申し込みをしてくれると手数料も無料になるクーポンが発行される。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;なお、BC州ではドライバーズライセンスを手に入れる時に日本の免許証を渡さないといけないのだが、Wiseの初回送金は本人確認で住所記載欄のある古いパスポートか免許証が必要なため、試しに一度送金しておくと良いだろう。（でないと、パスポート更新で詰む）&lt;/p&gt;
&lt;h2 id="英語"&gt;英語&lt;/h2&gt;
&lt;p&gt;子供によって合う合わないがあるので、一概には言えないのだが、我が家の場合はラッキーなことに移住から8ヶ月経った今は子どもたちは英語にかなり慣れてきている。&lt;/p&gt;
&lt;p&gt;我が家の場合、新学年がはじまったばかりの9月くらいまでは学校行きたくないと泣きわめくことも多かったが、年度が変わるとELLと呼ばれる英語初学者向けの授業などサポートが安定し、また学校の校庭が公園になっており、そこで遊ぶ友達も何人かできたためぐんぐん吸収している。&lt;/p&gt;
&lt;p&gt;日本では、特段英会話の教育を熱心にしていたわけでもない。妻が
や
の動画をYouTubeやNetflixで見せていた程度だ。&lt;/p&gt;
&lt;p&gt;セサミストリートは、主に文化面での多様性に関する話がふんだんに出てくるのがよく、色んな国のlunchの話だったりが出てきてこちらの学校に移ってもすんなり受け入れることができたと思う。&lt;/p&gt;
&lt;p&gt;Alphablocksはいわゆるフォニックスのルールをキャラクター化されたアルファベットと一緒に学べるのでおすすめ。&lt;/p&gt;
&lt;p&gt;なお、妻は英語には抵抗はなく学校の他の保護者との会話も妻のほうが良くしているので、そこは楽をさせてもらっている。（怪しい人じゃないと主張するためにお天気会話をすべきとよく言われる）&lt;/p&gt;
&lt;h2 id="医療費と健康保険"&gt;医療費と健康保険&lt;/h2&gt;
&lt;p&gt;カナダは健康保険については国民皆保険（MSPと呼ばれるプランに入る）なので、病気や怪我など病院での治療は基本無料で受けられる。ただし、歯科や眼科はお金がかかる。視力検査は子供は年に一回まで無料なので、学校で視力検査がない代わりに自分で行く必要がある。&lt;/p&gt;
&lt;p&gt;MSPについて子供は、study permitを持っている場合international student扱いになり、BC州ではMSPのお金として月に75ドルかかるので注意が必要。永住権を取れればこれが不要になるので結構大きい。&lt;/p&gt;
&lt;h2 id="教育資金の積立"&gt;教育資金の積立&lt;/h2&gt;
&lt;p&gt;カナダは、子供の教育資金の積立にRESP (Registered Education Savings Plan）というものがある。これを使うと拠出金額の20%マッチングしてくれたり、税制上の優遇がある。BC州は9歳までに申し込むと
。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;なんだけど、study permitだとSINと呼ばれるマイナンバーのようなもの（税金を払うための番号）が子供に発行できないので、永住権を待たないといけない。&lt;/p&gt;
&lt;p&gt;なお、RESPの他にもRRSPやTFSAなど子供には関係のない税制優遇されている投資口座があるので興味があれば調べてみると良い。&lt;/p&gt;
&lt;h2 id="子供向けのイベントがたくさんある"&gt;子供向けのイベントがたくさんある&lt;/h2&gt;
&lt;p&gt;自然が豊かなカナダなので、ハイキングやらバイクパークやら楽しむことは色々ある。そして、北米ではよくあるイベントとして、パンプキンパッチと呼ばれるハロウィンのかぼちゃを農場に行って拾ってきたり、いちご狩りも一大イベントである。クリスマスツリーを買ってきて飾り付けなんかもする。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Untitled"
srcset="https://chezo.uno/post/2021-12-15-relocated-to-vancouver/Untitled_hu_6b02bff870aab32a.webp 320w, https://chezo.uno/post/2021-12-15-relocated-to-vancouver/Untitled_hu_f1df10fa1140cf2c.webp 480w, https://chezo.uno/post/2021-12-15-relocated-to-vancouver/Untitled_hu_12caf5a8288691a4.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2021-12-15-relocated-to-vancouver/Untitled_hu_6b02bff870aab32a.webp"
width="760"
height="570"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="Untitled%202.png" alt="Untitled" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Michaelsと呼ばれる、creative系のあれこれが安く売ってるお店に行けば、絵の具やらオーナメントやら色々手に入るので、創作が好きな子供にはぴったりだろう。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="Untitled%203.png" alt="Untitled" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="Untitled%204.png" alt="Untitled" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="Untitled%205.png" alt="Untitled" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;クリスマスは一大イベントで、街中が飾り付けされている。&lt;/p&gt;
&lt;p&gt;学校でも、今日はXXデーなので、何色の服を来てきてください、とかパジャマデーなのでパジャマで投稿してねとか色々ある。色指定の服はMichaelsで様々な色のシンプルなTシャツが売ってるのでそれで済ませるとよい。&lt;/p&gt;
&lt;h2 id="習い事"&gt;習い事&lt;/h2&gt;
&lt;p&gt;市のスポーツセンターでは、水泳教室やスケート教室が安く開催される(水泳教室は$3以下で8週)ので、皆それに行かせるのが多いよう。友人のお家では空手教室に通ってたりすると聞く。&lt;/p&gt;
&lt;p&gt;厄介なのが、水泳教室の募集開始時は一斉にウェブで予約するので、複数端末からアクセスして予約合戦を繰り広げる必要があるところ。&lt;/p&gt;
&lt;p&gt;スケート教室なんかは少し遠いところで開催されたりするので、住んでる場所にもよるが車があったほうが送り迎えはしやすい。けど、バンクーバー近辺は北米で最も優れた公共交通機関とも評されたTransLinkが運用する鉄道やバスがある（酷い遅延はあまりなく、バスは予定より早く通り過ぎることもある！）ため、住む場所によってはそれらも使いこなせるだろう。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h2 id="日用品の買い物"&gt;日用品の買い物&lt;/h2&gt;
&lt;p&gt;子供の服や文房具などの消耗品は、Metrotown駅にあるカナダで二番目に大きいモールのMetropolisに買いに行く。ユニクロも無印もZaraもH&amp;amp;Mもなんでもある。消耗品はWalmartにいけばいいし、日本の文房具をメインに扱うお店もある。&lt;/p&gt;
&lt;p&gt;防水のジャケットやブーツは、Mountain Warehouseというカナダのモンベルが安くて品質もそれなりに良いのでそこで買っている。やはり、ブラックフライデーが一年で一番安いようだが、もともとはカナダにはブラックフライデーの文化はなく、Common Wealthの国として12/26のUnboxing dayがセールの時期だったらしい。&lt;/p&gt;
&lt;p&gt;ちなみに、北米は返品文化と言われるが、Amazonで頼んだものが既に壊れてるとか動かないみたいなのは日常茶飯事なので、返品がカジュアルに行わているという実感。&lt;/p&gt;
&lt;p&gt;そうそう、Amazonで思い出したが、日本の感覚でAmazonで買い物をするとたまに混乱することがある。例えば、東海岸から発送されるので1週間くらい平気でかかることもある、とかPrimeマークついてるからと油断すると、アメリカや日本から届いて1-2週間かかるとか。広大な国土を持つと輸送には時間がかかるんだなあと思わされる。&lt;/p&gt;
&lt;p&gt;なお、PCやデジタルガジェット系は日本より入手が非常に難易度が高く、中国系の製品がアメリカでは売ってるけどカナダでは売ってないということも多いので、必要であれば日本で買うのが良い。&lt;/p&gt;
&lt;h2 id="8ヶ月目での所感"&gt;8ヶ月目での所感&lt;/h2&gt;
&lt;p&gt;学校が一クラス20人しかおらず、授業も日本よりも自由にのびのびとやる感じ（教科書も配布されないし先生の裁量次第）みたいなのもあって、こちらの生活に想像以上に馴染んでいる様子。日本の学校ではCOVID-19後、様々なトラブルがあったのだが、カナダの先生はメールで困りごとを連絡するとさっと対策をしてくれたりするので非常に助かっている。&lt;/p&gt;
&lt;p&gt;このまま大きな問題もなく成長してくれることを願うが、おそらく学校とのタフなネゴシエーションはどこかで発生するだろうという心づもりで生活をしている。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;記事が気に入ったらbuymeacoffeeでサポートしていただけると嬉しいです&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>日本国外で出版社と取引をする際の所得税の源泉徴収の扱い</title><link>https://chezo.uno/post/2021-11-09-tax-on-publication/</link><pubDate>Tue, 09 Nov 2021 17:40:00 -0800</pubDate><guid>https://chezo.uno/post/2021-11-09-tax-on-publication/</guid><description>&lt;p&gt;⚠️ この記事は2021年11月段階で体験したことに基づき書いています。この情報は、あくまで参考程度に止め、原則的に税に関する不明な点は
に電話して確認してください。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="https://images.unsplash.com/photo-1564939558297-fc396f18e5c7?ixlib=rb-1.2.1&amp;amp;q=85&amp;amp;fm=jpg&amp;amp;crop=entropy&amp;amp;cs=srgb" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;私はカナダに居住をしており、日本の税務的には非居住者となります。カナダは日本と租税条約を結んでおり、源泉徴収が必要なケースでも日本に支払う所得税の軽減をすることができます。&lt;/p&gt;
&lt;p&gt;今回は、出版社との2種類の取引をするにあたって、カナダ在住の私が調べて実施した源泉徴収の扱いとそれに伴う手続きをこの記事にまとめます。&lt;/p&gt;
&lt;p&gt;私がした取引は、以下の2つの種類の取引をしました&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;書籍の印税（著作物の使用料、いわゆるロイヤリティ収入）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;書籍の有償での校正&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これらの取引が、どのように源泉徴収されるべきか・されないべきかを書いていきます。&lt;/p&gt;
&lt;h2 id="重要なソース"&gt;重要なソース&lt;/h2&gt;
&lt;p&gt;以下の手引を一通り読むと良いでしょう。ここに書いてあるのは令和3年度版なので、年度が変わると法令が変わる可能性があります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;令和3年度版 源泉徴収のあらまし 第10 非居住者又は外国法人に支払う所得の源泉徴収事務&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;租税条約に関する届出書等の電磁的提供に関するFAQ&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="重要なポイント"&gt;重要なポイント&lt;/h2&gt;
&lt;p&gt;そのという点が最も重要なポイントになります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;非居住者か？&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;所得が国内源泉所得か？&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="「源泉徴収のあらまし 第10 非居住者又は外国法人に支払う所得の源泉徴収事務」より。個人の非居住者は、国内源泉所得の場合にのみ源泉徴収の対象となる"
srcset="https://chezo.uno/post/2021-11-09-tax-on-publication/Untitled_hu_f62e62ed2594aaaa.webp 320w, https://chezo.uno/post/2021-11-09-tax-on-publication/Untitled_hu_52f9655bd1bcb179.webp 480w, https://chezo.uno/post/2021-11-09-tax-on-publication/Untitled_hu_3c9af071c635a864.webp 661w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2021-11-09-tax-on-publication/Untitled_hu_f62e62ed2594aaaa.webp"
width="661"
height="537"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;「源泉徴収のあらまし 第10 非居住者又は外国法人に支払う所得の源泉徴収事務」より。個人の非居住者は、国内源泉所得の場合にのみ源泉徴収の対象となる&lt;/p&gt;
&lt;p&gt;上の表を見ると、非居住者でかつ国内源泉所得である場合において源泉徴収が発生することがわかります。この書類は源泉徴収対象外の場合がわかりにくいので気をつけてください。ではこの2つの要件を見ていきましょう。&lt;/p&gt;
&lt;h2 id="非居住者か"&gt;非居住者か？&lt;/h2&gt;
&lt;p&gt;非居住者とは、国税庁の
によると&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;我が国の所得税法では、「居住者」とは、国内に「住所」を有し、又は、現在まで引き続き1年以上「居所」を有する個人をいい、「居住者」以外の個人を「非居住者」と規定しています。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;となります。&lt;/p&gt;
&lt;p&gt;この「住所の推定」は以下の別紙によると、2つの要件のどちらかに該当するかで判定します。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;その者が国外において、継続して一年以上居住することを通常必要とする職業を有すること&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;その者が外国の国籍を有し又は外国の法令によりその外国に永住する許可を受けており、かつ、その者が国内において生計を一にする配偶者その他の親族を有しないことその他国内におけるその者の職業及び資産の有無等の状況に照らし、その者が再び国内に帰り、主として国内に居住するものと推測するに足りる事実がないこと&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;私の場合は、日本国籍なので2は関係ありません。1に関してもソフトウェアエンジニアは一般的に継続して一年以上居住することを通常必要する職業であり、非居住者の判定ができそうです。&lt;/p&gt;
&lt;h2 id="国内源泉所得か"&gt;国内源泉所得か？&lt;/h2&gt;
&lt;p&gt;「国内源泉所得」というのは、「源泉徴収のあらまし 第10 非居住者又は外国法人に支払う所得の源泉徴収事務」にも以下のように記載されています。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;課税対象とする所得をその所得の発生源泉地が国内にあるもの、いわゆる国内源泉所得に限ることとしています。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;実際には、判定に関する条件として以下の2つがポイントとなります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;恒久的施設を持っているか&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;その所得の区分は租税条約上、課税対象となっているか&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="恒久的施設"&gt;恒久的施設&lt;/h3&gt;
&lt;p&gt;恒久的施設は、ざっくりいうと日本に商売をするための拠点を持っているかということなのですが、これ自体で一つの記事が書ける類のものなので、割愛します。少なくとも、日本国外で執筆活動を行い日本の出版社と取引をしていている人は持っている可能性は低い（例えば、実家は特に恒久的施設とはみなされない）ので、調べて見てください。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h3 id="租税条約上の課税対象か印税"&gt;租税条約上の課税対象か（印税）&lt;/h3&gt;
&lt;p&gt;所得の区分に関してですが、印税（著作権使用料）は「使用料等（十一号所得）」となります。これは、租税条約を結んでいる国によって扱いが異なってきます。&lt;/p&gt;
&lt;p&gt;以下の引用した表を見ると、アメリカの場合は源泉地国免税のため日本では免税、カナダは債務者主義を取っている国になるため、日本の出版社との取引の場合は日本にて源泉徴収がなされます。ただし、カナダの場合は租税条約により最大10%までの軽減税率が適用されます。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="Untitled%201.png" alt="「源泉徴収のあらまし 第10 非居住者又は外国法人に支払う所得の源泉徴収事務」より" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;「源泉徴収のあらまし 第10 非居住者又は外国法人に支払う所得の源泉徴収事務」より&lt;/p&gt;
&lt;h3 id="租税条約上の課税対象か校正作業"&gt;租税条約上の課税対象か（校正作業）&lt;/h3&gt;
&lt;p&gt;校正作業の場合は、一般的にその作業によって著作権がレビュアーに発生しないため、人的役務の提供（サービスの提供）という扱いになります。この所得は「人的役務の提供事業の対価（六号所得）」となります。&lt;/p&gt;
&lt;p&gt;この場合、租税条約の多くは恒久的施設がない限り、原則として日本の租税は免除されることになります。&lt;/p&gt;
&lt;p&gt;つまり、この作業をした場合源泉徴収は行われません。もし、源泉徴収がされてしまった場合は後述の誤納額の還付請求を行います。&lt;/p&gt;
&lt;h2 id="実際の手続きは何をするか"&gt;実際の手続きは何をするか&lt;/h2&gt;
&lt;h3 id="著作権使用料に関する手続き"&gt;著作権使用料に関する手続き&lt;/h3&gt;
&lt;p&gt;著作物の使用料に関しては以下の書類を源泉徴収前に出版社を介して提出します。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;源泉徴収前で、支払いまでに手続きが間に合いそうな場合&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;使用料に対する所得税及び復興特別所得税の軽減・免除（申請書名「租税条約に関する届け出書（使用料に対する所得税及び復興特別所得税の軽減・免除）」&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;源泉徴収後&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;租税条約に関する届出書&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;租税条約に関する源泉徴収税額の還付請求（申請書名「租税条約に関する源泉徴収税額の還付請求書」）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社側で「源泉徴収納付書の控え」が必要（取得に時間がかかるので要注意）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これらの租税条約に関する書類の提出は令和3年から電子的にPDFで提出が可能となりました。&lt;/p&gt;
&lt;p&gt;以下の書類に詳しいですが、&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;電子署名を行い電子証明書を付す&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;源泉徴収義務者から通知された識別符号（ID）及び暗証符号（パスワード）を用いる&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;源泉徴収義務者に届出書等提出者等確認書類を提示する&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;とされています。&lt;/p&gt;
&lt;p&gt;電子署名はハードルが高いので使わず、提出者等確認書類も領事館などで「居住者証明」の取得が必要となり、こちらの取得の金銭的・人的コストがかかるため、IDとパスワードによる提出を行いました。&lt;/p&gt;
&lt;p&gt;こちらは、出版社にIDとパスワードを発行してもらい、それをもとにPDFのファイル名のprefixにIDを付与して(&lt;code&gt;GivenId_tax_refund.pdf&lt;/code&gt;)、複数書類あったのでzipにパスワードをかけて送付しました。IDとパスワードの使い方・管理方法については特に法令での指定はないようです。&lt;/p&gt;
&lt;p&gt;また、合わせて滞在国でtax returnをする際に源泉徴収済みであることを示す納税証明書を、出版社に依頼して取得しましょう。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;源泉徴収に係る所得税及び復興特別所得税の納税証明願（申請署名「源泉徴収に係る所得税及び復興特別所得税の納税証明願」）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社側で「当該源泉所得税及び復興特別所得税を納付した際の所得税徴収高計算書の写し」として「源泉徴収納付書の控え」が必要（取得に時間がかかるので注意）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h3 id="人的役務の提供に関する手続き"&gt;人的役務の提供に関する手続き&lt;/h3&gt;
&lt;p&gt;もし、印税以外の人的役務に関して源泉徴収されてしまった場合は、以下の書類を出版社に提出するよう依頼します。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;源泉所得税及び復興特別所得税の誤納額の還付請求&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;💡 消費税は非居住者が海外で作業した場合は免税になります。そのため、消費税の請求はしないようにしましょう&lt;/p&gt;
&lt;h2 id="困ったら国税局電話相談センターに電話しよう"&gt;困ったら国税局電話相談センターに電話しよう&lt;/h2&gt;
&lt;p&gt;日本で雇っている税理士がいればもちろんその方に相談すればよいのですが、困ったら
に電話しましょう。出国時に所轄税務署が決まると思いますので、そこに電話をして問い合わせます。担当の税務署に一度電話をかけて、1→ 1(所得税)または2(源泉徴収等)を選びます。&lt;/p&gt;
&lt;p&gt;出版社もこうした作業はたまにしか発生しないため、その時々の法令の改正についていけないことが多いです。また、申請をしないと間違った納税をしたときに二重課税になる恐れがあります。自分で調べて電話相談センターの人から得たアドバイスをもとに進めると、円滑に手続きが進むと思います。&lt;/p&gt;
&lt;p&gt;なお、難しい問題の場合電話の折り返しがありうるため、日本との電話は楽天モバイルと楽天ミニがとても役に立ちました。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;記事が気に入ったらbuymeacoffeeでサポートしていただけると嬉しいです&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>オライリーから「仕事ではじめる機械学習 第2版」を出版しました</title><link>https://chezo.uno/post/2021-04-24-ml-at-work-2nd-edition/</link><pubDate>Sat, 24 Apr 2021 16:48:57 -0700</pubDate><guid>https://chezo.uno/post/2021-04-24-ml-at-work-2nd-edition/</guid><description>
&lt;details class="print:hidden xl:hidden" &gt;
&lt;summary&gt;Table of Contents&lt;/summary&gt;
&lt;div class="text-sm"&gt;
&lt;nav id="TableOfContents"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#改訂版の見どころ"&gt;改訂版の見どころ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#おすすめの読み方"&gt;おすすめの読み方&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#おまけ目次"&gt;おまけ:目次&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/nav&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;p&gt;4/23に「仕事ではじめる機械学習 第2版」を
さんと
さんとともに出版しました。
電子版は、Kindleでは購入できない &lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; のでぜひ
からDRMフリーのPDF、EPUBをご購入ください。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4873119472/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
仕事ではじめる機械学習 第2版
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;コードは今回はGitHubとGoogle Colaboratoryにあります。詳しくは、GitHubのレポジトリをご覧ください。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;なお、第一版のコードは
にあります。&lt;/p&gt;
&lt;p&gt;同人誌や
が出た2017年から4年の歳月を経て、この度改訂版を出すこととなりました。&lt;/p&gt;
&lt;p&gt;皆さまのおかげでAmazonの書籍ランキングでも、
こともあったそうです。ありがたい限りです。&lt;/p&gt;
&lt;p&gt;[2021/04/26追記]&lt;br&gt;
ジュンク堂書店池袋本店とEbookの販売でも1位を獲得したようです。ありがたや〜&lt;/p&gt;
&lt;p&gt;&lt;br&gt;
[/追記]&lt;/p&gt;
&lt;h2 id="改訂版の見どころ"&gt;改訂版の見どころ&lt;/h2&gt;
&lt;p&gt;おかげさまで、第1版も非常に好評をいただいて、紙版が出てから3年間地道に応援いただいていました。
今回、改訂にあたって古くなった情報を見直したり、新しく書き直し、追加したりと様々行いました。
その結果、約1/3が新たに執筆されたページとなり、厚さも前回よりかなり分厚くなっています。&lt;/p&gt;
&lt;blockquote class="twitter-tweet"&gt;&lt;p lang="ja" dir="ltr"&gt;第２版、めっちゃ分厚くなってるやんか &lt;a href="https://t.co/TNWOsqMf8N"&gt;pic.twitter.com/TNWOsqMf8N&lt;/a&gt;&lt;/p&gt;&amp;mdash; ところてん (@tokoroten) &lt;a href="https://twitter.com/tokoroten/status/1382930353032077315?ref_src=twsrc%5Etfw"&gt;April 16, 2021&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;大きな違いは初版の目次と比較していただいてもわかるかとは思いますが、以下のポイントが大きな変更点になります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;機械学習基盤とML Opsの章の追加 (chezou)&lt;/li&gt;
&lt;li&gt;効果検証の章の大幅改訂（hagino3000）&lt;/li&gt;
&lt;li&gt;退職予測をテーマに予測モデルの解釈をする (tokoroten)&lt;/li&gt;
&lt;li&gt;オンライン広告における機械学習モデルの役割と運用 (hagino3000)&lt;/li&gt;
&lt;li&gt;エンジニア向けの数式を少なくしたバンディットアルゴリズム解説 (tokoroten)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="おすすめの読み方"&gt;おすすめの読み方&lt;/h2&gt;
&lt;p&gt;帯には「上司に機械学習でいい感じにしてくれと言われたら」とありますが、それに対する直接的な答えは残念ながら書かれてはいませんが、そこに至るまでの足がかりとなる情報がコンパクトにまとまっているかなと思います。
著者3名それぞれが「実務でそれいるの？」というツッコミをしながらの執筆は、楽しくも辛くも &lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt; ありました。&lt;/p&gt;
&lt;p&gt;読み方としては色々あると思いますが、まずは肩肘張らずに難しいところは飛ばしてざっと読んでいただいて、後で困ったら辞書のように引っ張り出して更に別の文献にあたって深堀りする、という読み方が良いのではないかなと思います。
私は前回のときからの縛りで極力数式を使わないように書いていますが、tokorotenはその中間、hagino3000さんは数式は他の二人より多め、とバラエティに富んでいます。&lt;/p&gt;
&lt;p&gt;もしかしたら、経験が少ないうちは気にならなかったことも、あとから見返してみるとわかるようになることもあるかもしれません。
初版の読者さんの中では、大学を出て実務の支えになったという声も聞き、嬉しくなりました。&lt;/p&gt;
&lt;p&gt;どんな業務でも書籍の理想的な状態と実務の泥臭い部分のギャップというものはあるかと思います。そうした溝を埋めるのに本書が助けになれば嬉しいです。&lt;/p&gt;
&lt;h2 id="おまけ目次"&gt;おまけ:目次&lt;/h2&gt;
&lt;p&gt;オライリー・ジャパンのサイトに行くのも面倒くさいという方のために、以下目次です。&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;目次&lt;/summary&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;まえがき
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;第I部
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;1章　機械学習プロジェクトのはじめ方
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 1.1　機械学習はどのように使われるのか
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 1.2　機械学習プロジェクトの流れ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 1.2.1　ビジネス課題を機械学習の課題に定式化する
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 1.2.2　類似の課題を、論文を中心にサーベイする
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 1.2.3　機械学習をしなくて良い方法を考える
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 1.2.4　システム設計を考える
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 1.2.5　特徴量、教師データとログの設計をする
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 1.2.6　実データの収集と前処理をする
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 1.2.7　探索的データ分析とアルゴリズムを選定する
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 1.2.8　学習、パラメータチューニング
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 1.2.9　システムに組み込む
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 1.3　実システムにおける機械学習の問題点への対処方法
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 1.3.1　人手でゴールドスタンダードを用意して、予測性能のモニタリングをする
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 1.3.2　予測モデルをモジュール化してアルゴリズムのA/Bテストができるようにする
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 1.3.3　モデルのバージョン管理をして、いつでも切り戻し可能にする
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 1.3.4　データ処理のパイプラインごと保存する
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 1.3.5　開発/本番環境の言語/フレームワークを揃える
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 1.4　機械学習を含めたシステムを成功させるには
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 1.5　この章のまとめ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2章　機械学習で何ができる？
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 2.1　どのアルゴリズムを選ぶべきか？
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 2.2　分類
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 2.2.1　パーセプトロン
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 2.2.2　ロジスティック回帰
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 2.2.3　SVM
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 2.2.4　ニューラルネットワーク
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 2.2.5　k-NN
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 2.2.6　決定木、ランダムフォレスト、GBDT
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 2.3　回帰
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 2.3.1　線形回帰の仕組み
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 2.4　クラスタリング・次元削減
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 2.4.1　クラスタリング
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 2.4.2　次元削減
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 2.5　その他
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 2.5.1　推薦
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 2.5.2　異常検知
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 2.5.3　頻出パターンマイニング
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 2.5.4　強化学習
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 2.6　この章のまとめ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3章　学習結果を評価するには
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 3.1　分類の評価
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 3.1.1　正解率を使えば良いのか？
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 3.1.2　データ数の偏りを考慮する適合率と再現率
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 3.1.3　F値でバランスの良い性能を見る
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 3.1.4　混同行列を知る
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 3.1.5　多クラス分類の平均の取り方: マイクロ平均、マクロ平均
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 3.1.6　ROC曲線とAUC
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 3.1.7　分類モデルを比較する
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 3.2　回帰の評価
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 3.2.1　平均二乗誤差
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 3.2.2　決定係数
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 3.3　機械学習を組み込んだシステムのA/Bテスト
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 3.4　この章のまとめ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;4章　システムに機械学習を組み込む
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 4.1　システムに機械学習を含める流れ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 4.2　システム設計
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 4.2.1　混乱しやすい「バッチ処理」と「バッチ学習」
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 4.2.2　バッチ処理で学習、予測、予測結果をDB経由でサービングする
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 4.2.3　バッチ処理で学習、リアルタイム処理で予測、予測結果をAPI経由でサービングする
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 4.2.4　バッチ処理で学習、エッジのリアルタイム処理で予測する
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 4.2.5　リアルタイム処理で学習をする
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 4.2.6　各パターンのまとめ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 4.3　教師データを取得するためのログ設計
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 4.3.1　特徴量や教師データに使いうる情報
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 4.3.2　ログを保持する場所
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 4.3.3　ログを設計する上での注意点
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 4.4　この章のまとめ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;5章　学習のためのリソースを収集する
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 5.1　学習のためのリソースの取得方法
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 5.2　公開されたデータセットやモデルを活用する
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 5.3　開発者自身が教師データを作る
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 5.4　同僚や友人などにデータ入力してもらう
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 5.5　クラウドソーシングを活用する
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 5.6　サービスに組み込み、ユーザーに入力してもらう
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 5.7　この章のまとめ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;6章　継続的トレーニングをするための機械学習基盤
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 6.1　機械学習システム特有の難しさ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 6.1.1　データサイエンティストvs ソフトウェアエンジニア
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 6.1.2　同一の予測結果を得る難しさ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 6.1.3　継続的トレーニングとサービングの必要性
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 6.2　継続的トレーニングとML Ops
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 6.2.1　リリースのアジリティを上げるための機械学習基盤
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 6.2.2　ML Ops：機械学習基盤におけるCI/CD/CTを目指す取り組み
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 6.3　機械学習基盤のステップ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 6.3.1　共通の実験環境
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 6.3.2　予測結果のサービング
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 6.3.3　学習、予測共通の処理のパイプライン化
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 6.3.4　モデルの継続的学習・デプロイ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 6.4　予測結果のサービングを継続し続けるために
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 6.4.1　監視・モニタリング
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 6.4.2　定期的なテスト
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 6.5　この章のまとめ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;7章　効果検証：機械学習にもとづいた施策の成果を判断する
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.1　効果検証の概要
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.1.1　ビジネス指標（メトリクス）を用いた施策の評価
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.1.2　施策実行後の効果検証の重要性
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.1.3　オフライン検証とオンライン検証
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.1.4　指標の選定
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.2　因果効果の推定
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.2.1　相関関係と因果関係の区別
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.2.2　ルービンの因果モデル
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.2.3　セレクションバイアスによるみせかけの効果
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.2.4　ランダム化比較試験
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.2.5　過去との比較で判断するのは難しい
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.3　仮説検定の枠組み
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.3.1　なぜ仮説検定なのか
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.3.2　コインは歪んでいるか
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.3.3　獲得ユーザーの継続利用率の比較
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.3.4　差の信頼区間を求める
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.3.5　偽陽性と偽陰性
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.3.6　p値ハック
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.4　A/Bテストの設計と実施
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.4.1　2 群の抽出と標本サイズ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.4.2　継続的なA/Bテストと終了判定
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.4.3　A/Aテストによる均質さの確認
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.4.4　施策同士の相互作用に注意
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.4.5　A/Bテストの仕組み作り
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.5　オフライン検証
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.5.1　ビジネス指標を使った予測モデルの評価
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.5.2　反実仮想の扱い
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.5.3　Off Policy Evaluation
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.6　A/Bテストができないとき
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.6.1　観察データを使った効果検証
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.7　この章のまとめ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.8　こぼれ話：絶対に成功するA/Bテスト、A/Bテストの母集団ハック
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.8.1　母集団コントロールによるA/Bテストのハック
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.8.2　休眠顧客へのアプローチ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.8.3　バックボタンハック
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.8.4　母集団ハックを見抜く
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 7.8.5　休眠顧客を使った低リスク実験による成功事例の積み上げ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;8章　機械学習のモデルを解釈する
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 8.1　Google Colaboratory にインストールされているライブラリをバージョンアップする
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 8.2　学習用のファイルをアップロードして確認する
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 8.3　線形回帰の係数から原因を読み解く
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 8.4　ロジスティック回帰の係数から原因を読み解く
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 8.5　回帰係数のp値を求める
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 8.6　決定木の可視化から原因を読み解く
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 8.7　ランダムフォレストのFeature Importance の可視化
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 8.8　SHAPによる寄与の可視化
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 8.9　従業員満足度をSHAPで可視化する
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 8.10　この章のまとめ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;第II部
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;9章　Kickstarterの分析、機械学習を使わないという選択肢
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 9.1　Kickstarter のAPIを調査する
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 9.2　Kickstarter のクローラーを作成する
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 9.3　JSONデータをCSVに変換する
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 9.4　Excel で軽く眺めてみる
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 9.5　ピボットテーブルで色々と眺めてみる
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 9.6　達成したのにキャンセルされたプロジェクトを見てみる
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 9.7　国別に見てみる
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 9.8　レポートを作る
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 9.9　今後行いたいこと
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 9.10　この章のまとめ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;10章　Uplift Modelingによるマーケティング資源の効率化
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 10.1　Uplift Modelingの四象限のセグメント
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 10.2　A/Bテストの拡張を通じたUplift Modelingの概要
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 10.3　Uplift Modelingのためのデータセット生成
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 10.4　2 つの予測モデルを利用したUplift Modeling
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 10.5　Uplift Modelingの評価方法、AUUC
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 10.6　実践的な問題での活用
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 10.7　Uplift Modelingを本番投入するには
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 10.8　この章のまとめ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;11章　バンディットアルゴリズムによる強化学習入門
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 11.1　バンディットアルゴリズムの用語の整理
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 11.2　確率分布の考え方
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 11.3　事後分布の考え方
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 11.4　事後分布の信用区間上限を用いた実装例
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 11.5　UCB1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 11.6　確率的なバンディットアルゴリズム
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 11.6.1　Softmax 法
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 11.6.2　Thompson Sampling 法
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 11.7　各種バンディットアルゴリズムの比較
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 11.8　文脈付き多腕バンディットのブートストラップ法による実装
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 11.9　現実の問題での課題
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 11.9.1　報酬が届くのに時間がかかる
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 11.9.2　オフライン実験するためのログデータがバンディットによって偏っている
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 11.9.3　有効なアームは流行の移り変わりで時間変化する
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 11.9.4　最善なアームが最適ではないことがある、多様性の価値
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 11.9.5　アームが途中から追加される
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 11.10　バンディットアルゴリズムと、A/Bテスト、Uplift Modelingの関係性
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 11.11　この章のまとめ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;12章　オンライン広告における機械学習
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 12.1　オンライン広告のビジネス設定
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 12.1.1　広告枠の売買
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 12.1.2　DSPの行動方策
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 12.1.3　ファーストプライスオークションの特徴
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 12.1.4　入札の流れ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 12.2　問題の定式化
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 12.2.1　市場価格と勝率
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 12.2.2　効用（Utility）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 12.3　予測の役割と実装
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 12.3.1　オーディエンスのレスポンス予測
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 12.3.2　勝率（市場価格）の予測
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 12.4　広告配信ログの特徴
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 12.4.1　フィードバックループ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 12.4.2　不均衡データ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 12.4.3　カーディナリティの大きなカテゴリ変数
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 12.4.4　打ち切りデータ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 12.5　機械学習予測モデルの運用
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 12.5.1　予測を外したときの対処
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 12.5.2　継続的なモデルの訓練
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 12.6　この章のまとめ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;あとがき
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;参考文献
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;索引
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/details&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;
&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;(海外移住に出産に本業のデスマラッシュにと、全員なぜか締切と重なる様々な出来事があった)&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>2020年を振り返って</title><link>https://chezo.uno/post/2020-12-31-2020-review/</link><pubDate>Thu, 31 Dec 2020 05:06:15 -0800</pubDate><guid>https://chezo.uno/post/2020-12-31-2020-review/</guid><description>&lt;p&gt;久しぶりの年末の振り返りです。振り返ってみると
みたいですね。&lt;/p&gt;
&lt;h2 id="コミュニティ学会活動oss活動"&gt;コミュニティ・学会活動、OSS活動&lt;/h2&gt;
&lt;p&gt;MLCTとMLSEの幹事的存在として主に配信担当として活動しました。フロントに立っていただいた上田さん、土橋さんには頭が上がりません。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
(kawasaki.rbのブログより)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;MLSEでは今年は様々な困難はあったものの、2回の
の
とML基盤についてのオンラインカンファレンスをしました。&lt;/p&gt;
&lt;p&gt;kawasaki.rbも8年目に突入しましたが、2月にお休みした以外
。&lt;/p&gt;
&lt;p&gt;OSS活動はtabula-pyはissueを苦なく裁く仕組みづくりに注力しました。そのネタで発表もしました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;tabula-pyはCOVID-19の影響で2月以降もユーザが増えていたようで問い合わせも昨年に比べて増えていたように思います。3年前は100スターとか言って喜んでたけど今見たら1.3KってGitHubに丸められてました。すごい。&lt;/p&gt;
&lt;p&gt;あとは、久しぶりにRパッケージを
したりしていました。&lt;/p&gt;
&lt;h2 id="仕事"&gt;仕事&lt;/h2&gt;
&lt;p&gt;有償トレーニングのテキストを作りました。おかげさまで今年始まったばかりですがかなり好評と聞いています。また、トレーニングに関して
のが良かったです。&lt;/p&gt;
&lt;p&gt;他にも、
今年も
にかすることができたので良かったです。&lt;/p&gt;
&lt;p&gt;チームが変わってRailsとSQLとdigdagをガリガリ書いていますが、なんとか食らいついています。&lt;/p&gt;
&lt;p&gt;あと、副業としてLegalForceさんのML基盤の構築のお手伝いをしています。
こちらも実際の業務フローがどうなっていくかを考えながらの議論が大変楽しいです。&lt;/p&gt;
&lt;h2 id="買ってよかったもの買ってあってよかったもの"&gt;買ってよかったもの、買ってあってよかったもの&lt;/h2&gt;
&lt;p&gt;車を買ったんですが、この情勢下でストレスを減らして移動ができたり買い物ができたりと良かったです。あとは、作業部屋がある家に住んでいて本当に良かったなと思います。&lt;/p&gt;
&lt;p&gt;マイク周りはずっと&lt;del&gt;警察&lt;/del&gt;啓蒙活動をしていました。自分のマイクはBETA58Aを買いました。ダイナミックマイクはいいぞ。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B0002BACB4/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
SHURE ダイナミック マイクロフォン BETA58A
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;個人的には、MLSEのオンラインカンファレンスは発表者の皆様の協力のおかげで聞きやすく議論に集中しやすい音環境ができたんじゃないかなと思っています。&lt;/p&gt;
&lt;p&gt;オンラインで配信されるライブをよく見た年でした。B&amp;rsquo;zのSHOW CASEやTricolorやOjizoのライブを堪能していました。&lt;/p&gt;
&lt;h2 id="漫画映画"&gt;漫画・映画&lt;/h2&gt;
&lt;p&gt;隙間時間で使えるものとして漫画を読むことが多いのですが、この辺がとても気に入っています。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B07BHKN4YQ/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
最果てのパラディン 1
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;アンデットに育てられた少年の成長の物語。絵も話の流れも良くて引き込まれます。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B07J64W9FG/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
北欧貴族と猛禽妻の雪国狩り暮らし 1
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;一目惚れした北欧貴族が軍で活躍する女性と契約結婚からはじまる物語。フィンランドかスウェーデンの北部かなという感じでご飯も美味しそうだしキャラも良い。癒やし。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B08R39SJK8/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
Landreaall: 36
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;ガンガン、Gファンタジーから続く世界観のファンタジーの物語。主人公がやや無双気味ではあるが、悩み仲間とともに精神的な成長を遂げていくさまはとてもよい。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B08FDH57JT/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
葬送のフリーレン 1
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;各所でおすすめされたので読み始めたけど良い。いわゆる、ポスト魔王討伐もの。長命のエルフが旅をする物語。一話一話で多くは物語が完結するテンポの良さ。ドファンタジーで良い。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B00XKM6TGY/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
波よ聞いてくれ 1
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;アニメを先に知って続きが気になって漫画を買ってしまった。破天荒な主人公がハチャメチャに常識を破壊しながらのドタバタ劇。ラジオが好きなのでこういうものづくりの世界なんだなと垣間見られるのが良い。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B07873642C/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
ブルーピリオド 1
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;若さと青春と芸術系の答えのない世界のぐちゃぐちゃと。アート系のTwitchの配信を見ていると、本当にこの人達は（自分たちと違って）答えも評価尺度も評価関数もない世界で戦ってるんだなと思うが、それを端的に表現している作品。自分にはそこまで黒歴史をえぐられる感はないが、人によってはかさぶたを剥がされる感覚に陥るらしいので注意。&lt;/p&gt;
&lt;p&gt;あとは、Disney+でMarvel作品を1から見ています。アイアンマンが苛ついたりする事が多いですが、全体的に安心できるクオリティで見ていて楽しいです。&lt;/p&gt;
&lt;h2 id="2021年に向けて"&gt;2021年に向けて&lt;/h2&gt;
&lt;p&gt;原稿執筆は年に1個までだったなとか、動画編集をもう少しできる時間を確保したいなと思いつつの2020年でしたが、2021年はリングフィットも継続して体をいたわりながら家族ともども健康な1年を過ごしたいなと思います。&lt;/p&gt;</description></item><item><title>メッシュWiFiが安定しないので有線LANを張り巡らせたんだが</title><link>https://chezo.uno/post/2020-12-11-wired-lan-triggers-troubles/</link><pubDate>Thu, 10 Dec 2020 07:00:00 -0800</pubDate><guid>https://chezo.uno/post/2020-12-11-wired-lan-triggers-troubles/</guid><description>&lt;p&gt;このお話は、
の11日目です。昨日はwozozoでした。多分彼はこの記事をチラ見して「長過ぎる。地雷乙」と言うでしょう。&lt;/p&gt;
&lt;p&gt;3階建ての家でインターネットを安定させるために、NETGEARのOrbiというメッシュWiFiを構築していたのだが、どうにも調子が悪いので有線LANを張り巡らせました。これはその奮闘記です。なお、筆者はネットワーク系は素人なので用語などが不正確な場合がありますががあしからず。あと、面倒なので以降語尾はですます調じゃなくなります。&lt;/p&gt;
&lt;h2 id="メッシュwifi購入"&gt;メッシュWiFi購入&lt;/h2&gt;
&lt;p&gt;事前にメッシュWiFIを色々調べたが、どうもNETGEARのOrbiが良いらしいという話を聞いていた。NETGEARが素晴らしいのは購入前にこういう環境だけどどのモデルを買えば良いのか？という相談をできること。これは素晴らしい。当時WiFi-6対応のモデルは出ておらずでかい筐体のOrbiと日本向けの小さいOrbi Microの二種類が出ていたのでどちらを何台買えば良いのかわからなかった。&lt;/p&gt;
&lt;p&gt;電話でこういう環境でこれくらいの広さなんだけどと言うと、「3階建ての場合はOrbiを3台です。これ以外ありません」とサポートの人が自身を持って答えてくれた。へー、そうなんだ。Microの方が安いしそこまで広くないからそれでいいかなと思っていたけど餅は餅屋だ。そう思ってOrbiをサテライト2台付きの3台セットを購入した。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B07ZT3PXFN/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
NETGEAR メッシュWiFi無線LANルーター2台セット 11ac 速度AC3000 トライバンド Orbi 推奨60台/350㎡ RBK50
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;設置した当初は、うおおお無線LAN速い！安定する！と喜んでいたが、よくよく設置して調べてみると1台で全部屋カバーしてるじゃん。まあいいか、一応レスポンス良くなるし。と思いながら、サテライト1台は封印することに。&lt;/p&gt;
&lt;p&gt;しかし、その時はまだ地獄の始まりだということを知らなかった。&lt;/p&gt;
&lt;h2 id="フルwfhのはじまり"&gt;フルWFHのはじまり&lt;/h2&gt;
&lt;p&gt;例によって全面的なWFHが2月から始まって、テレカンをする機会が激増した。すると、なんか無線LANが遅いことに気づいた。OrbiはIIJmioひかりが使っているDS-Liteこそ対応してないが、
をオンにしてみるもまだ遅い。色々と切り分けてみると、Orbiの設置場所を変えたときにNTTの終端装置とOrbi間のLANケーブルを変更したのだが、その時に古いケーブルを指したらCat 5eでも有線LANの速度が全然出ていなかった。ケーブルって劣化するんだ&amp;hellip;。&lt;/p&gt;
&lt;p&gt;それでも、どうも夕方特定の時間帯のテレカンが途中で途切れる減少に気づいた。あと、ちょいちょい深夜にサテライトがピンクの光を発して落ちている（のをSynologyのNASの疎通確認が落ちたメールで気づいた）。&lt;/p&gt;
&lt;p&gt;夕方といえば、電子レンジじゃないか。NTTの終端装置が置かれた2階にOrbi本体を設置し、1階の作業部屋のサテライトに飛ばしているのだが、すこし距離があるため2.4GHz帯を使ってサテライトとの通信をしているぽいぞ。あれ、5GHz帯のバックホールとは一体&amp;hellip;。この辺からwozozoから「また地雷踏んだの」と言われる日々が続いた。&lt;/p&gt;
&lt;p&gt;ともあれ、これが続くようでは仕事に支障をきたす。Orbiには幸い有線バックホールという親機とサテライト間を有線でつないでメッシュをより安定させる機能があることは知っていた。そんな折、太田さんのこの記事を見て書いた感想からお墨付きをもらったので有線LAN工事をする決意を固める。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;blockquote class="twitter-tweet"&gt;&lt;p lang="ja" dir="ltr"&gt;それが出来るなら、1番良いです。この状況下、たぶん投資価値ありますw&lt;/p&gt;&amp;mdash; Kazuki Ohta (@kzk_mover) &lt;a href="https://twitter.com/kzk_mover/status/1296278399325880321?ref_src=twsrc%5Etfw"&gt;August 20, 2020&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;h2 id="有線lan工事をする"&gt;有線LAN工事をする&lt;/h2&gt;
&lt;p&gt;いろいろ調べて、ウェブソフトさんという会社を選んだ。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;ポイントは以下の3つ&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cat 6aに対応していることをサイトで明示していた&lt;/li&gt;
&lt;li&gt;Webで依頼した仮見積もりの詳細をメールで返信してくれた（他社は電話でまくしたてるように返してきた）&lt;/li&gt;
&lt;li&gt;値段も妥当な範囲だった&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;今サイトを見るとHTTPSじゃないし懐かしい感じのサイトだが、見積もりや対応含めて良さそうだなと思ったのでお願いすることにした。&lt;/p&gt;
&lt;p&gt;事前にわかっていたのだが、我が家には壁コンセントの裏に
がほとんどなかった。「ほとんど」というのは2階と3階にはついていたが、肝心の2階と1階にはなかったため、壁に穴を開けて屋外配線をすることにした。&lt;/p&gt;
&lt;figure&gt;&lt;img src="7F99C8FC-7296-48C8-B808-C3CB9B644EF3.webp"&gt;&lt;figcaption&gt;
&lt;h4&gt;壁のLANコンセント&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;TVのアンテナはないのにアンテナ線だけ張り巡らされていたが、壁からCAT 6aが生えてきた&lt;/p&gt;
&lt;p&gt;工事の結果こうなった。めでたしめでたし、かに思えたが&amp;hellip;。&lt;/p&gt;
&lt;h2 id="不安定な有線バックホールとの戦い"&gt;不安定な有線バックホールとの戦い&lt;/h2&gt;
&lt;p&gt;しばらく安定したかのように見えたのだが、まだ一つ謎の現象が残っていた。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;ちょいちょい深夜にサテライトがピンクの光を発して落ちている（のをSynologyのNASの疎通確認が落ちたメールで気づいた）&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;そう、これがまだ続くのである。&lt;/p&gt;
&lt;p&gt;正確には朝起きると1階のOrbiサテライトがピンクの光を発して死んでいるのである。定期的にネットワークのトラブルシュートからスタートする一日は非常にストレスフルだった。大体、西海岸の人々とやり取りするため朝8時台からテレカンが入っているのだ。朝ご飯の準備をしながら子供の面倒を見てインターネットの面倒も見る。さらに寝てる間のメンションも見る。どう見てもキャパオーバーである。&lt;/p&gt;
&lt;p&gt;NETGEARのサポートに問い合わせても、Orbi一式を初期化してください、と言われそれでなんか復活した雰囲気、みたいなのを繰り返していた。&lt;/p&gt;
&lt;p&gt;そうした時にMLSEのオンラインカンファレンス配信担当をする日の朝に事件が起きた。&lt;/p&gt;
&lt;p&gt;もう耐えかねて、有線バックホールなのになぜ死ぬ、と思いながら1階のOrbiに有線でぶら下がっている端末を全部物理のHUBに切り替えて、Orbi自体の有線バックホールを使わないようにした。&lt;/p&gt;
&lt;p&gt;ひとまずこれでカンファレンスは凌いだものの、数日したらまさかの現象が発生した。&lt;/p&gt;
&lt;h2 id="悪さをする端末の特定"&gt;悪さをする端末の特定&lt;/h2&gt;
&lt;p&gt;こんどは朝起きたらOrbi親機もピンク色になっているのである。OrbiやNTTの終端装置も再起動をするも、翌日になるとまた再発するというのを2日繰り返した。大体寝る前に見つけてOrbiの再起動をしていたのだが、2日目の朝には再起動をしてもネットワークがつながらない。切り分けてみると、そもそも有線LANで接続したNTTのルータにもpingが通らないしIP直接叩いても反応がない。&lt;/p&gt;
&lt;p&gt;うーん、と思ってやたらランプが点滅してる経路があるなということで追いかけてみると、そこには会社のMBPがいた。試しにそいつ（につながっているThinkPadのType-Cのドック）につながっているLANケーブルを抜いてみた。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B07PRZKXJT/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
レノボ・ジャパン 40AS0090JP ThinkPad USB Type-C ドック 2
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;戻った。不安定だったのが嘘のように戻ったのである。NTTのルータにもすぐに接続ができるようになった。&lt;/p&gt;
&lt;p&gt;ははーん、過去の親会社のVPNソフトが悪さをして1Mbpsとかしかでなくなる罠にハマったので、会社のMacでなにかやんちゃなソフトウェアが動いているに違いない、と思い調べた。案の定、Code42とかいうバックアップソフトのLAN側の帯域を制限したらだいぶ安定するようになった。どうやらこのソフト（だけではないのかもしれないが）、スリープ時とアクティブなときとで帯域制限が違う値が設定できるのだが、スリープに入るとものすごい勢いで通信をしていたらしい。そりゃ昼間に気づかないわけだ。加えて、ThinPadのType-CドックはUSB接続のLANアダプターとは違い、ACアダプターで給電していてそれはもうすこぶる安定している。熱でやられて速度が遅くなったりしないのだ。ThinkPad Type-Cドックはいいぞ。というわけで、安定して通信をすることを許していたらしい。&lt;/p&gt;
&lt;p&gt;会社のMBPは、夜電源を抜くと翌朝再起動しないと起動しない呪いにかかっていたためドックに繋ぎっぱなしにしていたのである。それが裏目に出た。&lt;/p&gt;
&lt;p&gt;なお、今は帯域制限してもなんか怪しい気がしたので、ドックから有線LANを抜く運用にしている（ドックとは！ちなみに、okapisさんによるとLinuxでドックがものすごいパケットを送るケースがあるらしいのでドックの可能性もあるかもしれない&amp;hellip;。なお、会社のITの人も有線LANは夜にぬけと言っていました）&lt;/p&gt;
&lt;p&gt;おかげで今はすこぶる調子が良い。&lt;/p&gt;
&lt;figure&gt;&lt;img src="AD778B04-7038-4332-9EF1-E62D74BB2656.webp"&gt;&lt;figcaption&gt;
&lt;h4&gt;天井の配線&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;ついでに天井にも有線LANの配線をした。&lt;/p&gt;
&lt;h2 id="key-takeaways"&gt;Key takeaways&lt;/h2&gt;
&lt;p&gt;本文に書いたものも書かなかったものも学びとして。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;有線LANのケーブルは腐るので古いものは捨てよ&lt;/li&gt;
&lt;li&gt;iPhoneやiPad, PCは買い換えると無線LANの規格が新しくなってそれだけで速度向上が見込める&lt;/li&gt;
&lt;li&gt;ボトルネックの切り分けのために有線LANポート内蔵のPCはあったほうが良い&lt;/li&gt;
&lt;li&gt;会社の端末固有の問題か切り分けるために同じOSの端末でABテストをできると良い&lt;/li&gt;
&lt;li&gt;最適化を繰り返すとボトルネックが移動する（ので、逐次潰していく）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最後に、友人からのありがたい言葉を貼っておく。&lt;/p&gt;
&lt;blockquote class="twitter-tweet"&gt;&lt;p lang="ja" dir="ltr"&gt;安易に安定を求めて裏切られるの味わい深いですな。カオスエンジニアリングを讃えよという神のお告げでは。&lt;/p&gt;&amp;mdash; Kiyoshi Mizumaru (@kmizumar) &lt;a href="https://twitter.com/kmizumar/status/1329227962789498881?ref_src=twsrc%5Etfw"&gt;November 19, 2020&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;明日はねじです。&lt;/p&gt;
&lt;p&gt;インターネット&lt;/p&gt;</description></item><item><title>機械学習工学研究会の「機械学習基盤 本番適用と運用の事例・知見共有会」を開催しました</title><link>https://chezo.uno/post/2020-11-10-mlse-conference/</link><pubDate>Tue, 10 Nov 2020 05:18:19 -0800</pubDate><guid>https://chezo.uno/post/2020-11-10-mlse-conference/</guid><description>&lt;p&gt;
さん共同で、機械学習工学研究会（MLSE）本番適用のためのインフラと運用WG主催の、「機械学習基盤 本番適用と運用の事例・知見共有会」をオンライン開催しました。&lt;/p&gt;
&lt;p&gt;イベントのconnpassは以下のリンクです。
&lt;/p&gt;
&lt;p&gt;
さんによるツイートのまとめはこちらです。
&lt;/p&gt;
&lt;h2 id="youtubeの動画"&gt;YouTubeの動画&lt;/h2&gt;
&lt;p&gt;YouTube Liveの配信はアーカイブとして見ることができます。&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/nNFCc3nowfg?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="当日の資料"&gt;当日の資料&lt;/h2&gt;
&lt;p&gt;&lt;iframe src="https://docs.google.com/presentation/d/19P_hAZw8W9X1myeV1wuKYVEAHZsOl3-ohcV1E4wug7g/embed?start=false&amp;loop=false&amp;delayms=3000" frameborder="0" width="800" height="600" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;&lt;iframe src="https://docs.google.com/presentation/d/1Vc-Sf0hMq5RKBDIDAI0aUdS-YWaiie306WykUG7dtJU/embed?start=false&amp;loop=false&amp;delayms=3000" frameborder="0" width="800" height="600" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;script async class="speakerdeck-embed" data-id="af1c9b53d63b4e6baa85652793ec4ca9" data-ratio="1.77777777777778" src="//speakerdeck.com/assets/embed.js"&gt;&lt;/script&gt;
&lt;script async class="speakerdeck-embed" data-id="230d7fccb9314f039a8ab55aaf58c62c" data-ratio="1.77777777777778" src="//speakerdeck.com/assets/embed.js"&gt;&lt;/script&gt;
&lt;script async class="speakerdeck-embed" data-id="448751cd3ceb43149100f61912248fc0" data-ratio="1.77777777777778" src="//speakerdeck.com/assets/embed.js"&gt;&lt;/script&gt;
&lt;h2 id="感想"&gt;感想&lt;/h2&gt;
&lt;p&gt;今回、僕は企画とCfP系のとりまとめ、当日は配信担当をさせていただきました。当日の司会進行は土橋さんにおまかせをしてしまったのですが、いつもながら質疑応答の仕切り力は素晴らしい限りだなと思いながら聞いていました。&lt;/p&gt;
&lt;p&gt;今回のトピックは、機械学習チームが解散したという衝撃的な話からはじまり、NLPを中心とした機械学習基盤、リアルタイム予測基盤、モバイルやエッジ向けの機械学習など多岐にわたる発表が充実していました。
個人的に特に思ったことは、一言に機械学習基盤といっても組織や規模、フェーズに応じたアーキテクチャが採用されているというように感じました。
これはMobility Technologies大西さんの発表で、Kubeflow Pipelinesを選んだ理由に「ブラウザベースでパラメータを入力できること」ということがありました。&lt;/p&gt;
&lt;p&gt;当たり前ではありますが、システムの要件は組織の体制やビジネス要件に規定され、それが機械学習基盤でも変わらないということが改めて実感できました。&lt;/p&gt;
&lt;p&gt;今後も、MLSE 本番適用のためのインフラと運用WGではこうした機械学習基盤のアーキテクチャやパターンを明確にするために、討論会などの活動を続けて行きたいと思います。&lt;/p&gt;</description></item><item><title>Google Colaboratory上でVS Code(code-server)を動かす</title><link>https://chezo.uno/post/2020-07-16-google-colaboratory-vs-codecode-server/</link><pubDate>Thu, 16 Jul 2020 17:56:00 -0700</pubDate><guid>https://chezo.uno/post/2020-07-16-google-colaboratory-vs-codecode-server/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="iPadからアクセスする図"
srcset="https://chezo.uno/post/2020-07-16-google-colaboratory-vs-codecode-server/IMG_0083_hu_1f596553dea93b59.webp 320w, https://chezo.uno/post/2020-07-16-google-colaboratory-vs-codecode-server/IMG_0083_hu_d2360375ee14c236.webp 480w, https://chezo.uno/post/2020-07-16-google-colaboratory-vs-codecode-server/IMG_0083_hu_c600cdc82c4ee488.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2020-07-16-google-colaboratory-vs-codecode-server/IMG_0083_hu_1f596553dea93b59.webp"
width="760"
height="570"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;iPadからアクセスする図&lt;/p&gt;
&lt;p&gt;元ネタはToward DataScienceの記事から。mediumの有料記事なのとssh tunnelとか冗長だったので簡潔なノートブックを作った。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h2 id="何ができるか"&gt;何ができるか&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Colabで動かしたVS Code(code-server)がブラウザからアクセスできる&lt;/li&gt;
&lt;li&gt;sshのトンネルとか不要なのでiPadとかからもVS Codeが動く&lt;/li&gt;
&lt;li&gt;Google Driveにデータを永続化するので、セッション切れてもまた再開できる&lt;/li&gt;
&lt;li&gt;code-server側のパスワードを設定できるので、一応誰からでも使えるわけではない（ランダムでアタックされるとかは知らない&amp;hellip;）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="やること"&gt;やること&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;
のfreeアカウントを作り、Auth tokenを手に入れる&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;下のnotebookをColabで動かす。途中でgetpassで要求されるngrokのAuth tokenと、code-server用のパスワード（これは自分で生成する）を入れる&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;print(str_ssh)&lt;/code&gt; で出てきたURL（2個めのセルの実行結果）にアクセスする&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;とりあえず、tabula-pyのpytestが走るのは確認できた。罠としてはデフォルトvenvが入ってないので、 &lt;code&gt;apt-get install python3-venv&lt;/code&gt; を実行しておくほうがいいこと（1個めのセルに入ってる）。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="code-serverでパスワードを要求される図"
srcset="https://chezo.uno/post/2020-07-16-google-colaboratory-vs-codecode-server/Untitled_hu_71e07357051cdd4b.webp 320w, https://chezo.uno/post/2020-07-16-google-colaboratory-vs-codecode-server/Untitled_hu_d28e525f0baa2e76.webp 480w, https://chezo.uno/post/2020-07-16-google-colaboratory-vs-codecode-server/Untitled_hu_9648a7b88b2afe9f.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2020-07-16-google-colaboratory-vs-codecode-server/Untitled_hu_71e07357051cdd4b.webp"
width="760"
height="430"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;code-serverでパスワードを要求される図&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="Untitled%201.png" alt="pytestが完了した図" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;pytestが完了した図&lt;/p&gt;
&lt;p&gt;なお、iPadからの実行時、Blutoothキーボードがないとterminalに仮想キーボードがかぶってうまく入力できないので注意が必要。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>機械学習工学研究会（MLSE）の夏合宿 2020で本番適用のためのインフラと運用に関する討論会を開催しました</title><link>https://chezo.uno/post/2020-07-11-mlse-summer-workshop/</link><pubDate>Sat, 11 Jul 2020 02:00:00 -0700</pubDate><guid>https://chezo.uno/post/2020-07-11-mlse-summer-workshop/</guid><description>&lt;p&gt;
さんとMLSEの夏合宿で、本番適用のためのインフラと運用WGの討論会を開催しました。
WGのモチベーションは
をご確認ください。&lt;/p&gt;
&lt;p&gt;MLSEの夏合宿自体の概要は、
さんがまとめてくださった記事がわかりやすいと思います。Discordを中心に130名を超える参加者がオンラインで様々な議論をするというスタイルでした。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;実は我々のWGの討論会自体は第一回はオフラインで開催しました。そちらの
。よければ御覧ください。&lt;/p&gt;
&lt;p&gt;今回の討論会のまとめは、以下の2つのトピックについて議論をしました。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;機械学習における監視・観測とアーキテクチャ例&lt;/li&gt;
&lt;li&gt;責任分解とシステム&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;もう少ししたらGitHubのレポジトリにまとめを上げる予定ですが、その中から興味深かった話題を紹介したいと思います。&lt;/p&gt;
&lt;h2 id="covid-19の影響は予測モデルを更新し続けることである程度抑制できた"&gt;COVID-19の影響は予測モデルを更新し続けることである程度抑制できた&lt;/h2&gt;
&lt;p&gt;これは、PFNの丸山さんが話題に出してくれたのですが、deeplearning.aiのnewsである
や
でも言及されていた、「COVID-19によって人間の行動が変わってしまって予測に対する影響は出なかったのか？」という問いが投げかけられました。その中で、ある広告系の企業の参加者が、「入力データもモデルも毎日更新しているので、現状は対応できていると考えている。毎日モデルを更新するのが大切」という知見を共有してくれました。&lt;/p&gt;
&lt;p&gt;もちろん、劇的に前提条件が変化をする問題ではなかなかそのままのロジックや特徴量が使えないということもありうるとは思いますが、モデルを継続的に学習しつづけることで、変化に追従するというのは長期間機械学習システムを運用していく上でなくてはならないのだと改めて思いました。&lt;/p&gt;
&lt;h2 id="学習したモデルは組織のありかたで渡し方はおろか渡せるものも変わる"&gt;学習したモデルは、組織のありかたで渡し方はおろか渡せるものも変わる&lt;/h2&gt;
&lt;p&gt;予測モデルを誰が学習するのか、という話題のなかで、小さなチームでは学習も予測も一人でやるという状況が出たのに対して、日本の大企業では特に
で、研究所で学習したモデルや学習をするためのコードを渡せず仕様書のようなドキュメントで開発部門に渡すしかない、という話が出ました。言われてみればそういうケースもありうるのかと思いつつ、部門の切れ目でAPIを用意するという立て付けも取れるかもしれませんが、研究所で学習や予測APIを提供するといった体力があるところも限られてくるとは思うので、日本の会計や税務的に難しさが発生するのかと、ハッとした瞬間でした。&lt;/p&gt;
&lt;h2 id="モデルのリネージは決めてとなるossがない"&gt;モデルのリネージは決めてとなるOSSがない&lt;/h2&gt;
&lt;p&gt;これは討論会で出た話では有りませんが、実験管理は徐々にOSSで出てきているが、モデルの作成に至るまでのリネージはOSSとしては決定版がないよね、という話が何度か出てきました。もうシャットダウンしてしまったDotscienceではこうした
を持っていましたが、まだOSSでは良いものは私の知る限りではないように思います。
こうしたこともあり、サイバーエージェントではモデルのリネージを管理するためのツールを内製で開発しているそうです。OSSとしてカバーするのは難しいかもしれませんが、各社が自社のサービスの上でのソリューションを提供してくるかもしれません。&lt;/p&gt;
&lt;h2 id="夏合宿全体を通じた感想"&gt;夏合宿全体を通じた感想&lt;/h2&gt;
&lt;p&gt;Discordを通じた議論や発表はとても体験としてよかったと思います。特に、人工知能学会のポスターで苦痛だったExcelで書かれPDFで出力されたパスワード付きZoomのリンクをクリックして移動するという地獄の体験をしたあとでは、Go Liveでどういう発表をしているのかもプレビューで覗けますし、軽量な音声だけで議論も進むので活発な議論ができていたのではないかと思います。&lt;/p&gt;
&lt;p&gt;ただ、会社のポリシーでP2Pのプロトコルを使っているDiscordのアプリは使えず、会社のMBPでは非力だったためか画面共有の表示が安定してされなかったのは難しいところではありました。GPUマシンでは安定しているので、MBPでは少し厳しいですね。&lt;/p&gt;
&lt;p&gt;我々の討論会ではZoomを使って議論をしたのですが、Muralと呼ばれるMiroのようなオンラインホワイトボードも使っていたので、複数のグループに分かれて付箋を貼っていくスタイルでも良かったかもしれません。&lt;/p&gt;
&lt;p&gt;ただ、ご多分に漏れずDiscordの参加人数が10人を超えてくると、議論が一本にしかならない関係もあり並列して話をするのは難しい印象でした。&lt;/p&gt;
&lt;h2 id="最後に"&gt;最後に&lt;/h2&gt;
&lt;p&gt;9月頃にWGとして、各社で携わった機械学習基盤の知見共有をするためのオンラインカンファレンスを実施予定です。もう少ししたら、公募を開始しようと思いますので、機械学習システムを構築している話や、構築しようとしたけどうまく行かないといった話をシングルトラックのセッションとして発表していただければと思います。&lt;/p&gt;</description></item><item><title>Google MeetとYouTube Liveでオンラインミートアップの配信をした</title><link>https://chezo.uno/post/2020-05-29_google-meet%E3%81%A8youtube-live%E3%81%A6%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%83%9F%E3%83%BC%E3%83%88%E3%82%A2%E3%83%83%E3%83%95%E3%81%AE%E9%85%8D%E4%BF%A1%E3%82%92%E3%81%97%E3%81%9F/</link><pubDate>Fri, 29 May 2020 01:54:07 -0700</pubDate><guid>https://chezo.uno/post/2020-05-29_google-meet%E3%81%A8youtube-live%E3%81%A6%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%83%9F%E3%83%BC%E3%83%88%E3%82%A2%E3%83%83%E3%83%95%E3%81%AE%E9%85%8D%E4%BF%A1%E3%82%92%E3%81%97%E3%81%9F/</guid><description>&lt;p&gt;先日、
というイベントの配信担当をした。&lt;/p&gt;
&lt;p&gt;会社ではZoomを使っているけど、Google Meetが今なら無料で使わせてもらえるということで、ありがたくMeetで発表をしてそれをYouTube Liveで流すということをした。&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/5tq7IY_XF3w?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;ライブでの配信は同時参加者ピークで250名くらいで、配信も一瞬ネットワークの問題で乱れが発生したが、ほかは概ね安定していた。&lt;/p&gt;
&lt;p&gt;世の中のイベントの配信情報は、ZoomばかりでGoogle Meetでやっている例があまり見当たらなく、あっても細かいOBSのレイアウトどうしたんだよ！と思っていたので、ここに書いていく。&lt;/p&gt;
&lt;h2 id="tldr"&gt;tl;dr&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;MeetでOBS自前配信はしんどいのでZoomが使えたらそちらを使いましょう&lt;/li&gt;
&lt;li&gt;リハーサルは大事。特に発表者の接続チェックはしましょう&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="構成"&gt;構成&lt;/h2&gt;
&lt;p&gt;Google Meet -&amp;gt; OBS -&amp;gt; YouTube Live&lt;/p&gt;
&lt;p&gt;という至って普通の構成。これにsli.doの質問と自作のバナー画像を貼り付けていた。&lt;/p&gt;
&lt;p&gt;Meetのエンタープライズプランなら、YT Liveへの配信も楽にできたらしいが、無料なので致し方なし。&lt;/p&gt;
&lt;h2 id="準備にかかったコスト"&gt;準備にかかったコスト&lt;/h2&gt;
&lt;p&gt;今回始めてYouTube LiveをOBSで配信したのだけど、配信事故とかの話もチラチラ聞いていたので、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;運営でのリハ&lt;/li&gt;
&lt;li&gt;一人でのOBS設定のチューニングも兼ねたリハ&lt;/li&gt;
&lt;li&gt;直前のリハ&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;の3回リハをした。特に2個目のは、画像バナー作成や最適な設定を見つけるまでに試行錯誤して休日ほぼ一日潰してしまった。家族には感謝しかない。&lt;/p&gt;
&lt;p&gt;ただ、一度レイアウトを組めば（ウィンドウサイズの調整はいるけど）再利用できそうなので次回以降はもっと楽になりそう。&lt;/p&gt;
&lt;h2 id="配信の体制"&gt;配信の体制&lt;/h2&gt;
&lt;p&gt;基本的に以下のような体制を敷いた。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;司会&lt;/li&gt;
&lt;li&gt;配信オペレーション&lt;/li&gt;
&lt;li&gt;YouTube Live監視 &amp;amp; Twitterなどのコメント&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="obsのレイアウト"&gt;OBSのレイアウト&lt;/h2&gt;
&lt;p&gt;左上にMeetの画面を配置し、右側にsli.doのプレゼンテーションモードのウィンドウを小さくしてはりつけ、下側にGoogle Slideで作ったバナー画像を貼り付けた。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="obs layout"
srcset="https://chezo.uno/post/2020-05-29_google-meet%E3%81%A8youtube-live%E3%81%A6%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%83%9F%E3%83%BC%E3%83%88%E3%82%A2%E3%83%83%E3%83%95%E3%81%AE%E9%85%8D%E4%BF%A1%E3%82%92%E3%81%97%E3%81%9F/obs_layout_hu_e5e98ea404b35e53.webp 320w, https://chezo.uno/post/2020-05-29_google-meet%E3%81%A8youtube-live%E3%81%A6%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%83%9F%E3%83%BC%E3%83%88%E3%82%A2%E3%83%83%E3%83%95%E3%81%AE%E9%85%8D%E4%BF%A1%E3%82%92%E3%81%97%E3%81%9F/obs_layout_hu_347879e1400e9e6f.webp 480w, https://chezo.uno/post/2020-05-29_google-meet%E3%81%A8youtube-live%E3%81%A6%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%83%9F%E3%83%BC%E3%83%88%E3%82%A2%E3%83%83%E3%83%95%E3%81%AE%E9%85%8D%E4%BF%A1%E3%82%92%E3%81%97%E3%81%9F/obs_layout_hu_38bdd1bc12325eeb.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2020-05-29_google-meet%E3%81%A8youtube-live%E3%81%A6%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%83%9F%E3%83%BC%E3%83%88%E3%82%A2%E3%83%83%E3%83%95%E3%81%AE%E9%85%8D%E4%BF%A1%E3%82%92%E3%81%97%E3%81%9F/obs_layout_hu_e5e98ea404b35e53.webp"
width="760"
height="421"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;sli.doが管理者でなくてもプレゼンテーションモードにできたので、それの横幅を狭めればそれっぽい画面になった。ただ、管理者のときに出てくるものより太いので注意が必要。&lt;/p&gt;
&lt;p&gt;テロップはあるといいとは思ったのだが、気づいたのが配信開始直前だったのでやらなかった。&lt;/p&gt;
&lt;p&gt;その他のOBSの設定は普通にGPUを使ってnvencを使うことと1080pで出力するところを調整したくらい。あとは、スタジオモードで作業をしたほうが色々とトランジションしやすくて良い。&lt;/p&gt;
&lt;p&gt;作ったレイアウトは、&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;バナーとsli.do付き&lt;/li&gt;
&lt;li&gt;Meetの画面フルスクリーン&lt;/li&gt;
&lt;li&gt;待機画面用の画像&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;の3つを用意しておいた。 特に2はもし1がうまく行かなかったときのために保険として用意をしたが、幸いにして使う必要はなかった。&lt;/p&gt;
&lt;p&gt;WindowsでOBSを使ったので、画面から出るMeetの音声をそのまま流して、自分のマイクの音はMeetにだけ乗るようにした。こうすることで、ディレクターっぽい指示をたまに出していた。 なお、物理ノブがあるオーディオインターフェースでマイク音量をコントロールできたのはやはり良かった。&lt;/p&gt;
&lt;p&gt;今は色々と在庫がないが、evo4とか安いのがよければWindowsの評判はいまいちだがUM2あたりを持っておくと良い。&lt;/p&gt;
&lt;iframe style="width:120px;height:240px;" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" src="//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=chezou-22&amp;language=ja_JP&amp;o=9&amp;p=8&amp;l=as4&amp;m=amazon&amp;f=ifr&amp;ref=as_ss_li_til&amp;asins=B084BGC5LR&amp;linkId=581c3b4714ca88bc5e3a97177ed7d623"&gt;&lt;/iframe&gt;
&lt;iframe style="width:120px;height:240px;" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" src="//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=chezou-22&amp;language=ja_JP&amp;o=9&amp;p=8&amp;l=as4&amp;m=amazon&amp;f=ifr&amp;ref=as_ss_li_til&amp;asins=B00EK1OTZC&amp;linkId=eea3ad3397591c34a7826b0714a3ec1b"&gt;&lt;/iframe&gt;
&lt;h2 id="meetならではの気をつけること"&gt;Meetならではの気をつけること&lt;/h2&gt;
&lt;p&gt;以下の4つの注意点がある。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Meetのレイアウト&lt;/li&gt;
&lt;li&gt;画像の解像度を上げる&lt;/li&gt;
&lt;li&gt;発表者の接続チェックは忘れずに&lt;/li&gt;
&lt;li&gt;音量のノーマライズが暴れるのをなんとかする&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="meetのレイアウト"&gt;Meetのレイアウト&lt;/h3&gt;
&lt;p&gt;Meetのレイアウトはデフォルト自動でワチャワチャ変わっていくのだが、見ている方は落ち着かない。今回は右側に顔が並ぶ設定に固定した。ただし、このレイアウトは自分ひとりでテストしようにもできないので、事前のリハで確認したいところ。&lt;/p&gt;
&lt;p&gt;あと、発表している人以外はビデオカメラをオフにしてもらったが、リアクションがわかりにくいので登壇者は全員顔を出しても良かったかも知れない。&lt;/p&gt;
&lt;p&gt;なお、レイアウトは通話ごとに設定するぽいので忘れないように。 このレイアウトでも、発表者の顔の位置は固定できないので、PinPで発表者だけの顔をOBSで切り出すのは絶望的なのでやめましょう。Zoomだとビデオオンにしてる人だけ写すということができるようなのだが、Meetの場合は顔出しをするためだけの、別のコールをもう一つ作ってそれを切り出してPinPにするのが良いらしい。&lt;/p&gt;
&lt;h3 id="画像の解像度を上げる"&gt;画像の解像度を上げる&lt;/h3&gt;
&lt;p&gt;Meetの画像の解像度はデフォルト360pなので、720pに開始後に上げること。そこをよしなにしてくれないのがMeet。忘れないように。&lt;/p&gt;
&lt;h3 id="発表者の接続チェックは忘れずに"&gt;発表者の接続チェックは忘れずに&lt;/h3&gt;
&lt;p&gt;これは、Zoomでも同じかも知れないが、画面共有には罠が潜んでいる。発表者の接続チェックはしたほうがいいだろう。&lt;/p&gt;
&lt;p&gt;今回、一人Keynoteだけを共有できずSpeakerDeckで発表するというのを直前に変更せざるを得なかった。 あと、配信者としてはこのタイミングで各自の音量の確認をしておくこと。&lt;/p&gt;
&lt;h3 id="音量のノーマライズが暴れるのをなんとかする"&gt;音量のノーマライズが暴れるのをなんとかする&lt;/h3&gt;
&lt;p&gt;大体の通話アプリは音量がノーマライズされるのだが、Meetのそれは凶悪。気を緩めるとすぐに音割れをする勢いの音量をだしてくるので、OBSのレベルメータを常に注視して調整し続ける。疲れる。本当に疲れる。 これを避けるために、一度仮想マイクデバイスを間にかますとかいうテクもあるらしいが未検証。&lt;/p&gt;
&lt;p&gt;暴れるのは飛影の右手だけで十分。&lt;/p&gt;
&lt;h2 id="改善点"&gt;改善点&lt;/h2&gt;
&lt;p&gt;いくつかやっておけばよかったものとして&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;YT Live URLの事前告知 (eventをリハと分けて先に作ればよかった)&lt;/li&gt;
&lt;li&gt;マイクの指導&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一個目は知識不足の勘違いからきた。リハ前にイベントを予め作って告知すれば良かった。&lt;/p&gt;
&lt;p&gt;二個目は、マイクの最終指導をすればよかった。
コンデンサマイクを持ってても場所が悪いと残響ひどくなる。EarPodsはスレを防止するために止めるおなど。マイクの設置についてはこの動画を見てもらえば良かった。
﻿
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/DcgQcQCveYI?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;あと、やっぱりMacBook Proの内蔵マイクは残響がひどくてだめだったので、こちらで買ってでもマイクを用意してもらったほうが良かった。&lt;/p&gt;
&lt;h2 id="まとめ"&gt;まとめ&lt;/h2&gt;
&lt;p&gt;Google Meetでのオンライン配信、悪くはないけれどいろいろなノウハウがあるのでぜひチャレンジしてほしい。有料のZoomがある人はそちらでやるのがやはり楽だろう。&lt;/p&gt;</description></item><item><title>テレカン・発表用にマイクを用意しよう</title><link>https://chezo.uno/post/2020-04-03-microphone-for-remote-meeting/</link><pubDate>Fri, 03 Apr 2020 23:23:00 -0700</pubDate><guid>https://chezo.uno/post/2020-04-03-microphone-for-remote-meeting/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="https://images.unsplash.com/photo-1500275259408-14be096a87cc?ixlib=rb-1.2.1&amp;amp;q=85&amp;amp;fm=jpg&amp;amp;crop=entropy&amp;amp;cs=srgb" alt="by Kai Pilger, Unsplash" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;by Kai Pilger, Unsplash&lt;/p&gt;
&lt;p&gt;最近、いろいろな人からテレカンやリモートプレゼン用の機材を聞かれることが増えたので、ここにまとめておく。&lt;/p&gt;
&lt;p&gt;頼むからMBPの内蔵マイクやAirPods Proを使わないでという気持ちで書いている。&lt;/p&gt;
&lt;h2 id="tldr"&gt;tl;dr&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;背景雑音や残響対策を許容できるならUSB接続のコンデンサーマイクが一番安上がり&lt;/li&gt;
&lt;li&gt;USB接続ヘッドセットは定価の倍くらいになっているので、USB接続のダイナミックマイクとマイクアームが買えるならベスト&lt;/li&gt;
&lt;li&gt;USBオーディオインターフェース＋安いダイナミックマイクとマイクアームが、音的には一番良い。価格もオーディオIFを抑えればそこそこ&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;基本的に音の大きさは距離の二乗に反比例するので、マイクとの距離を保つことが重要です。&lt;/p&gt;
&lt;p&gt;市場の在庫がどんどん減ってるのでコスパの良い選択肢は減っている。買うなら早めに買ったほうが良い。&lt;/p&gt;
&lt;h2 id="おすすめ"&gt;おすすめ&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;USBヘッドセットを用意する。平時であればこれが一番安くお手軽。ただし、これはもう市場に在庫がほとんどないので絶望的。Amazonは2倍の金額で転売されている&lt;/li&gt;
&lt;li&gt;USB接続のダイナミックマイクとマイクアームを用意する。ダイナミックマイクは遠くの音をひろいにくいので、背景雑音に強く使いやすい。が、そもそも種類が少なく市場の在庫がなくなりそう&lt;/li&gt;
&lt;li&gt;USB接続のコンデンサーマイクとマイクアームを使う。これは入手容易性は比較的マシだが、コンデンサーマイクの特性上、家族やエアコンの音などの背景雑音や反響音を拾いやすい。物が少なく反響しやすい部屋は吸音材を貼るか、服を置くなどの工夫が必要。&lt;/li&gt;
&lt;li&gt;USBオーディオインターフェースに安いダイナミックマイクを付ける。発表するならこれくらいの機材は揃えておくと聞く方としては安心&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="すべからず"&gt;すべからず&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;会議室にあるようなスピーカーマイクを使わない。あれは複数人で話をしたり聞いたりするのに特化をしているが、ヤマハのそれなりのを選んでも音は電話レベル。ご家庭に三人同時に参加者がいない限りは不要&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;有線の安いイヤホンマイク（線の途中にマイクが付いてるやつ）は音がひどいのと衣ずれのノイズがやばいので使わない&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;BTのマイクを使わない。プロファイルのせいか、大抵音が悪い。電話レベル&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;AirPodsのマイクを使わない。個人的にはこれよりMBPの内蔵マイクの方がマシ。電話レベルに毛が生えた感じ&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AirPodsに音の酷さはこのnagikoさんのエピソードを聞くとわかると思う&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;PCの内蔵マイクを使わない。MBPの場合でも残響がひどかったりして聞くのに負荷が高い。音の特性としては悪くないが、マイクとの距離が保てないため遠くでボソボソ喋ったり疲れてきて声が小さくなると、音が全然判別できない。使うなら常時腹から声を出せ。オンライン飲み会に使うならこれくらいでもOK&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="おすすめ構成1-usb接続のダイナミックマイクマイクアーム"&gt;おすすめ構成1: USB接続のダイナミックマイク＋マイクアーム&lt;/h2&gt;
&lt;p&gt;手軽だが種類が少ないため、入手性が微妙。音は背景雑音や残響を拾いにくいため、安定する。予算10000円前後。&lt;/p&gt;
&lt;p&gt;AT2005USBはまだギリギリ在庫がありそう。SAMSONのQ2Uは安いけど取り寄せなため厳しい。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;マイクアームがあるとキーボードのタイプ音などを拾うのを防ぐ。マイクアームは、正直どんなのを買っても大丈夫。千円前後でいいだろう。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;なお、マイクの設置に関してはこの動画が非常に参考になる。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;[2020/04/28追記]&lt;/p&gt;
&lt;p&gt;厳密にはダイナミックではありませんが、距離に対する減衰がかなりきつめのコンデンサーマイクのMarantz 888Mがお手頃で良い（書いている時点で3000円）。ネックは遠いと音量が小さくなってしまう（30cmくらい離れるとかなり音が小さくなる）ので、付属のマイクスタンドは使わず必要に応じてマイクアームを用意するのが良いだろう。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;[/追記]&lt;/p&gt;
&lt;p&gt;[2020/11/09追記]&lt;/p&gt;
&lt;p&gt;Marantz 888Mに付属のUSB-DACはmacOSで長時間使うと暴走することが知られているので、自前で用意するのが吉。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;[/追記]&lt;/p&gt;
&lt;h2 id="おすすめ構成2-usbオーディオインターフェースダイナミックマイクマイクアーム"&gt;おすすめ構成2: USBオーディオインターフェース＋ダイナミックマイク＋マイクアーム&lt;/h2&gt;
&lt;p&gt;音が良く、入手性もそれなり。予算さえ許せば一番おすすめしたい構成。予算10000〜30000円程度（2020/04/04現在）。1週間前はもっと安く抑えられたんだが&amp;hellip;。&lt;/p&gt;
&lt;h3 id="オーディオインターフェース"&gt;オーディオインターフェース&lt;/h3&gt;
&lt;p&gt;エントリーモデルで評判が良いのはYAMAHAのAG 03。分解能が24bitで録音できるので小さい音も拾いやすいらしい。あと、オーディオIF側でミックスができるので、配信したい場合にPCの音とマイクをハードウェア側で混ぜられるので便利。Amazonだと1週間で5000円くらい値上がりしたので、サウンドハウスやヨドバシも見てほしい。トータル3万円前後。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;[2020/04/23追記]
どうやらAG03が市場から消えたみたいなので、UR12あたりでも買っておこう。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;[/追記]&lt;/p&gt;
&lt;p&gt;最安路線で攻めたいのであれば、ベリンガーのUM2が良さそう。ただ16bitまでしかとれない。トータル1万円前後。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h3 id="ダイナミックマイク"&gt;ダイナミックマイク&lt;/h3&gt;
&lt;p&gt;マイクは安いので十分。ベリンガーのXM8500みたいな3000円程度のもので良い。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h3 id="xlrケーブル"&gt;XLRケーブル&lt;/h3&gt;
&lt;p&gt;キャノンケーブルともいうXLRケーブルが必要。長さは自分の環境に応じて選ぶべし。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h3 id="マイクアーム"&gt;マイクアーム&lt;/h3&gt;
&lt;p&gt;構成1を参照&lt;/p&gt;
&lt;h2 id="おすすめ構成3-usb接続のコンデンサーマイクマイクアーム"&gt;おすすめ構成3: USB接続のコンデンサーマイク＋マイクアーム&lt;/h2&gt;
&lt;p&gt;これが執筆時点で一番安くおさまるコース。予算7000〜8500円（2020/04/04現在）&lt;/p&gt;
&lt;p&gt;MarantzのPod Pack 1やMPM-1000Uあたりが手頃。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;ネックは部屋の残響が多い場合反響音でめっちゃ聞きづらい音になることと、エアコンや家族の生活音までの乗ってしまうこと。前者は吸音材を貼るなどの対応がいる。&lt;/p&gt;
&lt;p&gt;自分が使っているのはMPM-2000Uだが、程々の指向性はあるのでYeti Blueとかよりはいいんじゃないかと思っている。&lt;/p&gt;
&lt;p&gt;MPM-1000Uはマイクアームが付いていないので別途購入すること。&lt;/p&gt;
&lt;h2 id="番外編"&gt;番外編&lt;/h2&gt;
&lt;p&gt;USBヘッドセットはSennheiserのSC 135 USB-CやSC 160 USB-Cあたりが良いそうだが、在庫がない。他の安いヘッドセットも定価の倍になっているので、絶望的。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;[2020/04/23追記]
USB接続ではないですが、SW-TR2は圧迫感も少なく良いそう。今なら半額キャンペーン中とのこと。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;[/追記]&lt;/p&gt;
&lt;h2 id="最後に"&gt;最後に&lt;/h2&gt;
&lt;p&gt;在庫もなくなりつつあるので、その時その時で選べる良い選択肢を選んで、良いテレカン＆発表ライフを過ごしてほしい。&lt;/p&gt;
&lt;p&gt;なお、オンライン飲み会程度ならMac内蔵マイクで適当にやれば良いだろう。&lt;/p&gt;</description></item><item><title>pandas 1.0 のpd.NAのハマりどころ</title><link>https://chezo.uno/post/2020-03-01-pandas-1-traps/</link><pubDate>Sun, 01 Mar 2020 02:17:00 -0800</pubDate><guid>https://chezo.uno/post/2020-03-01-pandas-1-traps/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="https://images.unsplash.com/photo-1497514440240-3b870f7341f0?ixlib=rb-1.2.1&amp;amp;q=85&amp;amp;fm=jpg&amp;amp;crop=entropy&amp;amp;cs=srgb" alt="
" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;pandas 1.0.0 からexperimental featureとして登場した &lt;code&gt;pandas.NA&lt;/code&gt; 。これは今まで0.x系では &lt;code&gt;numpy.nan&lt;/code&gt; で表していた missing valueを &lt;code&gt;pandas.NA&lt;/code&gt; で表現しようというもの。&lt;/p&gt;
&lt;p&gt;この検索しにくい名前のおかげで、情報を探してもなかなかたどり着かないので苦労をする。公式の &amp;ldquo;What&amp;rsquo;s new in 1.0.0&amp;rdquo; の &amp;ldquo;Experimental new features&amp;rdquo; の項と hkzmさんのQiitaの記事がよくまとまっているので困ったらここに立ち返るとよい。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;この記事では、nullableなdtype周りでハマったことをまとめていく。&lt;/p&gt;
&lt;h2 id="そもそもなぜ-pandasna-が登場したのか"&gt;そもそもなぜ &lt;code&gt;pandas.NA&lt;/code&gt; が登場したのか&lt;/h2&gt;
&lt;p&gt;以下のドキュメントには、 &lt;code&gt;numpy.nan&lt;/code&gt; 周りの説明がざらっと書いてある。特にcastされるときの挙動は今でも役に立つだろう。（というか昔の説明がなくなっているように思う）&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;pandasを利用されている方は、このintからfloatへのcastに遭遇したことも多いだろう。pandas 0.24から
(&lt;code&gt;pandas.Int64Dtype()&lt;/code&gt; いわゆる &lt;code&gt;Int64&lt;/code&gt; 。 &lt;code&gt;int64&lt;/code&gt; はnumpyのdtypeを指すので注意。 &lt;code&gt;Int32&lt;/code&gt;, &lt;code&gt;Int16&lt;/code&gt;, &lt;code&gt;Int8&lt;/code&gt; もある) も登場し、Intのままで NaNを保持できるようになった。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;arr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;nan&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;dtype&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Int64Dtype&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# pd.array([1, 2, np.nan], dtype=&amp;#34;Int64&amp;#34;) でもOK&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;arr&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;IntegerArray&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;NaN&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Length&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dtype&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Int64&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;では、なぜpandasはfloatにデフォルトcastしているのだろうか？&lt;/p&gt;
&lt;p&gt;実は、 &lt;code&gt;NaN&lt;/code&gt; というのはIEEE 754でfloatと決まっているのである。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;だから、 &lt;code&gt;numpy.nan&lt;/code&gt; もfloatだし、pandasはもともと &lt;code&gt;numpy.nan&lt;/code&gt; があるとfloatのdtypeにcastしていたのである。IEEEで決まっていたら仕方がない。 &lt;code&gt;type()&lt;/code&gt; を調べても &lt;code&gt;nan&lt;/code&gt; は &lt;code&gt;float&lt;/code&gt; になるわけだ。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;nan&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;nan&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;nan&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="nb"&gt;float&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="nb"&gt;float&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;nan&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;nan&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;float&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;nan&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="nb"&gt;float&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="pandasna-の登場と新しいdtypeの追加"&gt;&lt;code&gt;pandas.NA&lt;/code&gt; の登場と、新しいdtypeの追加&lt;/h2&gt;
&lt;p&gt;仕方がないというわけにはいかないので、pandasは通称 &lt;code&gt;Int64&lt;/code&gt; を導入したのである。しかしこれだけでは、
。また、 &lt;code&gt;str&lt;/code&gt; も &lt;code&gt;object&lt;/code&gt; 型というなんでもごった煮のdtypeで扱いたくない。というので、pandas 1.0.0から &lt;code&gt;pandas.BooleanDtype()&lt;/code&gt; (string表記は &lt;code&gt;&amp;quot;boolean&amp;quot;&lt;/code&gt;)と &lt;code&gt;pandas.StringDtype()&lt;/code&gt; (string表記は &lt;code&gt;&amp;quot;string&amp;quot;&lt;/code&gt;)が登場した。また、合わせて &lt;code&gt;pandas.NA&lt;/code&gt; も登場した。&lt;/p&gt;
&lt;p&gt;つまり、nullableな型は以下のように遷移してきた。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;0.23まで
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;float&lt;/code&gt;, &lt;code&gt;object&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;0.24〜0.25
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;float&lt;/code&gt;, &lt;code&gt;object&lt;/code&gt;, &lt;code&gt;Int64&lt;/code&gt;, &lt;code&gt;Int32&lt;/code&gt;, &lt;code&gt;Int16&lt;/code&gt;, &lt;code&gt;Int8&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;1.0以降
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;float&lt;/code&gt;, &lt;code&gt;object&lt;/code&gt;, &lt;code&gt;Int64&lt;/code&gt;, &lt;code&gt;Int32&lt;/code&gt;, &lt;code&gt;Int16&lt;/code&gt;, &lt;code&gt;Int8&lt;/code&gt;, &lt;code&gt;boolean&lt;/code&gt;, &lt;code&gt;string&lt;/code&gt;,&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="nullable-valueの有無でのハマりどころ"&gt;Nullable Valueの有無でのハマりどころ&lt;/h2&gt;
&lt;p&gt;以下はpandas 0.23.4, 0.25.3と 1.0.1で比較をしている。最初は1.0前後で比較をしようとしたが、大きな変更は0.24の前後で変わっていたようである。&lt;/p&gt;
&lt;h3 id="int64-を指定したdataframeで-numpynan-ではなく-pandasna-が返ってくる"&gt;&lt;code&gt;Int64&lt;/code&gt; を指定したDataFrameで &lt;code&gt;numpy.nan&lt;/code&gt; ではなく &lt;code&gt;pandas.NA&lt;/code&gt; が返ってくる&lt;/h3&gt;
&lt;p&gt;0.25以前では &lt;code&gt;dtype=&amp;quot;Int64&amp;quot;&lt;/code&gt; を指定したときは、 &lt;code&gt;numpy.nan&lt;/code&gt; がmissing valueとして返ってきた。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;13&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DataFrame&lt;/span&gt;&lt;span class="p"&gt;([{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;a&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;b&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;a&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;b&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;c&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt; &lt;span class="n"&gt;dtype&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Int64&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;14&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;14&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="n"&gt;NaN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;iloc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;nan&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;iloc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="nb"&gt;float&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;isnan&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;iloc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これが、以下のようになる。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DataFrame&lt;/span&gt;&lt;span class="p"&gt;([{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;a&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;b&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;a&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;b&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;c&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt; &lt;span class="n"&gt;dtype&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Int64&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;NA&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;iloc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;NA&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;iloc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;pandas&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_libs&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;missing&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;NAType&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;isnan&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;iloc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;NA&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;そうだよね、と思うだろうがこれに伴い以下の挙動が変わってきている。&lt;/p&gt;
&lt;h3 id="noneへの置換をしたい場合"&gt;Noneへの置換をしたい場合&lt;/h3&gt;
&lt;p&gt;これは0.24で &lt;code&gt;Int64&lt;/code&gt; 導入時からの挙動だが、 &lt;code&gt;Int64&lt;/code&gt; のdtypeのcolumnは、手でNoneを代入すると &lt;code&gt;numpy.nan&lt;/code&gt; や &lt;code&gt;pandas.NA&lt;/code&gt; が保持される。これは &lt;code&gt;df.where&lt;/code&gt; や &lt;code&gt;df.applymap&lt;/code&gt; などで &lt;code&gt;numpy.nan&lt;/code&gt; や &lt;code&gt;pandas.NA&lt;/code&gt; を置換しようとしてもdtypeを変えないと &lt;code&gt;None&lt;/code&gt; に置換できないということを意味する。 &lt;code&gt;df.replace&lt;/code&gt; は &lt;code&gt;object&lt;/code&gt; dtypeになる。&lt;/p&gt;
&lt;p&gt;0.25.3の挙動&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="n"&gt;NaN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# cは何も変わらない&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;26&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;where&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;notnull&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;26&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="n"&gt;NaN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# cがfloatにcastされてしまう&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;27&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;applymap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;isnan&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;27&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="n"&gt;NaN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="mf"&gt;5.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# cはobject dtypeにcastされている&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;38&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;nan&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;38&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;39&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;nan&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dtypes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;39&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;Int64&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="n"&gt;Int64&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="nb"&gt;object&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;dtype&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;object&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;1.0.1での挙動&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DataFrame&lt;/span&gt;&lt;span class="p"&gt;([{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;a&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;b&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;a&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;b&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;c&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt; &lt;span class="n"&gt;dtype&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Int64&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;NA&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;where&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;notnull&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;NA&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# np.isnanはTypeErrorを返す（当たり前）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;applymap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;isnan&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="ne"&gt;TypeError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;boolean&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="n"&gt;NA&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="n"&gt;ambiguous&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# pd.isnullならOK。floatには変わる&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;applymap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;isnull&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="n"&gt;NaN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="mf"&gt;5.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# cはobjectに置換される&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;nan&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;nan&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dtypes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;Int64&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="n"&gt;Int64&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="nb"&gt;object&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;dtype&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;object&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;1.0.1でのNullableなtypeを使わない挙動&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;27&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DataFrame&lt;/span&gt;&lt;span class="p"&gt;([{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;a&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;b&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;a&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;b&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;c&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;}])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;28&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;28&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="n"&gt;NaN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="mf"&gt;5.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# cはobjectになる&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;29&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;where&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;notnull&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;29&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;where&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;notnull&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dtypes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;int64&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="n"&gt;int64&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="nb"&gt;object&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;dtype&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;object&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# cはfloatになる&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;31&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;applymap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;isnan&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;31&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="n"&gt;NaN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="mf"&gt;5.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# cはobjectになる&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;33&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;nan&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;33&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;34&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;nan&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dtypes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;34&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;int64&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="n"&gt;int64&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="nb"&gt;object&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;dtype&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;object&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;まとめると以下の表のようになる。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;th&gt;non-nullable dtype&lt;/th&gt;
&lt;th&gt;nullable dtype&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;df.where&lt;/td&gt;
&lt;td&gt;object にcast&lt;/td&gt;
&lt;td&gt;変化なし&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;df.applymap&lt;/td&gt;
&lt;td&gt;float にcast&lt;/td&gt;
&lt;td&gt;float にcast&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;df.replace&lt;/td&gt;
&lt;td&gt;object にcast&lt;/td&gt;
&lt;td&gt;object にcast&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="dfto_dictorientrecord-の挙動の罠"&gt;&lt;code&gt;df.to_dict(orient=&amp;quot;record&amp;quot;)&lt;/code&gt; の挙動の罠&lt;/h3&gt;
&lt;p&gt;行ごとにデータを処理したいのであれば、 &lt;code&gt;df.to_dict(orient=&amp;quot;record&amp;quot;)&lt;/code&gt; を使うことができる。 が、これは後述するように挙動がバージョン感で差異があったり、古いバージョンではちょっと想定と違う挙動をするので &lt;code&gt;df.to_records&lt;/code&gt; を使うほうが良い。具体的には、0.23以前は、カラムごとに &lt;code&gt;nan&lt;/code&gt; の有無でdtypeを変えることが期待されるが、行ごとにdtypeを揃えに行こうとするため、 &lt;code&gt;nan&lt;/code&gt; がある行が含まれていると全行 &lt;code&gt;float&lt;/code&gt; に変わってしまった。なお、1.0.1ではこの挙動は期待通りに修正されている。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;0.23.4&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;37&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DataFrame&lt;/span&gt;&lt;span class="p"&gt;([{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;a&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;b&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;a&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;b&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;c&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;}])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;38&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;38&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="n"&gt;NaN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="mf"&gt;5.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 全部の値が numpy.float64 にキャストされている&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;39&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;to_dict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;orient&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;record&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;39&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;a&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;b&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;2.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;c&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;nan&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;a&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;3.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;b&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;4.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;c&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;5.0&lt;/span&gt;&lt;span class="p"&gt;}]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;to_dict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;orient&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;record&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;a&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;numpy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;float64&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;41&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;to_dict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;orient&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;record&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;c&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;41&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;numpy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;float64&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;1.0.1&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DataFrame&lt;/span&gt;&lt;span class="p"&gt;([{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;a&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;b&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;a&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;b&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;c&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;}])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DataFrame&lt;/span&gt;&lt;span class="p"&gt;([{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;a&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;b&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;a&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;b&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;c&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt; &lt;span class="n"&gt;dtype&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Int64&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="n"&gt;NaN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="mf"&gt;5.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;NA&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Cのみfloatに、他はintのまま変換されている&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;to_dict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;orient&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;record&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;a&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;b&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;c&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;nan&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;a&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;b&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;c&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;5.0&lt;/span&gt;&lt;span class="p"&gt;}]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 基本、numpy.int64で保持されている&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;to_dict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;orient&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;record&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;a&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;b&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;c&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;NA&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;a&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;b&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;c&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;}]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;to_dict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;orient&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;record&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;a&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;to_dict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;orient&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;record&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;a&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;numpy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;int64&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;to_dict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;orient&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;record&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;c&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="nb"&gt;float&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;13&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;to_dict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;orient&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;record&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;c&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;13&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;pandas&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_libs&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;missing&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;NAType&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;df.to_records&lt;/code&gt; を使った処理例は以下の通り。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1.0.1&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DataFrame&lt;/span&gt;&lt;span class="p"&gt;([{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;a&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;b&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;a&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;b&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;c&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;}])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DataFrame&lt;/span&gt;&lt;span class="p"&gt;([{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;a&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;b&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;a&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;b&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;c&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt; &lt;span class="n"&gt;dtype&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Int64&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="n"&gt;NaN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="mf"&gt;5.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;NA&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;to_records&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;rec&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;([(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;NA&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;dtype&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;a&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;O&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;b&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;O&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;c&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;O&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# listで受け取りたい場合&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;26&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;to_records&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;26&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="p"&gt;[(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;NA&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# コラム名を取得したい場合&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;27&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;to_records&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dtype&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;names&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;27&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;a&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;b&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;c&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# nullableなdtypeを使わない場合の type&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;19&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;to_records&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;19&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;numpy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;int64&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;numpy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;int64&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;numpy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;float64&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;to_records&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;numpy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;int64&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;numpy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;int64&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;numpy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;float64&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# nullableなdtypeを使った場合の type&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;23&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;df2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;to_records&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;23&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;pandas&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_libs&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;missing&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;NAType&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;24&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;df2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;to_records&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;24&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;0.23.4&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;45&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DataFrame&lt;/span&gt;&lt;span class="p"&gt;([{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;a&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;b&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;a&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;b&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;c&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;}])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;46&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;46&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="n"&gt;NaN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="mf"&gt;5.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;47&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;to_records&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;47&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;rec&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;([(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;nan&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;5.&lt;/span&gt;&lt;span class="p"&gt;)],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;dtype&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;a&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;lt;i8&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;b&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;lt;i8&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;c&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;lt;f8&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 各値のtype&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;48&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;to_records&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;48&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;numpy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;int64&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;numpy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;int64&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;numpy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;float64&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;49&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;to_records&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;False&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;49&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;numpy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;int64&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;numpy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;int64&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;numpy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;float64&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="dtypeの比較ができない場合がある"&gt;dtypeの比較ができない場合がある&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;Int64&lt;/code&gt; などは &lt;code&gt;numpy.dtype&lt;/code&gt; と比較できるが、 &lt;code&gt;boolean&lt;/code&gt;, &lt;code&gt;string&lt;/code&gt; とは比較できない。うっかり、DataFrameのdtypeごとに比較しようとすると死ぬ。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Int64Dtype&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;boolean&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="kc"&gt;False&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;61&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Int64Dtype&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Int8&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;61&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="kc"&gt;False&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;62&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dtype&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;float64&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Int8&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;venv&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nb"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;ipython&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="ne"&gt;DeprecationWarning&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Numeric&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;style&lt;/span&gt; &lt;span class="nb"&gt;type&lt;/span&gt; &lt;span class="n"&gt;codes&lt;/span&gt; &lt;span class="n"&gt;are&lt;/span&gt; &lt;span class="n"&gt;deprecated&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;will&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;an&lt;/span&gt; &lt;span class="n"&gt;error&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;the&lt;/span&gt; &lt;span class="n"&gt;future&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;#!/Users/aki/src/pytd/.venv-10/bin/python3.7&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Out&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;62&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="kc"&gt;False&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;In&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;59&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dtype&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;float64&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;boolean&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;---------------------------------------------------------------------------&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="ne"&gt;TypeError&lt;/span&gt; &lt;span class="n"&gt;Traceback&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;most&lt;/span&gt; &lt;span class="n"&gt;recent&lt;/span&gt; &lt;span class="n"&gt;call&lt;/span&gt; &lt;span class="n"&gt;last&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;ipython&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nb"&gt;input&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;59&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;bc057c799968&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;module&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;----&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dtype&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;float64&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;boolean&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これは回避の仕方が見つかっていない。&lt;/p&gt;
&lt;h2 id="まとめ"&gt;まとめ&lt;/h2&gt;
&lt;p&gt;当初は &lt;code&gt;pandas.NA&lt;/code&gt; の挙動を調べるつもりで1.0前後の差異を調べたが、気がつけばすでに0.24のときに変わっていたことがわかった。1.0内での挙動も違ったりするし、 &lt;code&gt;StringDtype&lt;/code&gt; などは experimental featureなので挙動は今後も変わりうる。msgpackへの変換などでPythonのpremitive型に変換するのは気をつける必要がありそう。&lt;/p&gt;</description></item><item><title>Jupyter Notebook/LabsをMLのどのフェーズで使うのか？</title><link>https://chezo.uno/post/2020-02-10-jupyter-notebook-labs%E3%82%92ml%E3%81%AE%E3%81%A8%E3%81%AE%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9%E3%81%A6%E4%BD%BF%E3%81%86%E3%81%AE%E3%81%8B/</link><pubDate>Sun, 09 Feb 2020 22:34:01 -0800</pubDate><guid>https://chezo.uno/post/2020-02-10-jupyter-notebook-labs%E3%82%92ml%E3%81%AE%E3%81%A8%E3%81%AE%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9%E3%81%A6%E4%BD%BF%E3%81%86%E3%81%AE%E3%81%8B/</guid><description>&lt;p&gt;機械学習ではよく使われるJupyter Notebookですが、これを使ってプロダクションで動くコードを書くのは非常に難しいなと思い、皆どのように使っているのかを知りたくてアンケートをとってみました。&lt;/p&gt;
&lt;p&gt;結果としては、多少拮抗しているのですが、EDAから予測までJupyter派が多かったようです。ついで、学習のプロトタイプまで、EDAだけ派と続いています。&lt;/p&gt;
&lt;p&gt;この質問で失敗したなと思ったのは、「MLの開発」と書いたものの、研究・実験用途で使っている人とプロダクションまで持っていく用途で使っている人が混ざってしまったであろうという気がしています。
ただ、1000票以上集まったので面白い結果となったのではないでしょうか。&lt;/p&gt;
&lt;p&gt;その他の回答としては、Emacs派や全部.py派、全部C++派などがいることがわかりました。&lt;/p&gt;
&lt;blockquote class="twitter-tweet"&gt;&lt;p lang="ja" dir="ltr"&gt;はい，IPythonです。エディタですのであちこちカーソルを動かせます。別窓で*.pyを書いて，全部または範囲指定した部分を実行し，出力だけこのIPythonの画面に出すこともできます。 &lt;a href="https://t.co/Kkn6pxTUOR"&gt;pic.twitter.com/Kkn6pxTUOR&lt;/a&gt;&lt;/p&gt;&amp;mdash; Haruhiko Okumura (@h_okumura) &lt;a href="https://twitter.com/h_okumura/status/1226499591496818693?ref_src=twsrc%5Etfw"&gt;February 9, 2020&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;blockquote class="twitter-tweet"&gt;&lt;p lang="ja" dir="ltr"&gt;EDA から全部 .py でやっています。（僕の書き方が悪いだけかもしれないですが）Jupyter をメンテナンスするコストが高く、EDA を後から再現しようとしても動かなかったりするため、処理の要素ごとに関数を書いてそれらはメンテナンスをし、EDA は関数の組み合わせを変えることによって行っています。&lt;/p&gt;&amp;mdash; horiem (@yellowshippo) &lt;a href="https://twitter.com/yellowshippo/status/1226409670442651648?ref_src=twsrc%5Etfw"&gt;February 9, 2020&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;blockquote class="twitter-tweet"&gt;&lt;p lang="ja" dir="ltr"&gt;はい、可視化も .py でしています。初期の試行錯誤中にどうしても保存しておきたい図などは手動で保存してドキュメントなどの形にしていますが、基本的にはさっさとメンテ可能なコードを書いてしまって、実行のたび必要な絵が（解析条件とともに）自動的に保存されるようにしていますね。&lt;/p&gt;&amp;mdash; horiem (@yellowshippo) &lt;a href="https://twitter.com/yellowshippo/status/1226416584450658304?ref_src=twsrc%5Etfw"&gt;February 9, 2020&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;blockquote class="twitter-tweet"&gt;&lt;p lang="ja" dir="ltr"&gt;R派なので実はEDAとPOCまではRで、その先のPOCとプロトタイプの中間ぐらいのところまでをNotebookのPythonで書き、そこから先は他の人にお願いしてます &lt;a href="https://t.co/Ehdj1MykMK"&gt;https://t.co/Ehdj1MykMK&lt;/a&gt;&lt;/p&gt;&amp;mdash; TJO (@TJO_datasci) &lt;a href="https://twitter.com/TJO_datasci/status/1226460366911131648?ref_src=twsrc%5Etfw"&gt;February 9, 2020&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;この結果が一概にML Ops的なプロダクション運用のことを考えた最適とは言えませんが、少なくとも現状でMLを取り組む人はかなりJupyterを愛用していることが伺えます。&lt;/p&gt;</description></item><item><title>2019年に買ってよかった漫画</title><link>https://chezo.uno/post/2020-01-14-2019-best-comic/</link><pubDate>Mon, 13 Jan 2020 09:53:00 -0800</pubDate><guid>https://chezo.uno/post/2020-01-14-2019-best-comic/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="https://images.unsplash.com/photo-1531501410720-c8d437636169?ixlib=rb-1.2.1&amp;amp;q=85&amp;amp;fm=jpg&amp;amp;crop=entropy&amp;amp;cs=srgb" alt="Photo by Miika Laaksonen on Unsplash" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Photo by Miika Laaksonen on Unsplash&lt;/p&gt;
&lt;p&gt;出張などで国際線に乗ると、時間を消費するために漫画を買い込んでいきます。そんな僕が2019年に買ってよかった漫画を紹介します。割とメジャーどころが多いかもしれません。&lt;/p&gt;
&lt;h1 id="アルテ"&gt;アルテ&lt;/h1&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;中世？イタリアの女性画家の話。女性が画家として働くのは珍しい時代に悩み、真剣に絵や絵の対象と向き合っていく。人間模様や主人公の成長が楽しい&lt;/p&gt;
&lt;h1 id="空挺ドラゴンズ"&gt;空挺ドラゴンズ&lt;/h1&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;アニメもNetflixで全話一気配信している。捕鯨船ならぬ捕龍船の乗組員たちのお話。アクションものかと思いきや主人公ミカの龍食に書ける食い意地でできているお腹が空く内容が多い。アニメも原作以上の見どころが増えていてどちらもおすすめ。1,2巻は今無料&lt;/p&gt;
&lt;h1 id="beastars"&gt;BEASTARS&lt;/h1&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;こちらもアニメがやっていたのでメジャーなタイトル。一言でいうと大人版ズートピア。肉食獣と草食獣が表向きは仲良く、しかし獣の本能と向き合いながら生きている世界の話。主人公のレゴシがとことん素直でいい狼で清々しい。少々血なまぐさいので苦手な人は避けたほうがいいかも。&lt;/p&gt;
&lt;h1 id="ヘテロゲニア-リンギスティコ"&gt;ヘテロゲニア リンギスティコ&lt;/h1&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;魔界のモンスターと言語・非言語両方を駆使してコミュニケーションを図る人間の言語学者の話。小説では表現が難しいようなコミュニケーションを上手く描いている。のんびりした世界観の中でコミュニケーションとは、と考えさせられる良い作品&lt;/p&gt;
&lt;h1 id="片喰と黄金"&gt;片喰と黄金&lt;/h1&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;ゴールドラッシュ時代に、飢饉真っ只中のアイルランドからアメリカはカリフォルニアを目指す漫画。ヴィンランド・サガの幸村先生の紹介で知ったけど、辛い局面でも前向きに前へ前へと倒れ込む勢いの主人公には元気をもらえる&lt;/p&gt;
&lt;h1 id="鹿楓堂よついろ日和"&gt;鹿楓堂よついろ日和&lt;/h1&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;鹿楓堂は「ろくほうどう」と読む。和風喫茶店を営む若い男性たちが美味しいメニューと個性的なお客さんたちとのやり取りが心温まる漫画。風邪で寝込んだときに読むと食欲が湧く程度には美味しそうな漫画です。割とのんびり読めます。&lt;/p&gt;
&lt;h1 id="ライドンキング"&gt;ライドンキング&lt;/h1&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;どう見ても某国大統領なプルチノフ大統領が、突如飛ばされた異世界で様々な獣に乗る(ライドン)する話。劇画タッチの大統領と綿密に書き込まれた獣が送るギャグも多めのアクション漫画。某国では絶対に販売できないという噂もあるが、大統領は強く優しくかっこいい。大統領は強いんだけど、その振る舞いにはいつもいつも腹が捩れる。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>2019年末年始に見た映画</title><link>https://chezo.uno/post/2020-01-05-2019-best-movie/</link><pubDate>Sat, 04 Jan 2020 14:13:00 -0800</pubDate><guid>https://chezo.uno/post/2020-01-05-2019-best-movie/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="https://images.unsplash.com/photo-1485846234645-a62644f84728?ixlib=rb-1.2.1&amp;amp;q=85&amp;amp;fm=jpg&amp;amp;crop=entropy&amp;amp;cs=srgb" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id="パッドマン-5億人の女性を救った男"&gt;パッドマン 5億人の女性を救った男&lt;/h2&gt;
&lt;p&gt;インドの生理用ナプキンを低コストで作った人の実話をもとにした映画。2001年にもなってナプキンを使わず汚い布で生理に対応していたインドで、55ルピーかかるナプキンを2ルピーまで抑えて製造する方法を確立した話。見応えがある良い作品。自作にかける妄執にも似た狂気的な執念を見ると、起業をするというのはこういうことかと思わされる。
&lt;/p&gt;
&lt;h2 id="シティーハンター-the-movie-史上最香のミッション"&gt;シティーハンター THE MOVIE 史上最香のミッション&lt;/h2&gt;
&lt;p&gt;原作の大ファンのフランス人が監督主演までした作品。シティハンターのもともとのノリに下ネタ成分を倍増させた、いい意味でフランス製同人作品。これはもうアメリカでもヘタをすると日本でも作れない。頭空っぽにしてみられるバカ作品。&lt;/p&gt;
&lt;h2 id="映画-すみっコぐらし-とびだす絵本とひみつのコ"&gt;映画 すみっコぐらし とびだす絵本とひみつのコ&lt;/h2&gt;
&lt;p&gt;大人向けの絵本を彷彿とさせるいい話感が少し強くて、自分には合わなかった。小さい子は楽しんでいたよう。心が擦れているからか。&lt;/p&gt;
&lt;h2 id="スターウォーズスカイウォーカーの夜明け"&gt;スター・ウォーズ/スカイウォーカーの夜明け&lt;/h2&gt;
&lt;p&gt;エピソード9。7から見始めたにわかなのだけど、間のスピンオフ2作含めて5年見てきた割に一番？が並んだ。昔からのファンには良いんだろうなーと思いながら唐突な設定に置いてけぼりを喰らった。レイア姫が未公開映像を駆使して出ていた点と最後の盛り上がりはテンション上がったけど…、歴史に詳しくないと感情移入しづらい展開でした。多分、次に公開されると言われてるエピソード10はいいかな…。&lt;/p&gt;
&lt;h2 id="ブラザーサンタ"&gt;ブラザーサンタ&lt;/h2&gt;
&lt;p&gt;原題は、Fred Clauseでサンタクロースの兄のお話。Googleのインターンに乗り込むインターンシップや俺たちニュースキャスターなどのおばか映画に出演するヴィンスヴォーン主演。彼が出るとどの作品も同じノリのおバカな役になってしまうのはご愛嬌。ケヴィンスペイシーをしてこのバカ作品に出すかという感じで下らないのが良い。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h2 id="キングスマン"&gt;キングスマン&lt;/h2&gt;
&lt;p&gt;飛行機で見たゴールデンサークルが良かったので一作目も見た。Play Movieのジョニーイングリッシュのおすすめに出ていたのでコメディ要素もあるかなと思ったら、1作目はガチスパイ物だったがよかった。むしろ、ジョニーイングリッシュの3作目はこれのパロディであることがよくわかった。なぜ、イギリス映画はアメリカのIT成金を悪役にしたがるのか。&lt;/p&gt;
&lt;p&gt;ちょいちょいブラックなユーモアや表現が出てくるのはイギリスを感じる。威風堂々をBGMに頭飛ばすとか…。スウェーデン王女は一作目からいい味だしてます。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>Pythonistaのためのdigdag py&gt; operator開発ガイド</title><link>https://chezo.uno/post/2019-12-24-python-custom-scripting/</link><pubDate>Mon, 23 Dec 2019 07:00:00 -0800</pubDate><guid>https://chezo.uno/post/2019-12-24-python-custom-scripting/</guid><description>
&lt;details class="print:hidden xl:hidden" &gt;
&lt;summary&gt;Table of Contents&lt;/summary&gt;
&lt;div class="text-sm"&gt;
&lt;nav id="TableOfContents"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#workflowをpushするまえにローカル環境で開発とテストをする方法"&gt;workflowをpushするまえにローカル環境で開発とテストをする方法&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#基本戦略pythonのタスクを合理的な粒度にまとめる"&gt;基本戦略:Pythonのタスクを合理的な粒度にまとめる&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#1-treasure-dataの公式dockerイメージを使う"&gt;1. Treasure Dataの公式Dockerイメージを使う&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#2-dockerイメージと同様のpythonの仮想環境を作る"&gt;2. Dockerイメージと同様のPythonの仮想環境を作る&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#py-operatorを含んだworkflowをローカルで実行する"&gt;py&amp;gt; operatorを含んだworkflowをローカルで実行する&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#py-operatorにパラメータを渡す"&gt;py&amp;gt; operatorにパラメータを渡す&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#1-digdagの引数を使う"&gt;1. digdagの引数を使う&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#2-環境変数を使う"&gt;2. 環境変数を使う&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#3-digdagの変数を使う"&gt;3. digdagの変数を使う&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#pythonやosのパッケージのインストール方法"&gt;PythonやOSのパッケージのインストール方法&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#py-operatorを含むディレクトリ構成"&gt;py&amp;gt; operatorを含むディレクトリ構成&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#実行時のエラーを通知する"&gt;実行時のエラーを通知する&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#まとめ"&gt;まとめ&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/nav&gt;
&lt;/div&gt;
&lt;/details&gt;
&lt;p&gt;この記事は、
の24日目です。&lt;/p&gt;
&lt;p&gt;今年の夏に新しくTreasure Dataで使えるようになったPython Custom Scriptingですが、
開発する際にどういう点を気をつければ良いのかという質問をいただくことが多いので、
今日はTreasure Workflowとdigdagのpy&amp;gt; operatorを使った開発の際に気をつけることを書いて行こうと思います。&lt;/p&gt;
&lt;p&gt;なお、Treasure WorkflowとありますがOSSのdigdagでも活かせる内容があると思います。&lt;/p&gt;
&lt;p&gt;なお、既にPython Custom Scriptingが試せる環境にある方は、このGoogle Colab notebook
で一通り試すことが出来ます。&lt;/p&gt;
&lt;h2 id="workflowをpushするまえにローカル環境で開発とテストをする方法"&gt;workflowをpushするまえにローカル環境で開発とテストをする方法&lt;/h2&gt;
&lt;h3 id="基本戦略pythonのタスクを合理的な粒度にまとめる"&gt;基本戦略:Pythonのタスクを合理的な粒度にまとめる&lt;/h3&gt;
&lt;p&gt;Treasure Workflowやdigdagのサーバーモードでは、タスク間の中間ファイルを置くためのストレージがないため、一つ一つのタスクの粒度が大きくなりがちです。
特に、Treasure Workflowでは一つ一つのtaskでコンテナが起動するため、そのオーバーヘッドを無視できません。
一方で、一つの巨大なタスクは、開発時のデバッグを難しくさせます。
そこで、開発時の戦略としては一つ一つは最低限の塊に分けた関数を用意します。そして、必要に応じてそれらを束ねる関数を用意するのが良いでしょう。&lt;/p&gt;
&lt;p&gt;Treasure Workflow向けのworkflowをローカル環境で開発するにはいくつかの選択肢があります。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Treasure Dataの公式Dockerイメージを使う&lt;/li&gt;
&lt;li&gt;Dockerイメージと同じPythonの仮想環境を使う&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="1-treasure-dataの公式dockerイメージを使う"&gt;1. Treasure Dataの公式Dockerイメージを使う&lt;/h3&gt;
&lt;p&gt;基本的にはTreasure Dataが提供している公式イメージを利用すると、本番環境と同じイメージが使うことができるので良いでしょう。&lt;/p&gt;
&lt;p&gt;その際には、他のPythonスクリプトの開発と同様に、切り分けた単体で実行できるようにして開発するのが良いでしょう。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-py" data-lang="py"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="vm"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;__main__&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;your_function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;default_argument&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;2019/12/23現在、最新のDocker imageは以下の2つです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;digdag/digdag-python:3.7
&lt;/li&gt;
&lt;li&gt;digdag/digdag-anaconda3:2019.03
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;PyCharmのProfessional Editionを持っている場合、Dockerのコンテナにremote debuggerがアタッチできるので便利です。
詳しくは
をご参照ください。&lt;/p&gt;
&lt;h3 id="2-dockerイメージと同様のpythonの仮想環境を作る"&gt;2. Dockerイメージと同様のPythonの仮想環境を作る&lt;/h3&gt;
&lt;p&gt;Python は仮想環境を作るための &lt;code&gt;venv&lt;/code&gt; と呼ばれるモジュールがあります。
これを使うことで他のプロジェクトと分離したパッケージの環境を作ることができます。&lt;/p&gt;
&lt;h4 id="digdag-python37"&gt;digdag-python:3.7&lt;/h4&gt;
&lt;p&gt;digdag-python:3.7と同様の環境を作るには、次のgistからrequirements.txtとconstraints.txtをダウンロードします。
&lt;/p&gt;
&lt;p&gt;その後、以下のようにコマンドを実行することでDockerイメージと同様のPython環境が構築できます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ python -m venv .venv
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;source&lt;/span&gt; .venv/bin/activate
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;(&lt;/span&gt;.venv&lt;span class="o"&gt;)&lt;/span&gt;$ pip install -r requirements.txt -c constraints.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="callout flex px-4 py-3 mb-6 rounded-md border-l-4 bg-blue-100 dark:bg-blue-900 border-blue-500"
data-callout="note"
data-callout-metadata=""&gt;
&lt;span class="callout-icon pr-3 pt-1 text-blue-600 dark:text-blue-300"&gt;
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m16.862 4.487l1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8l.8-2.685a4.5 4.5 0 0 1 1.13-1.897zm0 0L19.5 7.125"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div class="callout-content dark:text-neutral-300"&gt;
&lt;div class="callout-title font-semibold mb-1"&gt;Note&lt;/div&gt;
&lt;div class="callout-body"&gt;&lt;p&gt;この方法では、OSによる差異まで吸収ができない場合があります。
例えば、digdag-python:3.7はDebianベースなので、OSレベルのパッケージ管理は &lt;code&gt;apt-get&lt;/code&gt; を使いますが、それをスクリプト内に書いても実行ができません。&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 id="digdag-anaconda3201903"&gt;digdag-anaconda3:2019.03&lt;/h4&gt;
&lt;p&gt;anacondaイメージと同じ環境を作りたい場合は、gistからenvironment.ymlをダウンロードします。
&lt;/p&gt;
&lt;p&gt;その後、以下のコマンドを実行するとデフォルトの環境に依存するパッケージをインストールします。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;conda env update -n base -f environment.yml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;なお、新しい環境を構築したい場合は、environment.ymlの中の &lt;code&gt;base&lt;/code&gt; を &lt;code&gt;my-env&lt;/code&gt; など好きな名前に変更した後、以下のコマンドで新規仮想環境を作成してください。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;conda env create -f environment.yml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="py-operatorを含んだworkflowをローカルで実行する"&gt;py&amp;gt; operatorを含んだworkflowをローカルで実行する&lt;/h3&gt;
&lt;p&gt;もし、ローカル環境でworkflow全体を実行したい場合は、 &lt;del&gt;
を使うことで、
本番環境に近いdigdag環境が用意できます&lt;/del&gt;。&lt;/p&gt;
&lt;div class="callout flex px-4 py-3 mb-6 rounded-md border-l-4 bg-orange-100 dark:bg-orange-900 border-orange-500"
data-callout="warning"
data-callout-metadata=""&gt;
&lt;span class="callout-icon pr-3 pt-1 text-orange-600 dark:text-orange-300"&gt;
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0zM12 15.75h.007v.008H12z"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div class="callout-content dark:text-neutral-300"&gt;
&lt;div class="callout-title font-semibold mb-1"&gt;Warning&lt;/div&gt;
&lt;div class="callout-body"&gt;&lt;p&gt;2019/12/23現在は、Treasure Dataではv0_10を使っていますが、将来これは変わる恐れがあります。&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="callout flex px-4 py-3 mb-6 rounded-md border-l-4 bg-orange-100 dark:bg-orange-900 border-orange-500"
data-callout="warning"
data-callout-metadata=""&gt;
&lt;span class="callout-icon pr-3 pt-1 text-orange-600 dark:text-orange-300"&gt;
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0zM12 15.75h.007v.008H12z"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div class="callout-content dark:text-neutral-300"&gt;
&lt;div class="callout-title font-semibold mb-1"&gt;Warning&lt;/div&gt;
&lt;div class="callout-body"&gt;&lt;p&gt;2021/02/14現在、v0_11へと移行しました。今後は適宜適切なブランチを使うようにしてください。
&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="py-operatorにパラメータを渡す"&gt;py&amp;gt; operatorにパラメータを渡す&lt;/h2&gt;
&lt;p&gt;py&amp;gt; operatorにパラメータを渡すには2つの方法があります。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;digdagの引数を使う&lt;/li&gt;
&lt;li&gt;環境変数を使う&lt;/li&gt;
&lt;li&gt;digdagの変数でやりとりする&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="1-digdagの引数を使う"&gt;1. digdagの引数を使う&lt;/h3&gt;
&lt;p&gt;以下のような &lt;code&gt;py_scripts/examples.py&lt;/code&gt; というスクリプトがあるとします。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-py" data-lang="py"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;print_arg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Message is &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;msg&lt;/code&gt; という変数を &lt;code&gt;print_arg&lt;/code&gt; という関数に渡す場合、以下のようなdigdagのtaskになります。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;+simple_with_arg&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;py&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;py_scripts.examples.print_arg&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Hello World&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;docker&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;digdag/digdag-python:3.7&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;もし、複数の引数をPythonの関数へ渡したい場合、digdagの引数を増やせばよいでしょう。&lt;/p&gt;
&lt;p&gt;ここで注意してほしいのが、digdagの変数はPythonにシームレスに渡されるということです。
つまり、 &lt;code&gt;**kwargs&lt;/code&gt; などで引数を受け取る場合、意図しないdigdagの変数がPythonに渡る可能性に注意してください。&lt;/p&gt;
&lt;p&gt;例えば、上の例では &lt;code&gt;docker&lt;/code&gt; という変数には &lt;code&gt;{&amp;quot;image&amp;quot;: &amp;quot;digdag/digdag-python:3.7&amp;quot;}&lt;/code&gt; という辞書型の変数が代入されています。
ですので、 &lt;code&gt;**kwargs&lt;/code&gt; で受けるのではなく、明示的な引数の指定を強くおすすめします。&lt;/p&gt;
&lt;p&gt;た、同様に意図しないdigdagの変数と py&amp;gt; operatorの引数の衝突が起こる場合があります。
以下のようなワークフローがあったとします。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;_export&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;td&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;database&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;my_db&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;+simple_with_arg2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;py&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;py_scripts.examples.print_arg_td&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Hello World&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;docker&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;digdag/digdag-python:3.7&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;このとき、Pythonのスクリプトは以下のような関数を持っているとします。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-py" data-lang="py"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;print_arg_td&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;td&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#39;msg&amp;#39; is &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; and &amp;#39;td&amp;#39; is &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;td&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;simple_with_arg2&lt;/code&gt; タスク実行時に &lt;code&gt;print_arg_td&lt;/code&gt; 関数へ渡される引数 &lt;code&gt;td&lt;/code&gt; は何になるでしょうか？
通常のPythonの感覚では、デフォルト値である &lt;code&gt;None&lt;/code&gt; が期待されます。
しかし、 digdagのワークフローで &lt;code&gt;td&lt;/code&gt; という変数がすでにexportされているため、 引数 &lt;code&gt;td&lt;/code&gt; には &lt;code&gt;{&amp;quot;database&amp;quot;: &amp;quot;my_db&amp;quot;}&lt;/code&gt; という辞書が格納されてしまいます。
これにより、変数 &lt;code&gt;td&lt;/code&gt; の型(&lt;code&gt;dict&lt;/code&gt;)が期待されていたもの(&lt;code&gt;str&lt;/code&gt;)との不一致が起こりうるのです。&lt;/p&gt;
&lt;p&gt;このようなミスマッチを避けるために、digdagで予約されている変数やよく利用される変数を避けたほうが良いでしょう。
特に &lt;code&gt;td&lt;/code&gt; という変数や以下の変数は避けたほうが良いです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;td.endpoint&lt;/li&gt;
&lt;li&gt;td.apikey&lt;/li&gt;
&lt;li&gt;td.use_ssl&lt;/li&gt;
&lt;li&gt;td.proxy.enabled&lt;/li&gt;
&lt;li&gt;td.proxy.host&lt;/li&gt;
&lt;li&gt;td.proxy.port&lt;/li&gt;
&lt;li&gt;td.proxy.password&lt;/li&gt;
&lt;li&gt;td.proxy.user&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これらの既に利用されている変数は将来的に変更される可能性があります。&lt;/p&gt;
&lt;p&gt;digdagの組み込み変数は次のドキュメントをご参照ください。
&lt;/p&gt;
&lt;p&gt;また、digdagは &lt;code&gt;int&lt;/code&gt; から &lt;code&gt;str&lt;/code&gt; など意図しない型の変換を行う場合があります。そのため、型のチェックや明示的な変換をおすすめします。&lt;/p&gt;
&lt;h3 id="2-環境変数を使う"&gt;2. 環境変数を使う&lt;/h3&gt;
&lt;p&gt;環境変数は、py&amp;gt; operatorに変数を渡すためのもう一つの方法です。&lt;/p&gt;
&lt;p&gt;TDのAPI keyやAWSのsecret keyなどセキュアな情報はこの形式でやりとりすることが多いです。&lt;/p&gt;
&lt;p&gt;例えば、以下のような &lt;code&gt;simple_with_env&lt;/code&gt; というタスクがあったとします。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;+simple_with_env&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;py&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;py_scripts.examples.print_env&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;_env&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;MY_ENV_VAR&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;hello&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;docker&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;digdag/digdag-python:3.7&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;このとき、 &lt;code&gt;MY_ENV_VAR&lt;/code&gt; は以下のようにPythonから取得できます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-py" data-lang="py"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;os&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;print_env&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Env var is &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;MY_ENV_VAR&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Treasure Workflowではセキュアな情報を扱うためにdigdagの &lt;code&gt;secrets&lt;/code&gt; を格納するデータベースを提供しています。&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://chezo.uno/post/2019-12-24-python-custom-scripting/digdag_secrets.png"&gt;&lt;figcaption&gt;
&lt;h4&gt;Digdag Secretsの設定フロー&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;ol&gt;
&lt;li&gt;Projectを &lt;code&gt;td workflow push&lt;/code&gt; でプッシュする&lt;/li&gt;
&lt;li&gt;secretsを &lt;code&gt;td workflow secrets&lt;/code&gt; でデータベースに格納する&lt;/li&gt;
&lt;li&gt;secretsを &lt;code&gt;{secret:my_secret}&lt;/code&gt; という形式でworkflowに書き、環境変数経由でPythonにわたす&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;環境変数での受け渡しをしないとsecretsはPythonに渡されません。
例えば、以下のようなワークフローとPythonスクリプトでは正しくsecretsに格納された &lt;code&gt;td.apikey&lt;/code&gt; という情報が渡されます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;+simple_with_env2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;py&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;py_scripts.examples.access_td&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;_env&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;TD_API_KEY&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;${secret:td.apikey}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;docker&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;digdag/digdag-python:3.7&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-py" data-lang="py"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;os&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;access_td&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Able to fetch API key like &amp;#34;1234/XXXX&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;apikey&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;TD_API_KEY&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Do awesome execution&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;しかし、以下のようにdigdagの引数として渡した場合はsecretsが評価されません。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;+simple_with_env_ng&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;py&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;py_scripts.examples.access_td_ng&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;apikey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;${secret:td.apikey}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;docker&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;digdag/digdag-python:3.7&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-py" data-lang="py"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;access_td_ng&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;apikey&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Always shows &amp;#34;${secret:td.apikey}&amp;#34; instead of actual API key like &amp;#34;1234/XXXX&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;apikey&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;secretsに関する詳細は、
をご参照ください。&lt;/p&gt;
&lt;h3 id="3-digdagの変数を使う"&gt;3. digdagの変数を使う&lt;/h3&gt;
&lt;p&gt;digdagのpy&amp;gt; operatorとして実行するPythonスクリプトでは、 &lt;code&gt;import digdag&lt;/code&gt; とすることでdigdagモジュールを利用することが出来ます。&lt;/p&gt;
&lt;p&gt;以下のように、 &lt;code&gt;digdag.env.params&lt;/code&gt; と呼ばれる変数に辞書のようにアクセスすることでdigdagの変数を直接読むことが出来ます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-py" data-lang="py"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;read_workflow_env&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;digdag&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;digdag&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;my_msg&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;このとき、実行するworkflowは例えば以下のようなものになります。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;_export&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;my_msg&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;awesome message&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;+simple_with_arg2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;py&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;py_scripts.examples.read_workflow_env&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;docker&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;digdag/digdag-python:3.7&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;なお、読み込みだけではなく&lt;code&gt;digdag.env.store&lt;/code&gt;を使うことでdigdagの変数の書き込みもできます。
ただし、あまり大きな変数の受け渡しはしないほうが良いでしょう。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-py" data-lang="py"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;store_workflow_env&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;digdag&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;digdag&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;store&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;my_msg&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;このdigdagモジュールは、digdagがpy&amp;gt; operator実行時に動的に生成しているため、ローカルでは実行できないことに注意してください。
ローカルの実行を考慮する場合は、 &lt;code&gt;try-expect&lt;/code&gt; を利用するのが良いでしょう。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-py" data-lang="py"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;digdag&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;digdag&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;store&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;feature_query&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;feature_query&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="ne"&gt;ImportError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;pass&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="pythonやosのパッケージのインストール方法"&gt;PythonやOSのパッケージのインストール方法&lt;/h2&gt;
&lt;p&gt;Treasure WorkflowではDocker imageに入っていないパッケージは &lt;code&gt;os.system&lt;/code&gt; や &lt;code&gt;subprocess.run&lt;/code&gt;を使い実行します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-py" data-lang="py"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;os&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nn"&gt;sys&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;system&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;executable&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; -m pip install --upgrade pytd==1.4.3&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;subprocess&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# arguments should be passed by list&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;subprocess&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;executable&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;-m&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;pip&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;install&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;--upgrade&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;pytd==1.4.3&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;この際、パッケージのバージョンを指定しましょう。&lt;/p&gt;
&lt;p&gt;OSのパッケージのインストールの場合も同様です。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-py" data-lang="py"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;os&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;system&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;apt-get update&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# Need to run before doing apt-get install&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;system&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;apt-get install -y wkhtmltopdf&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="py-operatorを含むディレクトリ構成"&gt;py&amp;gt; operatorを含むディレクトリ構成&lt;/h2&gt;
&lt;p&gt;一つのプロジェクトでは、以下のようなディレクトリ構成をおすすめしています。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-txt" data-lang="txt"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;my_project
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── README.md
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── config
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── params.test.yml &amp;lt;- Configuration file for run through test. Mirror params.yml except for `td.database`
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── params.yml &amp;lt;- Configuration file for production
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── awesome_workflow.dig &amp;lt;- Main workflow to be executed
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── ingest.dig &amp;lt;- Data ingestion workflow
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── py_scripts &amp;lt;- Python scripts directory
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── __init__.py
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── data.py &amp;lt;- Script to upload data to Arm Treasure Data
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── my_script.py &amp;lt;- Main script to execute e.g. Data enrichment, ML training
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── queries &amp;lt;- SQL directory
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── example.sql
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── run_test.sh &amp;lt;- Test shell script for local run through test
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── test.dig &amp;lt;- Test workflow for local run through test
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;この構成に従ったdigdagプロジェクトをcookiecutter-digdagを使うことで簡単にテンプレートから生成できます。
&lt;/p&gt;
&lt;h2 id="実行時のエラーを通知する"&gt;実行時のエラーを通知する&lt;/h2&gt;
&lt;p&gt;Pythonのスクリプト実行時に発生したエラーをSlackなどで通知したい事があると思います。
digdagは &lt;code&gt;_error:&lt;/code&gt; でworkflowが失敗した際の処理をできますが、そのとき&lt;code&gt;${error.message}&lt;/code&gt;の中にPythonの例外情報が入っています。&lt;/p&gt;
&lt;p&gt;以下のようなworkflowとPython scriptがあったとします。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;+simple_raise_error&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;py&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;py_scripts.examples.error_sample&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;docker&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;digdag/digdag-python:3.7&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;_error&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;echo&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;${error.message}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-py" data-lang="py"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;error_sample&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;a1234&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# raises ValueError&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;このとき、以下のようなログが得られます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-txt" data-lang="txt"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2019-12-24 23:06:32 +0900 [INFO] (0039@[0:python]+simple^error): echo&amp;gt;: Python command failed with code 1: invalid literal for int() with base 10: &amp;#39;a1234&amp;#39; (ValueError)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; from Traceback (most recent call last):
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; from File &amp;#34;.digdag/tmp/digdag-py-2-1815457087076518360/runner.py&amp;#34;, line 165, in &amp;lt;module&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; result = callable_type(**args)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; from File &amp;#34;/private/var/folders/y9/bnjb3krn39s22rmg_wvlnf7m0000gp/T/digdag-tempdir2111531196420040503/workspace/1_simple_1_2_2945225080250994454/py_scripts/examples.py&amp;#34;, line 5, in print_arg
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; int(&amp;#34;a1234&amp;#34;)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; from ValueError: invalid literal for int() with base 10: &amp;#39;a1234&amp;#39; (runtime)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;この例では、&lt;code&gt;echo&amp;gt;&lt;/code&gt; operatorでエラーを出力しているだけですが、Slack等に例外を送ることで定期実行しているPythonタスクの通知が簡単に行なえます。&lt;/p&gt;
&lt;h2 id="まとめ"&gt;まとめ&lt;/h2&gt;
&lt;p&gt;このように、様々なポイントをおさえることでTreasure Workflowの開発をしやすくなるかと思います。
また、digdagでもいくらかのポイントは使うことができるかと思います。&lt;/p&gt;</description></item><item><title>Facebook Prophetのplotをmodelオブジェクトなしでする</title><link>https://chezo.uno/post/2019-12-09-facebook-prophet-plot/</link><pubDate>Sun, 08 Dec 2019 07:36:00 -0800</pubDate><guid>https://chezo.uno/post/2019-12-09-facebook-prophet-plot/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="https://images.unsplash.com/photo-1543286386-2e659306cd6c?ixlib=rb-1.2.1&amp;amp;q=85&amp;amp;fm=jpg&amp;amp;crop=entropy&amp;amp;cs=srgb" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Facebook Prophetを使っているときに、グラフのプロットは &lt;code&gt;model.plot()&lt;/code&gt; などを使うと思います。しかし、 &lt;code&gt;model&lt;/code&gt; が存在せずもとの訓練データと予測結果のデータだけあるときにプロットしたいという場合もあるかもしれません。&lt;/p&gt;
&lt;p&gt;基本的には、以下のコードを再利用すればplotできます。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;実際のコードは以下の通り。&lt;/p&gt;
&lt;p&gt;予測結果を &lt;code&gt;df&lt;/code&gt; に、訓練データを &lt;code&gt;df_prev&lt;/code&gt; に入れています。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;気をつけないといけないのは、 &lt;code&gt;ds&lt;/code&gt; カラムがきちんとソートしないといけないこと。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>IBIS 2019の機械学習工学企画セッションに登壇しました</title><link>https://chezo.uno/post/2019-12-05-ibis2019-mlse/</link><pubDate>Wed, 04 Dec 2019 07:24:00 -0800</pubDate><guid>https://chezo.uno/post/2019-12-05-ibis2019-mlse/</guid><description>&lt;p&gt;この記事は、
の5日目です。&lt;/p&gt;
&lt;p&gt;こんにちは、chezouです。先日、PFNの比戸さんにお声がけいただきIBIS 2019という日本で最大の理論系機械学習のワークショップで、
に「継続的改善をし続けるための機械学習基盤の課題」というタイトルで発表しました。理論系のワークショップというのは知っておりアウェイ感半端なく、
も受けましたが、なんとか実務者の皆様に届いてくれたのではないかと思っています。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;iframe src="https://docs.google.com/presentation/d/e/2PACX-1vTbIOwmdWnnQWVkoMm0a5z6dg0UGCmuvDHGztsl_6krNn2gh-IOFl7Lo4-D_fFqzlyL-RtqemHolupn/embed?start=false&amp;loop=false&amp;delayms=3000" frameborder="0" width="720" height="434" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true"&gt;&lt;/iframe&gt;
&lt;p&gt;Machine Learning in productionに対する9つの課題は、世の中にまだまだ整理されているものではなく難産だったので色々と議論ができればと思っています。9つの課題とdotscienceのLuke Marsden氏によるReproducible, Accountable, Collaborative, Continuousという
を元に整理してみたのですが、どのような課題と抽象化を行っているのか、そしてそれがどういう嬉しさがあるのかへの理解の一助となればと思います。&lt;/p&gt;
&lt;h2 id="concept-drift"&gt;Concept drift?&lt;/h2&gt;
&lt;p&gt;「学習時と予測時の分布の違いを検出するデータバリデーションが大事」という話をしました。で、この「学習時と予測時の分布の違い」というのを&amp;quot;Concept drift&amp;quot;という表現を使って説明をしたのですが、 shima__shima先生からもご指摘をいただき、どうも違うのではないかということで色々と調べたり議論をしていました。Concept driftは英語圏では雑に
、特に産業界ではそれでいいかなという表現であるという認識です。ただ、もともとはストリームデータに対するdriftという定義があるようです。&lt;/p&gt;
&lt;p&gt;人によっては&amp;quot;Covariate shift&amp;quot;(共変量シフト)や&amp;quot;Domain shift&amp;quot;という表現をするということから、Covariate Shiftがいいのかなと思っていましたが、&amp;ldquo;Delayed effect&amp;quot;という表現が時間的な変化に対する表現としてよいようです。ただ、個人的にはスライドでも書いたように光の変化は時間変化というよりは仮定する前提条件が覆された例だと思っているため、Delayed effectも少し狭いかなと思っていました。&lt;/p&gt;
&lt;p&gt;なお、GoogleはTensorFlow Extendedの論文中で&amp;quot;training-serving skew&amp;quot;という表現を使っています。&lt;/p&gt;
&lt;p&gt;以下、shima__shima先生の説明が参考になるかと思います。&lt;/p&gt;
&lt;blockquote class="twitter-tweet"&gt;&lt;p lang="ja" dir="ltr"&gt;共変量シフトは統計系の文脈ででてきて抽象的に分布が違うといった意味合いで最初に出てきました．&lt;br&gt;転移学習は機械学習分野で類似したデータという感じででてきました．2000年中頃はいろいろ呼び名がありましたが今では転移学習に落ち着いていると思います． &lt;a href="https://t.co/4n1NXdWPAE"&gt;https://t.co/4n1NXdWPAE&lt;/a&gt;&lt;/p&gt;&amp;mdash; しましま (@shima__shima) &lt;a href="https://twitter.com/shima__shima/status/1201801576949538816?ref_src=twsrc%5Etfw"&gt;December 3, 2019&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;blockquote class="twitter-tweet"&gt;&lt;p lang="ja" dir="ltr"&gt;同じころ，コーパスの分野の違いというあたりから，Hal Daumé さんあたりがNLP分野でドメイン適応という言葉を使い始められました．&lt;br&gt;時間による変化で起きるならdelayed effect という言葉もあります．&lt;a href="https://t.co/qVmBdO2fz3"&gt;https://t.co/qVmBdO2fz3&lt;/a&gt;&lt;/p&gt;&amp;mdash; しましま (@shima__shima) &lt;a href="https://twitter.com/shima__shima/status/1201802162482737152?ref_src=twsrc%5Etfw"&gt;December 3, 2019&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;h2 id="機械学習工学セッションの他の発表"&gt;機械学習工学セッションの他の発表&lt;/h2&gt;
&lt;p&gt;他の発表は、NIIの石川先生による機械学習工学とテストの話 (
)、STORIA法律事務所の柿沼先生の機械学習と知財の話(
)でした。&lt;/p&gt;
&lt;p&gt;石川先生の機械学習を工学として捉え直したときの説明や、adversarial testなどテストの最近の状況は自分自身追いかけられていなかったのでとても良かったです。&lt;/p&gt;
&lt;p&gt;柿沼先生はAI模擬裁判などでご存知の方も多いと思いますが、先生の知財の話は学習済みモデル含めたシステムの権利は受託したベンダーか発注者のどちらにあるのか、という話も面白く、実践的で知見に富んだ話でした。ぜひML関係者はスライドを読むと良いと思います。また、柿沼先生への比戸さんの質疑から派生した議論をメールでさせていただいたのですが、機会があったら公開したいと思っています。&lt;/p&gt;</description></item><item><title>RとTreasure Data</title><link>https://chezo.uno/post/2019-12-04-r-and-td/</link><pubDate>Tue, 03 Dec 2019 07:00:00 -0800</pubDate><guid>https://chezo.uno/post/2019-12-04-r-and-td/</guid><description>&lt;p&gt;この記事は、
3日目です。&lt;/p&gt;
&lt;p&gt;公式ドキュメントは、
のですが、RからTreasureDataを使うにはRJDBC以外にもいくつかの方法があります。&lt;/p&gt;
&lt;p&gt;基本的には、RPrestoとRTDをおさえておくのが良いでしょう。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;Facebookが開発しているPrestoのR client。TreasureDataでもアドホックなクエリを投げるときに便利&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;Rからdata frameをTreasure Dataにアップロードするのに使えるR client&lt;/li&gt;
&lt;li&gt;(12/18追記) レポジトリの場所がtreasure-dataの下になりました&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;RStudio社が開発するRのSpark clientであるsparklyrのplugin&lt;/li&gt;
&lt;li&gt;内部で使うtd-sparkはSparkのサポートバージョンが上がるのが速いが、sparklyrのSparkの新バージョンサポートが遅いので少し低調なメンテナンス&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;実際の、RPrestoとRTDの使い方は以下のRmarkdownを見ていただくのが良いかと思います。
&lt;/p&gt;
&lt;h1 id="rtdのインストール"&gt;RTDのインストール&lt;/h1&gt;
&lt;p&gt;インストールは、 &lt;code&gt;devtools::install_github&lt;/code&gt; を使うか、 &lt;code&gt;install-github.me&lt;/code&gt; を使うことでできます。&lt;/p&gt;
&lt;p&gt;RTDは v0.2.0 からCRANに上げるのを辞めました。これはこれで一つの記事が書けるのですがそれはまた別の機会に譲ろうと思います。&lt;/p&gt;
&lt;p&gt;余談ですが、CRANとの戦いの際にはr-wakalangの皆様に支えていただきました。Rに関する開発はもはやあそこなしには成り立ちません。
にぜひ参加するといいと思います。パッケージングから統計モデリングも話まで物凄い勢いで有識者が答えてくれます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-R" data-lang="R"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;source&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;https://install-github.me/treasure-data/RTD@v0.2.0&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;インストール後は、&lt;code&gt;apikey&lt;/code&gt; と &lt;code&gt;endpoint&lt;/code&gt; を適切なものを渡して上げることで、uploadができます。例えば &lt;code&gt;nycflights13&lt;/code&gt; パッケージの &lt;code&gt;flights&lt;/code&gt; データをアップロードしてみましょう。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-R" data-lang="R"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;RTD&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;Td&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;apikey&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;Sys.getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;TD_API_KEY&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;endpoint&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;api.treasuredata.com&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;td_upload&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;test&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;flights&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;nycflights13&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;flights&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;overwrite&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;T&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;v0.1.0 ではembulkが必須でしたが、今のバージョンは bulk import APIを使うようになっているため、特に追加でツールをインストールする必要はありません。&lt;/p&gt;
&lt;h1 id="rprestoでの接続"&gt;RPrestoでの接続&lt;/h1&gt;
&lt;p&gt;&lt;code&gt;src_presto&lt;/code&gt; する際には、 &lt;code&gt;user&lt;/code&gt; に TDのAPI keyを渡すこと、hostは
を参照してください。schemaはDatabase名、 catalogは &lt;code&gt;td-presto&lt;/code&gt;のままにしてください。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-R" data-lang="R"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;RPresto&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dplyr&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;db&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;src_presto&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;host&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;https://api-presto.treasuredata.com&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;443&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;Sys.getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;TD_API_KEY&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;schema&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;test&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;catalog&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;td-presto&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;flights_tbl&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="nf"&gt;tbl&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;db&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;flights&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;flights_tbl&lt;/code&gt; にテーブルが変数として割り当てられました。が、実際にはdplyrの諸々の処理を実行するときにSQLが走るのでalias程度に考えてください。&lt;/p&gt;
&lt;h1 id="dplyrとggplot2で可視化する"&gt;dplyrとggplot2で可視化する&lt;/h1&gt;
&lt;p&gt;それでは、 &lt;code&gt;flights_tbl&lt;/code&gt; をdplyrを使い集計して飛行機の平均遅延時間などを算出して、ggplot2で可視化してみましょう。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-R" data-lang="R"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;delay&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="n"&gt;flights_tbl&lt;/span&gt; &lt;span class="o"&gt;%&amp;gt;%&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;group_by&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tailnum&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;%&amp;gt;%&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;summarise&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;n&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="n"&gt;dist&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;mean&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;distance&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;na.rm&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;delay&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;mean&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;arr_delay&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;na.rm&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="o"&gt;%&amp;gt;%&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;count&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="m"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dist&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="m"&gt;2000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;%&amp;gt;%&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;collect&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# plot delays&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ggplot2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;ggplot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;delay&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;aes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dist&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;delay&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;geom_point&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;aes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;size&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;count&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;alpha&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;geom_smooth&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;scale_size_area&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;このような図ができたかと思います。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2019-12-04-r-and-td/rpresto_ggplot_hu_96eb747de403ec48.webp 320w, https://chezo.uno/post/2019-12-04-r-and-td/rpresto_ggplot_hu_72e955d3c8fbeca3.webp 480w, https://chezo.uno/post/2019-12-04-r-and-td/rpresto_ggplot_hu_8e1f6df8223f9288.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2019-12-04-r-and-td/rpresto_ggplot_hu_96eb747de403ec48.webp"
width="760"
height="543"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;それでは、HappyなRとTreasureDataライフを！&lt;/p&gt;</description></item><item><title>Rパッケージ開発の闇</title><link>https://chezo.uno/post/2019-11-30-r-package-yami/</link><pubDate>Sat, 30 Nov 2019 03:32:00 -0800</pubDate><guid>https://chezo.uno/post/2019-11-30-r-package-yami/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="https://images.unsplash.com/photo-1504401774599-1b5378bfaae3?ixlib=rb-1.2.1&amp;amp;q=85&amp;amp;fm=jpg&amp;amp;crop=entropy&amp;amp;cs=srgb" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h1 id="tldr"&gt;tl;dr&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;CRANに上げてたパッケージにGitHubのみリリースのパッケージへ依存を追加したら、自分もCRANに上げられなくなった&lt;/li&gt;
&lt;li&gt;CRANはclosedな手動の塊なので、もう上げないよと依存先のメンテナは言った&lt;/li&gt;
&lt;li&gt;もうCRANは忘れて、GitHubに上げればええやん ← イマココ&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="ここまでのあらすじ"&gt;ここまでのあらすじ&lt;/h1&gt;
&lt;p&gt;1年前にこんな記事を書きました。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;実はこれを書いていたのは、先日も記事に書いたRTDを久しぶりにリリースするというときだったと思います。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;当時は、なんでこんなにリリースコマンドのときに質問ガンガンするんだとか思いながらこれを見ていたと思います。&lt;/p&gt;
&lt;p&gt;ご存じない方のために説明すると、CRANとはRのセントラルパッケージリポジトリで、承認を得ないと登録できません。PyPIと違って、きっと malicious なパッケージもこれで防げますね！そこまで見てるかはしらんけど。&lt;/p&gt;
&lt;p&gt;[2019/12/06追記]&lt;/p&gt;
&lt;p&gt;全然だめみたいです&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;[/追記]&lt;/p&gt;
&lt;p&gt;実はCRANサブミット時に、linterなどチェックを通しつつパッケージがルールにマッチしているかを人手で最後のチェックをしているのです。なので、2週間に一回くらいアップデートしろとか色々書いてあります。当時は、へー、頑張ってるんだなーとか思いながらサブミットをしていましたが、何しろ12月だったのでメールの返事が帰ってきません。なんだ、おいこのプロセスと当時も思っていました。余談ですが、日本人は正月に休みますがアメリカやヨーロッパだと12月がホリデーシーズンです。&lt;/p&gt;
&lt;h2 id="久しぶりにcranにパッケージをサブミットした"&gt;久しぶりにCRANにパッケージをサブミットした&lt;/h2&gt;
&lt;p&gt;で、1年弱たって、RTDに新機能を追加してバージョンアップを図ります。今回は、msgpackを使ったバルクインポートを導入です。ついに、embulkへの依存が不要になりました！&lt;/p&gt;
&lt;p&gt;ところで、Rのmsgpack実装は野良のものがわらわらあるんですが、msgpack streamに対応していたのがこのパッケージでした。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;正直data frameからmsgpack streamへの変換がハマりどころいっぱいありましたが、なんとか実装できました。&lt;/p&gt;
&lt;p&gt;で、このパッケージCRANに昔はあったようなのですがarchiveされてしまっていました。&lt;/p&gt;
&lt;p&gt;最初は、 DESCRIPTION の SuggestsとRemotesに書いておいたのですが、まぁ &lt;code&gt;devtools::check&lt;/code&gt; にRemotesが引っかかるではありませんか。そっかー、そういうこともあるよねー、という気持ちで困ったときのr-wakalangに相談してみました。&lt;/p&gt;
&lt;p&gt;すると、識者の意見が出るわ出るわ。いやー、本当にr-wakalangは最高ですね！&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2019-11-30-r-package-yami/Untitled_hu_ab8206c0f1f540b9.webp 320w, https://chezo.uno/post/2019-11-30-r-package-yami/Untitled_hu_4310fe0701bf59a5.webp 480w, https://chezo.uno/post/2019-11-30-r-package-yami/Untitled_hu_6a85b3aec560bd22.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2019-11-30-r-package-yami/Untitled_hu_ab8206c0f1f540b9.webp"
width="760"
height="344"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;テクニックとして出たのは、Suggestsには書くけど適宜ユーザーには必要になったらインストールさせるよう関数を用意するというものでした。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;それでは、諸々済ませていざサブミット！&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="Untitled%201.png" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;やあまた会ったね、Uweさん。彼は実は1年前にもすごく待った末にrejectしてくれました。なになに？SuggestsにあるやつがCRANにないって？うーん、困ったなということでまたr-wakalangにすごすごと戻ります。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="Untitled%202.png" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;なるほど、cran-comments.md! そうだね、僕たちには説明をする場所がある！というわけで、cran-comments.mdに実行時にインストールするから問題ないよ。という説明を書いて再度submit!&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="Untitled%203.png" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;ところで、僕のcran-comments.mdは読んでくれたかな？まぁ読んでないよね。なになに、&amp;ldquo;Let me read them for you&amp;rdquo; だって？僕そのドキュメントもう何回もよんだわ！&lt;/p&gt;
&lt;p&gt;うーん、どうやらrnaturalearthはCRANには上がっていませんが、Additional_repositoriesに上がっているようです。なるほど、これなら &lt;code&gt;install.packages&lt;/code&gt; で入れられますね。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-r" data-lang="r"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Additional_repositories&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="o"&gt;://&lt;/span&gt;&lt;span class="n"&gt;packages.ropensci.org&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;探してみると、GitHub pagesにRパッケージをアップロードして
がいました。なるほど！自前レポジトリに上げればCRANに上げれるんだ！&lt;/p&gt;
&lt;p&gt;はて、CRANにパッケージを上げるために依存先を自前リポジトリに上げる&amp;hellip;？控えめに言って糞だぞ？&lt;/p&gt;
&lt;h2 id="依存先をcranへと上げるようお願いする"&gt;依存先をCRANへと上げるようお願いする&lt;/h2&gt;
&lt;p&gt;仕方がないので、作戦変更です。msgpack-rの作者に頭を下げてCRANにあげてくれ！と頼むしかありません。自分のパッケージじゃないものを上げるために自前でリポジトリをホストするなんて正気の沙汰ではありません。&lt;/p&gt;
&lt;p&gt;で、帰ってきたお返事（の抄訳）がこちら。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;前述したとおり、CRANでは最後の人手でのチェックがあるのですが、そこの際にサーバサイドでチェックが走ります。で、このチェックというのがローカルで確認できるものとはどうも違うようで、特にWindowsのC依存のあるビルドが絡んでくると大変です。msgpack-rはRcppを経由してCで書かれたものをwrapしているので、当然そこの面倒臭さはつきまといます。&lt;/p&gt;
&lt;p&gt;誰得なんだこのシステムは。&lt;/p&gt;
&lt;p&gt;というわけで、CRANは諦めました。&lt;/p&gt;
&lt;h2 id="githubにリリースでええやん"&gt;GitHubにリリースでええやん&lt;/h2&gt;
&lt;p&gt;GitHubからのインストール自体は、 &lt;code&gt;devtools::install_github&lt;/code&gt; を使えばできるのですが、 &lt;code&gt;devtools&lt;/code&gt; が入っていない人もいるかも知れません。でもね、そういう人のためにinstall-github.meという便利なサイトがあるんです。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-r" data-lang="r"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;source&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;https://install-github.me/chezou/RTD@v0.2.0&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;と書けばバージョンを指定してインストールができます。アップデートは多分自分でしないといけませんが&amp;hellip;。&lt;/p&gt;
&lt;p&gt;Rのパッケージを書くのは過去、RTD含めて3個しか行っていませんが、今どきこのきつい中央集権的なレポジトリのスタイルは厳しいなぁと思いました。&lt;/p&gt;
&lt;p&gt;今ではCRANのパッケージを削除したいくらいです。GitHub最高！&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>VeinのiOSショートカット複数URL対応しました</title><link>https://chezo.uno/post/2019-11-30-vein-ios-shortcut/</link><pubDate>Fri, 29 Nov 2019 23:16:00 -0800</pubDate><guid>https://chezo.uno/post/2019-11-30-vein-ios-shortcut/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="https://images.unsplash.com/photo-1416816901131-9e5eab64c1c1?ixlib=rb-1.2.1&amp;amp;q=85&amp;amp;fm=jpg&amp;amp;crop=entropy&amp;amp;cs=srgb" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;この記事は
の10日目です。昨日は
でした。&lt;/p&gt;
&lt;p&gt;VeinはNextIntが作ってる情報共有プラットフォームです。内輪のコミュニティや会社の中で皆がなにを見てるのかをカジュアルに共有する場所です。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;作った思いはところてんが山のように話してるので見てみてください。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;VeinはAndroidアプリしか現状モバイルにはないのですが、iOSはkikuchyさんの作ったショートカットがあります。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;ただ、これはテキストに複数URLが入っているとうまく処理できなかったので改良しました(お前のことだぞ、ニコニコ漫画iOSアプリ！)&lt;/p&gt;
&lt;p&gt;これでニコニコ漫画の尊い回をシェアし放題ですね。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;また、Veinの隠し便利機能としてpostしたものをSlackに共有するというのができるのですが、僕はfavしたものをSlackのtimes的なチャンネルに流しています。で、いちいちveinにいってfavするのが面倒なのでfav対応のショートカットも作りました。最後のpostするときのパラメータに &lt;code&gt;vote=true&lt;/code&gt; を入れているだけです。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;なお、余談ですが、ショートカット編集するとTwitterやFacebookなどショートカット対応アプリは同時に投げれます。Slackは無理でした。&lt;/p&gt;
&lt;p&gt;Twitterとの同時投稿はこれを使えば出来ます。なお、Appを選んで差し替えればFacebookとの同時投稿もできます。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;明日はなんでも溶かすtaichiさんです。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>mecab-python3を捨ててnatto-pyにしよう</title><link>https://chezo.uno/post/2019-11-29-mecab-python3/</link><pubDate>Thu, 28 Nov 2019 21:58:00 -0800</pubDate><guid>https://chezo.uno/post/2019-11-29-mecab-python3/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="https://images.unsplash.com/photo-1516675457768-db513e191dcc?ixlib=rb-1.2.1&amp;amp;q=85&amp;amp;fm=jpg&amp;amp;crop=entropy&amp;amp;cs=srgb" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h1 id="tldr"&gt;tl;dr&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;del&gt;mecab-python3は使い勝手が悪いのでやめよう&lt;/del&gt; 後述するPaulがメンテナになってWindowsも含めたwheelが提供されたので今はだいぶマシです
&lt;ul&gt;
&lt;li&gt;IPAdicを使う場合にpip installで辞書を入れる必要があるのは注意（なんでwheelに辞書混入してたんや)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;代わりは
がおすすめ
&lt;ul&gt;
&lt;li&gt;fugashiも選択肢としてあります（が、デフォルトUnidic推しなのでIPAdic使いたい人は説明読んでね）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="mecab-python3を止める理由"&gt;mecab-python3を止める理由&lt;/h1&gt;
&lt;p&gt;メンテナが変わってDebianのパッケージを書いている人になったため、ユーザ寄りというよりは開発側の理屈が強く優先されるようになった。良くも悪くもUNIX的な思想？（一つ一つのやれる事は小さくというパイプ的なアレ）なんだが、これがすこぶるwheelのfat binary packageの方向性と相性が悪いと思う。具体的には&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Source build時にswig必須に&lt;/li&gt;
&lt;li&gt;WheelもIPAdicのみサポートでLinuxとmacOS向けのみ&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;つまり、Neologdがデファクトとなった現代では使いづらさしかないのでやめたほうがいい。機械学習の教科書的な本では必ずmecab-python3が出てくるが、あれは古い話と思ったほうがいい。&lt;/p&gt;
&lt;p&gt;MacとLinuxのユーザは迷わずnatto-pyを使いましょう。nattoシリーズはFFIベースでmecabを使うので、余計なバインディングのビルドは必要ありません。また、作者にお話を聞いたところ、Windows環境で動かすことを一つのモチベーションにしているとのことなので、割とWindowsユーザにも良いかと思います。&lt;/p&gt;
&lt;p&gt;Windowsユーザは以下の記事を読んで、libmecab.dllを手に入れてnatto-pyを使いましょう。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;余談だが、最近spaCyがfugashiというMeCabのCython wrapperに依存するように変わったが、これは今のところUniDic専用だ。この背景はmecab-python3がほぼIPAdic専用になったからだろう。なお、韓国語はnatto-pyを使っている。&lt;/p&gt;
&lt;p&gt;natto-pyは作者に聞いたところ、もうmecabがメンテナンスされていないのでnatto自身もあまり大きな変更はしないだろうとのこと。&lt;/p&gt;
&lt;p&gt;natto-pyの簡単な使い方はこれを見るといいと思う&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h1 id="mecab以外の方向性"&gt;mecab以外の方向性&lt;/h1&gt;
&lt;p&gt;sudachiPyとGiNZA, spaCy の組み合わせに期待している。これは、マストドンのトレンドワードの記事を読んでもらえれば使い方はわかるだろう。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;ただ、sudachiPyはmecabと比較すると速度的に遅いことと、sym linkを使っている関係でまだWindowsでは動かないというネックがある。Windowsで動かすの自体は対応してもらえそうな雰囲気を感じているので、手伝っていきたい。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;SentencePieceはNN向けの前処理にはいいと思うけど、語彙数を決めて分割しにいく性格から、トレンドワードをとりにいく的なのには向かないんだろうなと思っている（教えて詳しい人）。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;mecab-python3はオリジナルのクリエーターが、もう使ってないんじゃないかなー。彼の最初に作ったモチベーションは簡便なパッケージを用意すると言うところだと思うのにどうしてこうなった。&lt;/p&gt;
&lt;p&gt;[20191217追記]&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;[/追記]&lt;/p&gt;
&lt;p&gt;[20191225追記]&lt;/p&gt;
&lt;p&gt;どうやら、fugashiの作者のpolmさんが新オーナーになる方向で進んでるらしい。新しいrepoは下記になる予定。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;[/追記]&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>ストレートネック向け最近の枕事情</title><link>https://chezo.uno/post/2019-11-26-pillow/</link><pubDate>Tue, 26 Nov 2019 03:17:00 -0800</pubDate><guid>https://chezo.uno/post/2019-11-26-pillow/</guid><description>&lt;p&gt;以前、首狩り族のネックピローをいただいてから、かなりストレートネック気味な状況が改善されて非常に良い。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;ただ、出張がちょいちょいあってそのたびにつらい思いをしていたのだけれど、実家で使ったときにとても高さも低くて快適だったので、先日の名古屋出張で急遽これを買った。東急ハンズにも売っているので急いで買いたい人にも便利。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;何がいいかって、とにかく高さが低い。3cmくらいしかないんじゃないかな。その割にしっかりしてる。さらに、こんな感じでくるくるっと巻けるので持ち運びもできるところもよい。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="https://m.media-amazon.com/images/S/aplus-media/vc/cf6e6356-9b1a-4ff1-a504-84e7289f355d.__CR0,0,300,300_PT0_SX300_V1___.jpg" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;補間的にこの首を乗せるアイテムも使っていますが手軽にマッサージができて気持ちいいです。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>GitHub ActionsでIssue templateに従っていないissueをcloseする</title><link>https://chezo.uno/post/2019-11-25-github-actions-issue-template/</link><pubDate>Mon, 25 Nov 2019 00:52:00 -0800</pubDate><guid>https://chezo.uno/post/2019-11-25-github-actions-issue-template/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="https://images.unsplash.com/photo-1520716963369-9b24de965de4?ixlib=rb-1.2.1&amp;amp;q=85&amp;amp;fm=jpg&amp;amp;crop=entropy&amp;amp;cs=srgb" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;GitHub ActionsはissueやPRのcreateをトリガーに動いてくれる。&lt;/p&gt;
&lt;p&gt;このActionを使えば正規表現でtemplateをチェックして自動でcloseする。経験上、面倒くさい人は大抵読まずにtemplate全消ししてくるので、貧弱な正規表現でも十分役に立つ。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;実際のworkflowはこちら。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;ポイントは以下のように雑に &lt;code&gt;.*((PATTERN_A)|(PATTERN_B)).*&lt;/code&gt; と書いてあげれば良い。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;issue-pattern&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;.*((Is your feature request related to a problem)|(Check list before submit)).*&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;なお、この正規表現はJavaScriptの &lt;code&gt;RegExp&lt;/code&gt; として動くのでChromeのconsoleなんかでテストすればいい。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-jsx" data-lang="jsx"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;regexp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;RegExp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;.*((guidelines for Contributing)|(Check list before submit)).*&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;regexp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exec&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;aaaaaaaguidelines for Contributingbbbb&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// (4) [&amp;#34;aaaaaaaguidelines for Contributingbbbb&amp;#34;, &amp;#34;guidelines for Contributing&amp;#34;, &amp;#34;guidelines for Contributing&amp;#34;, undefined, index: 0, input: &amp;#34;aaaaaaaguidelines for Contributingbbbb&amp;#34;, groups: undefined]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;こんな感じで動く。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>GitHub ActionsでAPI tokenを使ってPyPIへリリースする</title><link>https://chezo.uno/post/2019-11-25-github-actions-api-token-pypi-release/</link><pubDate>Sun, 24 Nov 2019 23:59:00 -0800</pubDate><guid>https://chezo.uno/post/2019-11-25-github-actions-api-token-pypi-release/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="https://images.unsplash.com/photo-1526379095098-d400fd0bf935?ixlib=rb-1.2.1&amp;amp;q=85&amp;amp;fm=jpg&amp;amp;crop=entropy&amp;amp;cs=srgb" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;ふと思い立ってtravisを捨ててGitHub Actionsを使ったPythonのテストを行うようにしてみた。また、ついでにPyPIへリリースもできるようにしてみた。&lt;/p&gt;
&lt;h1 id="github-actionsをpythonのテストに使う"&gt;GitHub ActionsをPythonのテストに使う&lt;/h1&gt;
&lt;p&gt;GitHub ActionsをPythonに使うメリットとしては&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OS (Ubuntu, macOS, Windows) や Python versionのmatrixが使えて複数バージョンのテストが楽&lt;/li&gt;
&lt;li&gt;JDKなど追加の依存のインストールも &lt;code&gt;uses&lt;/code&gt; を使ってサクッとできる&lt;/li&gt;
&lt;li&gt;起動もまあまあ速い&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;といった点が上げられる。&lt;/p&gt;
&lt;p&gt;例えば、JDK 12を入れようと思ったら、このような記述をしてあげれば良い。楽。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- &lt;span class="nt"&gt;uses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;actions/setup-java@v1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;with&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;java-version&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;12&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;java-package&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;jdk&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;architecture&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;x64&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;一方、残念な点としては&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windowsのtemp directoryへの書き込みが何故かできない&lt;/li&gt;
&lt;li&gt;マイナーなハマりどころに対して情報が少なくデバッグも厳しい&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;というところだろう。&lt;/p&gt;
&lt;p&gt;実際のテストのワークフローはこちら&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h1 id="github-actionsからpypiへリリースする"&gt;GitHub ActionsからPyPIへリリースする&lt;/h1&gt;
&lt;p&gt;実際のworkflowを見てもらうと速いと思う。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;もともと、公式で用意されていたWorkflowはReleaseが作成されたときにpublishされるというものだったが、
でタグを付けるとバージョンも付与されるようにしていたので、&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;tagをpush (するとversionも付与される)。あるいはtagをGitHubで作成しても良い&lt;/li&gt;
&lt;li&gt;GitHub Actionsによって、tagからreleaseが作成される&lt;/li&gt;
&lt;li&gt;releaseからwheelを作成、PyPIへAPI Tokenを使ってpublishする&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;という流れを作ってみた。便利なのはtagを打ってpushするだけでこれが行けること。&lt;/p&gt;
&lt;p&gt;ポイントは&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;on&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;push&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;tags&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="s1"&gt;&amp;#39;v*&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;のように、トリガーをtagsにすることと&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;deploy&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;needs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;release&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;のように、 &lt;code&gt;release&lt;/code&gt; jobを依存関係として追加すること。&lt;/p&gt;
&lt;p&gt;PyPIのAPI Tokenは、予めPyPIにて取得しておく。Project単位でのscopeを設定できるので、今回はtabula-pyのアップロードのためにだけ使うことにした。 Projectの Settings → Secrets から &lt;code&gt;PYPI_USERNAME&lt;/code&gt; を &lt;code&gt;__token__&lt;/code&gt; に、 &lt;code&gt;PYPI_PASSWORD&lt;/code&gt; を &lt;code&gt;pypi-&lt;/code&gt; からはじまるAPI Tokenにすれば良い。ちょいちょいこの仕様が変わっていたこともあるので、最新情報は
を確認してほしい。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;TWINE_USERNAME&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;${{ secrets.PYPI_USERNAME }}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;TWINE_PASSWORD&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;${{ secrets.PYPI_PASSWORD }}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Workflowの中にはtwine用の環境変数が用意されている。便利。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>digdagのworkflowをCIでrun throughする</title><link>https://chezo.uno/post/2019-11-18-digdag-ci/</link><pubDate>Sun, 17 Nov 2019 08:38:00 -0800</pubDate><guid>https://chezo.uno/post/2019-11-18-digdag-ci/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="https://images.unsplash.com/photo-1534644107580-3a4dbd494a95?ixlib=rb-1.2.1&amp;amp;q=85&amp;amp;fm=jpg&amp;amp;crop=entropy&amp;amp;cs=srgb" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;以前、kawasaki.rbやマジフェスでdigdagのworkflowのデバッグやテストどうすればいいんだ〜という話をしました。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;この話は、でかいデータと戯れるworkflowをどうdebug、テストすればいいのかという話から、PyCharmとDockerでdebugするという話をしましたが、今回はworkflowを実際にrun throughできるようにするためのtipsとそれを実現するためのcookiecutterを作ったので紹介しようと思います。&lt;/p&gt;
&lt;h2 id="cookiecutter-digdag"&gt;cookiecutter-digdag&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
はPythonで書かれたプロジェクトを作るためのテンプレートです。内部ではPythonのtemplate engineであるjinja2を使っており、普通HTMLをレンダーするために使うものをconfiguration fileやfile名、directoryに使ってしまおうと言うものです。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ pip install --user cookiecutter
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;でcookiecutterをインストールしたら、&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cookiecutter https://github.com/chezou/cookiecutter-digdag
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;とすれば、ディレクトリ以下に新しいpy&amp;gt; operatorを使ったdigdagプロジェクトができます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;my_project&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;README&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;md&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;test&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;yml&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="n"&gt;Configuration&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;run&lt;/span&gt; &lt;span class="n"&gt;through&lt;/span&gt; &lt;span class="n"&gt;test&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="n"&gt;Mirror&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;yml&lt;/span&gt; &lt;span class="n"&gt;except&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="n"&gt;td&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;database&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;└──&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;yml&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="n"&gt;Configuration&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;production&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;awesome_workflow&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dig&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="n"&gt;Main&lt;/span&gt; &lt;span class="n"&gt;workflow&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;be&lt;/span&gt; &lt;span class="n"&gt;executed&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;ingest&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dig&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="n"&gt;Data&lt;/span&gt; &lt;span class="n"&gt;ingestion&lt;/span&gt; &lt;span class="n"&gt;workflow&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;py_scripts&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="n"&gt;Python&lt;/span&gt; &lt;span class="n"&gt;scripts&lt;/span&gt; &lt;span class="n"&gt;directory&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;__init__&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;py&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;py&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="ne"&gt;Script&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;upload&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;Arm&lt;/span&gt; &lt;span class="n"&gt;Treasure&lt;/span&gt; &lt;span class="n"&gt;Data&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;└──&lt;/span&gt; &lt;span class="n"&gt;my_script&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;py&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="n"&gt;Main&lt;/span&gt; &lt;span class="n"&gt;script&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;execute&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;g&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="n"&gt;Data&lt;/span&gt; &lt;span class="n"&gt;enrichment&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ML&lt;/span&gt; &lt;span class="n"&gt;training&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;queries&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="n"&gt;SQL&lt;/span&gt; &lt;span class="n"&gt;directory&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;run_test&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sh&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="n"&gt;Test&lt;/span&gt; &lt;span class="n"&gt;shell&lt;/span&gt; &lt;span class="n"&gt;script&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;local&lt;/span&gt; &lt;span class="n"&gt;run&lt;/span&gt; &lt;span class="n"&gt;through&lt;/span&gt; &lt;span class="n"&gt;test&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;└──&lt;/span&gt; &lt;span class="n"&gt;test&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dig&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;-&lt;/span&gt; &lt;span class="n"&gt;Test&lt;/span&gt; &lt;span class="n"&gt;workflow&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;local&lt;/span&gt; &lt;span class="n"&gt;run&lt;/span&gt; &lt;span class="n"&gt;through&lt;/span&gt; &lt;span class="n"&gt;test&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="run-through-testをciで走らせるためのポイント"&gt;run through testをCIで走らせるためのポイント&lt;/h2&gt;
&lt;p&gt;これだけだとふーんなんですけど、ポイントとしては &lt;code&gt;test.dig&lt;/code&gt; に詰まっています。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;_export&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;!include &lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;config/params.yml&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;_error&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;td_ddl&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;drop_databases&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;${td.database}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;+ingest&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;call&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;ingest.dig&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;+execute&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;call&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;{{&lt;span class="l"&gt;cookiecutter.main_workflow}}.dig&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;+cleanup&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;td_ddl&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;drop_databases&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;${td.database}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;特徴は&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;config/params.yml&lt;/code&gt; にDB名の設定を指定する&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ingest.dig&lt;/code&gt; でデータのDBの作成とデータの書き込みをする&lt;/li&gt;
&lt;li&gt;&lt;code&gt;{{cookiecutter.main_workflow}}.dig&lt;/code&gt; (デフォルトは &lt;code&gt;awesome_workflow.dig&lt;/code&gt; )でcookiecutter使用時に指定されるメインのワークフローをcallする&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cleanup&lt;/code&gt; と &lt;code&gt;_error&lt;/code&gt; taskでDBを削除する&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;という4点です。&lt;/p&gt;
&lt;p&gt;実際には、テストは &lt;code&gt;run_test.sh&lt;/code&gt; を実行することで行われるのですが、その中身を見てみましょう。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mv config/params.test.yml config/params.yml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;{{&lt;/span&gt;cookiecutter.digdag_path&lt;span class="o"&gt;}}&lt;/span&gt; run test.dig
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;digdag_path&lt;/code&gt; はデフォルト &lt;code&gt;digdag&lt;/code&gt;となり、local modeでdigdagを実行します。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;mv config/params.test.yml config/params.yml&lt;/code&gt; と &lt;code&gt;params.test.yml&lt;/code&gt; に差し替えをするのですが、&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# Target Database on Treasure Data&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;td&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;database&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;{{cookiecutter.database}}_${session_uuid.replace(/-/g,&amp;#39;_&amp;#39;)}&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;table&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;{{&lt;span class="l"&gt;cookiecutter.table}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;このように、 &lt;code&gt;_${session_uuid.replace(/-/g,'_')}&lt;/code&gt;とユニークな文字列を作ることで、一時的なDB名を作るようにしています。&lt;/p&gt;
&lt;p&gt;このやり方をすることで、メインのワークフローに極力触ることなく、CIでlocalモードのdigdagを使い走り切るかのテストができます。実際にこの構成で行っているworkflowの例は
レポジトリにあるので、参考にしてください。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>150 successful Machine Learning models: 6 lessons learned at Booking.comのメモ</title><link>https://chezo.uno/post/2019-11-17-150-successful-machine-learning-models-6-lessons/</link><pubDate>Sat, 16 Nov 2019 13:15:00 -0800</pubDate><guid>https://chezo.uno/post/2019-11-17-150-successful-machine-learning-models-6-lessons/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="https://images.unsplash.com/photo-1571942790878-b43e71f29476?ixlib=rb-1.2.1&amp;amp;q=85&amp;amp;fm=jpg&amp;amp;crop=entropy&amp;amp;cs=srgb" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;各所で話題のBooking.comがKDD2019で発表した論文のメモ&lt;/p&gt;
&lt;p&gt;元論文:
&lt;/p&gt;
&lt;h1 id="何を予測しているのか"&gt;何を予測しているのか&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Traveler preference model&lt;/li&gt;
&lt;li&gt;Traveler Context Model
&lt;ul&gt;
&lt;li&gt;家族なのか、カップル、友達同士か、ビジネスか観光か、など&lt;/li&gt;
&lt;li&gt;家族判定をすると子供の入力を促す&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Item space navigation model&lt;/li&gt;
&lt;li&gt;User interface optimization model&lt;/li&gt;
&lt;li&gt;Content curation
&lt;ul&gt;
&lt;li&gt;これだけきいてなかった&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Content Augumentation&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="3-modeling-offline-model-performance-is-just-a-health-check"&gt;3 MODELING: OFFLINE MODEL PERFORMANCE IS JUST A HEALTH CHECK&lt;/h1&gt;
&lt;p&gt;MLCTで昔からグノシーの関さんが言っていた話だが、実際にモデルの精度改善とKPIとが相関すらないのを図示していて良い。&lt;/p&gt;
&lt;p&gt;あと、精度改善してもKPIはサチるからな、という話も言われてみればそりゃそうだ。&lt;/p&gt;
&lt;p&gt;ProxyとなるKPI(CTR)に過剰に最適化しても、本当のビジネス指標のCVRは上がらない、という話はCTRに寄せすぎた不快な広告の話を思い出す。&lt;/p&gt;
&lt;h1 id="5-deployment-time-is-money"&gt;5 DEPLOYMENT: TIME IS MONEY&lt;/h1&gt;
&lt;p&gt;予測のレイテンシーが30%上がると0.5%CVRが下がったので、相関あるか見てみたよという話。&lt;/p&gt;
&lt;h2 id="高速化のための手法"&gt;高速化のための手法&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Model redundancy: モデルをコピーしてクラスターにdistribute&lt;/li&gt;
&lt;li&gt;In-house developed Linear Prediction engine: 自前で線形予測エンジンを内製。内積を使うモデルを高速化&lt;/li&gt;
&lt;li&gt;Sparse model: パラメータ数が減ると計算時間が減る&lt;/li&gt;
&lt;li&gt;Precomputation and caching: 特徴空間が小さいときは予測結果をKVSに入れる。大きいときでも高頻度のリクエストをメモリにキャッシュする&lt;/li&gt;
&lt;li&gt;Bulking: ネットワーク負荷を減らすためにまとめて1リクエストにする&lt;/li&gt;
&lt;li&gt;Minimum Feature Transformation: 特徴計算の回数を減らして高速化する&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;なお、これらはシンプルなインターフェースでデプロイとmodelのconsumeができるように抽象化されており&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;prediction latency&lt;/li&gt;
&lt;li&gt;high availability&lt;/li&gt;
&lt;li&gt;fault tolerance&lt;/li&gt;
&lt;li&gt;monitoring&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;をクリアしている。&lt;/p&gt;
&lt;h2 id="モニタリング-教師なしの赤信号"&gt;モニタリング: 教師なしの赤信号&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Issues for label dependent feedback
&lt;ul&gt;
&lt;li&gt;Incomplete feedback
&lt;ul&gt;
&lt;li&gt;特定の条件下（予約時）ではtrueラベルがつくが、そうではない条件のときにtrueラベルがつかず発火しない&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Delayed feedback
&lt;ul&gt;
&lt;li&gt;数日〜数週間、数ヶ月後にしかtrueラベルが得られないケース。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;教師なしのResponse Distribution Charts
&lt;ul&gt;
&lt;li&gt;予測結果のhistogramで判断&lt;/li&gt;
&lt;li&gt;0-1の中心に高頻度の単峰性の山 → High bias model or high Bayes error in data&lt;/li&gt;
&lt;li&gt;極端に高頻度なmodeがあるとき → スケールミスか学習データの外れ値&lt;/li&gt;
&lt;li&gt;ノイジーな分布は極端なsparse model&lt;/li&gt;
&lt;li&gt;双峰性の分布は2クラスをきちんと分類している&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;便利なヒューリスティクスだけど、modelが高品質かどうかはわからない&lt;/li&gt;
&lt;li&gt;estimators（regression?） or rankersには使えない&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;他で紹介されていないところを中心にメモしたが、論文直接読んだ方が面白い。&lt;/p&gt;</description></item><item><title>spaCyとGiNZAでマストドンのトレンドワード抽出をしてみた</title><link>https://chezo.uno/post/2019-11-17-spacy-ginza/</link><pubDate>Sat, 16 Nov 2019 07:24:00 -0800</pubDate><guid>https://chezo.uno/post/2019-11-17-spacy-ginza/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="https://images.unsplash.com/photo-1531730194970-f4d4bfd6475d?ixlib=rb-1.2.1&amp;amp;q=85&amp;amp;fm=jpg&amp;amp;crop=entropy&amp;amp;cs=srgb" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Google Colabolatoryのフォームを使えばエンジニアではない人もテキスト解析をぽちっと解析できる環境ができることがわかったので、マストドンのトレンドワード分析のためのノートブックを書いてみた。&lt;/p&gt;
&lt;p&gt;ノートブックはこちら。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h2 id="なぜmecab--neologdではなくspacyginzaなのか"&gt;なぜMeCab + NeologdではなくspaCy+GiNZAなのか&lt;/h2&gt;
&lt;p&gt;最初は、mecab+neologdを使っていたのだけれど、名詞だけの抽出だと&amp;quot;MacBook Pro&amp;quot;が&amp;quot;MacBook&amp;quot;と&amp;quot;Pro&amp;quot;と単語が分割されすぎる嫌いがあってコンテキストが欠落してしまうと全然うれしくないと思って頭を抱えていたところ、spaCyとMegagon Labsが開発する日本語用のGiNZAのチュートリアルを見つけたので試してみた。(どうでもいいけど、GiNZAはPyPIでwheel配布しないかな…)&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;spaCy+GiNZAを使うと、以下のような簡単なコードで、キーワード（この場合、固有名詞と名詞句）が取れる。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;neologdn&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;spacy&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;nlp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;spacy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;load&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;ja_ginza&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;extract_words&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sentence&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;docs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;nlp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sentence&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;words&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;w&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;w&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;docs&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;noun_chunks&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;words&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;union&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;w&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;w&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;docs&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ents&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;words&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;キーワードを抽出したいセンテンスをここにいれます。&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;extract_words&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;neologdn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;normalize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;特に名詞句を勝手にとってくれるのが楽で、先の&amp;quot;MacBook Pro&amp;quot;が1単語として獲得できる。&lt;/p&gt;
&lt;p&gt;また、Neologdは辞書をいちいちgit cloneしてbuildしないといけないため、インストールに時間がかかるため、Colabで実行するにはちょっと待ち時間が長い。&lt;/p&gt;
&lt;h2 id="実際に使った感じ"&gt;実際に使った感じ&lt;/h2&gt;
&lt;p&gt;マストドンでは、
さんが特定の期間のtootをリストできる
があるのだけれど、これのURLを入れればその期間（一日全体のキーワードだったり、Podcast放送中）のキーワードが取れるので意外と便利。&lt;/p&gt;
&lt;p&gt;とはいえ、ストップワードをチクチク設定しているのはいつもの通り。本当はbotをどこかで動かして定期的にtootしたいところだが、気が向いたらかな。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="ある日の上位20個のトレンドワード。デスストが流行ってる"
srcset="https://chezo.uno/post/2019-11-17-spacy-ginza/Untitled_hu_94340a1e8d23707.webp 320w, https://chezo.uno/post/2019-11-17-spacy-ginza/Untitled_hu_d95c358480b520d4.webp 480w, https://chezo.uno/post/2019-11-17-spacy-ginza/Untitled_hu_6ed62ff698132856.webp 571w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2019-11-17-spacy-ginza/Untitled_hu_94340a1e8d23707.webp"
width="571"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;ある日の上位20個のトレンドワード。デスストが流行ってる&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>NotionのページをCloudflareでsub domainに転送する</title><link>https://chezo.uno/post/2019-11-16-notion-cloudflare-sub-domain/2019-11-16-notion-cloudflare-sub-domain/</link><pubDate>Sat, 16 Nov 2019 06:50:00 -0800</pubDate><guid>https://chezo.uno/post/2019-11-16-notion-cloudflare-sub-domain/2019-11-16-notion-cloudflare-sub-domain/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="https://images.unsplash.com/photo-1512314889357-e157c22f938d?ixlib=rb-1.2.1&amp;amp;q=85&amp;amp;fm=jpg&amp;amp;crop=entropy&amp;amp;cs=srgb" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Notionはリッチなメモツール（？）としてじわじわと人気が出ている。モバイルアプリでもPCでも書けるのでメモ書きや調べ物をするのにも重宝しているし、最近ではwebクリッパーがあるので便利にセルフブックマーク用途に使っている。&lt;/p&gt;
&lt;p&gt;mediumのpay wall圧力のおかげでblogの移行先を色々と探していたのだけれど、まずは雑なメモを置ける場所を公開してみようと思う。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2021/10/29追記&lt;/strong&gt;
&lt;del&gt;この方法は完全に使えなくなったので、諦めて
を
にリダイレクトすることにした。&lt;/del&gt;&lt;/p&gt;
&lt;aside&gt;
💡 **2021/12/06追記**
下記の設定は古いので ****[https://fruitionsite.com/](https://fruitionsite.com/) に従って設定するのが良いでしょう。
&lt;p&gt;kudos:
&lt;/p&gt;
&lt;/aside&gt;
&lt;h1 id="カスタムドメインの設定方法"&gt;カスタムドメインの設定方法&lt;/h1&gt;
&lt;p&gt;残念なことに、Notionまだカスタムドメインを提供していないのだけれど、それをCloudflareのworkerを使って実現するgistと記事を見つけたので試してみた。&lt;/p&gt;
&lt;p&gt;大まかなやり方は&lt;/p&gt;
&lt;p&gt;「Cloudflareのworkersを使うとJavaScriptを使ってredirectを設定できる」&lt;/p&gt;
&lt;p&gt;というものである。&lt;/p&gt;
&lt;p&gt;オリジナルのgistはmayneyaoさんがこちらに上げている。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;mayneyaoさんは英語がネイティブでないため、スクリーンキャストを使って説明をしているが、英語の記事にはこちらの記事があり、こちらのほうがわかりやすかった。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h1 id="サブドメインの設定方法"&gt;サブドメインの設定方法&lt;/h1&gt;
&lt;p&gt;どちらの記事でも、サブドメインなしのドメインを設定しているが、これに付け加えてsub domainを指定したいときの設定を書く。&lt;/p&gt;
&lt;h2 id="1-javascript中のmy_domainをサブドメインまで指定する"&gt;1. javascript中のMY_DOMAINをサブドメインまで指定する&lt;/h2&gt;
&lt;p&gt;見ていただければわかるとおり。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-jsx" data-lang="jsx"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;MY_DOMAIN&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;memo.chezo.uno&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ちなみに、 &lt;code&gt;START_PAGE&lt;/code&gt; はパブリックなユーザー名の入っていないページなのでGoogle Chromeのプライベートモードなどで確認してから貼ると良い（自分はこれにドハマリした）&lt;/p&gt;
&lt;p&gt;あと、CORSヘッダーはデフォルトが全部受け入れることになっているので、ちょっと制限した。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-jsx" data-lang="jsx"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;corsHeaders&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Access-Control-Allow-Origin&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;chezo.uno&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Access-Control-Allow-Methods&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;GET&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Access-Control-Allow-Headers&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Content-Type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="2-dnsでcnameを指定する"&gt;2. DNSでCNAMEを指定する&lt;/h2&gt;
&lt;p&gt;この場合、 &lt;code&gt;memo&lt;/code&gt; というCNAMEを
にProxiedされるように設定を追加すればよい。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="Untitled.png" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;以上で、
がNotionになっていると思う。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>Pythonのdigdagクライアントtdworkflowを作った</title><link>https://chezo.uno/post/2019-11-16-tdworkflow/</link><pubDate>Sat, 16 Nov 2019 05:14:00 -0800</pubDate><guid>https://chezo.uno/post/2019-11-16-tdworkflow/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2019-11-16-tdworkflow/Untitled_hu_14a344175116d487.webp 320w, https://chezo.uno/post/2019-11-16-tdworkflow/Untitled_hu_a97fc67642db284c.webp 480w, https://chezo.uno/post/2019-11-16-tdworkflow/Untitled_hu_6cf1bab6de0d93c7.webp 542w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2019-11-16-tdworkflow/Untitled_hu_14a344175116d487.webp"
width="542"
height="166"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;
はsimpleなyamlでworkflowを書けるOSSでTreasure Dataが中心になって開発しています。&lt;/p&gt;
&lt;p&gt;digdag本家のv0_10ブランチをベースにPythonクライアントを作りました。位置づけとしてはdigdagのREST APIを叩く薄いwrapperです。&lt;/p&gt;
&lt;p&gt;GitHubにソースコードは公開してありますし、
にもおいてあるので&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install tdworkflow
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;で試すことができます。&lt;/p&gt;
&lt;p&gt;Google Colaboartoryノートブックがあるので、TDアカウントがある人は試してもらえると良いと思います。（実行にはGoogleアカウントでログインが必要です）&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h3 id="treasure-workflowにつなぐ例"&gt;Treasure Workflowにつなぐ例&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;os&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;tdworkflow.client&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Client&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;apikey&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getenv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;TD_API_KEY&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Client&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;site&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;us&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;apikey&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;apikey&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Or, write endpoint explicitly&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# client = Client(endpoint=&amp;#34;api-workflow.treasuredata.com&amp;#34;, apikey=apikey)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;projects&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;projects&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;pandas-df&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;secrets&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;td.apikey&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;apikey&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;td.apiserver&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;https://api.treasuredata.com&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;test&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;secret-foo&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;set_secrets&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;projects&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;secrets&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;secrets&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;projects&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [&amp;#39;td.apikey&amp;#39;, &amp;#39;td.apiserver&amp;#39;, &amp;#34;test&amp;#34;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;delete_secrets&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;projects&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;test&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;td.apiserver&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="digdagにつなぐ例"&gt;digdagにつなぐ例&lt;/h3&gt;
&lt;p&gt;Treasure Workflowのための、と書いてあるけれどOSSのv0_10ブランチベースなので、0.9.x系でも動くと思います。以下の例では
にあるdigdagサーバーに接続しています。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;tdworkflow&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;requests&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;session&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Session&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tdworkflow&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Client&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;endpoint&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;localhost:65432&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;apikey&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;_session&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;scheme&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;http&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;projects&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [Project(id=1, name=&amp;#39;python-tdworkflow&amp;#39;, revision=&amp;#39;134fe2f9-ded3-4e7c-af8e-8a82d55d688b&amp;#39;, archiveType=&amp;#39;db&amp;#39;, archiveMd5=&amp;#39;5Lc6F6m3DtmBN4DA5MzK8A==&amp;#39;, createdAt=&amp;#39;2019-11-01T13:03:26Z&amp;#39;, deletedAt=None, updatedAt=&amp;#39;2019-11-01T13:03:26Z&amp;#39;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="モチベーション"&gt;モチベーション&lt;/h2&gt;
&lt;p&gt;目的としては、Google Colabolatoryからtreasure-boxesというサンプルワークフローをTDにデプロイすることが当初のゴールでした。digdadのsecretsを設定するのにdigdag CLIからじゃないとだめとかが面倒くさいなあと思い、まぁREST APIがあるから大丈夫だろうと思ってカッとなって作りました。&lt;/p&gt;
&lt;h2 id="ドキュメントとgithub-repo"&gt;ドキュメントとGitHub repo&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;最近やたらとapidocとSphinxでドキュメント生成しているのだけど、その話もまとめられればと思っています。&lt;/p&gt;
&lt;p&gt;APIデザイン等は変更される可能性がまだまだありますが、バグなどがあれば、GitHubのissueへお願いします。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>『n月刊ラムダノート』創刊記念パーティに登壇しました</title><link>https://chezo.uno/post/2019-06-04_ngekkan-party/</link><pubDate>Mon, 03 Jun 2019 21:33:18 -0700</pubDate><guid>https://chezo.uno/post/2019-06-04_ngekkan-party/</guid><description>&lt;p&gt;さる5/30に『n月刊ラムダノート』創刊記念パーティーという名のコルーチン祭りを開催しました。&lt;/p&gt;
&lt;p&gt;同僚の
さんからふらっとトレジャーデータ東京オフィスにイベントスペースができたので、エンジニア向けイベントやりませんか？と振られたので、軽いノリでやってみました。同会場でほぼはじめての100人近くに向けたイベントで、Envoyのオペレーション等々参加者の皆様にもお手間をおかけしましたが、無事できてよかったです。（TDマーケチームの皆様、ラムダノートたかお様、とてもとてもお世話になりました）&lt;/p&gt;
&lt;p&gt;僕は『「MLOpsの歩き方」を書いた話』というタイトルで、n月刊ラムダノートに寄稿する方法について話しました。&lt;/p&gt;
&lt;div id="Container"
style="padding-bottom:56.25%; position:relative; display:block; width: 100%"&gt;
&lt;iframe id="googleSlideIframe"
width="100%" height="100%"
src="https://docs.google.com/presentation/d/e/2PACX-1vQgiC5eK2b1Fms-L1tk167dYnzPGXTE1Uv-ZZBp9IdxfZTsOaFvLovUtuP4LhvH47jfkt2cMESpp1hJ/embed?start=false&amp;amp;loop=false&amp;amp;delayms=3000"
frameborder="0" allowfullscreen=""
style="position:absolute; top:0; left: 0"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;また、僕の話は前座だったのですが、本命のコルーチンの話は大いに盛り上がりました。座談会の様子を録音してPodcastとしてリリースしたのでよければこちらもお楽しみください。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://randomfacts.club/2" data-iframely-url="//iframely.net/0YD4Idm"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js" charset="utf-8"&gt;&lt;/script&gt;</description></item><item><title>「n月刊ラムダノート」の記事の書き方～「MLOpsの歩き方」編</title><link>https://chezo.uno/post/2019-03-29_ngekkan-lambda-note-article/</link><pubDate>Thu, 28 Mar 2019 12:01:40 -0700</pubDate><guid>https://chezo.uno/post/2019-03-29_ngekkan-lambda-note-article/</guid><description>&lt;p&gt;先日、ラムダノートから創刊された「n月刊ラムダノート」に「MLOpsの歩き方」を寄稿しました。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 170px; padding-bottom: 0;"&gt;&lt;a href="https://www.lambdanote.com/blogs/news/n" data-iframely-url="//cdn.iframe.ly/Oysk1z9"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;他の著者の記事などでいろいろと話題になっていますが、「TCPの再送制御機構」から『「コルーチン」とは何だったのか？』、そして僕の書いたMLOpsの話までと、幅広いテーマが取り扱われています。&lt;/p&gt;
&lt;div style="left: 0; width: 100%; height: 190px; position: relative;"&gt;&lt;iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fmametter.hatenablog.com%2Fentry%2F2019%2F03%2F27%2F211140" style="top: 0; left: 0; width: 100%; height: 100%; position: absolute; border: 0;" allowfullscreen scrolling="no"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;個人的には、
か
したのでちょっと嬉しかったです。&lt;/p&gt;
&lt;p&gt;僕が書いた内容はMLOpsと呼ばれる、機械学習システムやプラットフォームで皆が手探りに行っている本番環境への適用や運用が、なぜ機械学習が絡むと難しいか、どういうアプローチがあるのか、といったところを（網羅的ではないかもしれませんが）ある種サーベイ論文のような形でまとめてみました。良ければ読んでいただいて感想を聞けると嬉しいです。&lt;/p&gt;
&lt;h3 id="寄稿するまでにしたこと"&gt;寄稿するまでにしたこと&lt;/h3&gt;
&lt;p&gt;「n月刊ラムダノート」は皆様の記事の寄稿を受け付けています。詳しくは以下の記事をお読みいただければと思います。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://www.lambdanote.com/blogs/news/n-1" data-iframely-url="//cdn.iframe.ly/XIU2ivN"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;ターゲットとしている記事は、上記の記事から抜粋すると&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「自分が専門とする分野の解説を、関連する他分野の技術者や若者に向けて残しておきたい」&lt;/li&gt;
&lt;li&gt;「公開したい技術文書があるけれど、論文のようにフォーマルな内容ではないから、個人ブログで公開するしかないかな」&lt;/li&gt;
&lt;li&gt;「技術書を書きたい。でも、いきなり本を一冊書くのは大変だ」&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;という感じです。「仕事ではじめる機械学習」のときも思いましたが、プロに編集していただくと、自分の思考や考えが理解されやすい形に整理されるというメリットがとても大きいので、知ってもらいたいネタがある人は是非応募して欲しいと思っています。&lt;/p&gt;
&lt;p&gt;でも、「いきなり雑誌の寄稿とか…」と思う方の助けになればと思い、自分がしたことなどをまとめていこうと思います。&lt;/p&gt;
&lt;h4 id="1-寄稿する決意を固める"&gt;1. 寄稿する決意を固める&lt;/h4&gt;
&lt;p&gt;2018年11月頃に
さんから、「こういうような雑誌を立ち上げたいんだけど、BERTの記事書いてもらえませんか？」と言われたのがきっかけです。BERTの話はもっと適切な人がいると思ったのでお断りしましたが、かねてよりまとまった文章にしたいと思っていたMLOpsについて書かせてくださいという話をしました。&lt;/p&gt;
&lt;p&gt;いろいろと雑誌の方向性をお聞きする中で、人工知能学会の「
」という、あるトピックに関する論文よりは軽いサーベイ記事のことを思い出し、サーベイ＋それらを体系化ができればいいなと思いOKしました。&lt;/p&gt;
&lt;p&gt;議論の中で 「いろんなIT系技術書から1章ずつ選んできた解説記事の集まり」というコンセプトも出てきたのですが、わかりやすいなと思う反面1章が一番大変だったなぁ…というのを思い出しました。&lt;/p&gt;
&lt;h4 id="2-書く内容をぼんやり考える"&gt;2. 書く内容をぼんやり考える&lt;/h4&gt;
&lt;p&gt;記事募集の中でも言及されていたように、まずは以下の質問に自分で答えを作ります。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;この記事を理解するために、読者が最低限できてほしいこと（〇〇は理解していてほしい、△△を使った経験がほしい、など）&lt;/li&gt;
&lt;li&gt;この記事を読むと、どうなれるか（〇〇の論文が読めるようになる、△△を作れるようになる、□□で話ができるようになる、など）&lt;/li&gt;
&lt;li&gt;この記事に対する執筆者自身の専門性（研究者である、職務で〇年間利用している、実装を開発した、など）&lt;/li&gt;
&lt;li&gt;この記事に近い内容の既刊書や記事（可能なら参考文献とは別に）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;この時点で、GitHubのprivateレポジトリをいただいていたので、issueにまとめていきました。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2019-03-29_ngekkan-lambda-note-article/1_3ZOui_R0NW7i64vILEFRlw_hu_c0294fb2e6a7995a.webp 320w, https://chezo.uno/post/2019-03-29_ngekkan-lambda-note-article/1_3ZOui_R0NW7i64vILEFRlw_hu_de2dfada8d78650b.webp 480w, https://chezo.uno/post/2019-03-29_ngekkan-lambda-note-article/1_3ZOui_R0NW7i64vILEFRlw_hu_d615910d1fba1b7.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2019-03-29_ngekkan-lambda-note-article/1_3ZOui_R0NW7i64vILEFRlw_hu_c0294fb2e6a7995a.webp"
width="760"
height="671"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;また、合わせて章立てやコンテンツを考えるためのMindmapを作りました。とはいえ、自分の知っているだけの情報で足りるかがわからないので、3の情報収集と並行してブラッシュアップしていました。&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://chezo.uno/post/2019-03-29_ngekkan-lambda-note-article/0_4e4nMKWzAJvRyeHK.png"&gt;&lt;figcaption&gt;
&lt;h4&gt;MLOpsの歩き方のマインドマップ&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h4 id="3-下調べをする"&gt;3. 下調べをする&lt;/h4&gt;
&lt;p&gt;MLOpsは産業界でボトムアップに動いている分野なので、まとまった論文になっているものはそこまで多くないのが現状です。ベースとなるGoogleのMLの技術的負債に関する論文や、すべての起点であるGoogleのTFX論文、それからFacebook, Uber, Airbnbなど各社の論文、スライドを改めて読み始めます。（なお、TFX論文は各社のML基盤に影響を与えているのでMLOpsに興味がある人は読むことをおすすめします）&lt;/p&gt;
&lt;p&gt;文章の構造や論文やスライドは
を使ってメモしていきました。以下が、そのメモです。本文というところに初稿へのリンクもあります。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://chezo.uno/post/2019-03-29_ngekkan-lambda-note-article/1_XcQ5S3HBFQLigAc-Gpg0Sw.png"&gt;&lt;figcaption&gt;
&lt;h4&gt;Notionの編集画面&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Notionのいいところは、だらだらと1ページで書き始めて一部をくくりだしてsubページにしようと思う場合手軽にできるところです。&lt;/p&gt;
&lt;h4 id="4-初稿を書く"&gt;4. 初稿を書く&lt;/h4&gt;
&lt;p&gt;材料を揃えたら、あとは考えていた構成に合わせて書いていくだけです。とはいえ、サーベイ的な要素が強いので「どう体系化したらいいだろう」というのは手探りで整理をしていきました。ちょうど、年末年始という時間があったので、「年末進行失敗するとこうなるのか～」と思いながら書いていました。&lt;/p&gt;
&lt;p&gt;まず目指したのは、
の「内容をすべて書き出した」状態です。&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://chezo.uno/post/2019-03-29_ngekkan-lambda-note-article/0_7wzxICsdv0RXlMtR.jpg"&gt;&lt;figcaption&gt;
&lt;h4&gt;「執筆・編集のためのGit（GitHub）ワークフローを考えてみた」より&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;ちなみに、初稿を書くのもNotionで書いてMarkdownでexportしました。iPad Proで原稿を書いたり、途中で調べたものの追加をPixel 3でやったりといろいろなデバイスや環境でやれるのが楽でした。&lt;/p&gt;
&lt;h4 id="5-編集に入っていただく"&gt;5. 編集に入っていただく&lt;/h4&gt;
&lt;p&gt;ざっと書き出して、自分の中で構造をある程度こねこねしたら、いよいよGitのcommitをしてGitHubでの編集に入ってもらいます。&lt;/p&gt;
&lt;p&gt;とはいえ、この段階では事例紹介色が強く、課題と解決策の対応が弱いという不安を抱えながらpushしました。この不安はissueとPRをしていただきながら編集によって解消されたのですが、一人では解決できなかったと思います。&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://chezo.uno/post/2019-03-29_ngekkan-lambda-note-article/1_eXkS-d6qbwoqA6atk73_SA.png"&gt;&lt;figcaption&gt;
&lt;h4&gt;PRベースの編集の様子&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;著者である自分はコンテンツの足し算をしたがるのですが、編集者からは足すことはできないので、構造に手を入れたり引き算をすることで論旨を明確にするのだ、という話を聞いたときには目からウロコでした。&lt;/p&gt;
&lt;h4 id="6-上がってきたpdfをチェックする"&gt;6. 上がってきたPDFをチェックする&lt;/h4&gt;
&lt;p&gt;紙とPDFでのですので、上がってきた原稿が体裁を整えた形のPDFになって受け取ります。これを最後にチェックして、ミスのチェックをします。いつも思うのが、MarkdownやRe:view, Sphinxなどが生成するPDFから商業用の体裁になると、中身がすごく良くなったように感じますね。&lt;/p&gt;
&lt;p&gt;最後の修正を終えたら、著者としては原稿への作業は終了です。&lt;/p&gt;
&lt;h4 id="7-発売前に宣伝する"&gt;7. 発売前に宣伝する&lt;/h4&gt;
&lt;p&gt;これはoptionalなのですが、発売前に自分たちが主催するMLCTというイベントがあったため、そこの主催者のお話のコーナーで宣伝させていただきました。&lt;/p&gt;
&lt;p&gt;なお、そこで宣材用に草稿を渡していただいたのですが、表紙を見て初めて他の著者の方を知りぶったまげました。&lt;/p&gt;
&lt;h3 id="記事を書いてみませんか"&gt;記事を書いてみませんか？&lt;/h3&gt;
&lt;p&gt;技術書典のおかげで、技術系同人誌に対するハードルがとても下がったと思います。「n月刊ラムダノート」はテーマ設定がきちんとできれば、それに近い感覚でプロの編集を受けられるのは良いのではと思います。紙の力はまだまだ偉大で、職場などで物理で広まるというのは強力です。その恩恵を手軽に受けられるのも魅力でしょう。（在庫とか自分で管理したくないよね…）&lt;/p&gt;
&lt;p&gt;ブログを書くより腰を据えて書きたいけど、本を一冊書くのはしんどいし時間もかかる。プロの編集の力も借りて、自分の頭の中にある情報をまとめて広めたい、そういう人には「n月刊ラムダノート」はピッタリの場所でしょう。&lt;/p&gt;</description></item><item><title>首や肩に優しい海外出張に便利な道具達</title><link>https://chezo.uno/post/2019-03-10_business-trip-goods/</link><pubDate>Sat, 09 Mar 2019 16:01:03 -0800</pubDate><guid>https://chezo.uno/post/2019-03-10_business-trip-goods/</guid><description>&lt;p&gt;ちょくちょく人に海外に行くときに持って行った方が良いものを聞かれるので、メモがてら書いておきたいと思います。首や肩を痛めてから、色々と試行錯誤をしているのですが、ある程度形になってきたかなと思うので愛用品を紹介したいと思います。&lt;/p&gt;
&lt;h3 id="一般的旅行用品"&gt;一般的旅行用品&lt;/h3&gt;
&lt;p&gt;トランクを整理する系は、無印良品にお世話になっています。&lt;/p&gt;
&lt;p&gt;定番ですが、吊るして洗えるこのポーチはタオルハンガーに引っ掛けて置けるので良いですね。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;ポーチの中に必要なシェービングジェルや寝癖直しなどはこの手のもので整理しています。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;トランクの中はこれで整理をしています。たためるので必要に応じて小さくできるのが便利ですし、形状も箱型なのでトランクの中を効率よく使いやすいです。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;合わせてこちらの洗濯できるケースもあると、滞在先で洗濯する場合や帰ってきてからの洗濯物を入れるのに便利です。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h4 id="紙パンツ"&gt;紙パンツ&lt;/h4&gt;
&lt;p&gt;backspace.fmのdrikinさんオススメの一品。出張が一週間以内の時にはハッソーの紙パンツが便利です。ファミマで売っている紙パンツと同じで、不織布ベースですが履き心地が良く、普通のパンツとの違いは前の穴があるかどうかくらいです。最近は2週間程度洗濯機が付いているコーポレートアパートに滞在することが多いので、活躍する頻度が減っていますが、国内旅行でも帰ってからの洗濯物が減って便利です。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h4 id="ケーブル整理"&gt;ケーブル整理&lt;/h4&gt;
&lt;p&gt;旅行用の充電器やケーブル類はこちらのゴムで固定できる商品にまとめています。小さいケーブル類や変換系、果ては充電器までまとめられるので便利です。&lt;/p&gt;
&lt;p&gt;出張用のケーブル類を常にセットしておいて、ぱっと取り出せるようにしています。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="1_acM_xtEmIFRJbPIc94T7Vw.jpeg" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h4 id="着圧タイツ"&gt;着圧タイツ&lt;/h4&gt;
&lt;p&gt;以前、
さんがオススメしているのをみて試してみましたが、フライト後のむくみ、足の釣り感が減って大変楽でした。フライトの直前、直後に履き替えるのが少しだるいですが、その後のパフォーマンスを考えると良いものです。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h4 id="ノイズキャンセリングイヤホン"&gt;ノイズキャンセリングイヤホン&lt;/h4&gt;
&lt;p&gt;ノイキャン性能で言えばBOSEのQCシリーズが有名ですが、音の作りが好みではないので今はSONYのWI-1000Xを使っています。東京から西海岸へ行くのならギリギリバッテリが持ちます。（東海岸やヨーロッパは無理）&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;イヤーピースのサイズが合わないという人もいるようなので、必要に応じて別途買うといいと思います。&lt;/p&gt;
&lt;p&gt;合わせて機内では、AukeyのBTトランスミッターを使って映画を見ています。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h4 id="ウェストポーチ"&gt;ウェストポーチ&lt;/h4&gt;
&lt;p&gt;機内でパスポートやペン、小物を保持しておくのに、ウェストポーチがあると便利です。荷物検査の時にも出す必要がなければ財布やスマホ等を中に入れておいてそのまま流せるので便利です。ちょっとサイズは違いますがノースフェースのものが軽いので普段から愛用しています。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h4 id="ネックピロー"&gt;ネックピロー&lt;/h4&gt;
&lt;p&gt;空港で適当に買ったものを使っているのですが、なかなか便利です。リバーシブルになっていてクッションにもなるしネックピローにもなるものです。リンクは同じものがなかったので似たようなものです。&lt;/p&gt;
&lt;p&gt;日本の人は空気で膨らませるものを使っていることが多いのですが、アメリカなどだとリュックにぶら下げている人しか見なかったのでこのタイプにしてみましたが、準備も楽だし普段もクッションとしてランバーサポートがわりに使えるので重宝しています。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h4 id="スーツケース"&gt;スーツケース&lt;/h4&gt;
&lt;p&gt;国内メーカーのAceのブランドであるProtecaを使っています。友人のymotongpooの勧めで90L前後あるといいぞとのことだったので、360sにしました。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;縦にもあけられるので、空港の最後に荷物調整するときのもサッと出し入れしやすいのが良いです。また、出張時だけではなく家族4人の2泊3日の国内旅行でも大活躍しています。&lt;/p&gt;
&lt;h4 id="ストレッチ系"&gt;ストレッチ系&lt;/h4&gt;
&lt;p&gt;肩の凝りが首に来てパフォーマンスが落ちる状態になってしまったので、フォームローラーは欠かせません。必要に応じて、ストレッチポールのハーフサイズも持って行っていますが、おもに活躍しているのはこちらの方です。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h3 id="pc関連"&gt;PC関連&lt;/h3&gt;
&lt;p&gt;首やら肩やらにダメージを負った関係で、キーボード諸々の作業環境は結構気にしてます。以前はThinkpadのトラベルキーボードを持って行っていたのですが、前回の出張からオウルテックのコンパクトな分離型のBTキーボードに切り替えましたが、なかなか良い感じです。&lt;/p&gt;
&lt;p&gt;以下はマウンテンんビューオフィスへ出張した時の写真ですが、このうち、モニター以外は日本から持って行ったもものです。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="1_n5Kczhr1MlpjzMNKD5LvTw_2x.jpeg" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;キーボードはこちらのオウルテックのものです。打ち心地は軽いですが、分割なので肩が疲れにくくなかなか良いです。&lt;/p&gt;
&lt;h4 id="pcスタンド"&gt;PCスタンド&lt;/h4&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;PCスタンドはだいぶ前から使っているこれです。macだとヒンジが開角度に制限があるので高さが稼ぎづらいですが、それでもあると首が負担少なくなりかなり楽です。&lt;/p&gt;
&lt;h4 id="マウス"&gt;マウス&lt;/h4&gt;
&lt;p&gt;家ではLogicoolのBTトラックボールを使っているのですが、持ち運びも考えて出張時はLogicoolのMX Anywhere 2Sを使っています。買ったときは気づいていなかったのですが、エルゴノミクス的なつくりになっているので、負担感は少なめです。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h4 id="usb-c-pd充電器"&gt;USB-C PD充電器&lt;/h4&gt;
&lt;p&gt;軽さこそ正義！ということで、backspace.fmのdrikinさんおすすめのRavpowerから出ているUSB-C PD充電45Wが可能なものを使っています。GaN（窒化ガリウム）のおかげで82gと軽量でiPhone 7sより一回り小さい大きさです。カバンにとりあえず突っ込んでおけば、飛行機の中でも空港やラウンジでも活躍します。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;ケーブルも、USB-C&amp;lt;-&amp;gt; LightningケーブルやUSB-C&amp;lt;-&amp;gt;micro USBを用意しておけば、大抵これ一個でなんとかなってしまいます。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;とはいえ、急速充電はいらないしモバイルバッテリーからはUSB-Aだし、みたいなケースもあると思いますが、そうしたときにはAnkerのこの便利な変換アダプタセットのケーブルを使っています。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;実は変換プラグ単品を買ってどうにかしようとした時もあったのですが、どこかに行ってしまいそうだったのでこっちに切り替えました。GoPro Hero7で自転車動画を撮るのにもお世話になっています。&lt;/p&gt;</description></item><item><title>あなたの知らない煽りの世界</title><link>https://chezo.uno/post/2018-12-16_dialogues-with-computer-dce83c32e67e/</link><pubDate>Sat, 15 Dec 2018 22:06:00 -0800</pubDate><guid>https://chezo.uno/post/2018-12-16_dialogues-with-computer-dce83c32e67e/</guid><description>&lt;p&gt;この記事は
の17日目です。&lt;/p&gt;
&lt;p&gt;世の中にはAIを使ったchat botのような、高度なやりとりをするコンピュータが増えつつあります。コンピュータとやり取りすると人間はencourageされるのか？という疑問をお持ちの方もいるかと思いますが、そんな疑問を持つあなたはこの記事を読むことで、いかにコンピュータが人間の感情に対して働きかけてくれるかを学ぶでしょう。&lt;/p&gt;
&lt;p&gt;それでは、ある日のエンジニアたちのチャットでのやりとりをお楽しみください。&lt;/p&gt;
&lt;p&gt;Rのtest frameworkのtestthatの煽り力が高い&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://chezo.uno/post/2018-12-16_dialogues-with-computer-dce83c32e67e/1_PGBQH3d34YhCCfZ7XtTjSg.png"&gt;&lt;figcaption&gt;
&lt;h4&gt;**Frustration is a natural part of programming :)**&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;ちぇぞーさんまた煽られてるの&lt;/p&gt;
&lt;p&gt;なにこの機能ｗｗｗｗ&lt;br&gt;
Rすげぇな！&lt;br&gt;
テスト結果で煽りメッセージでるフレームワーク初めてみたよ！&lt;/p&gt;
&lt;p&gt;っつうかさ、テスト結果レポータに煽りメッセージ入れるって発想すごくない？&lt;/p&gt;
&lt;p&gt;バリエーションあるw&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;#34;Keep trying!&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;#34;Don&amp;#39;t worry, you&amp;#39;ll get it.&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;#34;No one is perfect!&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;#34;No one gets it right on their first try&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;#34;Frustration is a natural part of programming :)&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;#34;I believe in you!&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;特に励ましているように見えねぇのは俺の問題？&lt;/p&gt;
&lt;p&gt;オレにもそう見える&lt;/p&gt;
&lt;p&gt;上っ面っぽさがあるよな&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;No one is perfect!&lt;/strong&gt;&lt;br&gt;
特にお前&lt;/p&gt;
&lt;p&gt;adjectiveになにはいるんだろ&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;praise &amp;lt;- function() {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; x &amp;lt;- c(
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; “You rock!”,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; “You are a coding rockstar!”,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; “Keep up the good work.”,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; “:)”,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; “Woot!”,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; “Way to go!”,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; “Nice code.”,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; praise::praise(“Your tests are ${adjective}!”),
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; praise::praise(“${EXCLAMATION} — ${adjective} code.”)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;praiseってモジュールがあるｗ&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;なんだよこのPRは&lt;/p&gt;
&lt;p&gt;いいじゃんこのモジュール&lt;br&gt;
bot性が高すぎる&lt;/p&gt;
&lt;p&gt;辞書作ってマジで作りこんでんじゃねぇかｗｗｗｗ&lt;/p&gt;
&lt;p&gt;メッセージ豪華にするために依存追加してるからな&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;アホでしょｗ&lt;/p&gt;
&lt;p&gt;このコミット、R界の神と呼ばれるHadleyがコミットしてんじゃんかよwww (編注：このcommitを入れたのは日本では「Rの神」とも呼ばれる
です。彼のサイトに行くと熱い視線に「こっちみんなwww」と草が生える事うけあいです。)&lt;/p&gt;
&lt;p&gt;OpenBSDのsshかなんかも、パスワード間違うと煽ってこなかったっけ&lt;/p&gt;
&lt;p&gt;sudoか&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;それ OpenBSD というより、sudo の機能だったな&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;AC\_ARG\_WITH(pc-insults, \[AS\_HELP\_STRING(\[ — with-pc-insults\], \[deprecated\])\],
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;\[case $with\_pc\_insults in
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; yes) enable\_offensive\_insults=no
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; AC\_MSG\_NOTICE(\[ — with-pc-insults option deprecated, it is now the default\])
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; no) enable\_offensive\_insults=yes
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; AC\_MSG\_NOTICE(\[ — without-pc-insults option deprecated, use — enable-offensive-insults\])
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ;;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;esac\])
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;— with-insults&lt;/code&gt; オプションを付けてビルドすると、出るようになるらしい。&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Speak English you fool&lt;/code&gt; つよい&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;\[xxxxx@yyyyy ~\]$ sudo ls
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;\[sudo\] xxxxx のパスワード:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;The more you drive — the dumber you get.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;できたｗ&lt;/p&gt;
&lt;p&gt;まだあるな&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;AC\_ARG\_WITH(all-insults, \[AS\_HELP\_STRING(\[ — with-all-insults\], \[include all the sudo insult sets\])\],
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;AC\_ARG\_WITH(classic-insults, \[AS\_HELP\_STRING(\[ — with-classic-insults\], \[include the insults from the “classic” sudo\])\],
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;AC\_ARG\_WITH(csops-insults, \[AS\_HELP\_STRING(\[ — with-csops-insults\], \[include CSOps insults\])\],
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;AC\_ARG\_WITH(hal-insults, \[AS\_HELP\_STRING(\[ — with-hal-insults\], \[include 2001-like insults\])\],
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;AC\_ARG\_WITH(goons-insults, \[AS\_HELP\_STRING(\[ — with-goons-insults\], \[include the insults from the “Goon Show”\])\],
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;AC\_ARG\_WITH(python-insults, \[AS\_HELP\_STRING(\[ — with-python-insults\], \[include the insults from “Monty Python’s Flying Circus”\])\],
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;頑張りすぎだろw&lt;/p&gt;
&lt;p&gt;classic-insults&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;ほう&lt;br&gt;
これはたのしそうだ&lt;br&gt;
無駄にくっそ作り込んであるな&lt;/p&gt;
&lt;p&gt;煽っていこう&lt;br&gt;
!煽り (編注: !からはじまるワードはbotコマンドで、ランダムでDBから何かが引かれる)&lt;/p&gt;
&lt;p&gt;pyspa-bot&lt;br&gt;
出力に慎みなきこと。&lt;/p&gt;
&lt;p&gt;なにげにこのbotのチョイス神がかってた&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#ifndef OFFENSIVE\_INSULTS
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;今まで見た中で一番圧強いdefine&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-c" data-lang="c"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#ifdef PC\_INSULTS
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="n"&gt;Listen&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;broccoli&lt;/span&gt; &lt;span class="n"&gt;brains&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;I&lt;/span&gt; &lt;span class="n"&gt;don&lt;/span&gt;&lt;span class="err"&gt;’&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="n"&gt;have&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;listen&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;this&lt;/span&gt; &lt;span class="n"&gt;trash&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#else
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="n"&gt;Listen&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;burrito&lt;/span&gt; &lt;span class="n"&gt;brains&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;I&lt;/span&gt; &lt;span class="n"&gt;don&lt;/span&gt;&lt;span class="err"&gt;’&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="n"&gt;have&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;listen&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;this&lt;/span&gt; &lt;span class="n"&gt;trash&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#endif
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;何が違うのかわからん&lt;/p&gt;
&lt;p&gt;ブリトー → メキシコ料理、文化的背景を連想させる&lt;br&gt;
ブロッコリー → PCに配慮&lt;/p&gt;
&lt;p&gt;ポリコレか&lt;/p&gt;
&lt;p&gt;その分岐作る方がPCに問題ありそうｗ&lt;/p&gt;
&lt;p&gt;いかがでしたか。人はこのようにしてコンピュータからエネルギーを貰っているし、それを支えるソフトウェアエンジニアの力が感じられたでしょうか？&lt;/p&gt;
&lt;p&gt;明日は、みんなだいすきwozozoです。&lt;/p&gt;</description></item><item><title>Windows 64bitでMeCab(とKyTea)を使う方法 2018</title><link>https://chezo.uno/post/2018-12-01_windows-64bit-mecab--kytea-------2018-b283b6c7b33c/</link><pubDate>Fri, 30 Nov 2018 20:05:57 -0800</pubDate><guid>https://chezo.uno/post/2018-12-01_windows-64bit-mecab--kytea-------2018-b283b6c7b33c/</guid><description>&lt;p&gt;こんにちは、日本語のテキスト処理してますか。&lt;/p&gt;
&lt;p&gt;最近はBERTやらTFhubで使えるのEmbeddingのモデルが一段と増えてきて、楽しいですね。BERTで用いられるWordPieceや、MeCabの作者としても有名な工藤さんの新作、
といった新しいTokenizerが出てくる一方で、TFhubで用意されているNNLMのtokenizerは公開されていないので結局MeCabで頑張らないといけない(少なくとも当初
)など、2018年の今でもMeCabの重要性は変わらず続いています。&lt;/p&gt;
&lt;p&gt;そこで、今回はWindowsでも形態素解析をしたいという人にどうしたらいいんだっけという話の2018年12月版をしたいと思います。&lt;/p&gt;
&lt;h3 id="tldr"&gt;tl;dr&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;64bit版のMeCabインストーラーが欲しい場合はikegami-yukinoさんの
が便利でしょう。Pythonは
もPypiに用意していただいています&lt;/li&gt;
&lt;li&gt;最新のWindows用のMeCabのexeとdll、ipadicがzipでほしいという人は、私が
を使ってください。Python用wheelもありますし、Rubyの人にも
です&lt;/li&gt;
&lt;li&gt;KyTeaも合わせて
と
を用意しました&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="なぜこの記事を書くに至ったか"&gt;なぜこの記事を書くに至ったか&lt;/h3&gt;
&lt;p&gt;今年に入って、MeCab/SentencePieceの作者の工藤さんによる形態素解析本も出てきて、ますます皆さんの日本語処理熱は高まっているかと思います。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;PythonでのモダンなNLPの処理向けのライブラリspaCyでは、他の言語との兼ね合いでPure Python実装のJanomeからUnidicベースのMeCabに
。需要は高まっています。&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://chezo.uno/post/2018-12-01_windows-64bit-mecab--kytea-------2018-b283b6c7b33c/1__nOVgkKYYMbIKaJFKSUEh6Q.png"&gt;&lt;figcaption&gt;
&lt;h4&gt;[https://spacy.io/usage/models](https://spacy.io/usage/models) Spacy depends on MeCab (mecab-python3)&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;また、日本語の機械学習の本が新たに出ていますが、大抵の場合Pythonでmecab-python3を使いましょうとありますが、
ためSWIGも用意しsourceからのビルドが前提です。Windowsの人にそれを要求するのはハードルが高いです。&lt;/p&gt;
&lt;h3 id="64bit-windowsでmecabを使うには"&gt;64bit WindowsでMeCabを使うには&lt;/h3&gt;
&lt;p&gt;メモリ16GBは人権という言葉もありますが、この前提には4GB以上のマシンでは64bit OSを使っているということが前提だと思います。とはいえ、MeCabの
には32bit版のバイナリしか存在しておらず、自前のビルド環境を用意していないことが多いWindowsの皆様におかれましては面倒くさい状況になっていると言えます。まさか、
が役に立つときが来るとは…。&lt;/p&gt;
&lt;p&gt;しかし、３年前のMinGW用の修正が今年になってマージされたときにMSVCでのビルドが壊れてしまいました。一応PRを投げましたが、いつマージされるかはわからない状況です。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="padding-bottom: 50%; padding-top: 120px;"&gt;&lt;a href="https://github.com/taku910/mecab/pull/46" data-iframely-url="//cdn.iframe.ly/RPQ26Cm"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;また、ikegami-yukinoさんという方が64bit版exeを配布されていますが（windows用wheelも）、CIでexe実行してインストーラ回すのどうすればいいんだっけということで、zipで固められたものがほしいなぁと思いました。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="padding-bottom: 52.5%; padding-top: 120px;"&gt;&lt;a href="https://qiita.com/yukinoi/items/990b6933d9f21ba0fb43" data-iframely-url="//cdn.iframe.ly/fpQKRoH"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;韓国の先立ちはCIでWindows向け
、 辞書（ipadic）、 Python用のwheelをbuildしているのを見つけました。&lt;/p&gt;
&lt;p&gt;これはいい。ということで、車輪の再発明をしました。&lt;/p&gt;
&lt;h3 id="yet-another-mecab-binaries-for-windows-x64-x32"&gt;Yet another MeCab binaries for Windows x64 &amp;amp; x32&lt;/h3&gt;
&lt;p&gt;GitHubのreleaseにて最新のMeCabをベースにした
しています。&lt;/p&gt;
&lt;p&gt;やったことは、
と
にだいたい詰まっていますが、先程送ったPRをベースにMSVC用のMakefileを改めて作り、それらをCIでビルドしています。また、各Pythonバージョンごとのwheelも作っています。&lt;/p&gt;
&lt;p&gt;libmecab.dllを使えばRubyなど別の言語のMeCabバインディングからも利用することができます。
というのを手元で確認しています。&lt;/p&gt;
&lt;p&gt;なお、Unidicは同梱しようと思えばできると思うのですが、皆大好きnelodogdはshell scriptやawk、perlの塊でビルドする必要があり、WSL使ってUbuntu用意するのが最短のようです（敗北感しかない）。&lt;/p&gt;
&lt;h3 id="python拡張モジュールのbuildの話"&gt;Python拡張モジュールのbuildの話&lt;/h3&gt;
&lt;p&gt;そもそも、Pythonのパッケージでは予めビルドされたwheelという仕組みがあります。これのおかげで、ユーザは自分の環境でビルドすることなくさくっと &lt;code&gt;pip install awesome-package&lt;/code&gt; するだけでC拡張があるパッケージが入れられるわけです。Rubyでいうところの &lt;code&gt;gem install nokogiri&lt;/code&gt; で苦しまなくても良いような仕組みがあるということです。&lt;/p&gt;
&lt;h4 id="windowsのpython拡張周りの辛さ"&gt;WindowsのPython拡張周りの辛さ&lt;/h4&gt;
&lt;p&gt;Windows用のPython拡張モジュールを用意するためには、PythonのバージョンにマッチしたVisual Studioのバージョン（あるいはビルドツール）を用意しないといけません。詳しくはPythonコミッター稲田さんの以下の記事をご参照ください。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="padding-bottom: 52.5%; padding-top: 120px;"&gt;&lt;a href="https://qiita.com/methane/items/2210712763b91e75fdf0" data-iframely-url="//cdn.iframe.ly/Kbc9R5W"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;考えようによっては、MSVCの環境を用意すればWindowsのバージョンに依存しないバイナリパッケージが用意できるので、非常に楽です。少なくともmacOSはもっと楽なのですが、なぜ楽と言えるのかについてもお話しようと思います。&lt;/p&gt;
&lt;h4 id="余談-linux用wheelを用意する"&gt;余談: Linux用wheelを用意する&lt;/h4&gt;
&lt;p&gt;Linuxにおいては、様々なディストリビューションの違いがある中で、各種環境で共通のwheelを用意するのは難しい問題でした。しかし、Windows/macOSでwheelが使われるようになり、その恩恵をLinuxでもあずかれるようにということでmanylinuxという枠組みができました。最初にできたのはmanylinux1というもので、互換性を考慮してCentOS 5のDocker imageをベースとしてwheelをビルドします。
に詳細は記述されています。&lt;/p&gt;
&lt;p&gt;作り方等々は稲田さんの記事と、PyPAの
リポジトリが参考になるでしょう。&lt;/p&gt;
&lt;iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fmethane.hatenablog.jp%2Fentry%2Ftrying-manylinux1" title="manylinux1 wheel を作ってみる - methaneのブログ" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;
&lt;p&gt;お気づきの方もいらっしゃるかもしれませんが、CentOS 5ベースのgccで新しいプロダクトのbindingを用意するのは地獄です。現に（非常に議論が沸き起こっているところですが）TensorFlowはmanylinux1というタグを使っているにもかかわらずもっと新しい環境で用意したwheelを用意しています。&lt;/p&gt;
&lt;p&gt;これに対してCent OS 5もEOLになることなどを踏まえて、manylinux 2010が準備されています。以下のissueを見る限りでは、次のpipからmanylinux2010を扱えるようになり、そろそろ準備が整ってきているようです。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="padding-bottom: 50%; padding-top: 120px;"&gt;&lt;a href="https://github.com/pypa/manylinux/issues/179" data-iframely-url="//cdn.iframe.ly/CXLJc1W"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;h3 id="kyteaのwindowsバイナリとpythonバインディング"&gt;KyTeaのWindowsバイナリとPythonバインディング&lt;/h3&gt;
&lt;p&gt;MeCabで得た知見を生かして、ついでにKyTeaもWindows用バイナリとPythonバインディングをpip installできるようにしました。本家にもPRを送ったんですが、appveyorの設定がまだされていないので、fork版をお使いください。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="padding-bottom: 50%; padding-top: 120px;"&gt;&lt;a href="https://github.com/chezou/kytea/releases" data-iframely-url="//cdn.iframe.ly/iTK56sU"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;なお、 &lt;code&gt;pip install kytea&lt;/code&gt; で
ようになっています。（WindowsのPython 2.7は除く）issueがあればこちらにどうぞ。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="padding-bottom: 50%; padding-top: 120px;"&gt;&lt;a href="https://github.com/chezou/Mykytea-python" data-iframely-url="//cdn.iframe.ly/Wo1AfW3"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;</description></item><item><title>加入しているサブスクリプションサービス 2018</title><link>https://chezo.uno/post/2018-11-14_subscription-2018/</link><pubDate>Tue, 13 Nov 2018 20:11:53 -0800</pubDate><guid>https://chezo.uno/post/2018-11-14_subscription-2018/</guid><description>&lt;p&gt;以前、
の人が書いていた気がするのだけど、 wozozoに聞かれたのでメモがてら書いていく。&lt;/p&gt;
&lt;h4 id="契約中のサービス"&gt;契約中のサービス&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;JetBrains All products pack – IntelliJとPyCharmのために買った。良い&lt;/li&gt;
&lt;li&gt;Netflix – 最近は見るものが減ってきたけど今季は転スラがあるので良い。子供には必須&lt;/li&gt;
&lt;li&gt;Amazon Prime – デリプロの中でも最強のADPとの戦いが増えて、どうするか悩み中&lt;/li&gt;
&lt;li&gt;YouTube Premium – 子供に英語の動画をChromeCast Ultraでガンガン見せているようなので、広告スキップが必須。&lt;/li&gt;
&lt;li&gt;freee – 確定申告用&lt;/li&gt;
&lt;li&gt;1Password.com – 買い切り版持ってたらMacユーザ限定半年無料キャンペーンがあったので移行した。Linuxでも使えるのが良い&lt;/li&gt;
&lt;li&gt;Notion.so – リッチなメモ用のアプリ。プラットフォーム選ばず使えるのがとてもよい。書きごごちも気に入っている&lt;/li&gt;
&lt;li&gt;DMM英会話 – 英会話のメンテナンスに。最近は会社でvipabcのトライアルがあるのでそっちがメインに&lt;/li&gt;
&lt;li&gt;IDCFクラウド – サブスクリプションではないが、Podcast用のサーバを置いてる。けど更新もできてないしそろそろGitHubに引き上げようかな…&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="契約をやめたサービス"&gt;契約をやめたサービス&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Google Play Music – YouTube Premiumに移行したため解約。Play Music自体は自分の音源をあげられるので、マイナーなゲーム音楽やアイリッシュバンドの曲を聴くのに必須&lt;/li&gt;
&lt;li&gt;Audible – 「盾の勇者の成り上がり」を最新刊まで聞いたらコイン制に移行したのでやめた。声優が読み上げるラノベはとても良いです。首を痛めてた時にはお世話になった。今なら
をしてるらしい。&lt;/li&gt;
&lt;li&gt;Bookscan – プレミアムライト会員を必要な時に適宜入ったり解約したりしている。いつになったら、統計や機械学習の教科書が電子で買えるようになるんだ…&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="契約を検討しているサービス"&gt;契約を検討しているサービス&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Adobe Creative Cloud – backspace.fmを聞いてるとAuditionを手に入れるためにちょっと欲しくなっている。
らしい。&lt;/li&gt;
&lt;li&gt;Office 365 – 買い切り版のライセンスも古いので切り替えようか検討中&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Thinkpad X1 CarbonとMacBook Proとで使える充電可能なUSB Type-Cのハブを選ぶ</title><link>https://chezo.uno/post/2018-10-28_thinkpad-x1-carbon-macbook-pro----------usb-type-c-------f6d8c8e77b36/</link><pubDate>Sat, 27 Oct 2018 21:11:26 -0700</pubDate><guid>https://chezo.uno/post/2018-10-28_thinkpad-x1-carbon-macbook-pro----------usb-type-c-------f6d8c8e77b36/</guid><description>&lt;p&gt;“two phones on white table” by
on 
&lt;/p&gt;
&lt;p&gt;転職をして、業務で使うマシンがMacBook Proになったので、自宅用のThinkpad X1 Carbon (5th Gen, 2017モデル)と共通して使える充電とUSB-Aがはやせるハブ(とかマルチポートアダプタとか色々言われているもの)を探しました。&lt;/p&gt;
&lt;h3 id="最終的に選んだもの"&gt;最終的に選んだもの&lt;/h3&gt;
&lt;p&gt;以下の2つを買いましたが、買ってから2ヶ月弱安定して動作しています。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;ここに至るまでにいくつかの充電器やハブを買っては返品を繰り返していたので、備忘録として書きたいと思います。&lt;/p&gt;
&lt;h3 id="要件"&gt;要件&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;USB Type-C Power Delivery(PD)で充電できる&lt;/li&gt;
&lt;li&gt;USB-Aのポートがある&lt;/li&gt;
&lt;li&gt;HDMI 4kは60Hzでないので気にしない&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;X1 Carbon 5th GenはUSB Type-Cで充電をするのですが、W数が45Wより少ないと充電できないように本体側でコントロールをしているという罠があります。それをいかに乗り越えるかが今回の課題でした。あと、Amazonのレビューを調べると「X1Carbonでは使えません」というコメントが散見されます。なので、利用可能という実績があるものを探さないといけないです。MacBook ProはNintendo Switchの充電器でも充電できるくらい、結構ゆるゆるです。&lt;/p&gt;
&lt;p&gt;HDMI 4k 60HzはThunderbolt 3ポート一個では帯域が足りないため、複数の機能をもたせたハブでは実現不可能なので諦めました。Thunderbolt 3-Display Portケーブルを別途使っています。&lt;/p&gt;
&lt;h3 id="ハブを経由するとw数が下がる"&gt;ハブを経由するとW数が下がる&lt;/h3&gt;
&lt;p&gt;X1 Carbon付属の充電器が45Wで、直接刺すと充電できるのにハブを経由すると充電ができなくなる、という現象が根本的な原因でした。厳密に言うとスリープ状態では充電できるけど、稼働時には充電されないのです。これに気づいたのは、Lenovoの純正のハブでも経由すると充電できないという記述がなされていたためです。&lt;/p&gt;
&lt;p&gt;実際に検証しようとしたときに、45Wクラスの充電器は安価に手に入るのですが、60Wクラスの充電器でそれなりに安価で比較的安心して使えそうなものが見当たらず検証するのに苦労しました。ここに至るまでには、使い始めて1週間で熱暴走して死んでしまったハブもあり、USB PDがあるときちんと熱管理をできているようなものを探さないといけないというのもポイントでした。中には「高温になりますが大丈夫です」などと商品説明で開き直っているものもあり、注意が必要です。&lt;/p&gt;
&lt;p&gt;たまたまEngadgetでPSEマークがついているというレビューをみた
を見つけ買うことにしました。更には、1週間で壊れたハブを経験したので、ある程度信頼できそうなブランドでかついざとなれば返品・交換が容易にできそうなものということで、
を購入しました。&lt;/p&gt;
&lt;p&gt;この苦労、おそらく2018年モデルだとしなくて良いみたいですが、参考になれば。&lt;/p&gt;</description></item><item><title>RISECampに参加した</title><link>https://chezo.uno/post/2018-10-25_risecamp------ee65c2ef0c9e/</link><pubDate>Wed, 24 Oct 2018 16:01:02 -0700</pubDate><guid>https://chezo.uno/post/2018-10-25_risecamp------ee65c2ef0c9e/</guid><description>&lt;p&gt;10/11–12にUC Berkeleyの
が主催していたbootcampに参加しました。kawasaki.rbでも少し話しましたが、参加報告です。雰囲気は
がわかりやすいです。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
\[2018/11/29追記\]&lt;p&gt;&lt;br&gt;
動画とTutorial用のバイナリが公開されました&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="padding-bottom: 50%; padding-top: 120px;"&gt;&lt;a href="https://github.com/ucbrise/risecamp/releases/tag/rc18diy-v1" data-iframely-url="//cdn.iframe.ly/n5P0Qb0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
\[/追記終わり\]&lt;p&gt;RISELabはSparkで有名なAMPLabの後継となる研究室で、彼らが作るML関連のライブラリ・フレームワークのハンズオンをするというのが会の趣旨です。&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://chezo.uno/post/2018-10-25_risecamp------ee65c2ef0c9e/1_X7a1O3wc38JN97nSzJph7Q.jpeg"&gt;&lt;figcaption&gt;
&lt;h4&gt;RISELabのStack&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;上の図のオレンジと緑の部分が彼らが作っているフレームワークになるのですが、その中でも以下のものについての紹介がありました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;RAY, RLlib, Tune: Pythonの分散処理フレームワークRAYと、それを使った強化学習ライブラリRLlib、パラメータチューニング用のライブラリTune&lt;/li&gt;
&lt;li&gt;Flor: MLのモデル作成のための実験をtrackingするためのライブラリ&lt;/li&gt;
&lt;li&gt;Clipper: MLモデルのServing用のAPIサーバを立てたり管理するためのライブラリ&lt;/li&gt;
&lt;li&gt;PyWren: AWS Lambdaを使った並列処理のためのライブラリ&lt;/li&gt;
&lt;li&gt;Opaque: Apache Sparkを使った暗号化したDataFrameを処理するライブラリ&lt;/li&gt;
&lt;li&gt;WAVE: Decentralised authorization for IoT&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="tldrという名の感想"&gt;tl;drという名の感想&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;機械学習エンジニアリングは複雑で、モデルのデプロイ・サービング、実験の再現性やトレーサビリティはプロダクションへの重要なパートになる気がする。
や
もそういったMLOpsの部分を狙っている&lt;/li&gt;
&lt;li&gt;機械学習のワークロードはすべてPythonでやるぞという意気込みを強く感じた。会場からはSparkとどう連携するの？みたいな話もよく出たが、PySparkで一応…みたいな答えが多かった。特に
を使ってオブジェクトばらまいて並列分散処理をすればいいじゃんという発想は単純ながら力強い。そして、Apache Arrowでノードのworker間のshared memory作るというのは今どきだなと。PythonはDSLとして便利なポジションになってるのかなぁ&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;たまたま、帰りの飛行機で聞いたTWML AI podcastでもこんな話が出ていました。&lt;/p&gt;
&lt;p&gt;以下、ざっとハンズオンを行った順に紹介をしていきます。&lt;/p&gt;
&lt;h3 id="ray-rllibtune"&gt;RAY, RLlib, Tune&lt;/h3&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="padding-bottom: 50%; padding-top: 120px;"&gt;&lt;a href="https://github.com/ray-project/ray" data-iframely-url="//cdn.iframe.ly/1VciO29"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;RAYはこのRISELabのセットの中での基礎となるフレームワークです。READMEにもある通り、以下のようなdecoratorを書くだけでPythonの処理を並列・分散処理できるというコンセプトのものになります。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2018-10-25_risecamp------ee65c2ef0c9e/1_FfKig9pDJRJZv4rtEBYyaA_hu_a070698c8c4be0d2.webp 320w, https://chezo.uno/post/2018-10-25_risecamp------ee65c2ef0c9e/1_FfKig9pDJRJZv4rtEBYyaA_hu_f57f739a6b680962.webp 480w, https://chezo.uno/post/2018-10-25_risecamp------ee65c2ef0c9e/1_FfKig9pDJRJZv4rtEBYyaA_hu_6be4d8bbf257fdad.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2018-10-25_risecamp------ee65c2ef0c9e/1_FfKig9pDJRJZv4rtEBYyaA_hu_a070698c8c4be0d2.webp"
width="760"
height="325"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;MLの処理をDSLとして抽象化します。特徴としては、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;FunctionをTasksとして&lt;/li&gt;
&lt;li&gt;ClassをActorsとして&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;として、Actorモデルを使って並列処理を行います。 &lt;code&gt;@ray.remote&lt;/code&gt; というデコレータを書くと、その関数はRAYのWorkerで実行されるという仕組みです。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2018-10-25_risecamp------ee65c2ef0c9e/1_ZRoARnXmvmlN_SBwDGXhsg_hu_9d41db05e7629e8e.webp 320w, https://chezo.uno/post/2018-10-25_risecamp------ee65c2ef0c9e/1_ZRoARnXmvmlN_SBwDGXhsg_hu_5bc8e371bedbf7e1.webp 480w, https://chezo.uno/post/2018-10-25_risecamp------ee65c2ef0c9e/1_ZRoARnXmvmlN_SBwDGXhsg_hu_17252206a2daf654.webp 700w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2018-10-25_risecamp------ee65c2ef0c9e/1_ZRoARnXmvmlN_SBwDGXhsg_hu_9d41db05e7629e8e.webp"
width="700"
height="525"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;ポイントとしては、Pythonのobjectをcloudpickleというpackageを使ってserializeしてWorkerに投げてしまうということです。裏側にはノードごとのshared memoryとしてApache Arrowもいるため、Workerの共用メモリとしてオブジェクトを格納します。データの並列化どうするんだろうなと思ったら、ModinというPandas on Rayというライブラリも開発しているようです。”Modin is a DataFrame for datasets from 1KB to 1TB+”と言っているので、皆が困っているサイズ感のDataFrameを扱えるようになるかもしれません。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="padding-bottom: 50%; padding-top: 120px;"&gt;&lt;a href="https://github.com/modin-project/modin" data-iframely-url="//cdn.iframe.ly/2qWqV4n"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2018-10-25_risecamp------ee65c2ef0c9e/1_wNA1IPu9X2ICC9GzIOvzqA_hu_9b285c81e1a47f02.webp 320w, https://chezo.uno/post/2018-10-25_risecamp------ee65c2ef0c9e/1_wNA1IPu9X2ICC9GzIOvzqA_hu_39fcb840f44c57.webp 480w, https://chezo.uno/post/2018-10-25_risecamp------ee65c2ef0c9e/1_wNA1IPu9X2ICC9GzIOvzqA_hu_73d21dc93819b77c.webp 700w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2018-10-25_risecamp------ee65c2ef0c9e/1_wNA1IPu9X2ICC9GzIOvzqA_hu_9b285c81e1a47f02.webp"
width="700"
height="525"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;チュートリアルは、こちらのrepoと同じものを実際にJupyterLabでハンズ・オンしました。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="padding-bottom: 50%; padding-top: 120px;"&gt;&lt;a href="https://github.com/ray-project/tutorial" data-iframely-url="//cdn.iframe.ly/mx9vN5D"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;RAY自体はなるほど、と思って生々しいコードを書いていたのですが、それをベースにした
という強化学習のライブラリと
というパラメータチューニング用のライブラリを使ってみて、隠蔽されたアプリケーションとして使うとML用の並列処理を行うのには良いなと感じました。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2018-10-25_risecamp------ee65c2ef0c9e/1_Va8PIW3Bx_G5FJas3kDatA_hu_7e2bfeff16e5bd53.webp 320w, https://chezo.uno/post/2018-10-25_risecamp------ee65c2ef0c9e/1_Va8PIW3Bx_G5FJas3kDatA_hu_bed5df1923e6891e.webp 480w, https://chezo.uno/post/2018-10-25_risecamp------ee65c2ef0c9e/1_Va8PIW3Bx_G5FJas3kDatA_hu_c5c76e9b13efae65.webp 700w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2018-10-25_risecamp------ee65c2ef0c9e/1_Va8PIW3Bx_G5FJas3kDatA_hu_7e2bfeff16e5bd53.webp"
width="700"
height="525"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;なお、WorkerのPythonのdependencyはあらかじめ解決した上で走らせてねということなので、複数プロジェクト走らせたりするのにはまだまだ自前で頑張る部分がありそうです。&lt;/p&gt;
&lt;h3 id="clipper"&gt;Clipper&lt;/h3&gt;
&lt;p&gt;Clipperは、MLの予測のためのAPIサーバを簡単にデプロイできるようにするためのライブラリです。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="padding-bottom: 80.1068%; padding-top: 120px;"&gt;&lt;a href="https://github.com/ucbrise/clipper" data-iframely-url="//cdn.iframe.ly/7IEpzsv"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;コンセプトとしてはData scientistにパフォーマンスが気になる本番のAPI部分のコードを書かせることなく、スケーラブルなAPIサーバをコンテナベースでデプロイできるようにするということです。基本的には対応しているPythonのMLライブラリであれば、Dockerfileも書かないで予測の処理のコードを書いて、それをPythonからデプロイするという流れになります。&lt;/p&gt;
&lt;p&gt;また、内部ではPrometheusのコンテナも立ち上げて、特定のmetricsをトラッキングできるようになっています。&lt;/p&gt;
&lt;h3 id="flor"&gt;Flor&lt;/h3&gt;
&lt;p&gt;Florは機械学習の実験のトレーサビリティを上げ、再現性を高めるためのライブラリになります。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="padding-bottom: 50%; padding-top: 120px;"&gt;&lt;a href="https://github.com/ucbrise/flor" data-iframely-url="//cdn.iframe.ly/xrwbS4d"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;機械学習では、feature engineeringなどのデータの加工をしたり、パラメータの探索をしたりしながらパイプラインを作っていきます。そこで、よくあるのが過去のパイプラインを再現したいのに、既にobjectが上書きされていて戻せないといったことがあります。Florでは、それを再現可能にするために色々と補助をしてくれます。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2018-10-25_risecamp------ee65c2ef0c9e/1_NQsxJzTYwsHcRRdCy9SCdQ_hu_b858e7e6a6b41a9.webp 320w, https://chezo.uno/post/2018-10-25_risecamp------ee65c2ef0c9e/1_NQsxJzTYwsHcRRdCy9SCdQ_hu_c1e8a3303585aff3.webp 480w, https://chezo.uno/post/2018-10-25_risecamp------ee65c2ef0c9e/1_NQsxJzTYwsHcRRdCy9SCdQ_hu_7ca14a9c6b3e9daf.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2018-10-25_risecamp------ee65c2ef0c9e/1_NQsxJzTYwsHcRRdCy9SCdQ_hu_b858e7e6a6b41a9.webp"
width="760"
height="570"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;少しFlor流の書き方をしないといけないのですが、それをすることで実験同士の処理のdiffを見たり、処理のパイプラインを可視化したり、他の人から引き継いだ実験の中間データを後から再度取得したりすることができます。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2018-10-25_risecamp------ee65c2ef0c9e/1_esjnYs5wLhZ9VicWXgiivg_hu_1c29ba7769179340.webp 320w, https://chezo.uno/post/2018-10-25_risecamp------ee65c2ef0c9e/1_esjnYs5wLhZ9VicWXgiivg_hu_2750bb28be7c9cdc.webp 480w, https://chezo.uno/post/2018-10-25_risecamp------ee65c2ef0c9e/1_esjnYs5wLhZ9VicWXgiivg_hu_bdf0694443a1a7ce.webp 700w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2018-10-25_risecamp------ee65c2ef0c9e/1_esjnYs5wLhZ9VicWXgiivg_hu_1c29ba7769179340.webp"
width="700"
height="525"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;MLでは実験のreproducibilityをどう作るのかという話がよく話題にあがるため、その一つのアプローチとして良いのではないでしょうか。ただ、大きいデータになったときの中間データを効率的に保存できるかは少し気になりました。&lt;/p&gt;
&lt;h3 id="pywren"&gt;PyWren&lt;/h3&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;PyWrenは、AWS Lambdaのようなサーバレスアーキテクチャを使って並行処理を行うためのフレームワークです。（まだ、GCPやAzureでは動かないっぽい）&lt;/p&gt;
&lt;p&gt;以下はパラメータチューニングのノートブックですが、mapとfilterで処理を並列にばらまくことで分割しています。&lt;/p&gt;
&lt;p&gt;また、これだけではなくNumPyWrenというNumpyの処理を同様に並列化するというプロジェクトも進んでいるようです。&lt;/p&gt;
&lt;p&gt;PyWrenに関してはLambdaのアップロードできるイメージ？のサイズの制限があるため、shared objectを外部サーバに出したりと充実したPython Package周りを入れるために工夫をしているようです。&lt;/p&gt;
&lt;h3 id="opaque"&gt;Opaque&lt;/h3&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="padding-bottom: 50%; padding-top: 120px;"&gt;&lt;a href="https://github.com/mc2-project/opaque-sql" data-iframely-url="//cdn.iframe.ly/bHRiUJo"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;OpaqueはSparkSQLをHardware Enclaves (Intel SGX, AMD SEV etc)の上で走らせて、セキュアな分析を可能にするものとのことです。チュートリアルでは、病気に関するデータセットを使ってSpark DataFrameを処理しましたが、まだScalaでしか動かないようです。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2018-10-25_risecamp------ee65c2ef0c9e/1_Oo2duV6e19Vu66svgpU9ZQ_hu_688275d5cdce1a68.webp 320w, https://chezo.uno/post/2018-10-25_risecamp------ee65c2ef0c9e/1_Oo2duV6e19Vu66svgpU9ZQ_hu_983b79cc89875f3.webp 480w, https://chezo.uno/post/2018-10-25_risecamp------ee65c2ef0c9e/1_Oo2duV6e19Vu66svgpU9ZQ_hu_ca05cfa49821f8d6.webp 700w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2018-10-25_risecamp------ee65c2ef0c9e/1_Oo2duV6e19Vu66svgpU9ZQ_hu_688275d5cdce1a68.webp"
width="700"
height="525"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id="wave"&gt;WAVE&lt;/h3&gt;
&lt;p&gt;IoTのための中央集権型ではない認可のための仕組みです。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="padding-bottom: 52.5%; padding-top: 120px;"&gt;&lt;a href="https://rise.cs.berkeley.edu/projects/wave/" data-iframely-url="//cdn.iframe.ly/aQVJuLD"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;RISECamp 2017の動画&lt;/p&gt;
&lt;p&gt;チュートリアルでは、二人の人がペアになって、それぞれのスマートホームを模したライトや温度センサーに対して変更や読み取りの権限を与えて操作をするということを行いました。&lt;/p&gt;
&lt;p&gt;これだけだと、なんでこの流れでこれが紹介されるの？と思いましたが、最後に行ったRay, Clipper, Flor, WAVEの統合ハンズオンでは、RayとRLlibでpongの強化学習を行うための予測モデルを作り、Clipperでモデルをデプロイし、更にそのモデルの予測のための権限をWAVEで管理するという形でした。予測モデルの権限管理をするという発想があまりなかったので興味深かったです。&lt;/p&gt;
&lt;p&gt;スライドやVideoはまだ出ていませんが、当日YouTube Liveでも中継していたので、そのうち
に上がると思います。&lt;/p&gt;
&lt;p&gt;あと、JupyterLab/Jupyter Notebookでのハンズオンを二日間フルでやりましたが、FIXMEを残しておいて修正したらassertでうまくいったかチェックをするというスタイルは、自分でも進捗を確認しやすいので良かったなと思います。&lt;/p&gt;</description></item><item><title>Treasure Dataに入りました&amp;Plazma tech talkで話しました</title><link>https://chezo.uno/post/2018-10-19_treasure-data-------plazma-tech-talk-------3c901d92e973/</link><pubDate>Thu, 18 Oct 2018 09:12:26 -0700</pubDate><guid>https://chezo.uno/post/2018-10-19_treasure-data-------plazma-tech-talk-------3c901d92e973/</guid><description>&lt;p&gt;気づけば入社して2ヶ月ほど経ってしまいましたが、Treasure Dataに入ったと思ったらArmに入社していました。&lt;/p&gt;
&lt;p&gt;Machine Learning teamの3人目のエンジニアとして、HivemallやTD上での機械学習周りの開発と、お客様へのコンサルティング等々をやっていきます。振り返ってみるとML的に強い人と同じチームで仕事するのは初めてな気もするので、楽しいです。&lt;/p&gt;
&lt;p&gt;入社2日目には話すことが決まっていたPlazma tech talkのスライドはこちらです。TD上でのML何ができるんだっけという話の整理と、今開発中のpy&amp;gt; operator on TDを使うと何がML的に嬉しいんだっけという話を書いています。個人的にはIoTを考えた時のエッジでの予測みたいな話も見据えたcapabilityの広がりが大きいところかなと思っています。&lt;/p&gt;</description></item><item><title>親も読みたい子供とネットの向き合い方を考える二冊</title><link>https://chezo.uno/post/2018-06-27_internet-for-kids/</link><pubDate>Tue, 26 Jun 2018 13:55:48 -0700</pubDate><guid>https://chezo.uno/post/2018-06-27_internet-for-kids/</guid><description>&lt;p&gt;“Two young girls stand reading from a book outdoors in the sun” by
on 
&lt;/p&gt;
&lt;p&gt;伊藤淳一さんの以下の記事を読んで、子供にネットの話をどう教えるのがいいのかなぁと悩んでいたので、件の記事で紹介されていた本と、そこから派生して仲間内で紹介してもらった本を読んだので紹介したいと思います。&lt;/p&gt;
&lt;div style="left: 0; width: 100%; height: 190px; position: relative;"&gt;&lt;iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fblog.jnito.com%2Fentry%2F2018%2F06%2F04%2F053705" style="top: 0; left: 0; width: 100%; height: 100%; position: absolute; border: 0;" allowfullscreen scrolling="no"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;伊藤さんの記事も長いですが、ソフトウェアに携わるエンジニアでかつ子を持つ親として考えさせられる内容でしたので、時間があれば読んでみると良いと思います。&lt;/p&gt;
&lt;h3 id="11歳からの正しく怖がるインターネット-大人もネットで失敗しなくなる本"&gt;11歳からの正しく怖がるインターネット: 大人もネットで失敗しなくなる本&lt;/h3&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;こちらは、伊藤さんの記事でも紹介されていたGREEの小木曽さんの本です。恐らく、「渋谷の交差点の真ん中で高校生がプラカードを掲げた写真」の話をしてる人というとピンと来る方も多いかと思います。SNSに投稿する事は、渋谷の交差点でその投稿を掲げることと同じ事だよ、という話や魚拓やスクショなどの話と共に、ウェブに上がった情報は消せないし残り続けるよ、という話を分かりやすく説明しています。&lt;/p&gt;
&lt;p&gt;この本の特筆すべきところは、アイスクリームの冷凍庫に入った写真をあげてしまう事件など、いわゆる炎上した事件を各種紹介してくれているところが非常に良いところです。ある事例では、炎上した学生がその後就活でも結婚でも「炎上させた人」として拒否され続けているという、重荷を背負って生きている話も挙げられていました。&lt;/p&gt;
&lt;p&gt;また、炎上したら言い訳をせず、まずきちんと謝罪をしましょうのようにどのように振舞うべきかという話や、子供の間でのSNSの特徴的な使い方やトラブルなど、多くの人と話しており経験も豊富な著者だからこその話が多く、ソフトウェアエンジニアの目線からも正しい情報が提供されていて安心感を感じました。ネットと向き合うためにはリスクとベネフィットとのトレードオフであるという事を何度も書かれていて非常に好感が持てます。&lt;/p&gt;
&lt;p&gt;一方でいくつか気になる点もありました。本書の位置付けからはある意味仕方のない話ですが、全編を通してマイクロソフトのエヴァンジェリストの西脇さんがいうところの「
」で終始しているように見受けられるところです。これは、想定読者が小学校高学年・中高生もターゲットにしているためだと思うのですが、どうすれば（意識の高い人ではない）普通の人の興味をひき続けられるのかという点を意識して、ユーモアに混じった円やかな口調ではありますがホラーストーリーを積み重ねています。仕方のないこととはいえ、救いがない話も多く少し胸焼けしてしまうかもしれません。&lt;/p&gt;
&lt;p&gt;もう一つの問題は、子供の興味を引こうとするあまり、「変態」という語を乱用しているように見受けられることです。特に、肖像権の説明の際に「私が女子高生の格好をしていて街中を歩いていたら、変態ですよね（だから、不利益が生じうる写真や動画のアップロードはリスクがありますよ）」というような表現があり、妻とも「（2016年出版だけど）この表現は2018年には厳しいかもね。女装がしたいけど悩んでる高校生には辛い」という話をしていました。&lt;/p&gt;
&lt;p&gt;この辺りの話は、自分も西脇さんのセミナーに参加したり本を読んだりして、どのように人に受け入れやすいプレゼンをするかという事を常々考えていたので、ともすると集中力や興味に欠ける子供を対象にどうしたら聞いてもらえるか、頭に残るかという事を考えた上での「北風と太陽」の選び方なんだとは思います。西脇さんも言っていましたが、北風を使うときは不必要に傷つける人を作らないようにしないとなと再確認しました。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;細かいことを書きましたが、親がこの本を読んで知識を得る分には得られるものも大きいですし、後述する「ネットのルール」と合わせてぜひ一度読むのをおすすめします。&lt;/p&gt;
&lt;h3 id="学校では教えてくれない大切なこと-12ネットのルール"&gt;学校では教えてくれない大切なこと 12 ネットのルール&lt;/h3&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;この本は、小学校低学年からでも読める漫画を中心としたネットとの向き合い方になります。全般的にギャグ漫画のノリで、主人公の少年とその父親（たまに母親）が失敗していくのをネットに詳しい祖父がガイドしていくという流れです。IDパスワードの命名や管理やアイドルからのメール詐欺に引っかからないなど、小木曽さんの本よりは幅広いテーマについて扱われています。&lt;/p&gt;
&lt;p&gt;この本の良いところは、シリーズ通して比較的低年齢の子供でも自分で読んで理解できるところにあります。さすが漫画。無料とうたうアプリをダウンロードする時は正規ストアか気をつけてねとか、著作権の話と違法ダウンロードの話も含まれており、書いてある内容も、やや安全側に倒しているきらいはありますが、ソフトウェア関係の人間としてみても間違っていないと思います。&lt;/p&gt;
&lt;p&gt;ただ、炎上したときは何も返信等しないでおきましょうというような小木曽さんの本との対応ポリシーの違いや、困ったら親に相談しようという、子供向けの本としては正しいが親としてどうするかを判断する必要があるので、小木曽さんの本と合わせて読む事で、家族で考えておくのが良いでしょう。&lt;/p&gt;
&lt;p&gt;ここからは蛇足ですが、冒頭の伊藤さんの問題提起の話を読んで感じたのは、小学校の招聘する講演は、先生が判断できる材料がなかったり、対象となるものに対する知識が足りなかったりするなどで、問題のある講演者を呼ぶリスクは潜んでいます。自分の子供も、犬や猫の殺処分の場所や方法を明示する動物愛護団体の講演を保護者参観の日に見せられて頭を抱えた覚えがあります。結局、これは構造上避けられないものである事を認識した上で、各家庭で正しい知識を教え自衛するしかないのかなと思います。&lt;/p&gt;
&lt;p&gt;ご家庭での子どもとネットに対する考える良い材料になれば。&lt;/p&gt;</description></item><item><title>退職します</title><link>https://chezo.uno/post/2018-06-19_goodbye-cloudera/</link><pubDate>Mon, 18 Jun 2018 17:06:01 -0700</pubDate><guid>https://chezo.uno/post/2018-06-19_goodbye-cloudera/</guid><description>&lt;p&gt;この記事は、最近流行りの
で有名な
からお送りしています。&lt;/p&gt;
&lt;p&gt;一部の方にはお伝えしましたが、先週がClouderaでの最終出社でした。2年3ヶ月はあっという間に過ぎて行きました。同僚の
と
に退職ブログ書いてくださいよと言われたので、初めて書いてみます。&lt;/p&gt;
&lt;h3 id="はじめての外資で働くということ"&gt;はじめての外資で働くということ&lt;/h3&gt;
&lt;p&gt;研究職からWeb系でのソフトウェアエンジニアを経て、いわゆる外資ベンダーでのプリセールスのセールスエンジニアとして今回0からの弱くてニューゲームをさせてもらいました。セールスエンジニアのお仕事は、同僚の
のこの記事がわかりやすいかと思います。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;ただ、Clouderaのセールスエンジニアのロールは継続的に使っていただくために割となんでもするという感じで裁量も大きく、Field Data Scientistという風に名乗らせていただいて、Spark周りのBig Dataの話とデータ活用の話、それから機械学習の話を幅広くさせていただきました。&lt;/p&gt;
&lt;p&gt;おかげさまで、国内外での発表も色々とさせていただきましたが、USのエンジニアブログにも5本ほど執筆させてもらい、
での発表や、自社の全エンジニアが集まる社内テックサミットでの発表などかなり自由気ままに活動させていただきました。これも日本の同僚や過去一番働きやすい上司たちのおかげです。&lt;/p&gt;
&lt;p&gt;また、
や、
なんかもワークアラウンドを見つけたりPR投げたりするという形で業務に関連のあるOSS活動もできたのは良かったです。なので、気づけば社内でも有数のconda職人になっていたかと思います。&lt;/p&gt;
&lt;p&gt;もちろん、普通のセールスエンジニアとしての活動もしてました。国内最大級のノード数を持つお客様の、クラスタマイグレーションの支援をしたりもさせていただきました。出来るだけお客様の望む物を噛み砕いてサポートするというように心がけて、多岐にわたって支援させていただくよう努めました。&lt;/p&gt;
&lt;p&gt;外資というかアメリカ資本の会社に入ってわかったのは、顔を合わせて一緒に飲んで名前を覚えてもらうことの重要性（Gmailのアイコンで顔を見かけると、MLとかでも助けたくなる）と、その時に興味を持ってもらえるようなコントリビュートを事前に社内で行なっておくことでした。APAC最古参社員のshiumachiや、テックサミットでいつも「お前日本人か、diceはどこにいる？」と聞かれる世界のdiceと共に仕事をしていたときに、自分も会社の中で認知してもらいどんどんコントリビュートしたいと思っていたのですが、それは達成できたと思います。最後の年にはプロダクトのロードマップを議論するProduct road map sessionに、ML系のField代表の一人として議論できたのは貴重な経験をさせてもらったと思っています。&lt;/p&gt;
&lt;h3 id="us企業と日本の企業との違う点同じ点"&gt;US企業と日本の企業との違う点・同じ点&lt;/h3&gt;
&lt;p&gt;US企業との日本の企業との違うところはいろいろ感じましたが、特に以下の3つがありました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;英語ができないと死ぬ。が、入社時はしょぼくてもなんとかなる&lt;/li&gt;
&lt;li&gt;文化の違いから、本物のマイノリティであることを痛感する&lt;/li&gt;
&lt;li&gt;タイムゾーンの違いが辛い&lt;/li&gt;
&lt;li&gt;空気読んでくれる人はほぼいないので、成果をとにかく主張する&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;英語は身内の外資系エンジニアの間で話をしていたのが、とりあえず英検二級くらい入社時にできればなんとかなるのではという話をしていました。英語がある程度できれば、酒を飲んで楽しくテックな話で盛り上がって仲間になれますし、お互いのリージョンでのあるある話でも盛り上がれます。&lt;/p&gt;
&lt;p&gt;文化の違いは、以下の過去の記事を読んでもらえばいいと思いますが、とにかく、diversity &amp;amp; inclusion に積極的に取り組んでいても、アメリカ人とその他という当たり前な構図に気づかされることが多かったように思います。日本にいると、日本生まれの日本語話者の男性は当たり前だけどマジョリティで、そういう意味で自分がマイノリティになることはなんだかんだでなかったんだなとハッとしました。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2017-07-30_culture-map/" data-iframely-url="//cdn.iframe.ly/BlzCZFO"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;タイムゾーンの違いは、途中から仕事で関わる人にNYCベースの人が増えてからが大変でした。時差13時間はどう頑張ってもお互いがちょっとずつ我慢するしかないので、（自分にとっては）日程調整にも気を使うし面倒だなぁという気持ちでした。とはいえ、結構カジュアルにchatしようぜと言われてHangoutしたりしていたので、JST 21 pmから会議開始とかができればまだ早い方で御の字だなぁと思いながら会話していました。&lt;/p&gt;
&lt;p&gt;日本の会社と変わらぬ点としては、以下のようなものがありました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;強い人と一緒に働くのは楽しい&lt;/li&gt;
&lt;li&gt;上司に恵まれると仕事しやすい&lt;/li&gt;
&lt;li&gt;生存戦略の建て方&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;自分にとっての生存戦略は今までと変わらず、&lt;strong&gt;（その組織の中で）自分が強いところはどこかというのを見つけてコントリビュートする&lt;/strong&gt;ことでした。社内には、HadoopやSpark、Java/Scalaに関しては詳しい人が山のようにいるので、そちらの方面は詳しい人を頼りつつ、PythonとML系の話を掛け算で攻めていくようにしていました。例えば、自分の
に
さんの知見を英訳して展開しては社内に共有したのもその一環です。&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://chezo.uno/post/2018-06-19_goodbye-cloudera/0_RRTZy7U2FfIZ7DRu.jpg"&gt;&lt;figcaption&gt;
&lt;h4&gt;Photo by [Andhika Soreng](https://unsplash.com/@dhika88?utm_source=medium&amp;amp;utm_medium=referral) on [Unsplash](https://unsplash.com?utm_source=medium&amp;amp;utm_medium=referral)&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;次は、MLOps系の話に自分で取り組んだり、実際に自分でdeveloperとして手を動かしてプロダクトに貢献したいという思いもあり、セールス寄りの世界から少し離れようと思います。かなりキャッチアップしないと…。とはいえ、頸椎を痛めたこともあり、PCもタブレットもスマホも使うと痛みが走るし、薬のためにアルコールも飲めないので、まずは少し静養しようと思います。&lt;/p&gt;
&lt;p&gt;必要な人向けのWish listです。お使いください。
&lt;/p&gt;</description></item><item><title>機械学習工学研究会キックオフシンポジウムに登壇しました</title><link>https://chezo.uno/post/2018-05-17_mlse-kickoff/</link><pubDate>Wed, 16 May 2018 22:03:57 -0700</pubDate><guid>https://chezo.uno/post/2018-05-17_mlse-kickoff/</guid><description>&lt;p&gt;タイトル通り日本ソフトウェア科学会の研究会、
に登壇しました。
さんから声をかけられた時はカジュアルに受けたのですが、蓋を開けてみれば大御所の方々ばかりで恐縮しながらの発表でした。&lt;/p&gt;
&lt;p&gt;僕の発表内容としては、書籍「仕事ではじめる機械学習」の話からデプロイパターンの話と、機械学習特有の難しさはどこから来るのかという話をしました。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;時間が20分だというのに資料を一通り作った後に気づいて、かなり表層的にさらっとしか話をしませんでしたが、詳しい方からすると当たり前の話しかできませんでした。&lt;/p&gt;
&lt;h4 id="話しきれなかったこと"&gt;話しきれなかったこと&lt;/h4&gt;
&lt;p&gt;お気づきの方は、参考文献等を見てわかるかと思いますが、機械学習特有の難しさという話は、主に以下の3つからピックアップしてきた話になります。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;個人的には、どれも語り尽くされた感があるところはあったのですが、特にTFXの論文がプラットフォームの話だけではなく、典型的な機械学習の問題をどのようにシステムとして回避しているかという話が詰まっていて良かったので改めて補足したいと思います。。&lt;/p&gt;
&lt;p&gt;例えば、「入力データのスキーマを作ってチェックする」という話が書いてあるのですが、ここでいうスキーマとは、カテゴリ値の種類を列挙したり、期待される統計値の幅を予め記述しておくというJSONSchema的なspecに近いものです。特に学習時のデータの分布と予測時の分布が極端に異なるということは往々にしてあるのですが、それをデータのスキーマでvalidationすることでアラートを上げてコントロールするというのは目からうろこでした。&lt;/p&gt;
&lt;p&gt;また、予測結果を他部門の人が使うエピソードがあるのですが、その中で「締切に追われるエンジニアは、サクッと使えるものは使ってしまうものである」みたいなことが書いてあって、ですよねーと一人頷いていました。&lt;/p&gt;
&lt;p&gt;3つ目のLucy Parkさんの発表資料は、Joel test for better Machine learning systemsというサブタイトルの通り、何をクリアすればいいかできていないとまずいかという11の質問項目を提案しています。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Do you keep your data versioned as well as your code?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Do you have an experiment database?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Do you have specified evaluation metrics?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Do the evaluation datasets match the needs of your users?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Can you reproduce your experiments in one step?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Do you have up-to-date documents?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Do you have the best computational resources money can buy?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Do you have tools to test model training?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Do you have tools to interpret your models?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Can you easily replace a component of your algorithm?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Does your team have a clear vision?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;詳細はスライドを見ていただければと思うが、この中でデータのバージョン管理をしてる？という話が出ていたが、これはまだベストプラクティスがないよねという話がスライドでもされています。&lt;/p&gt;
&lt;p&gt;少量データであれば、なんとでもなるのだが規模が大きくなってきて、かつ変更が入るようなデータをどう保持するのかというのは、自分でも気になって社内で議論したことがあるのですが、いわゆるDWHに入っているようなデータは、
(日本語だと
がわかりやすい)という方法を使えば逐一スナップショットをとるのではなく、変更を管理できるという方法を教えてもらいました。&lt;/p&gt;
&lt;p&gt;一方で、
のようにgit likeにデータのバージョンを管理する方法というのも提案されていて、バイナリのデータはこちらのほうが良さそうだと思っています。&lt;/p&gt;
&lt;p&gt;機械学習の予測では、一度異常が起きた時の原因究明が難しく、問題の切り分けのためにソースコードを遡るだけでなく、学習データ自身やモデル自身を遡る必要があるためここの話は非常に実用上重要になってくると思います。&lt;/p&gt;
&lt;p&gt;あとは、バージョン管理をするのと同時に、依存関係を記述するモデルのリネージが重要になってくるだろう話もしました。モデルのリネージの話はまだこれといったツールがあるわけではないのですが、予測結果を利用してさらに別のプロダクトを作るというケースがあるように、何がどの結果をつかっているのかというのを可視化できるツールというのが、今後機械学習に依存したプロダクトが増えるに連れて重要度を増すでしょう。&lt;/p&gt;
&lt;h4 id="機械学習システムにどういう立場で関わるか"&gt;機械学習システムにどういう立場で関わるか？&lt;/h4&gt;
&lt;p&gt;パネルディスカッションなどを通じて感じていたのは、機械学習システムを作る人が誰でどう関わるのかというのが人によって大きく異なるというのを改めて感じました。&lt;/p&gt;
&lt;p&gt;いわゆるコンサルやSIとして係る場合、発注者と受注者の関係が発生します。この場合、要件定義を先にして…のようにウォーターフォールで客が作りたがるという話が出ていましたし、ソフトウェア工学的にもそうした立場に立った意見が目立ったのかなと思います。&lt;/p&gt;
&lt;p&gt;そこに関しては、発注者自身が受け入れ要件を理解して定義できないといけないよね、などという話も出ましたが、幸いにして日本語だと機械学習システムのプロジェクトの進め方関連の書籍が拙著以外にも出ているので、そういった立場の方々はぜひ一度読むとよいのではないでしょうか。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;個人的には、データドリブンなプロダクトを作るという観点では、ドメイン知識を持っている人が一番強いと思っており、最初はがっつり機械学習のシステム構築を支援するけれど、段々と発注側の人を育てる方向にシフトをしていき、最終的には内製化できるのが理想的ではないかと考えています。&lt;/p&gt;
&lt;p&gt;機械学習が詳しい人の強みとしては、「どういう問題の切り出し方をしたら、機械学習で解けるか」というところだと思っています。この問題定義は、なかなか場数を踏まないとできるようになるのは難しく、そこをお手伝いすることが僕自身も多いです。それ以外のどう手を動かすかといった知見を少しずつトランスファーしていくのが、継続的に改善を必要とする機械学習システムでは良い形なのではないかと思います。&lt;/p&gt;
&lt;p&gt;思った以上にCI,CDの話が出てこなくて、「ん？」と思っていたのですが、改善をし続けるという話が自社内でやれるかどうかでスピード感も変わってくるのかなという観点を得ることができました。&lt;/p&gt;
&lt;p&gt;最後になりますが、司会の丸山先生や登壇者の皆様、500人規模の大規模な運営をしていただいたスタッフの皆様ありがとうございます。交流会でも非常に濃密な議論が出来てとても楽しかったです。&lt;/p&gt;</description></item><item><title>新しいPyPIでMarkdownのドキュメントを使う</title><link>https://chezo.uno/post/2018-04-17_---pypi-markdown-----------14e40d90ff3f/</link><pubDate>Mon, 16 Apr 2018 20:55:15 -0700</pubDate><guid>https://chezo.uno/post/2018-04-17_---pypi-markdown-----------14e40d90ff3f/</guid><description>&lt;p&gt;長い間、Pythonでパッケージを作った場合、構造化されたドキュメントを使う場合は、
(reST)でドキュメントを書く必要がありました。&lt;/p&gt;
&lt;p&gt;ところが、
に教えてもらったのですが2018年2月にアクセプトされた
のおかげで、PyPIのドキュメントがtxtかreSTでなければいけないという制約が外れました。そこで、昨日新しくなったばかりのPyPIでMarkdownがレンダーできる方法を試してみました。&lt;/p&gt;
&lt;h3 id="必要に応じてライブラリをupgradeする"&gt;(必要に応じて)ライブラリをupgradeする&lt;/h3&gt;
&lt;p&gt;Markdownが扱えるようになったのは、
からです。古いバージョンだとMarkdownがレンダーされないので、合わせてpipとwheelをupgradeしておきました。&lt;/p&gt;
&lt;p&gt;$ python -m pip install --upgrade pip
$ pip install &amp;ndash;upgrade wheel&lt;br&gt;
$ pip --version
pip 10.0.0 from c:\\users\\chezo\\documents\\source\\tabula-py\\venv\\lib\\site-packages\\pip (python 3.6)
$ pip list&lt;br&gt;
Package Version Location&lt;br&gt;
-&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;- &amp;mdash;&amp;mdash;&amp;mdash;&amp;ndash; &amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;ndash;&lt;br&gt;
(&amp;hellip;snip&amp;hellip;)&lt;br&gt;
setuptools 38.1.0&lt;br&gt;
(&amp;hellip;snip&amp;hellip;)&lt;br&gt;
wheel 0.31.0&lt;/p&gt;
&lt;h3 id="setuppyを編集する"&gt;setup.pyを編集する&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;long_description_content_type&lt;/code&gt;という項目をsetup.pyに追加することで、reST以外の形式を使えるようになります。Markdownであれば例えば以下のようになると思います。&lt;/p&gt;
&lt;p&gt;long_description=open(&amp;lsquo;README.md&amp;rsquo;).read(),&lt;br&gt;
long_description_content_type=”text/markdown”,&lt;/p&gt;
&lt;p&gt;元々README.mdを読むようにしていたので、今回は &lt;code&gt;long_description_content_type&lt;/code&gt; の行を追加するだけで済みました。&lt;/p&gt;
&lt;p&gt;実際のPRはこちらです。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://github.com/chezou/tabula-py/pull/85" data-iframely-url="//cdn.iframe.ly/HWuHFUO?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;h3 id="wheelを作ってtwineでアップロードする"&gt;wheelを作ってtwineでアップロードする&lt;/h3&gt;
&lt;p&gt;後はいつもどおりwheelを作ってtwineでPyPIにアップロードしました。なお、&lt;/p&gt;
&lt;p&gt;$ python setup.py bdist\_wheel
$ twine upload dist/*&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://chezo.uno/post/2018-04-17_---pypi-markdown-----------14e40d90ff3f/1_dskznp-UI9jw4D9L6gAQLA.png"&gt;&lt;figcaption&gt;
&lt;h4&gt;test.pypi.orgのMarkdownのドキュメントの様子&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;今回はこれだけのためにpatch versionを上げるのもなぁということで、test.pypi.orgにあげています。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://test.pypi.org/project/tabula-py/" data-iframely-url="//cdn.iframe.ly/NCS5gmm"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;h3 id="参考文献"&gt;参考文献&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
の関連箇所&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>「初めての自動テスト」を読んだ</title><link>https://chezo.uno/post/2018-01-17_----------------b63a0763e904/</link><pubDate>Tue, 16 Jan 2018 19:54:23 -0800</pubDate><guid>https://chezo.uno/post/2018-01-17_----------------b63a0763e904/</guid><description>&lt;p&gt;「初めての自動テスト」をご恵贈いただきました。発売してからだいぶ経ってしまいましたが、良い本だったので紹介したいと思います。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;この本は、アジャイルサムライの著者でもあるJonathan Rasmussonが、過去の自身の経験やSpotifyでの経験を元にテストについてまとめた本になります。対象読者は、テストに詳しくない開発者、昔ながらのテスター、チームリーダーを想定しています。僕もこの本がクックパッドで働きはじめたときに読めていたらどんなに助かったかと思いながら読み進めていました。&lt;/p&gt;
&lt;p&gt;UIテスト、統合テスト、ユニットテストのピラミッドを考え、ユニットテストを厚く、UIテストはほどほどにということが、RailsとJavascriptを用いたWebアプリケーションを題材に書かれています。Google Chromeのデベロッパーコンソールの使い方から説明してくれているように、コードを普段書いていない人でもとっかかりやすいように随所に配慮がされています。&lt;/p&gt;
&lt;p&gt;その一方で、不安定なテストはどうあるべきか？という話や、モックはどうあるべきか？といった、実際にテストを書いていくと必ずぶつかる話が整理されていて、今実際にテストを仕事で書いているけど、どうするのがいいんだっけ、という話が盛り込まれています。結構この手の話は、極端な方に振りたがる場合もありますが、コンフリクトする二つのたちばがあったときに両方のメリットを比較し、バランスを取ることを促しているのが印象深かったです。&lt;/p&gt;
&lt;p&gt;また、「実機に勝るテストはない」というコラムではSpotifyの車載機器連携でモックを多用しすぎて見逃したバグの話など、自動テストだけじゃなくてUIがあるものはやっぱりそうだよねーという前職の経験を思い出しながら読んでいました。&lt;/p&gt;
&lt;p&gt;経験豊富なソフトウェアエンジニアの皆さんには少し物足りないかもしれませんが、日々悩みながらテストを書いている開発者や、コードはあまり得意ではないけどというQA担当者両方に良い書籍だと思います。&lt;/p&gt;</description></item><item><title>Google Homeはスマートプラグと「部屋」でグルーピングすると便利</title><link>https://chezo.uno/post/2018-01-03_google-home--------------------------17607a9cc2b8/</link><pubDate>Tue, 02 Jan 2018 17:40:14 -0800</pubDate><guid>https://chezo.uno/post/2018-01-03_google-home--------------------------17607a9cc2b8/</guid><description>&lt;p&gt;Google Homeを発売日に買ってから色々と試行錯誤をして来ましたが、だいたい構成が固まって来たので書き残しておきます。&lt;/p&gt;
&lt;p&gt;下の図が大まかな構成です。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2018-01-03_google-home--------------------------17607a9cc2b8/1_IR6HHihMDdt3X8YeT4V-jg@2x_hu_c22341d15fa37370.webp 320w, https://chezo.uno/post/2018-01-03_google-home--------------------------17607a9cc2b8/1_IR6HHihMDdt3X8YeT4V-jg@2x_hu_7f0b82174fdb108b.webp 480w, https://chezo.uno/post/2018-01-03_google-home--------------------------17607a9cc2b8/1_IR6HHihMDdt3X8YeT4V-jg@2x_hu_6f28b35aefad6e16.webp 700w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2018-01-03_google-home--------------------------17607a9cc2b8/1_IR6HHihMDdt3X8YeT4V-jg@2x_hu_c22341d15fa37370.webp"
width="700"
height="726"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;図中のSPはスマートプラグの略です。&lt;/p&gt;
&lt;p&gt;もともとは、フィリップスの4kモニターの前段にHDMIオーディオ分離器とHDMI切替器を使っていました。分離した音声は、光オーディオケーブルでHDMI端子のないアンプにつながっています。&lt;/p&gt;
&lt;p&gt;HDMI切替機には、Chromecast UltraとAppleTV、PC、Nintendo Switchなどが付いています。これをNature Remoで切り替えます。この切替はIFTTTを使い、Google AssistantとNature Remoを使い連携をするというごく普通の構成で行なっています。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;厄介なのがPhilipsのモニターです。このモニターはリモコンでは操作が出来ず、入力信号がオフになればスリープにはなりますが、電源は裏側のハードスイッチによるオンオフのため、切替器や音声分離器で電源を制御していました。ですが、4k60Hz対応（HDCP2.2も対応）のものに切り替えたタイミングでスリープが出来ないという状況になりました。切替器は以下のものを、分離器は別の似たような製品を使っています。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;せっかくGoogle Homeもあることだし、できれば音声でモニターの電源をオンオフしたいと思い、スマートプラグを導入しました。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;このスマートプラグを使うと、Smartlifeというアプリと連携をすることで、Google Homeからの操作ができるようになります。また、Google Assistantアプリの中でスマートホームの設定からデバイスを「部屋」に所属させることができます。もともとはこの部屋というのは、部屋の照明などを一発でつけたり消したりするものだとは思うのですが、これで「モニター」という部屋に4kモニターとアンプを所属させることで一斉にオンオフをしています。便利。&lt;/p&gt;
&lt;p&gt;他にもスマートプラグの便利なところは、当たり前だけど電源のトグルができること（人類は状態を覚えたくない）と、Google Assistantで機器のエイリアスを設定できるため、日本語でも英語でも共通の設定で動くことです。Nature Remoで不便だなと思っていたところが解消されて非常に便利です。&lt;/p&gt;
&lt;p&gt;皆さんも是非楽しいGoogle Homeライフをエンジョイしてください。&lt;/p&gt;</description></item><item><title>2017年を振り返って</title><link>https://chezo.uno/post/2017-12-31_2017--------c4901627b12d/</link><pubDate>Sat, 30 Dec 2017 18:27:50 -0800</pubDate><guid>https://chezo.uno/post/2017-12-31_2017--------c4901627b12d/</guid><description>&lt;p&gt;2017年を振り返って&lt;/p&gt;
&lt;p&gt;
に引き続き、振り返っていきます。&lt;/p&gt;
&lt;p&gt;2017年は仕事に家庭に激動の一年だった気がします。もはや、年初の方は覚えていない。。。&lt;/p&gt;
&lt;h4 id="初めて薄い本を出したらオライリーから商業誌になった"&gt;初めて薄い本を出したらオライリーから商業誌になった&lt;/h4&gt;
&lt;p&gt;4月の技術書典2でなぜか初めて同人誌を出すことになりました。そこからあれよあれよというママにトントン拍子でオライリーから続けて電子版で出版となり、気づけば紙の書籍も来年1月に出版されることになりました。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4873118255/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
仕事ではじめる機械学習
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2017-10-20_oreilly-ml-for-business-cf835ff4c128/" data-iframely-url="//cdn.iframe.ly/tf0JDFS"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;きっかけは、pyspaのチャットでお蔵入りした原稿を供養しようぜといって
さん
さん両氏と同人誌を書くことにしたのですが、日頃考えていること、話していることが皆様の手元に届けられてよかったです。特に、機械学習に関連する泥臭いエンジニアリングまわりのところは、最近でこそ話題になるようになりましたが、あまり論文にもならず論点にもならなかったのですが、これが一つの議論のたたき台として使えればなぁと思っています。&lt;/p&gt;
&lt;h4 id="strata-data-conference-singaporeで発表した"&gt;Strata Data Conference Singaporeで発表した&lt;/h4&gt;
&lt;p&gt;仕事ではじめる機械学習で整理した機械学習システムのアーキテクチャの話をしました。英語で40分のトークだったのですが、ちょっと時間配分をミスったり慣れないGoogle Slideでやったら時間カウントし忘れてたりバタバタしましたが、発表後に捕まえてもらって議論をさせていただき有益でした。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;とはいえ、スクリプト用意して臨んだらフリースタイルで話せる感じにはならなかったので、今度は歩き回りながら話せるようにしたいです。&lt;/p&gt;
&lt;p&gt;じつはStrata NYCも行ったのですが、こちらはオライリーが主催するAIカンファレンスが直前にあったためか、ML・DL系が少なかった印象にあります。なので、個人的にはSingaporeの方がML系の話、特にデプロイやプロダクション関係の話が多くて楽しかったです。&lt;/p&gt;
&lt;h4 id="会社の英語ブログデビューをした"&gt;会社の英語ブログデビューをした&lt;/h4&gt;
&lt;p&gt;デビューしたと思ったら、年間4本と想像していた以上に書いていました。中にはRStudioのエンジニアにレビューしていただいたものもあり、色々レビューの大切さを感じています。会社の英語ブログを書くともれなくネイティブチェックを無料でしてもらえて非常に勉強になりました。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h4 id="スターが100超えたossができた"&gt;スターが100超えたOSSができた&lt;/h4&gt;
&lt;p&gt;PDF中のテーブルからPythonのDataFrameを抽出する
がスター100を超えました。また、v1.0も出すことができて安定稼働したかなと思います。おかげさまで、英語や中国語での紹介記事も書いていただきありがたい限りです。&lt;/p&gt;
&lt;p&gt;なお、継続のコツとしては、限られたリソースなので質問系はStackOverflowに流すようにイシューテンプレートを作ること、基礎的な質問はFAQに詰んでテンプレートに従わないイシューはガンガンクローズする運用にしました。&lt;/p&gt;
&lt;p&gt;また、sparklyrにした小さいコントリビュートが含まれたものがリリースされたりと、当初思っていたよりはOSS活動できたかな、と思います。&lt;/p&gt;
&lt;h4 id="家庭周りの話"&gt;家庭周りの話&lt;/h4&gt;
&lt;p&gt;相変わらず出張は多いので、妻の負荷をできる限り抑えるようにしたり気晴らしに出かけたりということを心がけてしました。家族旅行は地味に大事なんだなとおもいます。総じてある程度はできたけど、もうちょいやりようがあるのかなと思います。複数の家族が集まってワイワイやるのはとても楽なのでそういう手抜きの機会を増やしたいなぁ。&lt;/p&gt;
&lt;p&gt;また、はじめてのワンオペ育児は自分にとってはいい経験となりました。自分がしんがりを務める体験はするとしないとで全然重みが違いますね。&lt;/p&gt;
&lt;h4 id="2018年に向けて"&gt;2018年に向けて&lt;/h4&gt;
&lt;p&gt;家庭と仕事、そして健康を手に入れるための運動のバランスをうまく取りたいなと思います。&lt;/p&gt;
&lt;p&gt;特に今年は仕事ではCloudera Data Science Workbenchという新プロダクトが出たこともあり、そちらの支援を全力でしてきました。合わせて社内外の機械学習系の導入に向けて教育やコンサル的な振る舞いをする機会が増えて、Data democratizationをしていくってこういうことだよなぁと思いなかなか楽しかったです。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;Cloudera Data Science Workbenchは、k8sとDockerをベースとしたMLやDSの基盤として非常に便利で、コラボレーションのためのツールです。GPUもコンテナに紐付いて起動できるので、sandboxとしても非常に使い勝手が良いです。端的にいうと、Jupyterをgitとかで連携しやすくしたいい感じのものです。&lt;/p&gt;
&lt;p&gt;後半は家庭のこともあり、割と一年全力疾走して来た気がするので、来年はもう少しバランスを取りつつ健康を高めていきたいと思います。筋トレとプロテインはちょいちょいと続けているのですが、腰が辛いのでジムに通うなどして運動を行っていけたらと思います。&lt;/p&gt;
&lt;p&gt;英語に関しては、相変わらずDMM英会話でほぼ毎日続けています。多少壁を感じて来たのでなんとかしたいところです。&lt;/p&gt;
&lt;p&gt;資産運用もそろそろ始めたいと思います。まずはiDeCoからやろう。&lt;/p&gt;
&lt;h3 id="appendix"&gt;Appendix&lt;/h3&gt;
&lt;p&gt;最近会社のslideshareアカウントにスライド置くことが多いので、昨年の発表リストを貼ります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Big Data Analytics Tokyo&lt;/li&gt;
&lt;li&gt;Data Engineering and Data Analysis Workshop #1&lt;/li&gt;
&lt;li&gt;人工知能学会 SIG-SWO研究会 42回&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;Cloudera World Tokyo 2017&lt;/li&gt;
&lt;li&gt;Strata Data Conference Singapore 2017&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>2017年に買ってよかったもの</title><link>https://chezo.uno/post/2017-12-30_2017------------bbf834e065c5/</link><pubDate>Fri, 29 Dec 2017 20:31:43 -0800</pubDate><guid>https://chezo.uno/post/2017-12-30_2017------------bbf834e065c5/</guid><description>&lt;p&gt;今年もあと少しで終わりですね。というわけで、今年買ってよかったものを書き連ねていきたいと思います。&lt;/p&gt;
&lt;p&gt;去年のものはこちらです。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2016-12-30-2016nian-mai-tuteyokatutamono-10xuan/" data-iframely-url="//cdn.iframe.ly/na9dePo"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本の執筆もこのマシンで大部分行いました。軽くてバッテリーの持ちもよく非常に良い機体です。&lt;/p&gt;
&lt;p&gt;詳しくは以下の記事を読んで下さい。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2017-07-08_mbp-thinkpad-x1-carbon-2017-46c374167b79/" data-iframely-url="//cdn.iframe.ly/z770iaF"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;ul&gt;
&lt;li&gt;ゼンハイザー MOMENTUM On-Ear Wireless&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;国内外含めて飛行機での移動が増えたので、ノイズキャンセリングのオーディオが必要となり買いました。BOSEは音が好みではないのでゼンハイザーのこのヘッドホンを買いました。オンイヤーなので長時間つけているとちょっと圧迫感があるのが玉に瑕ですが、HD595, 650ともに持っている人なので、音は僕の好みにぴったりです。&lt;/p&gt;
&lt;p&gt;今なら、飛行機用ならSONYのもいいけど、このネックバンドタイプのイヤホンを選ぶかなぁ。10時間のバッテリー持続と軽さを兼ね備えているので…。もう4ヶ月早く売っていれば買ったものを…。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Anker のUSB type-C 付きの充電器&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;これのお陰で出張時の荷物がAC不要になったのでコンパクトになりました。USB type-C のPD対応のものはなかなか外れだらけなのですが、規格にあったものを探して行き着いたのがこれです。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;\[2018/01/06追記\]&lt;br&gt;
Type-C情報で有名な&lt;/em&gt;&lt;/strong&gt;
&lt;strong&gt;&lt;em&gt;によると、2017年8月に製品改修を行い、現在のバージョンではX1Cは充電できないようです。 Thx to&lt;/em&gt;&lt;/strong&gt;
&lt;strong&gt;&lt;em&gt;さん&lt;br&gt;
\[/追記\]&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Google Home/Google Home mini。そしてNature RemoとSmart plug&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Google Homeのおかげで、子供の計算練習用のタイマーもはかどり、また
やスマートプラグを使うことで、リモコンでの操作を声でしたり、グルーピングしたオーディオ機器類を音声で一発起動できたりと便利です。また、幼稚園児の日本語の発音練習にも良かったようです。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;Nature Remoの代わりにSiriとこれを連携している友人もいるようです。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ヨガマット&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;腕立てはプッシュアップバーでいいけど、腹筋やストレッチには直床は痛いなと思っていたので買いました。特にストレッチには便利です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;食洗機&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;諸般の事情で食洗機を導入しました。前職ではオフィスに食洗機があったので威力は知っていたのですが、拭かなくて良いのと油汚れを任せられるのは楽ですね。事情の詳細は下記を御覧ください。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2017-12-23_-701333a45696/" data-iframely-url="//cdn.iframe.ly/j6ZnF5g"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;ul&gt;
&lt;li&gt;Ergohuman Fit&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;腰を痛めているのでErgohuman Fitを買いました。Workaholicというお店で試し座りした上で買ったのですが、的確にアドバイスをしてくれるので是非店に行くといいと思います。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://www.iamworkaholic.jp/" data-iframely-url="//cdn.iframe.ly/sQVymUl"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;しかし、今年は物入りな年だったなぁ。。。&lt;/p&gt;</description></item><item><title>ワンオペ育児がやってきたヤァ！ヤァ！ヤァ！</title><link>https://chezo.uno/post/2017-12-23_----------------------701333a45696/</link><pubDate>Fri, 22 Dec 2017 22:01:03 -0800</pubDate><guid>https://chezo.uno/post/2017-12-23_----------------------701333a45696/</guid><description>&lt;p&gt;この記事は
の24日目です。昨日は
でした。車のローンも繰り上げ返済できるから印税で返済しましょう！という話はしびれますね。&lt;/p&gt;
&lt;p&gt;まきさんのいい記事を読んだ、いやぁ前向きな心持ちで育児をしていくの大事だよね、という話を学ばせていただきました。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;生活リズムを作ってサイクル作るのは大事ですし、部屋は別でも布団に子供だけで突っ込んで寝かせるのはある程度年齢が進んでくればできるようになるかもしれません（うちは妻のおかげでなりました）&lt;/p&gt;
&lt;p&gt;今回は、そうは言っても予期できないことは色々あるよねという話を書きます。&lt;/p&gt;
&lt;p&gt;さて、「ワンオペ育児」という単語を聞いたことはあるかと思います。読んで字のごとく、一人で子育てをすることです。牛丼チェーンのワンオペで深夜対応すると言うところから転じてできた言葉だと思いますが、僕自身仕事がら海外出張1週間とか結構あるので、出張中「ワンオペ育児辛い」という疲弊したメッセージが妻から届くこともしばしばありました。&lt;/p&gt;
&lt;p&gt;まぁ、そうは言っても仕事だし仕方ないよねと思いながら申し訳ない気持ちでいっぱいだったのですが、幸か不幸か妻が利き手を手術し数ヶ月使えないという展開になりました。そう、僕のもとにもワンオペ育児がやってきたのです。&lt;/p&gt;
&lt;p&gt;我が家は、小学校低学年1人と幼稚園児が1人という4人家族です。実家はお互い現在居住地から遠く、ヘルプはあてにできない状況。今でこそ包丁は握れないけど、力のいらないことならできるようになってきたので、かなり分担できていますが、術後当初は二人いる子供の面倒を見ながら、基本一人で家事を回すわけです。最初の一週間は妻が痛みで寝込む中、弁当を用意し、朝ごはんを準備して、子供を学校へ送り出し、幼稚園まで送り、その後ご飯の仕込みをしながら仕事。妻の昼食を用意し、仕事。幼稚園の迎え、晩御飯の準備をし、洗濯をし子供を寝かしつけ、仕事。この1週間が永遠につづくのではないかと思い、絶望的でした。特に、弁当は厄介で飲み会で遅く帰った翌朝も6時に起きて必ず弁当を用意するというプレッシャーは絶大で、一度こりて以来夜のイベントは遠慮するようになりました。&lt;/p&gt;
&lt;p&gt;この状況を打開するために、幾つかの策を講じました。&lt;/p&gt;
&lt;h4 id="食洗機を導入した"&gt;食洗機を導入した&lt;/h4&gt;
&lt;p&gt;今回幸いにして手術日は分かっていたので、事前に練った策として食洗機を投入することを決意しました。pyspaで賃貸で古い団地式のキッチンでも意外と行けると言われたので、ビックカメラに行き設置可否の確認及び工事諸々含めた見積もり依頼、そして設置に至りました。ビックカメラの食洗機の見積もりは無料で可能なため、急ぎの場合は店舗に行って日程交渉すると2,3日くらいで来てくれます。今回は最初に店舗に行ってから運良く1週間以内に設置できました。（窓際から補助台を使い設置するスタイル）&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;設置場所は、キッチンの窓に少し掛かる感じでパナソニックの食洗機用のステンレス台と脚を導入しました。そこも含めての見積もりに来てくれるので安心です。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;食洗機は手を怪我した妻には無くてはならないもので（水仕事ができない）、副次的な効果として食洗機回している間に時間ができました。特に朝の忙しい時間を肩代わりしてくれるのが非常に大きいですし、妻からは育児の辛さが激減したと言われました。&lt;/p&gt;
&lt;h4 id="朝ごはんをシリアルに変えた"&gt;朝ごはんをシリアルに変えた&lt;/h4&gt;
&lt;p&gt;朝ごはんは以前はパンを中心とした食事だったんですが、今回負荷を下げる目的で完全にシリアルに変えました。普段はパンを焼いてベーコンエッグを作ってミニトマトやら多少の野菜を準備してという流れだったのですが、自分の健康診断の関係もあり家族はフルグラ、自分はオートミールと豆乳にしています。副次的なメリットとしては豆乳でプロテインが飲めるようになったので少し飲みやすくなりました。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h4 id="調理代行の依頼"&gt;調理代行の依頼&lt;/h4&gt;
&lt;p&gt;もう一つの策として、家事代行特に作り置きの代行を依頼しました。&lt;/p&gt;
&lt;p&gt;こちらは決断が遅れてしまったこともありギリギリに（とは言っても１週間前くらい）依頼をかけたんですが、結局DMMオカンもCaSyもタスカジも使いませんでした。我が家の場合、マッチングが恐ろしく難しかったというか苦痛だったからです。切羽詰まってる状況でのお見合い感覚のマッチングはかなり精神的に答えました。&lt;/p&gt;
&lt;p&gt;おそらく、あるサービスで感じたのは、大抵移動時間30分以内という縛りがある代行者しかおらず、駅からバスで移動もある我が家ではマッチングが成立しづらいんだろうなと思います（事実断られました）。また、次の週末に作り置きを依頼できないと死ねる、という状況なのにマッチングまでに時間がかかったりというのも辛かったです。普段の余裕がある時は別にいいんでしょうが、初めての体験で急いで決めたいのに個別の状況を伝えることもできずシステマチックなマッチングで全然人が見つからず、これは都内か駅近だけのものか…と泣きそうになったのを覚えています。サービスやってた側からすると、そんな細かい条件を省くほうがコスト的には見合うのでそのとおりなんですが。&lt;/p&gt;
&lt;p&gt;結局、市のシルバー人材センターに電話依頼したら、状況を慮って急ぎで人を見つけてくれて作り置きの依頼ができました。初回の打ち合わせは祝日なのにシルバー人材の方に代行で来ていただき、スムーズに手続きを開始することができました。また、お互い助かることに、調理代行者は徒歩圏内に住んでおり、元々食堂での調理作業を生業としており、かつ費用も一時間千円で2.5hで6品以上作っていただき、ただただ助かるばかりです。&lt;/p&gt;
&lt;p&gt;なお、食材は以前から西友ネットスーパーと生協、Amazonでほぼ調達をしていたので、作り置き日の前日にまとめ買いをしておけば良いのと、調理してくださる方が割とコストを意識しながら作ってくださるので、妻が通常作るより食材を節約して作ってくださるのが思わぬ効果でした。&lt;/p&gt;
&lt;p&gt;実は依頼する前にも一度、自分一人で1週間分の作り置きはしたのですが、土日まるまる潰して6品くらいしか作れず子供と出かける時間もなくなり途方にくれていました。シルバー人材のおかげで、子供と公園に行ったりする時間も取り戻せました。&lt;/p&gt;
&lt;h4 id="乾燥機は毎日回す"&gt;乾燥機は毎日回す&lt;/h4&gt;
&lt;p&gt;その他としては、ドラム型洗濯機の乾燥機を毎日回すようにしました。それ以前は、フィルターの掃除が毎回しないといけなくて面倒、電気代も結構持ってかれるというところから週1くらいしか使っていなかったのですが、今はフル稼働しています。洗濯物を干す時間が相対的に減ったので、限られた時間を引き出すという目的には良いでしょう。&lt;/p&gt;
&lt;p&gt;もちろん、これを実現するには会社もリモートで働くことを許してくれていたりという好条件もありました。サポートしてくれた同僚にも非常に感謝しています。&lt;/p&gt;
&lt;p&gt;とにかく、世の中の育児大半が実家サポート前提で組まれている気しかしないよなぁと
、基本的な戦略としては以下のようになるかなと思います。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;お金で解決できるものはなりふり構わず投入する&lt;/li&gt;
&lt;li&gt;諦められるものは全力で諦める&lt;/li&gt;
&lt;li&gt;インターネット以外の方法もあたる&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;特に、シルバー人材センターのような、ローカルでインターネットじゃない方法も当たってみるものだなというのが大きな知見です。Lucene syntaxを脳内で組み立てられても、家事代行者は見つけられないし、AIも家事は代行してくれない。&lt;/p&gt;
&lt;p&gt;途中でも書きましたが、今はだいぶ作業を分担できるようにはなったのでかなり楽にはなりましたが、ピーク時は終わりのない1週間を乗り切るのに必死でした。&lt;/p&gt;
&lt;p&gt;でもこれ、介護でもやるんかな…。&lt;/p&gt;
&lt;p&gt;明日の締めは我らがdanchoこと@hiroki_niinumaです。&lt;/p&gt;</description></item><item><title>オライリーから「仕事ではじめる機械学習」が出版されます</title><link>https://chezo.uno/post/2017-10-20_oreilly-ml-for-business-cf835ff4c128/</link><pubDate>Thu, 19 Oct 2017 11:19:18 -0700</pubDate><guid>https://chezo.uno/post/2017-10-20_oreilly-ml-for-business-cf835ff4c128/</guid><description>&lt;p&gt;技術書典2で好評だった
が、この度技術書典3に合わせて商業誌になります！今回も
さんと
さんとの共著になります。と言っても、基本電子版のみなので技術書典会場では購入できませんし、手にとって見ていただくことが出来ませんのでお気をつけください。なお、自社イベントである
でプリント・オン・デマンドで物理本を少部数限定で販売する予定です。&lt;/p&gt;
&lt;p&gt;【追記】Ebookはこちらから買えます&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 170px; padding-bottom: 0;"&gt;&lt;a href="https://www.oreilly.co.jp//books/9784873118215/" data-iframely-url="//cdn.iframe.ly/MpOBH08"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;【/追記】&lt;/p&gt;
&lt;p&gt;【追記2】電子版大好評に付き2018年1月16日に物理版も出ました。Amazonさんで売り切れている場合は、お近くの本屋さんにお問い合わせください。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4873118255/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
仕事ではじめる機械学習
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;【/追記】&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://chezo.uno/post/2017-10-20_oreilly-ml-for-business-cf835ff4c128/1_AUW0L2DiM6nuSSGFgHKc2g.png"&gt;&lt;figcaption&gt;
&lt;h4&gt;まえがきより&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3 id="どういう本なの"&gt;どういう本なの？&lt;/h3&gt;
&lt;p&gt;まえがきのスクリーンショットを貼りましたが、この本は多くの機械学習の本とは異なり、機械学習の実務で使えるようになるために知りたい、機械学習を含めたシステムのアーキテクチャや機械学習プロジェクトの進め方、効果検証をどうするのかということをまとめました。&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://chezo.uno/post/2017-10-20_oreilly-ml-for-business-cf835ff4c128/1_W6mM0mI5F6F5vZIogbhIcw.png"&gt;&lt;figcaption&gt;
&lt;h4&gt;めざすところのイメージ&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;既に多く刊行されているTensorFlowやChainerでディープラーニングをしてみようというものでもなければ、機械学習の理論をわかりやすく解説するといった類のものでもありません。
やCourseraの
で学んだけど、実際の仕事に活かすにはどうしたら良いだろう？という疑問に答えているつもりです。また、大学の講義などで機械学習は学んだけど、実際仕事で機械学習のプロジェクトを進めるときはどうすればいいんだろう？という人にも得るものがあると思います。もちろん、敢えて数学の基礎には触れないなど、全てのことを網羅的に書けているわけではありませんが、僕やhagino3000さん、tokorotenさんたちの「業務をする上で身についた当たり前」をdumpした本になります。&lt;/p&gt;
&lt;p&gt;hagino3000さんのA/Bテストの話はp値だけでなく検定力の話も含まれております、どういう罠があるかという気をつけるポイントも触れられています。&lt;/p&gt;
&lt;p&gt;tokorotenさんのキックスターターの分析は、機械学習をする前の探索的分析とレポーティングの例としてとても面白いです。特に彼独特の語り口で、思考を追いかけるような気持ちで楽しめます。&lt;/p&gt;
&lt;p&gt;【追記】&lt;/p&gt;
&lt;p&gt;tomo_makesさんにわかりやすい図解をしていただきました。ありがとうございます！【/追記】&lt;/p&gt;
&lt;h3 id="薄い本との差分は"&gt;薄い本との差分は？&lt;/h3&gt;
&lt;p&gt;技術書典2で ”Big Mouth Data 2017 Spring” を購入いただいた皆様ありがとうございます。そんな皆様にも、新たに書き下ろしの章が増え、強力なレビューアー陣によるマサカリを反映した読みやすい文章などもう一度おすすめできる内容になったかと思います。&lt;/p&gt;
&lt;p&gt;マサカリを投げきった人の感想&lt;/p&gt;
&lt;p&gt;以下のような差分があります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;hagino3000さんによる、統計的検定と効果検証、A/Bテストの章を追加&lt;/li&gt;
&lt;li&gt;tokorotenさんによるマーケティング施策への機械学習としてUplift Modelingの章の追加&lt;/li&gt;
&lt;li&gt;chezouより機械学習の評価の章の追加&lt;/li&gt;
&lt;li&gt;瀧澤さんによる日本語の大幅なimprove&lt;/li&gt;
&lt;li&gt;美しいカラー図表&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;結局、ページ数としてはPDFで200ページ近くという思っていたより大きいボリュームになり、読み応えたっぷりになりました。&lt;/p&gt;
&lt;h3 id="どこで買えるの"&gt;どこで買えるの？&lt;/h3&gt;
&lt;p&gt;オライリー・ジャパンのEbook Storeで10/22(日)買えるようになります。物理本については、11/7(火)の
にお越しになっていただければ会場限定でPODのものが買えます。（サイン会も予定しています）&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 170px; padding-bottom: 0;"&gt;&lt;a href="https://www.oreilly.co.jp//books/9784873118215/" data-iframely-url="//cdn.iframe.ly/MpOBH08"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;なお、同日販売の知人の書籍としては
さんの「Goならわかるシステムプログラミング」とtk0miyaさんの「Sphinxをはじめよう」が出ます。とくにお二人には同人誌のときにSphinx方面でのサポートを絶賛していただきました。よければ合わせて読んでみてください。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;div style="left: 0; width: 100%; height: 190px; position: relative;"&gt;&lt;iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Ftk0miya.hatenablog.com%2Fentry%2F2017%2F10%2F18%2F011012" style="top: 0; left: 0; width: 100%; height: 100%; position: absolute; border: 0;" allowfullscreen scrolling="no"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;h3 id="目次"&gt;目次&lt;/h3&gt;
&lt;p&gt;最後に目次を貼っておきます。&lt;/p&gt;
&lt;h4 id="第i部"&gt;第I部&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;1章 機械学習プロジェクトのはじめ方&lt;/strong&gt;&lt;br&gt;
- 1.1 機械学習はどのように使われるのか&lt;br&gt;
- 1.2 機械学習プロジェクトの流れ&lt;br&gt;
 — 1.2.1 問題を定式化する&lt;br&gt;
 — 1.2.2 機械学習をしなくて良い方法を考える&lt;br&gt;
 — 1.2.3 システム設計を考える&lt;br&gt;
 — 1.2.4 アルゴリズムを選定する&lt;br&gt;
 — 1.2.5 特徴量、教師データとログの設計をする&lt;br&gt;
 — 1.2.6 前処理をする&lt;br&gt;
 — 1.2.7 学習・パラメータチューニング&lt;br&gt;
 — 1.2.8 システムに組み込む&lt;br&gt;
- 1.3 実システムにおける機械学習の問題点への対処方法&lt;br&gt;
 — 1.3.1 人手でゴールドスタンダードを用意して、予測性能のモニタリングをする&lt;br&gt;
 — 1.3.2 予測モデルをモジュール化をしてアルゴリズムのA/Bテストができるようにする&lt;br&gt;
 — 1.3.3 モデルのバージョン管理をして、いつでも切り戻し可能にする&lt;br&gt;
 — 1.3.4 データ処理のパイプラインごと保存する&lt;br&gt;
 — 1.3.5 開発/本番環境の言語/フレームワークは揃える&lt;br&gt;
- 1.4 機械学習を含めたシステムを成功させるには&lt;br&gt;
- 1.5 この章のまとめ&lt;br&gt;
&lt;strong&gt;2章 機械学習で何ができる？&lt;/strong&gt;&lt;br&gt;
- 2.1 どのアルゴリズムを選ぶべきか？&lt;br&gt;
- 2.2 分類&lt;br&gt;
 — 2.2.1 パーセプトロン&lt;br&gt;
 — 2.2.2 ロジスティック回帰&lt;br&gt;
 — 2.2.3 SVM&lt;br&gt;
 — 2.2.4 ニューラルネットワーク&lt;br&gt;
 — 2.2.5 k-NN&lt;br&gt;
 — 2.2.6 決定木、ランダムフォレスト、GBDT&lt;br&gt;
- 2.3 回帰&lt;br&gt;
 — 2.3.1 線形回帰の仕組み&lt;br&gt;
- 2.4 クラスタリング・次元削減&lt;br&gt;
 — 2.4.1 クラスタリング&lt;br&gt;
 — 2.4.2 次元削減&lt;br&gt;
- 2.5 その他&lt;br&gt;
 — 2.5.1 推薦&lt;br&gt;
 — 2.5.2 異常検知&lt;br&gt;
 — 2.5.3 頻出パターンマイニング&lt;br&gt;
 — 2.5.4 強化学習&lt;br&gt;
- 2.6 この章のまとめ&lt;br&gt;
&lt;strong&gt;3章 学習結果を評価しよう&lt;/strong&gt;&lt;br&gt;
- 3.1 分類の評価&lt;br&gt;
 — 3.1.1 正解率を使えば良いのか？&lt;br&gt;
 — 3.1.2 データ数の偏りを考慮する適合率と再現率&lt;br&gt;
 — 3.1.3 F値でバランスの良い性能を見る&lt;br&gt;
 — 3.1.4 混同行列を知る&lt;br&gt;
 — 3.1.5 多クラス分類の平均のとり方: マイクロ平均、マクロ平均&lt;br&gt;
 — 3.1.6 分類モデルを比較する&lt;br&gt;
- 3.2 回帰の評価&lt;br&gt;
 — 3.2.1 平均二乗誤差&lt;br&gt;
 — 3.2.2 決定係数&lt;br&gt;
- 3.3 機械学習を組み込んだシステムのA/Bテスト&lt;br&gt;
- 3.4 この章のまとめ&lt;br&gt;
**4章 システムに機械学習を組み込む&lt;br&gt;
**- 4.1 システムに機械学習を含める流れ&lt;br&gt;
- 4.2 システム設計&lt;br&gt;
 — 4.2.1 混乱しやすい「バッチ処理」と「バッチ学習」&lt;br&gt;
 — 4.2.2 バッチ処理で学習＋予測結果をWebアプリケーションで直接算出する（リアルタイム処理で予測）&lt;br&gt;
 — 4.2.3 バッチ処理で学習＋予測結果をAPI経由で利用する（リアルタイム処理で予測）&lt;br&gt;
 — 4.2.4 バッチ処理で学習＋予測結果をDB経由で利用する（バッチ処理で予測）&lt;br&gt;
 — 4.2.5 リアルタイム処理で学習をする&lt;br&gt;
 — 4.2.6 各パターンのまとめ&lt;br&gt;
- 4.3 ログ設計&lt;br&gt;
 — 4.3.1 特徴量や教師データに使いうる情報&lt;br&gt;
 — 4.3.2 ログを保持する場所&lt;br&gt;
 — 4.3.3 ログを設計する上での注意点&lt;br&gt;
- 4.4 この章のまとめ&lt;br&gt;
**5章 学習のためのリソースを収集しよう&lt;br&gt;
**- 5.1 学習のためのリソースの取得方法&lt;br&gt;
- 5.2 公開されたデータセットやモデルを活用する&lt;br&gt;
- 5.3 開発者自身が教師データを作る&lt;br&gt;
- 5.4 同僚や友人などにデータ入力してもらう&lt;br&gt;
- 5.5 クラウドソーシングを活用する&lt;br&gt;
- 5.6 サービスに組み込み、ユーザに入力してもらう&lt;br&gt;
- 5.7 この章のまとめ&lt;br&gt;
**6章 効果検証&lt;br&gt;
**- 6.1 効果検証の概要&lt;br&gt;
 — 6.1.1 効果検証までの道程&lt;br&gt;
 — 6.1.2 オフラインで検証しにくいポイント&lt;br&gt;
- 6.2 仮説検定の枠組み&lt;br&gt;
 — 6.2.1 コインは歪んでいるか&lt;br&gt;
 — 6.2.2 二群の母比率の差の検定&lt;br&gt;
 — 6.2.3 偽陽性と偽陰性&lt;br&gt;
- 6.3 仮説検定の注意点&lt;br&gt;
 — 6.3.1 繰り返し検定をしてしまう&lt;br&gt;
 — 6.3.2 有意差とビジネスインパクト&lt;br&gt;
 — 6.3.3 複数の検定を同時に行う&lt;br&gt;
- 6.4 因果効果の推定&lt;br&gt;
 — 6.4.1 ルービンの因果モデル&lt;br&gt;
 — 6.4.2 セレクションバイアス&lt;br&gt;
 — 6.4.3 ランダム化比較試験&lt;br&gt;
 — 6.4.4 過去との比較は難しい&lt;br&gt;
- 6.5 A/Bテスト&lt;br&gt;
 — 6.5.1 2群の抽出と標本サイズ&lt;br&gt;
 — 6.5.2 A/Aテストによる均質さの確認&lt;br&gt;
 — 6.5.3 A/Bテストの仕組み作り&lt;br&gt;
 — 6.5.4 テストの終了&lt;br&gt;
- 6.6 この章のまとめ&lt;/p&gt;
&lt;h4 id="第ii部"&gt;第II部&lt;/h4&gt;
&lt;p&gt;**7章 映画の推薦システムをつくる&lt;br&gt;
**- 7.1 シナリオ&lt;br&gt;
 — 7.1.1 推薦システムとは&lt;br&gt;
 — 7.1.2 応用シーン&lt;br&gt;
- 7.2 推薦システムをもっと知ろう&lt;br&gt;
 — 7.2.1 データの設計と取得&lt;br&gt;
 — 7.2.2 明示的データと暗黙的データ&lt;br&gt;
 — 7.2.3 推薦システムのアルゴリズム&lt;br&gt;
 — 7.2.4 ユーザー間型協調フィルタリング&lt;br&gt;
 — 7.2.5 アイテム間型協調フィルタリング&lt;br&gt;
 — 7.2.6 モデルベース協調フィルタリング&lt;br&gt;
 — 7.2.7 内容ベースフィルタリング&lt;br&gt;
 — 7.2.8 協調フィルタリングと内容ベースフィルタリングの得手・不得手&lt;br&gt;
 — 7.2.9 評価尺度&lt;br&gt;
- 7.3 MovieLensのデータの傾向を見る&lt;br&gt;
- 7.4 推薦システムの実装&lt;br&gt;
 — 7.4.1 Factorization Machineを使った推薦&lt;br&gt;
 — 7.4.2 いよいよFactorizatoin Machineで学習する&lt;br&gt;
 — 7.4.3 ユーザーと映画以外のコンテキストも加える&lt;br&gt;
- 7.5 この章のまとめ&lt;br&gt;
**8章 Kickstarterの分析、機械学習を使わないという選択肢&lt;br&gt;
**- 8.1 KickstarterのAPIを調査する&lt;br&gt;
- 8.2 Kickstarterのクローラを作成する&lt;br&gt;
- 8.3 JSONデータをCSVに変換する&lt;br&gt;
- 8.4 Excelで軽く眺めてみる&lt;br&gt;
- 8.5 ピボットテーブルでいろいろと眺めてみる&lt;br&gt;
- 8.6 達成したのにキャンセルされたプロジェクトを見てみる&lt;br&gt;
- 8.7 国別に見てみる&lt;br&gt;
- 8.8 レポートを作る&lt;br&gt;
- 8.9 今後行いたいこと&lt;br&gt;
- 8.10 おわりに&lt;br&gt;
**9章 Uplift Modelingによるマーケティング資源の効率化&lt;br&gt;
**- 9.1 Uplift Modelingの四象限のセグメント&lt;br&gt;
- 9.2 A/Bテストの拡張を通じたUplift Modelingの概要&lt;br&gt;
- 9.3 Uplift Modelingのためのデータセット生成&lt;br&gt;
- 9.4 2つの予測モデルを利用したUplift Modeling&lt;br&gt;
- 9.5 Uplift Modellingの評価方法、AUUC&lt;br&gt;
- 9.6 実践的な問題での活用&lt;br&gt;
- 9.7 Uplift Modelingを本番投入するには&lt;br&gt;
- 9.8 この章のまとめ&lt;br&gt;
&lt;strong&gt;参考文献&lt;br&gt;
あとがき&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>PyConJP 2017に参加した</title><link>https://chezo.uno/post/2017-09-09_pyconjp-2017------5fa5f59b9bde/</link><pubDate>Fri, 08 Sep 2017 20:24:23 -0700</pubDate><guid>https://chezo.uno/post/2017-09-09_pyconjp-2017------5fa5f59b9bde/</guid><description>&lt;p&gt;2年ぶりにPyConJPに参加しました。2日間参加してきたので、メモがてら書いていきます。&lt;/p&gt;
&lt;h3 id="興味深かった話"&gt;興味深かった話&lt;/h3&gt;
&lt;p&gt;pandasとdaskのコミッターの
さんの基調講演。pandasに対してどうコントリビュートしているかという話を中心に、OSS活動をしていこうと思わせる（1日目とは打って変わって）良い基調講演でした。&lt;/p&gt;
&lt;p&gt;特に印象的だったのが、pandasの中ではAirspeed Velocityを使ってCIでベンチマークを取りコミット間の処理速度が低下していないかを検出しているという点です。Pythonのパッケージなので、他の言語では難しいかもしれないということです。ともすると速度のデグレは気づきにくいことも多いですが、OSSでそこまできっちり見ているのは素晴らしいと思いました。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://github.com/airspeed-velocity/asv" data-iframely-url="//cdn.iframe.ly/u7lLP8Q?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;なお、pandasやビジュアライズに入門するには昨日でたJupyter本が良いです。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;リクルートテクノロジーズの
さんによる分析基盤とカルチャーを作っていく話。どの話も、あーあーあるあるという感じで会場も共感の嵐でした。結局、現場のユーザが使うためには、独りよがりな基盤を作っても使われなければ無いから、コミュニケーションを取っていって必要なものを作っていこう、という泥臭さしかない話でした。こうしてデータドリブンで仮説を作っていく話はとても良いと思います。&lt;/p&gt;
&lt;p&gt;Cookpadの
さんの発表。自分が課題感感じているところかなと思ったら少し違った話でした。通常、ソースコードはgitなどでバージョン管理をするのに対して、モデルは比較的バージョン管理をしやすいけど、入力データのスナップショットをとることが難しいので、repeatabilityを確保するのは難しいよなと思っていたのですがその問題提起の話でした。&lt;/p&gt;
&lt;p&gt;モバイルやセンサーからくるデータは遅延して到達したり、後で更新したりするみたいな時があったときや、データの欠損があったりしたときに、そのまましれっとモデルの更新をすると、データが原因なのかモデルがダメなのか何がダメなのかがぱっと切り分けられなくて、モデルの更新をしにくくなるという状況なのは辛いなという認識です。例えるならば、バージョン管理もテストもない状態でコード変更をして神に祈ってデプロイするイメージに近いです。（ゴールデンスタンダード使ったりなにか悪くなってることは検出できますが…）&lt;/p&gt;
&lt;p&gt;解決方法はまだまだ発展途上だなというか、PySparkでETLしてS3上にHive形式のテーブル作ってそれをImpalaでもPrestoでも叩けばええやんという気持ちでいっぱいだったのですが、問題自体は重要な話であり、Googleなんかはどうにかしてクリアしているポイントのようなので、僕自身もなんとかしたいと思っている場所だったりします。良い解決方法考えていきたいところです。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://pycon.jp/2017/ja/schedule/presentation/5/" data-iframely-url="//cdn.iframe.ly/2KVfLfr?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;もう一件、テキスト処理をPythonでやる話がありました。話の殆どは知ってる話だったのですが、spaCyが日本語対応したらしいよという話を聞いて、実はjanomeがTokenizerに使われているのをしりました。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://github.com/explosion/spaCy" data-iframely-url="//cdn.iframe.ly/ECM6Oez?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;なお、RからもspacyRというwrapperを使えるようでopenNLPとrJavaに疲弊している人は使うと良いようです。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://github.com/quanteda/spacyr" data-iframely-url="//cdn.iframe.ly/Sm0nxaE?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;h3 id="感想"&gt;感想&lt;/h3&gt;
&lt;p&gt;PyConはあまり知り合いも少なく、アウェイ感があるのですが、なんか地味に知り合いが増えてきたこともあり色々と話しをできてよかったなと思います。&lt;/p&gt;
&lt;p&gt;実は一番印象に残ったのは、shimizukawaさんやtakuan_oshoさんなどインターネッツの中でしか見たことがない方とお会い出来たりお話できたことでした。また、色々とお話をしていると「ああ、aodagさんの文章を翻訳した人ですね」と言われて、地道な活動をしてきてよかったなと思います（虎の威を借る何とやらとも言う）&lt;/p&gt;
&lt;p&gt;また、英語セッションで質問をしたら、何故か英語圏の人に囲まれて日本語のテキスト処理とコーパスが辛いんだけど、とか言う話を議論できたのは良かったです。&lt;/p&gt;
&lt;p&gt;一方で発表は、今回初日のキーノートがただの会社の紹介に終止したマーケティングで終わったり、海外勢のデータ系がやってみた系が多かったりと結構辛かった一方で、日本人の発表者は非常に濃い良い発表が多く良かったなぁと思いました。特にcondaとwheelのfragmentationについてはなんとかならんかなと思って質問しましたが、お茶を濁されたのが悲しかったです。&lt;/p&gt;
&lt;p&gt;ただ、自腹で1万円払って来年も行くかというとプログラム編成がデータ系が横に並んで厳しかったり、発表のクオリティの分散が激しかったりと悩ましいなぁというところです。自分はデータ系しかほぼ見てないのですが、2年前に参加したときはjanomeの話とか濃い話がありそう思わなかったのですが、RubyKaigiの方が講演のクオリティの平均が高い（ハズレを引きにくい）のかなと思いました。aodagさんのパッケージングの話とか（資料しか見てないけど）昔からの人の発表は安定感あったのですが…。&lt;/p&gt;
&lt;p&gt;とはいえ、プログラム編成も投稿が山のようにきたりしている現状、SciPyあるいはScientific Programming, Data Analysis &amp;amp; MLみたいな言語を絞らないカンファレンスを日本でやって、それでガス抜きをしないとPyConには荷が重いだろうなぁと思います。イメージ的には、
みたいな言語非依存なカンファレンスの科学計算版で、industrial trackとbeginner trackとresearch trackの3本立てでちょっと学会よりはゆるい感じの集まりかなぁ。&lt;/p&gt;
&lt;p&gt;いずれにせよ、Pythonは今後もお世話になっていくので、PyCon JPの運営の皆さんに感謝しつつ燃え尽きないよう継続してって頂きたいなぁと思います。&lt;/p&gt;</description></item><item><title>Pythonの環境構築を自分なりに整理してみる</title><link>https://chezo.uno/post/2017-08-26_python------------------dc8d8f2fe989/</link><pubDate>Fri, 25 Aug 2017 21:58:07 -0700</pubDate><guid>https://chezo.uno/post/2017-08-26_python------------------dc8d8f2fe989/</guid><description>&lt;p&gt;先日、 kawasaki.rb の懇親会で「AWS LambdaのためにPythonはじめたいんです」とか「機械学習系の本を読み始めたので、そこに書いてあったcondaではじめました」とかいう話を聞きました。&lt;/p&gt;
&lt;p&gt;コレ読んでおけ系の記事は既に色々とあるんですが、今回は自分で触ってきて使っている環境を中心に説明をしようと思います。想定読者としては、Rubyを使っていたけど最近Pythonにも手を出すようになってきたという人です。&lt;/p&gt;
&lt;p&gt;書き始めてから思ったんですが、ぶっちゃけPythonコミッターのmethaneさんの以下の記事を読めば十分な気もしてきましたが、一例としてお読みいただければと思います。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://qiita.com/methane/items/5afdabd513a18049c34f" data-iframely-url="//cdn.iframe.ly/7whUOpn?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;h3 id="私の立ち位置"&gt;私の立ち位置&lt;/h3&gt;
&lt;p&gt;もともとは、数年前まで 年に一回Python3でNLTKやらscikit-learnやら機械学習や自然言語処理の環境を作ろうと試みては失敗してPython使うものかと思っていた人でした。それが、Anacondaで環境導入すると、面倒なことは何も考えずに済むということを知り、CookpadではAnacondaを前提に環境構築を勧めていました。&lt;/p&gt;
&lt;p&gt;今は、ymotongpooに「郷に入っては郷に従え」と言われたため、pip+virtualenv/venvで全てをこなしていますが、これで困ったことは特にありません。macOS, Windows, Linuxそれぞれでやっていますが、大きな苦労もなく大丈夫だなという印象です。&lt;/p&gt;
&lt;p&gt;先に言っておくと自分のPython力はそこまで高くないです。もともとはRailsで開発はしていましたが、Pythonはほぼ機械学習やデータマイニング系のコードを一人で書くということが多いです。いくつかPythonのライブラリは書いて入るのですが、チーム開発の経験はないためその観点は弱いということを認識いただければと思います。&lt;/p&gt;
&lt;p&gt;なお、仕事では
ので、適材適所だなと思ってこの話を書いています。単純にpyenvやcondaを使うな、というつもりはありません。リスクとベネフィットのトレードオフで選んでください。&lt;/p&gt;
&lt;h3 id="環境構築のあれやこれや"&gt;環境構築のあれやこれや&lt;/h3&gt;
&lt;p&gt;以下では、macOS, Windows, Linuxで自分がどのように環境構築をしているかについて書いていこうと思います。&lt;/p&gt;
&lt;h4 id="最低限の前提知識"&gt;最低限の前提知識&lt;/h4&gt;
&lt;p&gt;Pythonの実行環境の導入・パッケージ管理周りに出て来るキーワードについて簡単に説明します。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;pip&lt;/strong&gt;: パッケージインストールのためのツール。Rubyでいうところのgem。パッケージはPyPIというRubyで言うところのrubygems.orgから取ってくる。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;virtualenv&lt;/strong&gt;: パッケージを切り分ける仮想環境を作る人。Rubyで言うところのbundlerに近いが、Pythonの利用するバージョンも指定するのでrbenvのruby-build抜きの機能を持っている感じ&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;venv&lt;/strong&gt;: Python 3から公式として入ったvirtualenv。ただし、venvはPythonのバージョン指定ができないとか、Debian/Ubuntuでは余計な依存関係が発生するとかで私は使ってません。&lt;/li&gt;
&lt;/ul&gt;
\[2017/08/30 追記\]&lt;p&gt;&lt;br&gt;
venvはバージョンの指定が出来ないのではなく、2.7と3.6との切り替えができないという意味でした。 &lt;code&gt;python3.5 -m venv some-great-env&lt;/code&gt;で切り分けられます。&lt;br&gt;
私自身パッケージ開発に2.7サポートをする場合があるのと、Ubuntu使いなのでvirtualenvを使っています。&lt;br&gt;
&lt;/p&gt;
\[/追記\]&lt;p&gt;以上が、多くのPythonistaに使われている基本的なツールセットです。このあたりの話は、PyPAと呼ばれるパッケージ管理関係の標準と参照実装を決める目的で設立された団体によって
として扱われています。（後述のcondaもでてきますが）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;conda&lt;/strong&gt;: Continuumという会社が作っているPythonを中心とした科学計算のパッケージ管理をするためのプラットフォーム&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;pyenv&lt;/strong&gt;: rbenvのPython版。Pythonのソースからのビルドと、Pythonの実行環境（バージョンなど）の切り替えをする&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これらは、特定の目的のために使うことが多いものです。&lt;/p&gt;
&lt;h4 id="実行環境の導入"&gt;実行環境の導入&lt;/h4&gt;
&lt;p&gt;2017年においては、Python 3系の最新版を入れておけばだいたい生きていけると思います。が、何かしらの辛い事情で2系も使わないといけない場合もあるかと思います。&lt;/p&gt;
&lt;p&gt;その場合は、自分はOSのパッケージ管理ツールでPythonを入れています。例えばUbuntuで &lt;code&gt;apt install python-dev&lt;/code&gt; とするとPython 2.7が &lt;code&gt;apt install python3-dev&lt;/code&gt; をすると今ならPython 3.6が入ります。同時に入れると&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/usr/bin/python #&amp;lt;- 2.7
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; python2 #&amp;lt;- 2.7
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; python2.7 #&amp;lt;- 2.7
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; python3 #&amp;lt;- 3.6
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; python3.6 #&amp;lt;- 3.6
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;という感じで入ります。 &lt;code&gt;brew install&lt;/code&gt;でも &lt;code&gt;python&lt;/code&gt; と &lt;code&gt;python3&lt;/code&gt; で2系と3系両方入れることができます。&lt;/p&gt;
&lt;p&gt;バージョンの切り替えは、後述のvirtualenvで実行するバージョンを切り替えます。逆に言うとpyenvでのバージョン切り替えは、ライブラリ開発者のように細かいバージョン切り替えが必要な人でなければ不要でしょう。&lt;/p&gt;
&lt;p&gt;なお、homebrewは彼らの方針で過去バージョンのPythonはpyenvを使ってくれ、と言っています。MacPortsは普通に過去バージョンが入りますし、Ubuntuは
を使えばこの問題は解決される話です。homebrewで切り替えたい人はpyenvを使うほうが楽でしょう。&lt;/p&gt;
&lt;p&gt;WindowsだとChocolateyで入れるか、オフィシャルのインストーラで入れれば良いです。（ Python 3.6からは &lt;code&gt;py&lt;/code&gt; というコマンドが用意されており、それを使うとバージョンを切り替えた実行もできます）&lt;/p&gt;
&lt;p&gt;なお、絶対にやってはいけないのはSystem Pythonを使い続けることです。System Pythonは往々にして古いことが多く、またyumなどシステム上重要なシステムに依存しています。うっかり、 &lt;code&gt;sudo pip install&lt;/code&gt; などしようものなら、環境を壊してしまう恐れがあります。&lt;/p&gt;
&lt;p&gt;なお、環境構築に関する話は、以下の記事が参考になるでしょう。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h4 id="パッケージ管理"&gt;パッケージ管理&lt;/h4&gt;
&lt;p&gt;まず、大前提として先程も書きましたが &lt;code&gt;sudo pip install hogehoge&lt;/code&gt; をするのは辞めましょう。システムPythonはOSで使っているため、これの環境を壊すことは危険です。&lt;/p&gt;
&lt;p&gt;プロジェクトごとにパッケージのバージョンを依存関係を切り替えるのには &lt;code&gt;virtualenv&lt;/code&gt;を使います。以下の aodagさんの資料を読んで下さると良いと思います。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;また、Python 3に関しては以下の &lt;code&gt;venv&lt;/code&gt;のチュートリアルがわかりやすくまとまっています。Debian/Ubuntu以外の人はPython 3だけで良ければ &lt;code&gt;venv&lt;/code&gt; で十分かと思います。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;ここに書いてあるけど大事な話としては、 &lt;code&gt;virtualenv&lt;/code&gt;でPythonの実行環境を切り替えられる話をしておきます。&lt;/p&gt;
&lt;p&gt;まずは、以下のようにしてユーザ領域に &lt;code&gt;virtualenv&lt;/code&gt;を入れます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;$&lt;/span&gt; &lt;span class="n"&gt;wget&lt;/span&gt; &lt;span class="n"&gt;https&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;bootstrap&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pypa&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;io&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;pip&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;py&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;$&lt;/span&gt; &lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="n"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;~/.local/bin/:$PATH&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;$&lt;/span&gt; &lt;span class="n"&gt;python&lt;/span&gt; &lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;pip&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;py&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;$&lt;/span&gt; &lt;span class="n"&gt;pip&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="n"&gt;virtualenv&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# Windowsの場合は特に考えずにpip installで良い
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt; pip install virtualenv
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;virtualenvでは、プロジェクトの下に仮想環境を作ります。プロジェクトルートで以下のコマンドを実行すると&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ virtualenv venv -p python3.6
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Python 3.6を実行環境とした、仮想環境ができます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ echo venv &amp;gt;&amp;gt; .gitignore
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;で、 &lt;code&gt;.gitignore&lt;/code&gt; に追加しておくとよいでしょう。&lt;/p&gt;
&lt;p&gt;次に、 &lt;code&gt;activate&lt;/code&gt; して仮想環境を有効化します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ source venv/bin/activate(venv) $
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;#Windows
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt; . venv/Script/activate
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;この状態で、 &lt;code&gt;pip install scikit-learn&lt;/code&gt; とすると &lt;code&gt;venv&lt;/code&gt; 以下にパッケージが入ります。仮想環境の利用を止めたい場合は &lt;code&gt;deactivate&lt;/code&gt; コマンドを使いましょう。&lt;/p&gt;
&lt;p&gt;pip 7.1以降ではconstraints.txtというGemfile.lockのようなものが扱えるようになりました。 &lt;code&gt;pip freeze&lt;/code&gt; で現在インストールしているライブラリとバージョン一覧がでます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;venv&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt; &lt;span class="n"&gt;pip&lt;/span&gt; &lt;span class="n"&gt;freeze&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;l&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;pylint&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mf"&gt;1.7&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;pyparsing&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mf"&gt;2.2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;pytest&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mf"&gt;3.2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mf"&gt;2.18&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;six&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mf"&gt;1.10&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;tox&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mf"&gt;2.7&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;urllib3&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mf"&gt;1.22&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;virtualenv&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mf"&gt;15.1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;venv&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt; &lt;span class="n"&gt;pip&lt;/span&gt; &lt;span class="n"&gt;freeze&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;constraints&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;txt&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;venv&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt; &lt;span class="n"&gt;cat&lt;/span&gt; &lt;span class="n"&gt;constraints&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;txt&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;pylint&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mf"&gt;1.7&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;pyparsing&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mf"&gt;2.2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;pytest&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mf"&gt;3.2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mf"&gt;2.18&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;six&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mf"&gt;1.10&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;tox&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mf"&gt;2.7&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;urllib3&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mf"&gt;1.22&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;virtualenv&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mf"&gt;15.1&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ここに、プロジェクトに必要な必要なライブラリをrequirements.txtに記述します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;(venv)$ cat requirements.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;requests
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pyparsing
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;そうすると、以下のコマンドで必要なライブラリの必要なバージョンを入れることができます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;venv&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;$&lt;/span&gt; &lt;span class="n"&gt;pip&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="n"&gt;requirements&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;txt&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="n"&gt;constraints&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;txt&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="condaの話"&gt;condaの話&lt;/h4&gt;
&lt;p&gt;Anacondaは機械学習などの科学計算向けのPythonディストリビューションです。Anacondaは、推奨パッケージを含めて入れるAnacondaと、自分で必要なパッケージを入れるMinicondaが入ります。Anacondaは（今はないですが）昔はDjangoを入れているなど重いパッケージも入ってくることがあるので、きちんとデフォルトパッケージを調べてから使いましょう。&lt;/p&gt;
&lt;p&gt;なお、Pythonディストリビューションと書いてありますが、Rなど他の言語の環境を作ることもできます。&lt;/p&gt;
&lt;p&gt;Anacondaはvirtualenvと違い、独自の仮想環境を作ることができます。特徴的なのは、 &lt;code&gt;--copy&lt;/code&gt; というオプションを付けるとライブラリや.soなどをシンボリックリンクを作らず、コピーするということができるため、仮想環境一式をzipやtarで固めると、そのまま実行可能な形で使いまわせることです。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ conda create -n myenv --copy python**\=**3.6
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ conda activate myenv
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;つまり、通常 &lt;code&gt;apt&lt;/code&gt; などのOSのパッケージ管理で入れるようなところも、condaのパッケージで管理をします。condaはPyPIとは異なる独自のパッケージリポジトリを持ち、そちらにOSごとにバイナリをアップロードします。ですので、OpenCVなど同じ名前の同じものを入れるためのパッケージが複数のユーザによってレポジトリに登録されていたりと結構雑多な印象があります。&lt;/p&gt;
&lt;p&gt;多くの機械学習の本では、condaを使えと書いて有ることが多いのですが、Windows以外ではあまり使わないほうが良いと私は考えています。&lt;/p&gt;
&lt;p&gt;理由としては、以下が上げられます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2017年においては、 wheel というバイナリパッケージのフォーマットがデファクトになっているので、condaの当初の目的の科学計算用のパッケージ（gfortanとかに依存していて辛い）を簡単に入れるという目的はcondaでなくてもできる。&lt;/li&gt;
&lt;li&gt;普通に入れると、macOS/Linuxの
(厳密には、 condaの方が先にPATHが通ってしまう)
\[[issue](https://github.com/ContinuumIO/anaconda-issues/issues/1119)\]&lt;/li&gt;
&lt;li&gt;パッケージ開発者は、condaユーザーではないことが多く、彼らからするとJRubyやRubyinius（あるいはWindows固有の不具合）など通常使わない環境でのサポートを求められるように感じる。&lt;/li&gt;
&lt;li&gt;condaの世界で閉じていないNative extensionのビルド（Cython依存など）でincludeしないといけない情報などがうまく渡せず、はまると辛い&lt;/li&gt;
&lt;li&gt;Distributionごとの違いが発生する場合もあるのに、OSレベルの違いしか考慮できない&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ですので、Windowsの人や、開発は通常しないけど機械学習を体験してみたいという人はcondaを使うと良いでしょう。あるいは、pyenvの管理下でMinicondaを入れるか、私自身はDockerの中でcondaを使っています。&lt;/p&gt;
&lt;p&gt;ただ、ScipyなどWindows用の一部は &lt;code&gt;pip install&lt;/code&gt;では入らないので
wheelをダウンロードする必要があります。この点は正直condaの方が良いかと思います。&lt;/p&gt;
&lt;p&gt;歴史的な詳細は下記が詳しいです。端的に言うと、wheel以前の古いバイナリフォーマットがいまいちだったため、condaを作ったという形になります。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h4 id="カルチャーの違い"&gt;カルチャーの違い&lt;/h4&gt;
&lt;p&gt;RubyとPythonでは色々と文化が違うのですが、一番大きな違いは個人的には以下の2点だと思っています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;できるだけ依存するものは最低限の薄いものが良い。ブラックボックスは好まないという思想&lt;/li&gt;
&lt;li&gt;Rubyはいいものを皆が試して事実上のデファクトスタンダードになるのに対して、提案されたPEPという「標準」を合議して決めていくというスタイル&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;なので、Rubyはパッとデファクトが決まる印象がありますが、Pythonはじっくり議論の上で標準を決めていくという印象があります。（コレもあって、過渡期の実装が色々出てくる）&lt;/p&gt;
&lt;p&gt;また、こうした経緯からかPythonの人たちはきっちり例外まで補足したがる傾向にあると思います（例えるなら、Pythonは数学科の数式にきっちり向き合う感じと、Rubyは工学部の数式に対する雑な扱いのような感じ）。なので、昔からのPythonistaが書くドキュメントは長くなる傾向にあると思いますが、そういうものだと思って割り切るしかないと思います。&lt;/p&gt;
&lt;h3 id="まとめ"&gt;まとめ&lt;/h3&gt;
&lt;p&gt;個人的には、普通に使う分にはvirtualenv/venvとOSのパッケージ管理ツールでPythonを入れるというので、私は良いと思って使っています。&lt;/p&gt;
&lt;p&gt;ただ、プロダクション要求などで必要なものもあると思うので、condaとpyenvは適材適所で用法用量を守って使いましょう。&lt;/p&gt;
&lt;h3 id="参考文献"&gt;参考文献&lt;/h3&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>OSSベースの機械学習が強い理由</title><link>https://chezo.uno/post/2017-08-03_oss--------------48807bbbf13f/</link><pubDate>Wed, 02 Aug 2017 11:29:59 -0700</pubDate><guid>https://chezo.uno/post/2017-08-03_oss--------------48807bbbf13f/</guid><description>&lt;p&gt;&lt;em&gt;英語版は&lt;/em&gt;
_&lt;/p&gt;
&lt;p&gt;TensorFlowの登場以降、OSSベースの機械学習の盛り上がりは加速しています。Kerasの作者の
さんの言葉が、この状況を非常に端的に表しています。これだけでも十分だとは思いますが、この記事では、なぜオープンソースの機械学習が強いのか、最近のどういった流れがあるのかを整理したいと思います。&lt;/p&gt;
&lt;h3 id="tldr"&gt;tl;dr&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;機械学習やDeep Learningのフレームワークが充実してきた&lt;/li&gt;
&lt;li&gt;論文が査読前に公開され、他社も簡単にアルゴリズムの検証ができるようになった&lt;/li&gt;
&lt;li&gt;多くのプレーヤーの参戦により、アカデミアでの機械学習の研究がレッドオーシャン化した&lt;/li&gt;
&lt;li&gt;他社にないアルゴリズムで一発勝負、実装は秘密、というアプローチが厳しい&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="牧歌的な時代"&gt;牧歌的な時代&lt;/h3&gt;
&lt;p&gt;5年前10年前の世界では、先端の機械学習に取り組んでいるのは大学などの研究室、大企業の研究所や一部の先進的な企業がほとんどでした。特に、ラベル付きのデータ量は現在よりも少なく、アルゴリズムを突き詰めて性能を向上させたり、特徴量エンジニアリングを頑張って性能を改善したりしていました。&lt;/p&gt;
&lt;p&gt;この時代の先端の機械学習は、特に大学を中心としたアカデミアの人たちが国際会議に投稿をし、それが査読を通ったものが共有されるという形でした。実装が共有されることは今ほど多くはなく、各研究者は先行研究をスクラッチから再実装するということが多かったように思います。早くて半年、場合によっては1年以上のサイクルで新しいアルゴリズムがでてくるという時代でした。&lt;/p&gt;
&lt;p&gt;オープンソースの機械学習ライブラリ/フレームワークとしては、古くはWekaのような機械学習用のライブラリを使う人もいれば、scikit-learnも
されましたが、今ほど多くのソフトウェアエンジニアの間ではメジャーではなかったように思います。どちらかというとlibsvmやliblinearなど単一/少数のアルゴリズムのものが多く使われていた時代でした。&lt;/p&gt;
&lt;h3 id="変化の激しい時代"&gt;変化の激しい時代&lt;/h3&gt;
&lt;p&gt;2017年の現在では、機械学習に取り組む人は10年前に比べれば圧倒的に増えたのはみなさんもご存知のとおりだと思います。アカデミアが中心だった時代から、データを持つ企業の人達にも広がってきました。特に、機械学習に取り組んだことのないソフトウェアエンジニアにも身近な存在になったと感じています。私の主催しているkawasaki.rbでも今まで業務で機械学習に取り組んだことのない人が、Deep Learningに取り組み始めたという話を聞いて驚きました。この背景には、やはり企業が機械学習に使えるデータを貯めることが一般的になったこと、そして優れた機械学習フレームワークが増えたこと、GPUによるDeep Learningの効率的な計算が可能となったことなどが挙げられます。&lt;/p&gt;
&lt;p&gt;TensorFlow, Chainer, MXNet, Caffe2, PyTorchなどの数々のDeep Learningのフレームワークだけでなく、XGBoost, Lightgbmなどkaggleで流行って使われるようになったオープンソースのライブラリも多いです。当然、scikit-learnも複数のアルゴリズムを試すフレームワークとして当然使えるものになっています。&lt;/p&gt;
&lt;h3 id="オープンな論文の盛り上がり"&gt;オープンな論文の盛り上がり&lt;/h3&gt;
&lt;p&gt;こうしたは流れを支えているのは、一つは機械学習のコンペティションサイトの
と、もう一つは
と呼ばれるオープンな論文を投稿する場所の存在があります。（arxivは査読プロセスが入っていないため質が担保されておらず、それを論文と呼んでいいのか、などの議論はありますが、ここでは論文スタイルのドキュメントをざっくり論文と呼びます）&lt;/p&gt;
&lt;p&gt;以下の記事に、arxivに投稿された機械学習関連（特にDeep Learning）の論文投稿数について記述があります。こちらの記事によれば、機械学習関連の論文の投稿数が、2017年には5年前に比べて4倍以上になっているという指摘がされています。&lt;/p&gt;
&lt;script async src="https://static.medium.com/embed.js"&gt;&lt;/script&gt;&lt;a class="m-story" href="https://karpathy.medium.com/a-peek-at-trends-in-machine-learning-ab8a1085a106"&gt;A Peek at Trends in Machine Learning&lt;/a&gt;
&lt;p&gt;arxivの論文は、（査読がないこともあり）日々新しい論文が投稿されます。つまり、Google、Facebook、Microsoftなどの先端の取り組みが、査読前にどんどん論文として公開されています。これは、特に1年や半年単位で目標を設定して取り組むような従来型の大企業の中央研究所にとっては、機械学習の先端のアルゴリズム自体を研究開発するのはかなりのチャレンジになってきていると感じています。これについては「ただ部品を足しているだけ」という批判もありますが、牧歌的な時代のスピード感から目まぐるしく変わってきているのは明らかです。&lt;/p&gt;
&lt;p&gt;最近では、日夜新しいarxivの論文を読み漁る人のために、新着論文をより良くチェックするための
という取り組みもされています。&lt;/p&gt;
&lt;script async src="https://static.medium.com/embed.js"&gt;&lt;/script&gt;&lt;a class="m-story" href="https://medium.com/@arxivtimes/arxivtimes%E3%81%AE%E3%83%80%E3%83%83%E3%82%B7%E3%83%A5%E3%83%9C%E3%83%BC%E3%83%89%E3%82%92%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F-4f2f7190b7e8"&gt;arXivTimesのダッシュボードをリリースしました&lt;/a&gt;
&lt;h3 id="オープンな論文が加速するオープンソースの機械学習"&gt;オープンな論文が加速するオープンソースの機械学習&lt;/h3&gt;
&lt;p&gt;今年の3月にDeep Forestという論文がarxivで公開され、”Deep Learningよりも性能が良い”という主張もあって話題になりました。日本でもQiitaに訳が公開されるなど話題になったので記憶に残っている人もいるかと思います。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://arxiv.org/abs/1702.08835v4" data-iframely-url="//cdn.iframe.ly/kjxpnMP"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;実はこの論文で提案された手法は、論文が出た日（2017/2/28）の約一週間後（2017/3/5）にはR実装がでてきて、その後Python実装も出てきました。このやり取りは、以下のLightGBMのissueでなされ、論文の再現性がないのではないか（謳われているような性能が出なかった）という話になりました。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://github.com/microsoft/LightGBM/issues/331" data-iframely-url="//cdn.iframe.ly/bve0cNQ?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;arxivで公開された論文のOSS実装が1週間後には実装が出てきてコミュニティの議論が始まる、というスピードの時代になっている象徴的な出来事です。&lt;/p&gt;
&lt;p&gt;また、会議によっては論文投稿時に実装を公開することが求められる国際会議も増えてきていると聞きます。&lt;/p&gt;
&lt;h3 id="雑感"&gt;雑感&lt;/h3&gt;
&lt;p&gt;機械学習のアルゴリズム自体を考えることは非常に重要な仕事です。そして、オープンな論文、コンペティション、そしてOSS化されるという流れの加速、そこから得られた新しい知見を素早くビジネスへ適用するのがとても速くできる時代になりました。&lt;/p&gt;
&lt;p&gt;個人的には、アルゴリズムそのものよりも、それをビジネスに活かすにはどうすればいいか、というところにフォーカスすることのほうが楽しい時代になってきたのでは、とも思います。&lt;/p&gt;
&lt;p&gt;この状況を翻って言うと、「自社だけができる特別な機械学習のアルゴリズム」というのを押し出していくのはうまくいかない時代に入ったともいえます。（もちろん、アカデミアの人たちはデータを用意できればこうした最先端の取り組みを今後も推し進めていくでしょうが）企業1社で、Google、Facebook、Microsoftなど世界の多くの最先端の人たちよりも素晴らしいアルゴリズムが素早く出せる理由は何でしょうか？それが、オープンソースベースの機械学習の強い理由でしょう。&lt;/p&gt;
&lt;p&gt;アカデミアでは昔から「
」という言葉が知られていますが、先行研究という巨人に乗って次に進むということを示しています。オープンソースベースの機械学習でも、「巨人の肩に乗る」ということが顕著になってきています。&lt;/p&gt;</description></item><item><title>グローバル企業でコミュニケーションを円滑にするための「異文化理解力」</title><link>https://chezo.uno/post/2017-07-30_culture-map/</link><pubDate>Sat, 29 Jul 2017 19:45:33 -0700</pubDate><guid>https://chezo.uno/post/2017-07-30_culture-map/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2017-07-30_culture-map/1_XqRaeeRpBtmUfBRcCPBVjw_hu_18278c40095eb5b.webp 320w, https://chezo.uno/post/2017-07-30_culture-map/1_XqRaeeRpBtmUfBRcCPBVjw_hu_75282bc90510e466.webp 480w, https://chezo.uno/post/2017-07-30_culture-map/1_XqRaeeRpBtmUfBRcCPBVjw_hu_407b8619e4aff206.webp 640w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2017-07-30_culture-map/1_XqRaeeRpBtmUfBRcCPBVjw_hu_18278c40095eb5b.webp"
width="640"
height="320"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;同僚の
から勧められて、エリン・メイヤーの「異文化理解力」を読んだ。グローバル企業で働く人間として非常に示唆に富んだ良い本だった。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B013WB5BJS/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
異文化理解力 ― 相手と自分の真意がわかる ビジネスパーソン必須の教養
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;よく「日本は」「海外は」という議論が巻き起こることがあるが、これはそもそもナンセンスだなとぼんやりと思っていたことを明確にしてくれた。それは、文化は国によって相対的なのだ、ということである。&lt;/p&gt;
&lt;p&gt;無論、こう書くと「自分は日本人の中でも特殊だ」とかいう国の中での分散はもちろんあるのだが、それが当たり前と生まれ育ってきたものは何が特殊なのかは相対化しないと認識できない。本書の中では、「
」ということに対して、デンマーク人は特に違和感なく話しているという例が出ている。&lt;/p&gt;
&lt;p&gt;これは、ただ国ごとにステレオタイプを列挙しているというよりのではなく、メイヤーは多くの国のビジネスをするマネージャーなどに対して調査をした。その結果、以下の8つの指標について、国ごとに相対的に比較をすることで、カルチャーマップというものを記述している。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;コミュニケーションは「ローコンテクスト」？「ハイコンテクスト」？&lt;/li&gt;
&lt;li&gt;評価の際のネガティブ・フィードバックは「直接的」？「間接的」？&lt;/li&gt;
&lt;li&gt;説得方法は「原理優先」？「応用優先」？&lt;/li&gt;
&lt;li&gt;リーダーシップは「平等主義」？「階層主義」？&lt;/li&gt;
&lt;li&gt;決断のステップは「合意志向」？「トップダウン式」？&lt;/li&gt;
&lt;li&gt;信頼はの構築は「タスクベース」？「関係ベース」？&lt;/li&gt;
&lt;li&gt;見解の相違の解消は「対立型」？「対立回避型」？&lt;/li&gt;
&lt;li&gt;スケジューリングは「直線的な時間」？「柔軟な時間」？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;具体的には、下記の記事にフランス、ドイツ、中国、日本でのカルチャーマップの例があるので見てみると良いだろう。（なお、記事のグラフでは点で記述されているが、実際には正規分布のような分散の平均が点で結ばれていると思ってほしい、と書籍には書いてある）&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;この中の例では、同じアジアでも中国と日本は決断に関しては中国がトップダウン式で、日本は合意志向といったように、国ごとに大きな違いがある。反対に、ドイツと日本では時間が直線的に流れている（きっちりと時間を守るのが当たり前という認識で良い）が、中国はかっちりとスケジューリングをするのではなく変化に柔軟に対応する文化である。&lt;/p&gt;
&lt;p&gt;つまり、我々がざっくり「アジア人だから」と言っても、その国によって相対的な文化差があり、それを踏まえた上で考えなければならないし、同じように「欧米」とくくるのも危険だということである。（オランダ人とアメリカ人のネガティブ・フィードバックの違いのエピソードは非常に印象深かったので、読んでみると良いと思う）&lt;/p&gt;
&lt;p&gt;個人的には、この本を読むことで、オランダみたいなヨーロッパの人でもアメリカ人の褒めまくるのは胡散臭いと思っているということを知れたし、「ああ、だからアメリカ人は褒めまくるのか。アメリカ人のメールの文頭の”awesome!”は日本の『お疲れ様です』くらいでちょうどいいな」という知見を得られた。&lt;/p&gt;
&lt;p&gt;シリコンバレーベースのグローバル企業で働いていると、会社にもよると思うがなんだかんだでアメリカの色が強くて、”diversity”というのも彼らが考える枠の中なのだなぁということを認識することがある中で、こうした本を読むことで、日本人としての自分の立ち位置を再認識し、どう振る舞うかを考え直す良いきっかけとなった。&lt;/p&gt;</description></item><item><title>Thinkpad X1 Carbon (2017)をWindows 10/Ubuntu 17.04デュアルブートにした</title><link>https://chezo.uno/post/2017-07-10_thinkpad-x1-carbon--2017--windows-10-ubuntu-17-04-----------9f73d89073c3/</link><pubDate>Sun, 09 Jul 2017 08:11:00 -0700</pubDate><guid>https://chezo.uno/post/2017-07-10_thinkpad-x1-carbon--2017--windows-10-ubuntu-17-04-----------9f73d89073c3/</guid><description>&lt;p&gt;前回
について書きましたが、今回はUbuntu 17.04とのデュアルブートについて書きます。&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://chezo.uno/post/2017-07-10_thinkpad-x1-carbon--2017--windows-10-ubuntu-17-04-----------9f73d89073c3/0_3JDXsLhEggqGGeR_.jpg"&gt;&lt;figcaption&gt;
&lt;h4&gt;Ubuntu 17.04 on 4k monitor&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;基本的に、X1 Carbonに最初から入っているWindows 10がBitlockerが有効化されていてセキュアなので、以下を参照しながらデュアルブートにしました。（とはいってもうっかりUbuntu側をセキュアにし忘れた）&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;新しいマシンなので、OS新しめにしておいたほうが良いかなと思ったので、Ubuntuは17.04にしました。とりあえず、長く使うかもわからないなぁと思ったので、楽にできる
で入れました。&lt;/p&gt;
&lt;h3 id="トラックポインタタッチパッドが動かない問題"&gt;トラックポインタ＆タッチパッドが動かない問題&lt;/h3&gt;
&lt;p&gt;デフォルトだと、16.04も17.04もトラックポインタもタッチパッドも動きません。USBのThinkpadキーボードがあったのでなんとか回避できましたが、これができないと結構きつかったです。&lt;/p&gt;
&lt;p&gt;ursmさんのブログのお陰でマウス系が動かない問題も回避できました。(とりあえず、カーネルパラメータに&lt;code&gt;psmouse.proto=imps&lt;/code&gt;を指定してる)&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;これだと、タッチパッドに手を置くと誤動作するので、BIOSでタッチパッドをオフにしておきます。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h3 id="1password問題"&gt;1Password問題&lt;/h3&gt;
&lt;p&gt;1Passwordに依存していたのですが、Keypassとかを入れるのはだるいなということで、1PasswordはWineを使って入れています。あまり困っていないです。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h3 id="usキーボードでの右altでime-on左altでime-off"&gt;USキーボードでの右AltでIME on/左AltでIME off&lt;/h3&gt;
&lt;p&gt;人間はIMEの状態を覚えたくないので（２回目）、右AltをIME on/左AltをIME offにします。やり方は、ここを参考に設定しました。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;ただし、キーボード(日本語)が存在しないと、Mozcで入力しているときなぜか日本語配列になってしまうので、なければ追加します。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h3 id="ctrl-capsの入れ替え--emacs風キーバインド"&gt;Ctrl-Capsの入れ替え &amp;amp; Emacs風キーバインド&lt;/h3&gt;
&lt;p&gt;gnome-tweak-toolを使う。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;sudo apt-get install gnome-tweak-tool&lt;/p&gt;
&lt;p&gt;ちなみに、gnome-tweak-toolでEmacs風のキー設定にできる。こちらはWindowsでkeyhacをやるより賢く？、テキスト入力エリアのときだけEmacs keybindになってくれるので、自分のようなぬるいEmacs keybindを求めている人には助かります。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;ただ、この方法だとmediumのようにkeyboard shortcutをJSで奪ってくるタイプのサイトには負けるらしく、もう少し厳密に必要な人は別の手段が必要そうです。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h3 id="デュアルブート下で時計がずれるのを防ぐ"&gt;デュアルブート下で時計がずれるのを防ぐ&lt;/h3&gt;
&lt;p&gt;そのままだと、Windowsに戻ったときに9時間時間がずれるので、Ubuntu側で設定を変えておく。&lt;/p&gt;
&lt;p&gt;sudo timedatectl set-local-rtc true&lt;/p&gt;
&lt;h3 id="grubの設定変更をguiでする"&gt;Grubの設定変更をGUIでする&lt;/h3&gt;
&lt;p&gt;Ubuntuをprimaryでやろうとしたけど、Windowsの方をよく使っているので、Grubの優先順位をGrub Customizer使って変える。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;sudo add-apt-repository
&lt;br&gt;
sudo apt-get update &amp;amp;&amp;amp; sudo apt-get install grub-customizer&lt;/p&gt;
&lt;h3 id="エディタはvisual-studiocode"&gt;エディタはVisual Studio Code&lt;/h3&gt;
&lt;p&gt;別にJet Brains製品でもいいんですけど、とりあえずVSCodeをdebから入れておきました。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h3 id="python3とjupyterを入れる"&gt;Python3とJupyterを入れる&lt;/h3&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;ymotongpooさんの記事にもあるとおり、Debian/Ubuntu系のvenvは余計なものを入れるらしいので、virtualenv入れて使っています。&lt;/p&gt;
&lt;p&gt;sudo apt-get install python3&lt;br&gt;
pip3 install virtualenv&lt;br&gt;
virtualenv hoge&lt;br&gt;
. hoge/bin/activate&lt;/p&gt;
&lt;h3 id="irubyを入れる"&gt;iRubyを入れる&lt;/h3&gt;
&lt;p&gt;まずは、rbenvとruby-buildを入れます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;次にiRubyですが、READMEに従って入れましょう。ただ、一点libzmq-devは16.04にしかないのでlibzmq3-devを入れましょう。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;READMEのインストール手順を改変したのがこちら。&lt;/p&gt;
&lt;p&gt;sudo apt install libtool libffi-dev ruby ruby-dev make&lt;br&gt;
gem install cztop&lt;/p&gt;
&lt;p&gt;sudo apt install git libzmq3-dev autoconf pkg-config&lt;br&gt;
git clone
&lt;br&gt;
cd czmq&lt;br&gt;
./autogen.sh &amp;amp;&amp;amp; ./configure &amp;amp;&amp;amp; sudo make &amp;amp;&amp;amp; sudo make install&lt;/p&gt;
&lt;p&gt;gem install iruby&lt;br&gt;
iruby register &amp;ndash;force&lt;/p&gt;
\[追記\]&lt;p&gt;とのことです。わざわざ自分でビルドしなくても、 &lt;code&gt;sudo apt install czmq&lt;/code&gt; でいけるのかな。&lt;/p&gt;
\[/追記\]&lt;h3 id="sphinxの執筆環境"&gt;Sphinxの執筆環境&lt;/h3&gt;
&lt;p&gt;Dockerのドキュメントに従って入れる。操作に &lt;code&gt;sudo&lt;/code&gt; いることすら知らなかった。。。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;あとは、以下の通りでOK。&lt;/p&gt;
&lt;p&gt;sudo docker pull chezou/sphinx-recommonmark&lt;br&gt;
sudo docker run -it -v $(pwd):/documents chezou/sphinx-recommonmark:latest make latexpdfja&lt;/p&gt;
&lt;p&gt;&lt;em&gt;\[追記\]user権限でもいけるとのこと\[/追記\]&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="iphoneでの有線テザリング"&gt;iPhoneでの有線テザリング&lt;/h3&gt;
&lt;p&gt;勉強会などでテザリングが必要なときがよくありますが、その場合は&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;sudo apt-get install ipheth-utils&lt;br&gt;
sudo modprobe ipheth&lt;/p&gt;
&lt;p&gt;とすればOKです。これを永続化するためには、先程のサイトにあるように &lt;code&gt;/etc/modules&lt;/code&gt; への登録をお忘れなく。&lt;/p&gt;
&lt;h3 id="pbcopypbpaste"&gt;pbcopy/pbpaste&lt;/h3&gt;
&lt;p&gt;xselを使えばいけます。やり方はこちらのとおりです。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;sudo apt-get install xsel&lt;/p&gt;
&lt;p&gt;xselをあとは以下のようにaliasを設定すればOK。 &lt;code&gt;~/.zshrc&lt;/code&gt;に入れました。&lt;/p&gt;
&lt;p&gt;alias pbcopy**=&lt;strong&gt;&amp;lsquo;xsel &amp;ndash;clipboard &amp;ndash;input&amp;rsquo;&lt;br&gt;
alias pbpaste&lt;/strong&gt;=**&amp;lsquo;xsel &amp;ndash;clipboard &amp;ndash;output&amp;rsquo;&lt;/p&gt;
&lt;h3 id="環境変数周り用にenvchainを入れる"&gt;環境変数周り用にenvchainを入れる&lt;/h3&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;AWSのsecretsなんかを引数に渡して実行するために便利なenvchainを入れました。READMEに従うだけです。今回、libsecretのヘッダが入っていなかったので入れました。&lt;/p&gt;
&lt;p&gt;sudo apt install libsecret-1-dev&lt;/p&gt;
&lt;h3 id="まとめ"&gt;まとめ&lt;/h3&gt;
&lt;p&gt;指紋認証とか細かいものは動きませんが、Skypeも入ってDMM英会話もできそうだし、BluetoothもWiFiも特に不安定なことなく動いています。Slackもアプリあるので困りません。会社的のVPNも通るし。&lt;/p&gt;
&lt;p&gt;その他細かい設定は以下のサイトからつまんで設定しました。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;困っていることとしては、例によってメモアプリをどうするかという点（これはGoogle Keepでなんとかやろうとしている）と、辞書をどうするかという点（これは絶望的）です。まぁ、ブラウザベースで頑張るかなぁ。&lt;/p&gt;</description></item><item><title>MBPからThinkpad X1 Carbon(2017)に移行した</title><link>https://chezo.uno/post/2017-07-08_mbp--thinkpad-x1-carbon-2017-------46c374167b79/</link><pubDate>Fri, 07 Jul 2017 20:14:24 -0700</pubDate><guid>https://chezo.uno/post/2017-07-08_mbp--thinkpad-x1-carbon-2017-------46c374167b79/</guid><description>&lt;p&gt;joker1007さんも
こともあり、MacBook Pro Retina(2015) 15インチが重すぎてしんどいので、
を買いました。2.04kgから1.13kgへと大幅軽量化しました。外での打ち合わせや出張も結構増えてきて、Macは電源も含めると辛い重さになるので思いきって買いました。背中と腰が死にそうなので軽さは正義です。(
色々ご相談に乗っていただきありがとうございました！）&lt;/p&gt;
&lt;p&gt;選定のポイントは&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1.3kg以下&lt;/li&gt;
&lt;li&gt;英語キーボード&lt;/li&gt;
&lt;li&gt;メモリ16GB&lt;/li&gt;
&lt;li&gt;15万円くらいまで&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;という条件で選んだのですが、最後まで残ったのはDell XPS13とX1 Carbonだけでした。最初は値段の安さと軽さに惹かれてZenbook 3をメインに機能と値段の比較表を書いていたんですが、途中で店頭でキーボード触ってみて、日本語キーボードだとホームポジションのままでエンターを打てない体になっていることに気づいたため、急遽USキーボードの条件を追加しました。最終的には、i7/512GB SSD(NVMe)/16GB RAMとモリモリになったため、17万くらいにはなったのですが、同じ構成をmacで組もうとしても20万は軽く超えるし重いので(macbookは軽いけどAirより遅いらしいし、MBP 13インチも1.37kgで26万で2コアi7だし)、良い選択をしたと思っています。&lt;em&gt;\[追記\]ちなみに、1.3kg以下のマシンになると4コアは無理で、どちらかというとCore mとかYシリーズをどうしたら避けられるかという戦いになります。なので、はなから4コアは捨てています。\[/追記\]&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="合わせて買ったもの"&gt;合わせて買ったもの&lt;/h3&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;HDMIはついているので、プレゼン用にVGA変換コネクタを買いました。問題なく動いています。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;職場のモニターがDisplayPortじゃないと最大解像度が出なかったので買いました。自宅のフィリップスの4kモニタはHDMIで4k出ています。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;付属のケーブルが長いため、短くするために購入しました。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;なお、モバイル用のACアダプタとしてSwitchの充電器を買ったのですが、W数が足りなくスリープ時にしか充電しませんでした。&lt;/p&gt;
&lt;h3 id="macosからwindows-10ubuntuデュアルブートへ"&gt;macOSからWindows 10/Ubuntuデュアルブートへ&lt;/h3&gt;
&lt;p&gt;512GBのSSD積んでいるのでWindows 10とUbuntuのデュアルブートにしています。会社の業務でOfficeとWebexへ依存しており、両方共Linuxでは厳しいということもあり、デュアルブートにしています。とはいえ、VMでもいいじゃないのという話もあるのでおいおい構成は見ていきたいと思っています。社内のエンジニアでLinuxメインでGoogle SlideとWebex on VMの人もいるみたいですが、様子見中です。&lt;/p&gt;
&lt;p&gt;Ubuntuのデュアルブートはちょこっとハマりどころはあったのですが、また別途詳細を書こうと思います。&lt;/p&gt;
&lt;p&gt;&lt;em&gt;\[追記\]書きました&lt;/em&gt;
&lt;em&gt;\[/追記\]&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="windowsの開発環境周りの設定"&gt;Windowsの開発環境周りの設定&lt;/h3&gt;
&lt;p&gt;基本的にはymotongpooさんのまとまった記事を参考にしました。&lt;/p&gt;
&lt;div style="left: 0; width: 100%; height: 190px; position: relative;"&gt;&lt;iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Fymotongpoo.hatenablog.com%2Fentry%2F2017%2F01%2F05%2F101233" style="top: 0; left: 0; width: 100%; height: 100%; position: absolute; border: 0;" allowfullscreen scrolling="no"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;Powershellをベースに、以下のものをいれました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;Python 3&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cmderの代わりにbabunも試しましたが、chocolateyでemacsもpython3も入らずに諦めまいした。&lt;/p&gt;
&lt;p&gt;choco install poshgit&lt;br&gt;
choco isntall python3&lt;/p&gt;
&lt;h4 id="cmderのフォント"&gt;Cmderのフォント&lt;/h4&gt;
&lt;p&gt;特にこだわりはなかったので、RictyDiminishedを使いました。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://github.com/mzyy94/RictyDiminished-for-Powerline" data-iframely-url="//cdn.iframe.ly/2p1vIji?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;h4 id="python-3とjupyter環境の導入"&gt;Python 3とjupyter環境の導入&lt;/h4&gt;
&lt;p&gt;chocolateyでpython3を入れれば、 &lt;code&gt;python&lt;/code&gt; で起動します。簡単ですね。&lt;/p&gt;
&lt;p&gt;でも、numpyやscipy、pandasやjupyterはAnaconda使わないと簡単に入らないんじゃないの？と思う方もいると思いますが、Python 3ではwheel形式のバイナリでインストールすれば詰まることなく入れることができます。&lt;/p&gt;
&lt;p&gt;今回は、下記のブログを参考に導入を勧めていきました。&lt;/p&gt;
&lt;div style="left: 0; width: 100%; height: 190px; position: relative;"&gt;&lt;iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Frinor.hatenablog.com%2Fentry%2F2015%2F07%2F11%2F105210" style="top: 0; left: 0; width: 100%; height: 100%; position: absolute; border: 0;" allowfullscreen scrolling="no"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;といっても、厄介なのは様々な事情でscipyが &lt;code&gt;pip install scipy&lt;/code&gt; では入らないので、
からWindows用のwhlをダウンロードしてきて、pipで入れます。ついでに、numpyもmkl最適化されたものを入れます。（なお、良い子はvenv使って仮想環境activateしてから使いましょう）&lt;/p&gt;
&lt;p&gt;pip install &amp;ndash;upgrade pip&lt;br&gt;
pip install numpy‑1.13.1+mkl‑cp36‑cp36m‑win_amd64.whl&lt;br&gt;
pip install scipy‑0.19.1‑cp36‑cp36m‑win_amd64.whl&lt;br&gt;
pip install jupyter notebook&lt;/p&gt;
&lt;p&gt;これで、いつもどおりjupyterを起動できます。&lt;/p&gt;
&lt;p&gt;jupyter notebook&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://chezo.uno/post/2017-07-08_mbp--thinkpad-x1-carbon-2017-------46c374167b79/0_fKbgSjEf0bSSnsUV_.jpg"&gt;&lt;figcaption&gt;
&lt;h4&gt;jupyter notebook on Windows 10&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h4 id="irubyのインストール"&gt;irubyのインストール&lt;/h4&gt;
&lt;p&gt;chocolateyからRubyをインストールしたんですが、MSYSへの依存があるからダメだ！みたいなことを怒られたので、Ruby InstallerからRubyを入れ直しました。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2017-07-08_mbp--thinkpad-x1-carbon-2017-------46c374167b79/1_XZBLeryhSifN_qyyhjQIFg_hu_840254778fb48f3.webp 320w, https://chezo.uno/post/2017-07-08_mbp--thinkpad-x1-carbon-2017-------46c374167b79/1_XZBLeryhSifN_qyyhjQIFg_hu_e4894a1f9e0b01a2.webp 480w, https://chezo.uno/post/2017-07-08_mbp--thinkpad-x1-carbon-2017-------46c374167b79/1_XZBLeryhSifN_qyyhjQIFg_hu_5ffcced3b88306ee.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2017-07-08_mbp--thinkpad-x1-carbon-2017-------46c374167b79/1_XZBLeryhSifN_qyyhjQIFg_hu_840254778fb48f3.webp"
width="760"
height="195"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;後は以下の方法を使いiRubyを入れました。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://qiita.com/mix_dvd/items/3e4305d31e7a6785fbb0" data-iframely-url="//cdn.iframe.ly/0BvB6wB?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;が、後から調べてみると、
もあるみたいです。まぁ、今回はいいか。&lt;/p&gt;
&lt;h4 id="sphinxでの執筆環境"&gt;Sphinxでの執筆環境&lt;/h4&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2017-07-08_mbp--thinkpad-x1-carbon-2017-------46c374167b79/1_oTl5ZTAqQZ0JL3_rRVOIMQ_hu_ea311efb278a3b3c.webp 320w, https://chezo.uno/post/2017-07-08_mbp--thinkpad-x1-carbon-2017-------46c374167b79/1_oTl5ZTAqQZ0JL3_rRVOIMQ_hu_691207df8be13cc7.webp 480w, https://chezo.uno/post/2017-07-08_mbp--thinkpad-x1-carbon-2017-------46c374167b79/1_oTl5ZTAqQZ0JL3_rRVOIMQ_hu_299e88beb7a3e7f4.webp 700w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2017-07-08_mbp--thinkpad-x1-carbon-2017-------46c374167b79/1_oTl5ZTAqQZ0JL3_rRVOIMQ_hu_ea311efb278a3b3c.webp"
width="700"
height="307"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;以前blogにも書いたとおり、Dockerベースでやっています。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2017-04-08-docker-imagewoyong-yi-sitewindows-slash-macosdesumuzunitong-ren-zhi-wozuo-tutahua-sphinxbian/" data-iframely-url="//iframely.net/CsslNL8"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;注意しないといけないのが、current directoryの指定のしかたが、 &lt;code&gt;$(pwd)&lt;/code&gt; から &lt;code&gt;${PWD}&lt;/code&gt; にPowerShellだと変わることくらいです。&lt;/p&gt;
&lt;p&gt;docker run -it -v ${PWD}:/documents chezou/sphinx-recommonmark:latest make latexpdfja&lt;/p&gt;
&lt;p&gt;なお、エディターはVisual Studio Codeを使っています。&lt;/p&gt;
&lt;h4 id="emacsライクなキーバインドの設定"&gt;Emacsライクなキーバインドの設定&lt;/h4&gt;
&lt;p&gt;しばらくmacを使っていたので、ctrl+f/b/p/n/a/eなどで移動がしないとテキストを書くときの生産性が下がってしまいます。ここは、keyhacとfakeymacsを使って、対応しました。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://sites.google.com/site/craftware/keyhac-ja" data-iframely-url="//cdn.iframe.ly/HxZeq7t"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://github.com/smzht/fakeymacs" data-iframely-url="//cdn.iframe.ly/RT5rM2B?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;ただ、そこまでEmacsの制約強い環境が必要というわけでもないゆるふわなので、結構fakeymacsよりはゆるくしています。config.pyは
です。&lt;/p&gt;
&lt;p&gt;Ctrl-Capsはお好みの方法で入れ替えてください。僕は普通にレジストリで入れ替えてしまいました。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://www.shin-tan.com/swapKey" data-iframely-url="//cdn.iframe.ly/Mx99niK?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;h4 id="右altでime-on左altでime-off"&gt;右AltでIME on、左AltでIME off&lt;/h4&gt;
&lt;p&gt;macのときもUSキーボードで右cmdでIME on、左cmdでIME offにしていたのですが、これはalt-ime-ahkを使っています。（人間はIMEの状態を覚えたくない）&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://www.karakaram.com/alt-ime-on-off/" data-iframely-url="//cdn.iframe.ly/gcQgbaP?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;本当はkeyhac一つでやろうと思ったんですが、alt空打ちの設定をすると、他のAltと同時押し全パターンを記述しないといけない臭いがしたので諦めました。&lt;/p&gt;
&lt;h4 id="日英英日英英辞書シソーラス"&gt;日英/英日/英英辞書/シソーラス&lt;/h4&gt;
&lt;p&gt;ここが完全に鬼門で、macOSの辞書.appはチートであることを改めて思い知らされています。仕事柄英語の読み書きは非常に多いのですが、良い解が見つかっていません。昨今、英辞郎の辞書も暗号化がかかったみたいで、串刺し検索できる質の良い辞書がない感じです。&lt;/p&gt;
&lt;p&gt;今は、アプリとしては
を使いつつ、
を併用しています。&lt;/p&gt;
&lt;p&gt;また、DMM英会話用にはChrome Extensionで以下の2つを使っています。Google Dictionaryの方は日本語を出すことで、ダブルクリックで選択すると英日と英英が同時に出ます。記事を読みながらの辞書引きには良いです。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chrome.google.com/webstore/detail/google-dictionary-by-goog/mgijmajocgfcbeboacabfgobmjgjcoja" data-iframely-url="//cdn.iframe.ly/SwcfKz8"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;なお、英文を書くときには文法をチェックしてくれるGrammarlyにもお世話になっています。Grammarlyは同僚のスコットランド人も使っていると聞いて有料会員になっていますが、海外のカンファレンスのproposalを書くときも、Businessの固めのチェックモードに切り替えることで対応ができて良いです。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://www.grammarly.com/" data-iframely-url="//cdn.iframe.ly/qul5udp?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;h4 id="メモアプリ"&gt;メモアプリ&lt;/h4&gt;
&lt;p&gt;macOSではQuiverを使っていたんですが、Quiverはmacでしか使えないので、Google Keepを試してみています。最終的に、ConfluenceのWikiにコピペするのが辛いのですが、Windows/Linuxまたいだメモはなかなか良いのがないので悩み中です。&lt;/p&gt;
&lt;h3 id="apple-wireless-keyboardtrackpadはどうしたか"&gt;Apple Wireless Keyboard/Trackpadはどうしたか&lt;/h3&gt;
&lt;p&gt;結論から言うと使わないことにしました。キーボードは
を買えば行けるのですが、これを買うのにもう少し足すとThinkpadのキーボードが買えるため、そっちに合わせることにしました。特に、Chromeのタブ移動がCtrl+page up/downなので、fn押しながら矢印がきつくなったのが主因です。&lt;/p&gt;
&lt;p&gt;トラックパッドも頑張って有償のソフト入れてもスクロールと右クリックができるようになるだけなので、ちょっと辛いなと思って切ることにしました。&lt;/p&gt;
&lt;h3 id="まとめ"&gt;まとめ&lt;/h3&gt;
&lt;p&gt;マシンが軽量になり、性能は高くなり、総じて満足しています。Windowsも昔に比べると、そこまで問題を感じないですし、だめならLinuxメインで行けばいいかなと思っています。&lt;/p&gt;
&lt;p&gt;Ubuntu周りの話はまた別の機会があれば書こうと思います。&lt;/p&gt;</description></item><item><title>企業がユーザを守るための学術データ公開</title><link>https://chezo.uno/post/2017-05-26_public-dataset/</link><pubDate>Thu, 25 May 2017 19:17:16 -0700</pubDate><guid>https://chezo.uno/post/2017-05-26_public-dataset/</guid><description>&lt;p&gt;人工知能学会（以下JSAI）で発表された論文が、Pixivのデータを「晒した」ということで盛り上がっています。詳細は、以下のtogetterを見ていただければと思いますが、ざっくり言うとPixivで公開されていた女性向けランキングトップ10の二次創作小説（R-18）に対して「有害表現」を分類するという目的で、作者名とURLを論文に書いて炎上したということになります。&lt;/p&gt;
&lt;p&gt;なお、以下のまとめの片方はコンテンツ提供側に、片方が学術的な立場に偏ったものになっています。今回、これに対して一つの解決策になるかもしれないと思い、自分の考えを書きます。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://togetter.com/li/1113766" data-iframely-url="//cdn.iframe.ly/9KD1PsY"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://togetter.com/li/1113936" data-iframely-url="//cdn.iframe.ly/lxFu7im"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;h3 id="企業によるデータ公開の嬉しさ"&gt;企業によるデータ公開の嬉しさ&lt;/h3&gt;
&lt;p&gt;私は、前職で主に大学などの公的な研究機関向けに自社のコンテンツを学術目的で提供するという取り組みを行っていました。詳細は、以下のブログを読んでいただければと思いますが、論文を書くためのデータを提供しますよ、という話でした。&lt;/p&gt;
&lt;div style="left: 0; width: 100%; height: 190px; position: relative;"&gt;&lt;iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Ftechlife.cookpad.com%2Fentry%2F2015%2F02%2F24%2F161915" style="top: 0; left: 0; width: 100%; height: 100%; position: absolute; border: 0;" allowfullscreen scrolling="no"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;【2017/05/27追記】&lt;br&gt;
こちらで
いただいたのですが、Pixivさんは
していますが、学習済みのモデルは利用できる用途が非常に限定されるので、多くの研究者にとってはあまり嬉しくありません。&lt;br&gt;
【/追記】&lt;/p&gt;
&lt;p&gt;前提としては、（Webサービスにはよくある話ですが）投稿していただいたコンテンツは会社に帰属するという規約ではあるものの、ユーザさんに対して不利益があってはいけない、という立場でデータ公開をしていました。&lt;/p&gt;
&lt;p&gt;研究者へのメリットとしては、以下のような物を狙っていました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;通常中の人しか手に入らない、まとまった量のデータが手に入る&lt;/li&gt;
&lt;li&gt;後発の研究に対して再現性を担保されている（標準的なデータセットたりうる）&lt;/li&gt;
&lt;li&gt;チャンスが有れば、共同研究の糸口になる（資金獲得のルートを手に入れる）&lt;/li&gt;
&lt;li&gt;クローラを書く時間を、研究に当てられる&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;特に一点目については、IT系の特定の大企業が情報を独占しており、それが外に出ることがまずない、という指摘がなされていますし、それも原因でアカデミアからどんどん優秀な研究者がGoogleやFacebookなどの企業に吸い込まれているという話もあります（個人的には、ユーザに有益なサービスを提供する事がデータを集める重要なポイントだとは思いますが）。以下の記事からも、データは新しい石油だという事がわかります。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;一方、提供をしていた企業側としての狙いは以下のようなものでした。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自社に関係のある研究を加速することで学術界に貢献をする・優秀な学生にリーチする&lt;/li&gt;
&lt;li&gt;最先端の技術を自社コンテンツに適用したものを、いち早く応用につなげる&lt;/li&gt;
&lt;li&gt;コンテンツID、ユーザ名などをマスキングすることで、論文に対して直接的な情報を出さなくても良い&lt;/li&gt;
&lt;li&gt;自社のユーザが不利益を被るようなものをpublishさせない&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この中でも特に最後のポイントについて書きたいと思います。&lt;/p&gt;
&lt;h3 id="ユーザを守るためのデータ公開"&gt;ユーザを守るためのデータ公開&lt;/h3&gt;
&lt;p&gt;あまりこの点については触れられることはなかったかもしれませんが、クックパッドでは論文投稿の前にドラフトを送ってもらうことを約束してデータ公開をしています。これは何のために行っているかというと、法的・広報的にNGなものがないか、ということもありますが、ユーザに対して不利益が生じることはないか、という事を確認するために確認をしていました。&lt;/p&gt;
&lt;p&gt;例えば、「機械学習を使って、人の直感にあったマズイレシピランキングができました」という発表がもしあったとして、それに対して当然投稿者は不快な感情をいだきます。こうしたものに対して交渉するために、チェック機構が存在します。もし、手法が学術的に価値があったとしても「本当にマズイレシピでなければいけないのか。美味しいレシピランキングでも成立するのでは」などというように、本質に触れないポイントで改善の余地があるかもしれません。コンテンツ提供者にとって、投稿物は自身の表現の一つであり、プラットフォーム側は最大限それを尊重しなければいけません。学術向けにデータ公開することで、本丸である大切ユーザが離れては本末転倒です。&lt;/p&gt;
&lt;h3 id="データ公開による利用側提供側のコスト"&gt;データ公開による利用側・提供側のコスト&lt;/h3&gt;
&lt;p&gt;こうした確認をするために投稿の数週間前に、原稿を送ってくださいと言っていたのですが、これは投稿者側にとっては負担が大きいです。ギリギリまで改善するのが当たり前な大学の研究者にとっては、そのとおりだと思います。これについては、データ公開企業の確認者はさらにギリギリの〆切の中改善案を提案しなければいけないことや、大企業の研究所では投稿の数週間前に、社外発表申請のためにドラフトを社内申請しなければいけないということもあるのを知っていただければと思います。&lt;/p&gt;
&lt;p&gt;もう一つ、公開データを利用したい研究者に対する負荷として存在するのが、「研究科長の印鑑を押すこと」です。これは、良く「たかだかデータセット手に入れるために印鑑いるのだるいわー」と言われていたのですが、あくまで一種の契約を結ぶので、トラブル発生時に研究者（学生の場合もあります）に対して責任を問うのではなく、企業として組織同士で話せるようにという配慮の元、そういう条件を課していました（法務の人も交えてそういう立て付けにしました）。&lt;/p&gt;
&lt;h3 id="結局どういう形がいいのか"&gt;結局、どういう形がいいのか？&lt;/h3&gt;
&lt;p&gt;ここは、はっきりいって企業側が最低限のコストを払えるかにかかってきます。体力がない企業にとってはできないというのは間違いありません。ですが、トレードオフを認識した上でも、ユーザを守るために敢えて利用条件を付与した上で公開するという方法もあるのではないか？と思い、今回の記事を書きました。&lt;/p&gt;
&lt;p&gt;学術界としては野良でクローリングするよりも、公開データを使ったほうが再現性も保証されるので共通のベンチマーク対象になり、望ましいということがあります。そして、そちらを使うのが当たり前になるという効果が狙えます。&lt;/p&gt;
&lt;p&gt;また、今回の論文をデータ公開されて自分が確認をしていれば、著者と事前に議論をして不快に思われる部分をどうにかできたんだろうなぁと思います。&lt;/p&gt;
&lt;p&gt;JSAIについては、いつぞやの表紙問題も含めこういった炎上案件に対しては迅速に適切に対処してくれる学会だと思っています。無理はしないように、適切に対処されることを望んでいます。&lt;/p&gt;</description></item><item><title>体験したことのない概念を教えるということ</title><link>https://chezo.uno/post/2017-05-25_teach-what-i-dont-know/</link><pubDate>Wed, 24 May 2017 18:07:52 -0700</pubDate><guid>https://chezo.uno/post/2017-05-25_teach-what-i-dont-know/</guid><description>&lt;p&gt;最近、子供にルビィのぼうけんやスクラッチの本を買ったら子供が読んでとよくせがまれるようになった。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;ルビィのぼうけんはパパが隠した宝石を見つけるために様々な謎を解いていくという、フィンランドのリンダさんが描いた絵本だ。本の後半には、練習問題があり、パズルのような謎で、子供としては楽しく算数のようなパズルを解いていく感覚で取り組んでいる。&lt;/p&gt;
&lt;p&gt;例えば、人参、青リンゴ、ピーマン、オレンジなどを、緑グループと果物グループのベン図にそれぞれ配置する、なんて問題は幼稚園の頃には難しかったが、小学生になった今ではさらっと理解できるようになり、子供自身の成長を感じる。&lt;/p&gt;
&lt;p&gt;ルビィのぼうけんの訳者のとりいさんはpodcastでも笹田さんと共にインタビューさせていただいたのだけれど、訳語に対してとても丁寧に考えてらっしゃるなというのが読んでても伝わってくる。True/Falseは英語的には簡単な語だけど、真偽という言葉は難しい、などと当たり前だけど大事な子供の目線で言葉選びをきちんとされている。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;そんな娘が、最近ルビィのぼうけんの続編とスクラッチの本にハマっている。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;コンピュータの国のルビィは、アリスよろしくいなくなったマウスポインタを探すために、コンピュータの中に旅をする。そこで出会うのが、0/1で話すスイッチやCPU,GPUなどのハードウェア達。前作のジャンゴくんやユキヒョウ達よりももっと特徴的な仲間達と出会うのだ。そう、コンピュータの仕組みを説明する絵本なのだ。&lt;/p&gt;
&lt;p&gt;読み終わって練習問題がやりたいと言い出す子供と見ていると、付録の紙で自分のオリジナルのコンピュータを作ろうとか楽しい。1週間で家の中のコンピュータを探してみよう！という課題もうんうん唸りながらいろいろ探して来た。うちの子供賢いんじゃないの、とかちょっと親バカなことも頭によぎった。&lt;/p&gt;
&lt;p&gt;で、ふと、しめりけセンサー（湿度センサー）とおされる力センサー（圧力センサー）などのセンサーところになると、止まってしまった。これらのセンサーどういうところで活用できるかな？という課題なのだが、そもそも湿度ってなんだっけ？からわからないのである。「湿度とは空気中の水分の含有率で」、なんて話は通じないわけである。さあ困った。雨が降った時はジトジトするよね、とか、晴れた日はカラッとするよね、とか知識の引き出しから様々なものを見つけて来ては説明するが、腹落ちしている様子はない。&lt;/p&gt;
&lt;p&gt;同じような話が、スクラッチの本でもあった。ゲームをほぼやったことのない子供に対して、アクションゲームとは、ロールプレイングゲームとは、というのを説明したのだがイマイチピンと来ていない。夫婦で「大昔の人が伝聞から想像した象が支える世界みたいなのイメージしてるんだろうね」と話をしている。結局、自分で見聞きしたもの体験したことのないものを教えるのはすごく難しいという結論に至り、ウノやらなんじゃもんじゃといったボードゲームなんかを買った。（なんじゃもんじゃはカードのキャラに名前を勝手につけて覚えるという3歳児でもまぁ遊べるシンプルルールでおすすめ）&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h4 id="セサミストリートに学ぶ知らない概念を教えるということ"&gt;セサミストリートに学ぶ知らない概念を教えるということ&lt;/h4&gt;
&lt;p&gt;以前どこかでも言及をしたが、セサミストリートでは俳優などに一つの英単語を説明してもらう動画を公開している。&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/GxCplsdCwxY?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;この動画は、ロードオブザリングのガンダルフことイアンマッケランがクッキーモンスターに &lt;strong&gt;resist&lt;/strong&gt; という単語を教えている。最初は欲しいものを我慢することだよ、とか、この宝物である指輪（もちろん例の指輪）が欲しくても手に入れないことだよ、とかいっても通じないわけである。（いとしいしとなのに！）&lt;/p&gt;
&lt;p&gt;ところが、「君の大好きなこのとっても美味しいチョコチップクッキー。これ、食べたくて仕方ないよね？でも食べない。これが resist 」と言うと「あああああー！クッキーを食べたい、けど食べない。resistわかった！」と一発で理解するわけである。そう、やはり自分の事として考えられる体験に裏打ちしされて概念を獲得していくのが一番手っ取り早いのである。なので、最近はどういう体験をさせてあげられるかというのを以前より良く考えるようになった。&lt;/p&gt;
&lt;p&gt;当たり前の事ではあるんだけれど、抽象的な概念を獲得していく事が多くなってくると、子供の根源的なこの獲得の流れを忘れてしまうなぁと気づいた瞬間だった。&lt;/p&gt;</description></item><item><title>Amazonで買ったThinkpad トラックポイント キーボードを修理した</title><link>https://chezo.uno/post/2017-04-19-amazondemai-tutathinkpad-toratukupointo-kibodowoxiu-li-sita/</link><pubDate>Wed, 19 Apr 2017 11:58:17 -0700</pubDate><guid>https://chezo.uno/post/2017-04-19-amazondemai-tutathinkpad-toratukupointo-kibodowoxiu-li-sita/</guid><description>&lt;p&gt;みんな大好きトラックポイントキーボードですが、僕も昔使っていて最近miyagawaさんが使っていると知って再び使うようになりました。&lt;/p&gt;
&lt;p&gt;今はThinkpadがIBMからLenovoに移管したので、故障などしたらLenovoに問い合わせる必要があります。 ですが、保証書には3年保証と書いてあるものの、問い合わせ先のドメインがIBMのままで連絡先がわかりません。 そのため、Amazonで買って故障を経験した人が、「次回は修理ができるように通常の販売店で購入します」と書くなど皆さん苦労されているようです。 今回買って3ヶ月（厳密にはWishlistからいただいてから3ヶ月）で壊れたトラックポイントキーボードを修理したので、やり方をメモしておきます。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B00DLK4GN8/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
レノボ・ジャパン ThinkPad トラックポイント・キーボード - 英語 0B47190
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: レノボ・ジャパン&lt;/li&gt;
&lt;li&gt;発売日: 2013/06/25&lt;/li&gt;
&lt;li&gt;メディア: Personal Computers&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="1-保証書とamazonの購入履歴を用意する"&gt;1. 保証書とAmazonの購入履歴を用意する&lt;/h2&gt;
&lt;p&gt;Amazonは、アカウントサービスの注文履歴から、「注文の詳細／購入明細書」というのが見ることが出来ます。 通常、Amazonで買った保証書には、店舗名等は記載されていないのですが、こちらの購入明細を用意できれば問題はないそうです。&lt;/p&gt;
&lt;p&gt;僕の場合は、wishlistからいただいたものだったので、送っていただいた方に連絡をしてPDFを送付していただきました。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2017-04-19-amazondemai-tutathinkpad-toratukupointo-kibodowoxiu-li-sita/20170419185029_hu_54eb259f83a60a6d.webp 265w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2017-04-19-amazondemai-tutathinkpad-toratukupointo-kibodowoxiu-li-sita/20170419185029_hu_54eb259f83a60a6d.webp"
width="265"
height="43"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id="2-レノボスマートセンターに問い合わせる"&gt;2. レノボ・スマートセンターに問い合わせる&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;電話で問い合わせをします。携帯からだとお金がかかるので注意してください。 電話は、「Thinkpadシリーズ」と「その他・よくわからない場合」で分岐するところがあるのですが、なんとなく後者にしてしまいました。&lt;/p&gt;
&lt;p&gt;症状とともに連絡をしましょう。 なお、自分の場合はある朝起きたら熱を持ったキーボードが反応しなくなっていたため、修理を依頼しました。ケーブル起因なのか、マシン起因なのかということを問われるので、事前に切り分けをしておくと良いでしょう。&lt;/p&gt;
&lt;h2 id="3-メールで保証書とamazonの購入履歴を送付する"&gt;3. メールで保証書とAmazonの購入履歴を送付する&lt;/h2&gt;
&lt;p&gt;先方から教えていただけるメールアドレスに対してメールを送ります。すると、折り返し電話がかかってきます&lt;/p&gt;
&lt;h2 id="4-交換品が送られてくるのを受け取る"&gt;4. 交換品が送られてくるのを受け取る&lt;/h2&gt;
&lt;p&gt;交換品を佐川急便さんが送ってきてくれました。大体2,3日で配送されましたが、在庫が切れたタイミングなどでは1週間ほどかかることもあるそうです。&lt;/p&gt;
&lt;h2 id="5-故障品を送り返す"&gt;5. 故障品を送り返す&lt;/h2&gt;
&lt;p&gt;数日後、別便で故障した品を受け取りにくるそうです。来るそうですと言っているのは、まだ自分の場合はsend backをする前の状態だからです。正直、iPhoneなどと同じようにその場で発送できてもいいのにな、と思います。&lt;/p&gt;
&lt;p&gt;というわけで、Thinkpadトラックポイントキーボードが壊れても、無事交換していただけます。安心して使い倒せますね！&lt;/p&gt;</description></item><item><title>Docker imageを用意してWindows/macOSでスムーズに同人誌を作った話（Sphinx編）</title><link>https://chezo.uno/post/2017-04-08-docker-imagewoyong-yi-sitewindows-slash-macosdesumuzunitong-ren-zhi-wozuo-tutahua-sphinxbian/</link><pubDate>Sat, 08 Apr 2017 09:47:29 -0700</pubDate><guid>https://chezo.uno/post/2017-04-08-docker-imagewoyong-yi-sitewindows-slash-macosdesumuzunitong-ren-zhi-wozuo-tutahua-sphinxbian/</guid><description>&lt;p&gt;こんにちは、ハイラルに移住したchezouです。最近は、Rから始まりRで終わる言語をよく書いています。&lt;/p&gt;
&lt;p&gt;いよいよ明日に迫ってきた
ですが、お-13で
として頒布を行います。 内容は、僕の機械学習の実務におけるtipsとfastFMを使った推薦、@tokorotenさんのKickstarterの分析、@hagino3000さんのスプラトゥーンのデータマイニングということで盛り沢山です。初めての同人誌ですが、140ページを超えた薄くない薄い本になりました。&lt;/p&gt;
&lt;p&gt;是非買いに来てください！&lt;/p&gt;
&lt;h2 id="tldr"&gt;tl;dr&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;技術書を書くときに、LaTeXを含んだDocker image使ってCIでビルド出来るようにすると共同執筆が捗るよ&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="前回までのあらすじ"&gt;前回までのあらすじ&lt;/h2&gt;
&lt;p&gt;今回は、メンバーがWindowsの人とmacOSの人の混成チームであったこと、全員がPythonに馴染み深い人だったので、reStructuredTextベースのSphinxで書きました。&lt;/p&gt;
&lt;p&gt;なお、メンバーの中には一度Jupyter notebookで下書きを書いて、それをnbconvertを使ってrstとして変換する人もいました（賢い）。この辺、Jupyterは元々Pythonのエコシステムなので数式含んだJupyter notebookをrstまで変換できるなら、良い選択肢かもしれません。&lt;/p&gt;
&lt;p&gt;SphinxのDocker imageの作り方等は過去に書いているのでそちらを参考にしてください。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2017-01-23-gitlab-ciwoshi-tutesphinxnodokiyumentowozi-dong-depdfnibirudosuru/" data-iframely-url="//iframely.net/zOVIEuy"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;h2 id="なぜdocker-imageを用意したか"&gt;なぜDocker imageを用意したか？&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;原稿執筆は余計な障害（環境構築とか）が入ると、その対応で燃え尽きる&lt;/li&gt;
&lt;li&gt;原稿執筆は往々にして〆切ギリギリから開始するので、最短距離を走れるようにしたほうが成功確率が上がる&lt;/li&gt;
&lt;li&gt;OSが異なる環境でのLaTeX周りのトラブルシュートをしたくなかった&lt;/li&gt;
&lt;li&gt;ビルドにコケる原稿のpushが防げた&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この目論見はすべて当たりました。実際に、共著者の皆様からはすぐに執筆開始できたとの喜びの声をいただきました。&lt;/p&gt;
&lt;p&gt;[追記]&lt;/p&gt;
&lt;p&gt;じつはどちらもLinuxで書いていたともいえることがわかりました…&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;
windowsの中のvmwareの中のubuntuの中のdockerで執筆環境を動かしていたので、Windows環境かと言われると疑問符が……&lt;/p&gt;
&lt;p&gt;執筆自体は、ubuntuのhomeをwin-sshfsでwin側にマウントしてterapadでやってましたが。&lt;/p&gt;
&lt;p&gt;— ところてん (@tokoroten)
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;script async src="//platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;
おもしろ執筆環境。
&lt;/p&gt;
&lt;p&gt;— ところてん (@tokoroten)
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;script async src="//platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;
お、自分は何も見ずにrstが書けるようになった時点でdocker runしてるAmazon Linux上のvimで執筆してました&lt;/p&gt;
&lt;p&gt;— 超循環評価器@中欧放浪中 (@hagino3000)
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;script async src="//platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;[/追記]&lt;/p&gt;
&lt;h2 id="sphinxのdocker-imageでできたこと"&gt;Sphinxのdocker imageでできたこと&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;WindowsでもmacOSでもすぐに書き始められる状況を準備できた&lt;/li&gt;
&lt;li&gt;Gitlab CIを使って、マージされたものをCIでPDFを用意する&lt;/li&gt;
&lt;li&gt;奥付を作る&lt;/li&gt;
&lt;li&gt;（docker image関係ないけど）re:viewで書きかけていた原稿をreSTに変換できた&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;奥付については、少しトリッキーなので後述します。&lt;/p&gt;
&lt;h2 id="sphinxのdocker-imageでできなかったこと"&gt;Sphinxのdocker imageでできなかったこと&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;原稿のグレースケール化（Adobe Acrobatでやった）&lt;/li&gt;
&lt;li&gt;納得の行くfontの埋め込み（ヒラギノを使うためにmacOSでフォントを埋め込んだ）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Previewのグレースケール化は信用ならないので、グレースケール化には少なくともmacOSだとAcrobatが必須かもしれません。&lt;/p&gt;
&lt;p&gt;fontの埋め込みは、IPA系のフォントだとライセンス的に問題なくコンテナ内で埋め込めるのですが、日本語の太字が綺麗にでなかったので結局MacでSphinxをビルドしてヒラギノを埋め込みました。&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; そのおかげで、tokorotenさんの原稿の画像サイズが少しずれて手直しが入りました。。。dockerベースでフォント埋め込みまでやっていればいけたのに…。無念。&lt;/p&gt;
&lt;h2 id="奥付の作り方"&gt;奥付の作り方&lt;/h2&gt;
&lt;p&gt;以外とハマったんですが、以下のgistのように一度citationをflashすれば行けます。 デフォルトでは、citationが必ず最後に来るようになっていますが、それを回避できます&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h2 id="reviewの書きかけの原稿をrestに変換できた相互変換出来る時代に"&gt;Re:VIEWの書きかけの原稿をreSTに変換できた（相互変換出来る時代に）&lt;/h2&gt;
&lt;p&gt;実は書きはじめのときに、shirouさんがRe:VIEWの原稿をSphinxの原稿に変換していただきました。ありがとうございました。&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=https%3A%2F%2Fgithub.com%2Fkmuto%2Freview%2Fpull%2F733" title="rstbuilderを追加 by shirou · Pull Request #733 · kmuto/review" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://github.com/kmuto/review/pull/733"&gt;github.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;何故か手元にあった結構ボリュームのあるRe:VIEWの原稿を変換できて、大体の問題は解決されているのではないかなと思います。&lt;/p&gt;
&lt;p&gt;なお、逆向きのSphinxの原稿からRe:VIEWを出力するプラグインもあります。これで、気が変わって別のフォーマットにexport/importが容易になりましたね！&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=https%3A%2F%2Fgithub.com%2Fshirou%2Fsphinxcontrib-reviewbuilder" title="shirou/sphinxcontrib-reviewbuilder" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://github.com/shirou/sphinxcontrib-reviewbuilder"&gt;github.com&lt;/a&gt;&lt;/cite&gt;
&lt;h1 id="おわりに"&gt;おわりに&lt;/h1&gt;
&lt;p&gt;今回は、shirouさん、shibukawaさん、tk0miyaさんといった#sphinxjpの皆様にお世話になりました。困ったことがあったときに、日本語で聞ける環境があるというのは非常に助かりました。&lt;/p&gt;
&lt;p&gt;それでは、明日は秋葉原UDX2階のアキバ・スクエアで僕と握手！&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;ヒラギノは商用利用可能とのことです
&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>Indigogo ではじめてバックして来た dot を使って3ヶ月がたった</title><link>https://chezo.uno/post/2017-01-30-indigogo-dehazimetebatukusitelai-ta-dot-woshi-tute3keyue-gatatuta/</link><pubDate>Mon, 30 Jan 2017 14:02:42 -0800</pubDate><guid>https://chezo.uno/post/2017-01-30-indigogo-dehazimetebatukusitelai-ta-dot-woshi-tute3keyue-gatatuta/</guid><description>&lt;p&gt;最近のbackspace.fm でdotが「来る来る詐欺」でAir podsに完全に飲み込まれたという話が出ていたので、きちんとレビューしてなかったのを思い出したのでレビューします。&lt;/p&gt;
&lt;p&gt;dotは一言で言うと、AirPodsみたいな小さいBluetoothイヤホンです。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://www.indiegogo.com/projects/dot-world-s-smallest-bluetooth-headset" data-iframely-url="//cdn.iframe.ly/eUbZ83H?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;h2 id="はじめての-indigogo"&gt;はじめての Indigogo&lt;/h2&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2017-01-30-indigogo-dehazimetebatukusitelai-ta-dot-woshi-tute3keyue-gatatuta/20170130213220_hu_81094f0f044e71f3.webp 320w, https://chezo.uno/post/2017-01-30-indigogo-dehazimetebatukusitelai-ta-dot-woshi-tute3keyue-gatatuta/20170130213220_hu_d08475141487ec69.webp 480w, https://chezo.uno/post/2017-01-30-indigogo-dehazimetebatukusitelai-ta-dot-woshi-tute3keyue-gatatuta/20170130213220_hu_9a538d60b8b3539.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2017-01-30-indigogo-dehazimetebatukusitelai-ta-dot-woshi-tute3keyue-gatatuta/20170130213220_hu_81094f0f044e71f3.webp"
width="760"
height="361"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;僕がバックしたのは、miyagawaさんがdotみたいなイヤホンをinstagramか何かで買ったというのを見て、これかな？と勘違いしたからだったんですが、2015年12月にindigogoでバックしてたみたいです。ステレオで$79+$29のシッピングコストです。最初の申込みから少し遅れていたのですが、当時は2016年4月に届く予定と言っていて、結局届いたのは2016年の10月でした。&lt;/p&gt;
&lt;p&gt;はじめてのIndigogoで学んだのは、バックしたときが欲しい気持ちの最大値になっていて、届く頃には類似品が出てきて市場が開拓されていて切ない気持ちになること。こなれたものを手に入れたいなら待っていたほうがいいのかもなーと思いました。&lt;/p&gt;
&lt;h2 id="dot-レビュー"&gt;dot レビュー&lt;/h2&gt;
&lt;iframe src="//www.instagram.com/p/BLXPs3Uhk5W/embed/" data-entry-image="http://www.instagram.com/p/BLXPs3Uhk5W/media/?size=l" class="instagram-iframe" frameborder="0" scrolling="no" allowtransparency&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://www.instagram.com/p/BLXPs3Uhk5W/"&gt;www.instagram.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;箱はこんな感じでおしゃれ。&lt;/p&gt;
&lt;iframe src="//www.instagram.com/p/BLXQDBnhbSx/embed/" data-entry-image="http://www.instagram.com/p/BLXQDBnhbSx/media/?size=l" class="instagram-iframe" frameborder="0" scrolling="no" allowtransparency&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://www.instagram.com/p/BLXQDBnhbSx/?taken-by=c.hezou&amp;amp;hl=ja"&gt;www.instagram.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;中身もきちんとオシャレに梱包されています。&lt;/p&gt;
&lt;iframe src="//www.instagram.com/p/BLXQWDGh-oH/embed/" data-entry-image="http://www.instagram.com/p/BLXQWDGh-oH/media/?size=l" class="instagram-iframe" frameborder="0" scrolling="no" allowtransparency&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://www.instagram.com/p/BLXQWDGh-oH/?taken-by=c.hezou&amp;amp;hl=ja"&gt;www.instagram.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;充電器兼ケースは、イヤホンがそれぞれマグネットでひっついて充電されます。 重さもたいしてないので、ポケットの中に充電ケースを常に入れておいて、オフィスや家についたら充電するような感じにしています。&lt;/p&gt;
&lt;p&gt;ケースの充電はケースを2つに割って真ん中にある穴にmicro USBで刺すのですが、真ん中で別れるところもマグネットでひっつくため、バラバラでどっか行ってしまうということはありません。ただ、ケースを充電しながら給電できるのは、片方だけなので注意が必要です。 また、モノラル二個としても使えるので、片方充電してもう片方は聞き続けるという使い方も可能です。 公称値で3時間持つと言っている電池ですが、backspace.fmや最近のrebuildは通しで聞けるかどうかはわかりませんが、充電器を忘れて往復2時間弱の通勤で充電しないでも再生し続けられたので、なんとかなるかもしれません。&lt;/p&gt;
&lt;iframe src="//www.instagram.com/p/BLXP-8thiAr/embed/" data-entry-image="http://www.instagram.com/p/BLXP-8thiAr/media/?size=l" class="instagram-iframe" frameborder="0" scrolling="no" allowtransparency&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://www.instagram.com/p/BLXP-8thiAr/?taken-by=c.hezou&amp;amp;hl=ja"&gt;www.instagram.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;大きさは小さめの腕時計よりも更に小さい感じ。AnkerのIE20と比べて見ても小さいのがわかります。&lt;/p&gt;
&lt;p&gt;Bluetoothのペアリングは、JabraよりはいいけどAnkerのIE20と同じくらいかなという印象です。めちゃくちゃ安定はしてなくて、街なかでちょこちょこ切れる感じだけど、我慢できる範囲です。最近のiOSのアップグレードで接続は安定してきましたが、一度ペアリングが切れかけると片方ずつ接続が復帰するので同期するまでに少し時間がかかります。&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;音については、個人的にはIE20の方がクリアで好きかなという印象です。個人的には、こもった感じがしてそんなにいい音だとは思いませんでした。遮音性に関してはIE20よりもよく、うっかりすると周りの音を聞き逃す感じです。&lt;/p&gt;
&lt;p&gt;操作は、最初に同時に長押ししてペアリングをして、その後iPhoneなどとペアリングするという流れです。一度Dot同士をペアリングしてしまえば、後は気楽に使えます。 電源オンは両方のスイッチを3秒くらい長押しする感じです。タイミングずれててもいいですが、どっちが右か左かはまぁ音がでるのでそれを聞いて間違っていたら入れ替えています。 電源オフはどちらかのスイッチを3秒くらい長押しすると両方消せて、1秒長押しするとSiriが起動する感じなのは今時の感じですね。 マイクの拾いはそんなに良くないかな、と思うので、あまりメインで使うのには向いていないのかもしれません。&lt;/p&gt;
&lt;p&gt;軽くて小型なので、カジュアルに持ち運びができてポケットにとりあえず突っ込んでおくという運用ができるので気に入っています。&lt;/p&gt;
&lt;p&gt;今となってはAirPodsが安定していると評判なので、そちらのほうが良いかもしれませんが、$100で手に入ったということではいい買い物をしたな、と思っています。&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;前のiOSのときはブチブチ切れていて本当に辛かったけど、最近は良い&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>また一つ年をとった</title><link>https://chezo.uno/post/2017-01-25-mata-tunian-wototuta/</link><pubDate>Wed, 25 Jan 2017 04:44:08 -0800</pubDate><guid>https://chezo.uno/post/2017-01-25-mata-tunian-wototuta/</guid><description>&lt;p&gt;同い年のmirakuiさんがCTOになったりして、そろそろ組織に中で立ち回りが変わる年代なのかなと思ったりしてる。ちょうど一年前の今頃今の会社の面接を受け、初めての英語の契約書を1日2日で読んだりして、色々と慌ただしくしたところから首にならずに一年経った。backspacefm聞いてると、外資は当たり出し続けないと干されるよねみたいな話もあったので、価値を出し続けていきたい。コードを書く時間は減ったけど、いいペースで新しいプロダクトがでる変化の激しい会社なので、誰の役に立つものなのか考えて伝えていくのは楽しいと思ってる。幸いにして同年代がオフィスにもpyspaにも多いので、自分の役回りにあまり不安はないので、できることを少しずつ広げようとしている。&lt;/p&gt;
&lt;p&gt;また、kawasaki.rbが三年半以上続いているのもありがたい限り。Rubyだけではない地域の技術の集まりとして、これからも細々と続けていきたいです。
&lt;/p&gt;
&lt;p&gt;最近のトピック - 在宅勤務のしすぎで運動不足のため、夫婦で30日スクワットトレーニングを始める。楽しい - podcastの出演者を探すのがちょっと大変になってきた。相棒/出演者欲しい - 昔全然聞けなかった
が普通に聞けるようになってた - Pythonばっかり書いてたら、Rも書くようになった。dplyr便利&lt;/p&gt;
&lt;p&gt;最後に、例のリストです。
&lt;/p&gt;</description></item><item><title>Gitlab CIを使ってSphinxのドキュメントを自動でPDFにビルドする</title><link>https://chezo.uno/post/2017-01-23-gitlab-ciwoshi-tutesphinxnodokiyumentowozi-dong-depdfnibirudosuru/</link><pubDate>Mon, 23 Jan 2017 04:38:35 -0800</pubDate><guid>https://chezo.uno/post/2017-01-23-gitlab-ciwoshi-tutesphinxnodokiyumentowozi-dong-depdfnibirudosuru/</guid><description>&lt;p&gt;gitlab.comは自前でDocker image登録できたり、CI持っていたりと便利ですね。しかも、privateレポジトリもお金かからないという太っ腹。 技術書典2に向けたレポジトリはgitlab.comで管理しています。&lt;/p&gt;
&lt;p&gt;今回は共著者にPython使いが多いためSphinxを使って書いているんですが、Sphinxはcommon markでも書けるのでmarkdownでも文章を書くことが出来ます。&lt;/p&gt;
&lt;p&gt;前回の記事では、数式入りのmarkdownからPDFを生成するDocker imageを作りましたが、それを使うと簡単にGitlab-CIでPDFが生成できます。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2017-01-22-shu-shi-ru-rinomarkdownwosphinxwoshi-tutehtml-slash-pdfnisuru/" data-iframely-url="//iframely.net/7zd0Evy"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;やり方は簡単、あなたのSphinxのプロジェクトに、以下のような&lt;code&gt;.gitlab-ci.yml&lt;/code&gt;を書くだけ。もちろん、必要に応じてpathsは変更してください。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;image: chezou/sphinx-recommonmark:latest pdf: script: - make latexpdfja artifacts: paths: - build/latex/techbookfest02.pdf only: - master
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;こうすると、masterにpushしてCIが成功する度に、PDFが生成されてダウンロードできます。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2017-01-23-gitlab-ciwoshi-tutesphinxnodokiyumentowozi-dong-depdfnibirudosuru/20170123123725_hu_ef2e3862e5f6213d.webp 251w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2017-01-23-gitlab-ciwoshi-tutesphinxnodokiyumentowozi-dong-depdfnibirudosuru/20170123123725_hu_ef2e3862e5f6213d.webp"
width="251"
height="237"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;めっちゃ簡単。お試しあれ。&lt;/p&gt;</description></item><item><title>数式入りのmarkdownをSphinxを使ってhtml/pdfにする</title><link>https://chezo.uno/post/2017-01-22-shu-shi-ru-rinomarkdownwosphinxwoshi-tutehtml-slash-pdfnisuru/</link><pubDate>Sun, 22 Jan 2017 08:11:24 -0800</pubDate><guid>https://chezo.uno/post/2017-01-22-shu-shi-ru-rinomarkdownwosphinxwoshi-tutehtml-slash-pdfnisuru/</guid><description>&lt;p&gt;Sphinxでmarkdown拡張を扱うためのrecommonmarkというライブラリがあります。 これを使うとreSTではなく、markdownを書いてhtmlやPDFが吐けるようになります。&lt;/p&gt;
&lt;p&gt;詳細は以下のエントリにやり方がまとまっています。&lt;/p&gt;
&lt;iframe src="https://sky-y.hatenablog.jp/embed/2015/12/02/023732" title="MarkdownでSphinxできるようになったので試してみた（後編） - 意識の高いLISPマシン" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://sky-y.hatenablog.jp/entry/2015/12/02/023732"&gt;tech.3rd-p-zombie.net&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;実は、このrecommonmarkはconfigに設定を書くだけで、数式をmarkdownの中に埋め込めるのでした。&lt;/p&gt;
&lt;p&gt;conf.pyの上の方に以下をimportし、&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-py" data-lang="py"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;recommonmark&lt;/span&gt; &lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;recommonmark.parser&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;CommonMarkParser&lt;/span&gt; &lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;recommonmark.transform&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;AutoStructify&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;source_suffix&lt;/code&gt;の修正、&lt;code&gt;source_parsers&lt;/code&gt;の追加&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-py" data-lang="py"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;source_suffix&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;.rst&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;.md&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#source_suffix = &amp;#34;.rst&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;source_parsers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;.md&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;recommonmark.parser.CommonMarkParser&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;最後尾に以下を追加します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-py" data-lang="py"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;setup&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;add_config_value&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;recommonmark_config&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;enable_math&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;enable_inline_math&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;add_transform&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;AutoStructify&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;すると、&lt;/p&gt;
$$
(a + b)^2 = a^2 + 2ab + b^2
$$&lt;p&gt;とかくと、以下の数式の部分のようになります。(
)&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2017-01-22-shu-shi-ru-rinomarkdownwosphinxwoshi-tutehtml-slash-pdfnisuru/20170122160632_hu_7bef0cd7e6b51e6d.webp 320w, https://chezo.uno/post/2017-01-22-shu-shi-ru-rinomarkdownwosphinxwoshi-tutehtml-slash-pdfnisuru/20170122160632_hu_9c2a01621f15abcc.webp 480w, https://chezo.uno/post/2017-01-22-shu-shi-ru-rinomarkdownwosphinxwoshi-tutehtml-slash-pdfnisuru/20170122160632_hu_8ce9692446b34d29.webp 527w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2017-01-22-shu-shi-ru-rinomarkdownwosphinxwoshi-tutehtml-slash-pdfnisuru/20170122160632_hu_7bef0cd7e6b51e6d.webp"
width="527"
height="303"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;また、inlineの数式も以下のように書けます。 (
)&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-rst" data-lang="rst"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;This formula &lt;span class="nv"&gt;`$ y=\sum_{i=1}^n g(x_i) $`&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ただ、残念ながら式番号を出す方法はわかりませんでした。&lt;/p&gt;
&lt;p&gt;[追記]&lt;/p&gt;
&lt;blockquote class="twitter-tweet"&gt;&lt;p lang="ja" dir="ltr"&gt;数式番号ですが、conf.py に math_number_all = True を入れるとどうなりますか &lt;a href="https://t.co/tH2ouf7Hk6"&gt;https://t.co/tH2ouf7Hk6&lt;/a&gt;&lt;/p&gt;&amp;mdash; shirou - しろう (@r_rudi) &lt;a href="https://twitter.com/r_rudi/status/823117959572832257?ref_src=twsrc%5Etfw"&gt;January 22, 2017&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;conf.pyに&lt;code&gt;math_number_all = True&lt;/code&gt;を足せば数式がでました。ですが、参照はできないと思うので参照が必要な場合はreSTで書く必要があると思います。&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://bot.gyazo.com/c1685a433683cd99590bba5cb6748bae.png"&gt;&lt;figcaption&gt;
&lt;h4&gt;math_number_all=True&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;[/追記]&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ make latexpdfja
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;とすれば、PDFが、&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ make html
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;とすればhtmlが生成されます。&lt;/p&gt;
&lt;p&gt;さくっと書くときにはmarkdownで行けるのはありがたいですね。&lt;/p&gt;
&lt;p&gt;Sphinxとlatex環境を用意するのが面倒な人向けに、docker imageも作りましたので活用してみてください。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h3 id="参考"&gt;参考&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>macのJIS配列のキーボードをKarabiner使わずにUS配列にする</title><link>https://chezo.uno/post/2017-01-19-macnojispei-lie-nokibodowokarabinershi-wazuniuspei-lie-nisuru/</link><pubDate>Thu, 19 Jan 2017 14:17:07 -0800</pubDate><guid>https://chezo.uno/post/2017-01-19-macnojispei-lie-nokibodowokarabinershi-wazuniuspei-lie-nisuru/</guid><description>&lt;p&gt;macOS Sierraに上げる前に、Karabinerが動かない問題をなんとかしたいと思っていました。 El capitanでちゃんと検証してから上げないと、色んな人みたいに死ぬなと思って
に移行できるか検証しました。&lt;/p&gt;
&lt;h2 id="今回の要件"&gt;今回の要件&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;JIS配列の本体のキーボードをUS配列で使いたい&lt;/li&gt;
&lt;li&gt;外付けのUS配列のキーボードで右cmd単体でかな（IME ON）、左cmd単体で英数（IME OFF）として使いたい&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;とくに、1.についての情報がみつからなかったので、実際に試してみた。&lt;/p&gt;
&lt;h2 id="karabiner-elementsでus配列にする"&gt;Karabiner-ElementsでUS配列にする&lt;/h2&gt;
&lt;p&gt;最近のKarabiner-ElementsはGUIがついているので、かなり楽ちんで、設定項目は2つ。&lt;/p&gt;
&lt;p&gt;1つ目は&amp;quot;Virtual Keyboard&amp;quot;のKeyboard Type: ANSIを設定すること。これで大体USキーボードの配列になります。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2017-01-19-macnojispei-lie-nokibodowokarabinershi-wazuniuspei-lie-nisuru/20170119221149_hu_171816148e4a2096.webp 320w, https://chezo.uno/post/2017-01-19-macnojispei-lie-nokibodowokarabinershi-wazuniuspei-lie-nisuru/20170119221149_hu_e575b2eb7bf68c87.webp 480w, https://chezo.uno/post/2017-01-19-macnojispei-lie-nokibodowokarabinershi-wazuniuspei-lie-nisuru/20170119221149_hu_7fafa0dbb9913f92.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2017-01-19-macnojispei-lie-nokibodowokarabinershi-wazuniuspei-lie-nisuru/20170119221149_hu_171816148e4a2096.webp"
width="760"
height="495"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;2つ目の設定は、&amp;ldquo;Simple Modifications&amp;quot;で&lt;code&gt;international3&lt;/code&gt;を&lt;code&gt;grave_accent_and_tilde&lt;/code&gt;に変えれば行けた。これでかつる！KarabinerのJIS-&amp;gt;USと揃えるには&lt;code&gt;international1&lt;/code&gt;も同様に割り当てれば良さそう。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2017-01-19-macnojispei-lie-nokibodowokarabinershi-wazuniuspei-lie-nisuru/20170119221202_hu_3a06409307ce5439.webp 320w, https://chezo.uno/post/2017-01-19-macnojispei-lie-nokibodowokarabinershi-wazuniuspei-lie-nisuru/20170119221202_hu_b85b94913113b380.webp 480w, https://chezo.uno/post/2017-01-19-macnojispei-lie-nokibodowokarabinershi-wazuniuspei-lie-nisuru/20170119221202_hu_ed96290157ba9360.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2017-01-19-macnojispei-lie-nokibodowokarabinershi-wazuniuspei-lie-nisuru/20170119221202_hu_3a06409307ce5439.webp"
width="760"
height="497"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;ちなみに、検証はAnkerのBTキーボードで試しました。安いUSキーボードとしてはそこそこ使えます。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B00U260UR0/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
Anker ウルトラスリム Bluetooth ワイヤレスキーボード iOS/Android/Mac/Windows に対応 ホワイト
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: Anker&lt;/li&gt;
&lt;li&gt;メディア: エレクトロニクス&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="cmd-英数かな"&gt;cmd-&amp;gt;英数,かな&lt;/h2&gt;
&lt;p&gt;これは、
使えば大丈夫。&lt;/p&gt;
&lt;p&gt;しばらくこれで試してみようと思います。問題なければSierraにあげてみます。&lt;/p&gt;</description></item><item><title>サイバー攻撃としてのフェイクニュース</title><link>https://chezo.uno/post/2017-01-16_fake-news/</link><pubDate>Sun, 15 Jan 2017 21:55:32 -0800</pubDate><guid>https://chezo.uno/post/2017-01-16_fake-news/</guid><description>&lt;p&gt;&lt;em&gt;このポストは、最近もやもやっと思っていることを吐き出したポエムである。厳格なファクトチェックを経たものと期待しないで欲しい。&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="tldr"&gt;tl;dr&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;サイバー攻撃としてプロパガンダをばらまくことを行うハッカーグループがいる&lt;/li&gt;
&lt;li&gt;彼らはfake newsサイトをいくつも作って選挙等に介入している&lt;/li&gt;
&lt;li&gt;不正アクセスして得た結果を、自分たちに有利な情報をフィルターしてWikileaksに流し、ニュースの情報源をコントロールしている&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="本文"&gt;本文&lt;/h3&gt;
&lt;p&gt;ここ最近、日本でも”fake news”という単語を聞くようになってきた。僕が聞いたのは、rebuild.fmでその単語が出てきたときだったが、何故出演者がFacebookも引き合いに出して、怒りを感じているのかがわからなかったので少し調べてみた。もちろん、足りない視点などあるとは思うので、見つけたらこっそり教えて欲しい。&lt;/p&gt;
&lt;p&gt;日本語でフェイクニュースや偽ニュースと言うと、虚構新聞のことか、とかマスメディアが嘘ついてるんでしょ、みたいなイメージがパッと思い浮かぶかもしれない。（ちなみに、DMM英会話で話をしているセルビアの人にも話を振ったら「ニュースは総じてfake newsである」みたいなことを言っていたので、そういう人は一定数いるのだとは思う）つい最近、NHKのニュースでBBCがフェイクニュースを検証するという記事が流れたが、ファクトチェックをするのは良いことだ、という程度のはてブを見ても反応しか見受けられなかった。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;確かに、アメリカの大統領選ではテレビ討論でもファクトチェックをリアルタイムでするなど、事実確認にはかなり厳格に行っているように見える。&lt;/p&gt;
&lt;p&gt;しかし、なぜ今更ファクトチェックの話をBBCが言うのだろうか？なぜ、fake newsが問題視されているのだろうか？確かに、ニュースとしてアメリカの選挙にロシアがfake newsを通じて干渉していた、という話は聞くがどのようなことが問題なのだろうか。ロシアのアメリカ大統領選への干渉は以下のコラムがわかりやすくまとまっているので、ご存じない方は一読すると良いだろう。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h4 id="プロパガンダを攻撃とするハッカーグループ"&gt;プロパガンダを攻撃とするハッカーグループ&lt;/h4&gt;
&lt;p&gt;実は、ドイツもロシアからのfake newsを中心とした攻撃に頭を抱えている。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;このSecurity Affairsの記事によると、ドイツの外交情報機関（BND、連邦情報局）のブルーノ・カール長官はこう言っている。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;「（国民の間に）『政治不信の感情を作り出すことだけを目的として行われるサイバー攻撃』の存在も報告されている。これらは公の発言に対する、そして民主主義に対する一種の圧力であり、受け入れられないものだ」とカール長官は『南ドイツ新聞』に語った。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;いわゆる、プロパガンダというものは第二次世界大戦のときの新聞などを使った情報統制などをイメージしていた。しかし、現代においてfake newsを他国を攻撃するための武器として使われているのである。&lt;/p&gt;
&lt;p&gt;記事によると、これらはAPT28というロシアのハッカーグループが中心となって行なっているというのである。政治的なダメージを与えるために機密文書を盗み、それをばらまくというのである。（この「ばらまく」というのにも問題があるがそれは後ほど説明する）本文中ではドイツがロシア政府は直接指示している証拠はつかめていないが、容認している根拠は示せると言っている。つまり、プロパガンダを中心とした政治への干渉を目的としたハッカーグループが存在しているということである。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;
は新しい戦場となりつつある。BfVは「
（心理戦による軍事行動）の一環として行われるプロパガンダ活動」の急増を観察しており、また「ドイツの政党、および議会を標的としたフィッシング攻撃」の数が跳ね上がっていることを指摘した。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;という指摘もあり、ただの経済的なダメージを与えるフィッシング攻撃やDDoS、クラッキングといった攻撃から、国に対しての攻撃を目的とした攻撃に切り替わっていることが伺える。&lt;/p&gt;
&lt;h4 id="ソーシャルメディアとfake-newsの親和性"&gt;ソーシャルメディアとfake newsの親和性&lt;/h4&gt;
&lt;p&gt;特にここで指摘されている「ソーシャルメディア」というのが厄介で、何故”Fakebook”などという指摘を受けているのか。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;ニューズウィークジャパンの記事によると、&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;一連の嘘のニュースは米国の主要ニュース・サイトに掲載されたニュースよりもフェイスブックでのシェア数が多かったという調査結果が出ています。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;米国のニュースサイトよりもFacebookの影響が大きかったことが指摘されている。&lt;/p&gt;
&lt;p&gt;また、東洋経済の記事によれば、&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;ロシア政府はまた、クリントンに関する捏造された「ウソの情報」を拡散した。たとえば、同氏が「パーキンソン病を患っているという事実を隠している」、あるいは、「ローマ法王がトランプ支持を公言した」など、事実とは異なる情報を、フェイスブックやツイッターなどSNSを通じて広く拡散した。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;とあり、SNSを通じた嘘の情報を流しているという話である。これだけを見ると、「こんなデマに自分は騙されない」と思ってしまうかもしれない。（少なくとも自分は最初に聞いた時にそう思った）&lt;/p&gt;
&lt;p&gt;しかし、Facebookを通じたニュースには別の問題も指摘されている。Tech CrunchはFacebookのInstant Articlesの二次効果について指摘している。Instant Articleは
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;But the hidden, second-order effect was that publishers had their identities sterilized. Instead of people reading on their websites with their custom branding, unique visual style and heavy promotion of their other stories, the Facebook-hosted Instant Articles from different outlets looked largely identical.&lt;br&gt;
（筆者抄訳）&lt;br&gt;
しかし、隠された2次効果は、出版社がアイデンティティを無菌化したということだった。 出版社のカスタムブランド、ユニークなビジュアルスタイル、そして他の関連ストーリーの重い宣伝が付いたウェブサイトの代わりに、FacebookがホストしているInstant Articlesは様々な出版社の記事がそっくりな見た目になった。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;figure&gt;&lt;img src="https://chezo.uno/post/2017-01-16_fake-news/1__XlSdHvipcZOOpYGLAPD28A.png"&gt;&lt;figcaption&gt;
&lt;h4&gt;Instant Articlesの例（画像は[公式blog](https://media.fb.com/2016/04/12/instant-articles-now-open/)から）&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
Instant Articlesの例（画像は
から）&lt;/p&gt;
&lt;p&gt;確かに、一番左の画像を見てもらうとわかるが、情報源がどこかがわかりにくい。右二つの開いたあとの記事も、ロゴなどはできるだけ少なくなるようになっている。Facebookのアプリからニュースを見る比率が高くなると、ソースを意識的に気にしないと、どこのニュースか見失ってしまいやすいのも頷ける。&lt;/p&gt;
&lt;p&gt;対象的に、Googleも似たような目的で検索結果から高速に記事を見ることができるAMPでは、配信元が大きく出るようになっており、比較的誤解はしづらいデザインとなっているようにうつる。&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img src="https://chezo.uno/post/2017-01-16_fake-news/1__Y68oZLKS9EO43X7hV3gR__g.png"&gt;&lt;figcaption&gt;
&lt;h4&gt;GoogleのAMPの例（画像は[公式ブログ](https://japan.googleblog.com/2016/02/blog-post_25.html)から）&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
GoogleのAMPの例（画像は
から）&lt;/p&gt;
&lt;p&gt;加えて、FacebookなどのSNSを通じたニュースを、何度も同じタイトルを見るうちに自分の頭のなかに刷り込まれて、興味を持って開いてしまうという経験はないだろうか。僕自身は複数回見たら「そろそろ読むかな」という気になることが多い。一度見たものや聞いた音楽は、二回目以降に出会うと親近感が湧くのと似ているかもしれない。&lt;/p&gt;
&lt;p&gt;ソーシャルメディアからの記事を読むことは避けるのは難しいし、そこに紛れてるfake newsを避けるのは困難だ。信頼のおける友人がシェアしていたり、意見を表明して議論が盛り上がっていると、あたかもその記事の内容は（間違っていたとしても）真実かのように思えてくるときがある。&lt;/p&gt;
&lt;p&gt;昔はSNSを通じたニュースを見るときも、大学の先生だからロジカルに裏取りしているだろうとか考えていた時期もあった。が、結局3.11の後にわかったのは、専門外の話は話半分で聞かないといけない、権威などというものはあてにはできないということだと思っている。&lt;/p&gt;
&lt;h4 id="プロパガンダに利用されるwikileaks"&gt;プロパガンダに利用されるWikiLeaks&lt;/h4&gt;
&lt;p&gt;では、Facebookのニュースの供給源である、新聞などのメディアはどうだろうか。先程の東洋経済の記事によると、&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;ロシアが民主党だけでなく、共和党のメールシステムもハッキングしていたとCIAが報告したことだ。つまり、ロシアはウィキリークスを使って民主党のメールを拡散したものの、共和党のメールは拡散しなかったということ。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;とあり、スノーデン事件のときのように、大きな国家の不正を暴く存在という印象づけられていたWikiLeaksが、今度はリークする情報をコントロールすることで他国を攻撃するツールになっているのである。ジャーナリストがメディア側も些細な事だからと論旨が覆る話をサラリと流したりすることもあるため、バイアスが係ることは否めない。正しさハラスメント問題を使われた時にも受けてがなんとかしないといけないとは思っていたが、それ以前に情報源が操作されていたり印象が操作されているということが起こりうる時代なのである。&lt;/p&gt;
&lt;p&gt;だからといって、すべての記事にファクトチェックをしていられるほど人生は無限にはない。情報ができる速度のほうが人がファクトチェックする速度より速いのだ。だから、冒頭の記事のようにBBCがファクトチェックを行うと宣言したのであり、
のである。Facebookも
している。&lt;/p&gt;
&lt;h4 id="ソフトウェアエンジニアとしてできることは"&gt;ソフトウェアエンジニアとしてできることは？&lt;/h4&gt;
&lt;p&gt;しかし、人手では限界があるだろう。
をしていたりもするが、残念ながら多くの人が本当と思わされてしまったことを全自動でfakeやプロパガンダと判定するのは、WELQのようにクラウドソースされた怪しい記事を、Googleは残念ながら自動で弾くことはできなかったように、まだ難しいと個人的には思う。&lt;/p&gt;
&lt;p&gt;
や、
のように、fake newsはまぬけな対岸の火事ではなく、サイバー攻撃として仕組まれているものの一つであるという可能性を疑って見たほうが良いと、一エンジニアとして思う。&lt;/p&gt;
&lt;p&gt;ちょっと昔だと、陰謀論乙、と思っていたのだが、いかんせん
してから、雲行きが怪しくなってきた。&lt;/p&gt;
&lt;p&gt;一エンジニアとして、今後どういう情報による攻撃が起こり得て、それをどうすれば防げるのか、というのは、興味深くもあるが、それを防ぐというのはかなり難しそうな気がしている。おそらく、機械学習や
が解決の糸口につながるとは思うが、まだまだギャップは大きいように思う。&lt;/p&gt;
&lt;p&gt;「
」という言葉が、杞憂で終わるように、できることを考え続けていきたい。選挙期間の選挙に関するネット上の発言は禁止されるという、馬鹿みたいな昔に戻るというディストピアだけは避けたい。&lt;/p&gt;</description></item><item><title>非英語ネイティブにとってのOSSのメンテナンスコスト</title><link>https://chezo.uno/post/2017-01-01-fei-ying-yu-neiteibunitotutenoossnomentenansukosuto/</link><pubDate>Sun, 01 Jan 2017 15:29:31 -0800</pubDate><guid>https://chezo.uno/post/2017-01-01-fei-ying-yu-neiteibunitotutenoossnomentenansukosuto/</guid><description>&lt;p&gt;&lt;em&gt;disclaimer: この記事を書いている人はClouderaというHadoop/Sparkのディストリビューターの会社にいます。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;codelunch.fmの20回目を聞いていろいろ思うところがあったのでつらつら買いてみます。&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fcodelunch.fm%2F20%2F" title="CodeLunch.fm" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="http://codelunch.fm/20/"&gt;codelunch.fm&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;この回のcodelunch.fmでは、前職の同僚である丸山さん（
）と
さんが、お互いの家庭環境の変化を交えながら個人プロダクトの開発について話しているエピソードです。これ自体なかなかおもしろい回なので、趣味でプロダクト開発している人は聞いてみるといいんじゃないかなと思います。&lt;/p&gt;
&lt;p&gt;丸山さんは
や
を精力的に開発していますし、hokacchaさんは
や
を作られています。彼らの話していた、個人で趣味プロダクトを開発するモチベーションは何かというところは、以下のようなことが話されていました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自分が欲しいと思ったものを作りたい&lt;/li&gt;
&lt;li&gt;他にも同じ問題で困っている人を自分のプロダクトで助けたい&lt;/li&gt;
&lt;li&gt;新しい技術を試したい&lt;/li&gt;
&lt;li&gt;あわよくば、自分の作ったプロダクトで有名になりたい（承認欲求を満たしたい）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;どれも同じエンジニアとしてはそうだよねという気持ちになります。&lt;/p&gt;
&lt;p&gt;そんな丸山さんのESDoc関連の発言を見ていると、アクティブじゃないから他のにマージしろとかなかなか悩ましいなぁと見ていて思います。&lt;/p&gt;
&lt;blockquote class="twitter-tweet"&gt;&lt;p lang="ja" dir="ltr"&gt;ESDocに対する僕のコミットの少なさが、「他ツールとの統合」という話に発展してしまって、何とも言えない気持ちになってた。というissueにv0.5.0のリリースをもってようやく返信した。&lt;a href="https://t.co/hy4vlxh017"&gt;https://t.co/hy4vlxh017&lt;/a&gt;&lt;/p&gt;&amp;mdash; Ryo Maruyama (@h13i32maru) &lt;a href="https://twitter.com/h13i32maru/status/813322023690588160?ref_src=twsrc%5Etfw"&gt;December 26, 2016&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;本質的にはgithubのissueが辛いだけかもしれませんが(丸山さん自身も
と言っている)、スターが1000を超える程度の人気のプロダクトは色々な人のアテンションを引くため、言葉を選ばず言うと「乱暴な」issueが立ちやすいのかもしれません。&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;ですが、自分もスター19くらいの
というbindingも本家に拾われてからいろいろissueが来るようになりました。&lt;/p&gt;
&lt;p&gt;OSSを出すパターンとしては、ざっと考えた限りでは以下のようなパターンがあるんじゃないかと考えます。カッコ内はその目的です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;誰も作っていない欲しいものがないから作ってOSS化する（自分をユーザとして満足させる、承認欲求を満たす）&lt;/li&gt;
&lt;li&gt;会社で書いていたコードのうち、一部を汎用的に切り出してOSS化する（同じ問題を解いている他の人を楽にする、会社の認知を上げる、転職後もコードを使えるようにする）&lt;/li&gt;
&lt;li&gt;会社として、大きいコードを戦略的にOSS化する（他社との差別化、プロダクト自体の認知を広める）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;下に行けば行くほど、メンテナンスする人数も増えていくと思います。ここで、OSSのメンテナンスコストという点について考えたいと思います。というのも、個人ですべてOSSとしてメンテしていくときにこういうのをどう処理すればいいのかな、と考えたのがきっかけでした。&lt;/p&gt;
&lt;blockquote class="twitter-tweet"&gt;&lt;p lang="ja" dir="ltr"&gt;うーん、なんだかなぁ。僕にとってはこの話はすごく小さな問題だと思うので、「提案ありがとう。でも対応しません。なぜなら好みじゃないから」というので終わりにしたい。そこをわざわざ議論するのに体力と時間を使いたくない。&lt;a href="https://t.co/6RTWifmmEZ"&gt;https://t.co/6RTWifmmEZ&lt;/a&gt;&lt;/p&gt;&amp;mdash; Ryo Maruyama (@h13i32maru) &lt;a href="https://twitter.com/h13i32maru/status/814657477417443328?ref_src=twsrc%5Etfw"&gt;December 30, 2016&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;前職のクックパッドに入る前は、OSSに対する考えとしては、ソースコードは公開されており、コントリビュートの機会が開かれている素晴らしいものだと素朴に思っていました。RubyやSolrにお世話になり、自分もC++のコードの小さいbindingを書いたりしていました。&lt;/p&gt;
&lt;p&gt;クックパッドに入った後は、社内でも使っているし社外にも使えるものはOSSとして公開しようという流れでOSSを出しているのを見てきました。業務として使うコードを公開することでユーザが増え、コードのクオリティが上がり会社の認知も増えるという効果も得ることができていた様に感じます。 ある意味では、その企業が業務としてのOSS活動をサポートしているからできることだとも思います。プロダクトにもよりますが、1人ないしは数人で開発をしているという開発状況になると思います。&lt;/p&gt;
&lt;p&gt;Clouderaに入って、HadoopやSparkといった巨大なOSSは一社ではとてもじゃないけれどすべてをこなすことが出来ないものであるという認識になりました。 良くも悪くも複数の企業や
などのファウンデーションでメンテすることで、そのコードを長く使えるようにしているものだということを学んだのです。 OSSコミュニティとして他社と共同開発をしながら、一方でビジネスでは競争をしているという形になります。当然、個人や一社で開発するより圧倒的にフルタイムの開発人数は多くなります。&lt;/p&gt;
&lt;p&gt;では、継続的に個人の趣味コードをOSSとしてメンテナンスしていく上での、メンテナンスコストはなんでしょうか？&lt;/p&gt;
&lt;p&gt;一つの要素としては、先程から書いているように開発リソースの問題です。&lt;/p&gt;
&lt;p&gt;開発者の時間は有限ですし、ユーザーが増える速度はコントリビュータが増える速度より速いです。 ESDocに関しては
のもさばく負荷が高い理由になるでしょう。 コミットしてくれる人を集めたり、issueを消化してくれるメンテナを集めたりして
として動くのもありかもしれませんが、個人として自由な裁量を持った開発をしたいという人もいるでしょう。 こうした中でどのように、増え続けるissueと戦うべきか、というのは難しい問題です。 なお、このあたりの話は、Sphinxメンテナのtk0miyaさんの記事とFreeBSDのPort maintainerのjj1bdxさんの記事が興味深かったです。&lt;/p&gt;
&lt;iframe src="https://tk0miya.hatenablog.com/embed/2016/12/25/224306" title="Sphinx のメンテナになって一年が経過した話 - Hack like a rolling stone" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://tk0miya.hatenablog.com/entry/2016/12/25/224306"&gt;tk0miya.hatenablog.com&lt;/a&gt;&lt;/cite&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fqiita.com%2Fjj1bdx%2Fitems%2Fa9cd77807e0d689fb4b6" title="ほころびていくコミュニティとなかなかできない世代交代、そしてさよならアドベントカレンダー - Qiita" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="http://qiita.com/jj1bdx/items/a9cd77807e0d689fb4b6"&gt;qiita.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;もう一つの要素としては、英語に困らない人にはノンネイティブの辛さが想像できない問題というのもあると思います。&lt;/p&gt;
&lt;p&gt;自分のボスは、ネイティブと議論するときと英語が得意でないノンネイティブが混ざるときで、話すスピードもそうですが使う語彙を変えて話してくれます。 しかし、githubのissueなどpublicな場所ではこうした気を使ってくれる人は（自分の体感としては）珍しく、こちらが気合を入れて英語を読んだり書いたりする必要があります。 丸山さんとも昔話しましたが、issueの返信だと「この解釈で本当に良いんだろうか」とウンウンうなるときも少なくなく、スラングに苦しめられる時も多いです。&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;All Ears Englishでも、「アメリカ人はノンネイティブの英語に慣れていないから、崩れた英語から汲み取ることができない」という話もありましたし、ここは結局ノンネイティブが頑張るしかないのですが、ネイティブにもここらへん認識してもらう方法はないものか、とも思います。&lt;/p&gt;
&lt;p&gt;例えるなら、対面で話しができるスムーズさとメールでのみやりとりしかできないときの負荷のギャップが、ネイティブ同士のやりとりとノンネイティブがネイティブとやりとりするギャップに相当するんじゃないかなと思います。&lt;/p&gt;
&lt;p&gt;もちろん、PR貰ってコードでやり取りするのはやりやすいですが、GithubでOSS活動をするということはそれだけでは済みません。 僕自身も英語で問い合わせメールが来てissueで辛いやり取りをして以来、最近はそういうコストをどうしたら抑えることができるかということを考えています。 ユーザーを拡大したければ英語でマーケティングをするのも大事になってきますし、英語圏の開発をしてくれるファンを増やせればもっと楽になるのかもしれませんが&amp;hellip;。&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;とりとめもなくまとまりもないですが、他の人はどう考えて立ち向かっているのか教えてもらえるとうれしいです。&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;もしかすると、彼のアピールの仕方が「他より良い」という点で攻めているので面倒なissueが立ちやすい可能性もあります&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;
がないと死にそうになります&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:3"&gt;
&lt;p&gt;Issue templateやFAQである程度は対処できるとは思いますが決定打にはかけるなとも思います&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>2016年を振り返って</title><link>https://chezo.uno/post/2016-12-31-2016nian-wozhen-rifan-tute/</link><pubDate>Sat, 31 Dec 2016 08:11:50 -0800</pubDate><guid>https://chezo.uno/post/2016-12-31-2016nian-wozhen-rifan-tute/</guid><description>&lt;p&gt;ブルガリアンスクワットをして筋肉痛でプルプルしています。大晦日も元旦もほぼDMM英会話の予定しかありません。&lt;/p&gt;
&lt;p&gt;2016年は、世界的にも激動の年でしたが、個人的にも色々な大きなことが起こり激動の時代でした。&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;昨年の振り返りはこちらです。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2015-12-30-2015nian-wozhen-rifan-tute/" data-iframely-url="//cdn.iframe.ly/sfmSt9E"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;h1 id="cookpad-techconfds祭りcwt2016で発表した"&gt;Cookpad TechConf、DS祭り、CWT2016で発表した&lt;/h1&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2016-01-25-number-cookpadtechconf-2016dekutukupatudonoyan-jiu-mawarinoqu-rizu-miwofa-biao-simasita/" data-iframely-url="//cdn.iframe.ly/kwflBqk"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;&lt;/br&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2016-07-26-xia-zhen-tusheng-ri-spark-plus-python-plus-data-scienceji-ri-wokai-cui-simasita-and-ibiswoshao-jie-simasita-number-summerds/" data-iframely-url="//cdn.iframe.ly/X2lxekC"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;&lt;/br&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2016-11-14-cloudera-world-tokyo-2016deji-jie-xue-xi-purodakutonozuo-rifang-wohua-simasita-number-cwt2016/" data-iframely-url="//cdn.iframe.ly/vauT4G3"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;どれも自社イベントですが、今年は外で発表する機会を例年より多くいただきました。来年も、
の発表から幕開けです。&lt;/p&gt;
&lt;h1 id="転職した"&gt;転職した&lt;/h1&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2016-03-30-zhuan-zhi-simasita/" data-iframely-url="//cdn.iframe.ly/wo8eEYX"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;CookpadからClouderaに転職しました。Sales Engineerというロール、初めての外資ということで慣れない事だらけですが、引き続き、機械学習やデータサイエンス周りでの強みを活かしてやらせていただいています。英語は入社してからDMM英会話をほぼ毎日やったら、最低限社内でやりとりをする力と飲みながら英語話す力は得ることが出来たので、意外となんとかなるかもな、と思っているところです。抵抗感が減ったのと、ちょっと気合を入れれば何かしらの英語はアウトプットできると思えるようになり、瞬発力が前よりはついたなと思えたのが良かったです。&lt;/p&gt;
&lt;iframe src="//www.instagram.com/p/BOrJ_mDhT52/embed/" data-entry-image="http://www.instagram.com/p/BOrJ_mDhT52/media/?size=l" class="instagram-iframe" frameborder="0" scrolling="no" allowtransparency&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://instagram.com/p/BOrJ_mDhT52/"&gt;instagram.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;良いなぁと思うのが、同僚で40歳を越えたエンジニアが日本にも何人かいて、その人達がエネルギッシュに働き続けているのと一緒に働けることです。40歳を越えたらマネージャーにならなければならないのかな、とかコード書けないのかなという不安が払拭され、さすが外資だなと思った瞬間です。もちろん、腕に覚えがある人だから生き残ってこれているというのはあるとは思いますが、うちのAPACのdirectorも飛行機で世界飛び回りながらいつも新しく書いたコードの話してくれるので、負けていられないと思う気持ちでいっぱいです。&lt;/p&gt;
&lt;iframe src="//www.instagram.com/p/BOrJ2KoBoJ7/embed/" data-entry-image="http://www.instagram.com/p/BOrJ2KoBoJ7/media/?size=l" class="instagram-iframe" frameborder="0" scrolling="no" allowtransparency&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://instagram.com/p/BOrJ2KoBoJ7/"&gt;instagram.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;また、転職の流れで同僚からひょんなことからpyspaに誘ってもらいました。温泉にはまだ言ったことがないですが、お世話になってます。&lt;/p&gt;
&lt;h1 id="川崎ruby会議01を主催した"&gt;川崎Ruby会議01を主催した&lt;/h1&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2016-08-23-chuan-qi-rubyhui-yi-01wokai-cui-simasita-number-kwsk01/" data-iframely-url="//cdn.iframe.ly/ynajgyS"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;kawasaki.rbが母体となって主催した地域Ruby会議です。コミッターの方々も参戦していただいたのに、良い意味でRuby色の薄いリージョナルだったと思います。&lt;/p&gt;
&lt;p&gt;kawasaki.rbも細く長く続いており、参加してたら転職できた人や、参加してたら起業した人、参加してたら無職になったけど仕事が手に入った人(あるいは採用できた人)などコミュニティとして横のつながりができているなと思います。&lt;/p&gt;
&lt;h1 id="ブログエントリとpodcastがrebuildデビューした"&gt;(ブログエントリとpodcastが)rebuildデビューした&lt;/h1&gt;
&lt;p&gt;naoyaさんに紹介されて、データエンジニアリングとデータサイエンスの違いの話がrebuildデビューしました。自分で聞いてた時に突如現れた時にはお茶吹きそうになりました。rebuildは
に入ると文字起こしや一人語り回も聞けますし、本放送とライブ放送直後の配信と二回聞けてお得感満載です。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2016-05-05-detawo-ge-suo-niji-merukotodedetahuo-yong-nomin-zhu-hua-gajin-ndahua/" data-iframely-url="//cdn.iframe.ly/sP1KpBV"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=https%3A%2F%2Frubyistclub.chezo.uno%2F9%2F" title="9: Data Engineer, not Data Scientist (joker1007) - rubyist.club" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;
&lt;h1 id="本を執筆していた"&gt;本を執筆していた&lt;/h1&gt;
&lt;p&gt;お誘いいただいて一年くらい執筆活動をしていました。音楽性の違いにより解散してしまったのですが、24月の技術書典で供養したいと思います。&lt;/p&gt;
&lt;p&gt;その時の切り出したものがこれらの記事ですが、
からも引用されて嬉しかったです。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2016-05-09-ji-jie-xue-xi-nofen-lei-nohua-wosun-shi-guan-shu-tojue-ding-jing-jie-wozhong-xin-nizheng-li-sitemita/" data-iframely-url="//cdn.iframe.ly/w58SdWY"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2016-05-29-sonomoderu-guo-xue-xi-siteruno-wei-xue-xi-nano-tokun-tutara/" data-iframely-url="//cdn.iframe.ly/dE4uFBl"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;また、記事を書くに当たって
の
のPythonライブラリをPython3対応する人になっていました。&lt;/p&gt;
&lt;h1 id="出張が多かった"&gt;出張が多かった&lt;/h1&gt;
&lt;p&gt;昨年までとはうって変わって、今年だけでパロアルト、ラスベガス、シンガポールと年に三回出張で海外に行く機会がありました。研修でUSの様々なところから来たエンジニアや営業とはなしをしたり、APACのチームミーティングでシンガやインド、オーストラリアなど様々な国の人とロールプレイをしたりとハードでしたが、成長も実感できました。ただ、妻が一人で子供を二人面倒を見る期間が出来てしまうので、ワンオペ状態となっていたのは悩ましい限りです。&lt;/p&gt;
&lt;h1 id="今年書いたコードなど"&gt;今年書いたコードなど&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;小物が多いです。あまりコード書けていないので、来年はもう少しコード書けるといいなと思います。tabula-pyももう少しなんとかしたい。&lt;/p&gt;
&lt;h1 id="2017年に向けて"&gt;2017年に向けて&lt;/h1&gt;
&lt;p&gt;総じて今年は、やることを減らしてできることをやるぞ、というスタンスで来ました。自分のできる範囲内でこなせたんじゃないかと思っています。家族への負荷がもう少し下げられればなと思います。&lt;/p&gt;
&lt;p&gt;社内で思ったより色々貢献できることがありそうだぞ、ということが分かってきたので、社内外ともに色々とアウトプットしていきたいと思います。&lt;/p&gt;
&lt;p&gt;もう一つ、筋肉を付けて加齢に伴う色々な問題を解消していきたいと思います。&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;のっけから余談ですが、UKに縁のあるボスが来日中にBrexitの結果を受けて落胆していた様子と、エグゼクティブたちが来日中にトランプの勝利を見てショックを受けているのを見て、波乱の年だったなと思います&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>2016年買ってよかったもの 10選</title><link>https://chezo.uno/post/2016-12-30-2016nian-mai-tuteyokatutamono-10xuan/</link><pubDate>Fri, 30 Dec 2016 15:27:13 -0800</pubDate><guid>https://chezo.uno/post/2016-12-30-2016nian-mai-tuteyokatutamono-10xuan/</guid><description>&lt;p&gt;ハード中心ですが、2016年に買ってよかったものを書いていきます。10選と言いつつ、枝分かれをしているものがありますがご愛嬌ということで。転職をしたこともあり、必要となったものが大きく変わったのですが、今回は自分の生活を楽にしてくれたものを買えたなという気持ちです。&lt;/p&gt;
&lt;h1 id="philips-43型-4kディスプレイ"&gt;Philips 43型 4kディスプレイ&lt;/h1&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B01D9FP20A/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
Philips 43型ワイド液晶ディスプレイ (4K対応/IPSパネル/5年間フル保証) BDM4350UC/11
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: Philips(フィリップス)&lt;/li&gt;
&lt;li&gt;発売日: 2016/04/15&lt;/li&gt;
&lt;li&gt;メディア: Personal Computers&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;このモデルの良い所は、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;40インチ超えで7万以下と安い&lt;/li&gt;
&lt;li&gt;IPS液晶なので斜めから見る場合でも色の変化が少ない&lt;/li&gt;
&lt;li&gt;
なので、輝度を落としてもちらつかない&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;という点が挙げられます。特に、安い10万以下のモデルでフリッカーフリーの液晶はおそらく2016年末の段階でも他にないのではないかと思います。なお、4kで40インチ以上は大きいのではないか？ということが言われますが、PCを繋いで利用するのにはフォントサイズ等を考えると43インチが丁度良いと思います。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1枚で作業領域が4倍になる（視線移動が複数枚より少なくなる）&lt;/li&gt;
&lt;li&gt;高解像度の映像も見れる&lt;/li&gt;
&lt;li&gt;Netflixなどを家族で見られる&lt;/li&gt;
&lt;li&gt;少し離れても度の弱い眼鏡でも見られる&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;会社のMBPは4k対応で、私物のMBP late 2012は4k対応はしていないのですが、3840×2160の解像度で出力することはできます。&lt;/p&gt;
&lt;p&gt;椅子と机についてよく聞かれるのですが、机はIKEAの
のものを、椅子はバランスボールを使っています。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B000ORQ0KS/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
鉄人倶楽部(IRONMAN・CLUB) ノーバースト ヨガ ボール 65cm IMC-81
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: カワセ(KAWASE)&lt;/li&gt;
&lt;li&gt;発売日: 2012/04/05&lt;/li&gt;
&lt;li&gt;メディア: スポーツ用品&lt;/li&gt;
&lt;li&gt;購入: 17人 クリック: 37回&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;PCを使っている場合、距離としては近いので全体を一目できませんが、それでも視線移動だけで十分広さを活用することができます。特に資料を作るときにパワーポイントを3画面とマインドマップを開けたのは、コンテクストスイッチが減りとても効率が上がりました。&lt;/p&gt;
&lt;p&gt;合わせて買ったものとしては、MinDP-&amp;gt;DPケーブル、マウス、Bluetoothキーボード、液晶クロス、クリーニング液を買いました。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B00YOQYQWY/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
Rankie 金メッキコネクタ搭載 Mini DisplayPort | Thunderbolt™ Port → DisplayPort 変換ケーブル 2m (ブラック)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: Rankie&lt;/li&gt;
&lt;li&gt;メディア: エレクトロニクス&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B010N21JYA/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
Logicool ロジクール MXAnywhere2™ ワイヤレスモバイルマウス BluetoothSmart・USB対応 MX1500
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: ロジクール&lt;/li&gt;
&lt;li&gt;発売日: 2015/07/16&lt;/li&gt;
&lt;li&gt;メディア: Personal Computers&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B00U260UR0/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
Anker ウルトラスリム Bluetooth ワイヤレスキーボード iOS/Android/Mac/Windows に対応 ホワイト
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: Anker&lt;/li&gt;
&lt;li&gt;メディア: エレクトロニクス&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;広い画面になると普通のメガネ拭きなどではとてもじゃないけれど掃除が大変だったので大きいクロスを買いました。子供がティッシュで吹いてくれて傷がついたりしたのも、簡単に復旧できました。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B000248ZQ0/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
サンワサプライ 液晶画面用ハイテククロス DK-KC5
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: サンワサプライ&lt;/li&gt;
&lt;li&gt;発売日: 2004/03/21&lt;/li&gt;
&lt;li&gt;メディア: Personal Computers&lt;/li&gt;
&lt;li&gt;購入: 57人 クリック: 173回&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B000CQ738Y/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
ELECOM ディスプレイ用クリーニングリキッド CK-DP60
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: エレコム&lt;/li&gt;
&lt;li&gt;発売日: 2005/10/27&lt;/li&gt;
&lt;li&gt;メディア: Personal Computers&lt;/li&gt;
&lt;li&gt;購入: 16人 クリック: 17回&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;なお、
でも、MBP late 2012ではFull HD以上の解像度が安定して出せなかったので、素直にminiDP-&amp;gt;DPのケーブルを利用するのが良いと思います。&lt;/p&gt;
&lt;p&gt;もともと持っていたリモコン付きのHDMI切替器と、DAC付きアンプ、パッシブスピーカーを組み合わせて使っています。HDMI切替器があると便利なのは、Chromecastのようにスリープモードがない端末を付けているとモニターが点きっぱなしになってしまうのを防ぐことができます。また、HDMIから音を光デジタル出力で分離できるので、本体のいまいちなスピーカーを使う必要がありません。もちろん、デジタルAVアンプが1台あればそれで十分かと思います。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B0125PNDTC/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
ティアック Bluetooth/USB/DAC搭載ステレオプリメインアンプ Reference 301 スペシャルパッケージ AI-301DA-SP/S
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: ティアック&lt;/li&gt;
&lt;li&gt;発売日: 2015/08/03&lt;/li&gt;
&lt;li&gt;メディア: エレクトロニクス&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B009GQRCUK/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
サンワダイレクト HDMIセレクター HDMI切替器 4入力×1出力 光、同軸デジタル出力付き 3D対応 リモコン付 400-SW015
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: サンワダイレクト&lt;/li&gt;
&lt;li&gt;メディア: エレクトロニクス&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="roomba"&gt;Roomba&lt;/h1&gt;
&lt;p&gt;奥さんへの負荷が下がるし、部屋に物を置かない生活が手に入るので、子持ちの家庭には必須でした。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B00LKQBHVO/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
iRobot Roomba 自動掃除機ルンバ870 ピューターグレー 870 【日本仕様正規品】
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: iRobot (アイロボット)&lt;/li&gt;
&lt;li&gt;メディア: その他&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="ポータブルpcスタンド"&gt;ポータブルPCスタンド&lt;/h1&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B00NVB7VY8/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
Next Step PC スタンド パソコン ホルダー スタンド 軽量 頑丈 持ち運び 便利 肩こり・腰痛にも◎ ipad, MacBook Air ~ 大きなパソコンまで ※取扱説明書付 【メーカー保障12ヵ月】
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: Next Step&lt;/li&gt;
&lt;li&gt;メディア: エレクトロニクス&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;外や家で作業をするときに、これを持っていくことでかなり肩こりが減りました。miyagawaさんはじめ多くの人は
を愛用しているようですが、こちらの製品でも僕には十分でした。&lt;/p&gt;
&lt;h1 id="shure-mv88"&gt;Shure MV88&lt;/h1&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B01GE2L1SC/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
【国内正規品】SHURE iPhone iPad用マイク MV88 MOTIVシリーズ 24bit/48kHz MV88A-A
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: SHURE&lt;/li&gt;
&lt;li&gt;メディア: エレクトロニクス&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;rebuildのmiyagawaさんがオススメしていたので買いました。これとiOS端末を持っていくことで、どこでもPodcastの収録や映像の録画ができるようになりました。特にRubyKaigiでmirakuiさんとの収録をできたのはMV88のおかげです。&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=https%3A%2F%2Frubyist.club%2F10%2F" title="10: Go your way (mirakui) - rubyist.club" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://rubyist.club/10/"&gt;rubyist.club&lt;/a&gt;&lt;/cite&gt;
&lt;h1 id="deuter-グラント"&gt;deuter グラント&lt;/h1&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B00HOD2PFO/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
[ドイター
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: deuter(ドイター)&lt;/li&gt;
&lt;li&gt;メディア: スポーツ用品&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;自転車で出勤することもでき、15インチのMBPが入るものを探していたらこれに到達しました。同僚が使っているノースフェイスのバッグもよかったのですが、腰で止めることができるのが良いです。国内の1泊程度の出張であればこれ1つで十分ですし、海外出張のときの機内持ち込みにも良いです。&lt;/p&gt;
&lt;h1 id="毛玉取り器"&gt;毛玉取り器&lt;/h1&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B0045Y0HP0/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
テスコム 毛玉取り器 グレー KD778-H
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: テスコム(TESCOM)&lt;/li&gt;
&lt;li&gt;発売日: 2010/10/20&lt;/li&gt;
&lt;li&gt;メディア: ホーム&amp;amp;キッチン&lt;/li&gt;
&lt;li&gt;購入: 7人 クリック: 10回&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;妻の希望で買ったのですが、電源がつながるタイプのためパワーが強く驚くほどよく毛玉が取れるそうです。子供の服なんかによく使っています。&lt;/p&gt;
&lt;h1 id="bluetoothオーディオ製品"&gt;Bluetoothオーディオ製品&lt;/h1&gt;
&lt;p&gt;AnkerのSoundCoreは再生時間が24時間と長く、一週間くらい充電しなくても良いので気に入っています。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B01K1V4D6E/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
Anker SoundBuds Sport IE20, In-Ear Bluetooth Earbuds with Smart Magnetic Function, Wireless Headphones with AptX, CVC 6.0 Noise Cancellation, 8-Hour Playtime, Bluetooth Headset with Mic [並行輸入品
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: Anker&lt;/li&gt;
&lt;li&gt;メディア: エレクトロニクス&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;2個めのAnker SoundBuds Sport IE20はなぜか高い並行輸入しかありませんが、こちらは非常に便利です。とりあえず、外に出る時これで十分と思わせてくれたのは大きいです。音はまぁまぁで、充電の仕方が微妙ではありますが良い製品だと思います。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B016XKHLCK/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
Anker SoundCore ポータブル Bluetooth4.0 スピーカー 24時間連続再生可能【デュアルドライバー / ワイヤレススピーカー / 内蔵マイク搭載】(ブラック) A3102011
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: Anker&lt;/li&gt;
&lt;li&gt;メディア: エレクトロニクス&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Jabraの片耳タイプのヘッドセットは、外を出歩く時やHangout等のテレカン時に良いです。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B00TQJBWXU/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
Jabra BOOST ブラック ワイヤレス Bluetooth イヤホン ヘッドセット (モノラル) 【日本正規代理店品】
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: Jabra&lt;/li&gt;
&lt;li&gt;発売日: 2015/03/06&lt;/li&gt;
&lt;li&gt;メディア: エレクトロニクス&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="dot"&gt;dot&lt;/h1&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;EARINのような耳の部分だけのBluetoothヘッドセットです。こちらは充電器が磁石でくっつくようになっており、スタイリッシュで使いやすいです。電池も一回の充電で1時間半くらいは連続再生できるので、長くないrebuildであれば問題なく聞けます。&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; 特性として接続してから聞けるまでに少し時間がかかるのと、音はそこまで良くないのを除けば非常に良い買い物をしたと思います。&lt;/p&gt;
&lt;h1 id="箱みかん"&gt;箱みかん&lt;/h1&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B00AUQSQN2/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
産地直送　和歌山 【訳あり】みかん 小玉（２S、Sサイズ） ５ｋｇ（傷あり、サイズ不揃い、ご自宅用)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: YAMATAベジフル.net&lt;/li&gt;
&lt;li&gt;メディア: その他&lt;/li&gt;
&lt;li&gt;クリック: 1回&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;今年の冬は、子供が非常にみかんを食べるので箱で買うことにしました。近所のスーパーで箱売りをしている店が見つからなかったのでAmazonで買っていますが、子連れで買うのが厳しいのでかなり助かっています。これのおかげで、冬の風邪によるダウン率が下がっている気がします。&lt;/p&gt;
&lt;h1 id="アシックスのセミオーダー中敷きの靴"&gt;アシックスのセミオーダー中敷きの靴&lt;/h1&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;前職とロールが変わったため、外を出歩くことが増えました。そのため、ビジネスにもカジュアルにも使えそうな靴を探していたのですが、自分の足の形に合う靴がなかなか見つかりませんでした。もちろん、既成靴じゃないものを注文するという方法もあるかとは思いますが、今回はアシックスで足の形を計測し、自分にあった中敷きをしくことで解決しました。歩人館とよばれる直営店で計測をしてくれますが、横に広めで高さが低めの足の自分にとっては、ここのおかげでかなり楽な靴を買うことができました。&lt;/p&gt;
&lt;p&gt;いくつか、トレーニンググッズも買ったのですが、来年はこれらをちゃんと使えているよという報告にできればなと思います。&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;残念ながらbackspace.fmは厳しいです&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>今年読んで面白かった漫画 2016年編</title><link>https://chezo.uno/post/2016-12-25-jin-nian-du-ndemian-bai-katutaman-hua-2016nian-bian/</link><pubDate>Sun, 25 Dec 2016 13:30:04 -0800</pubDate><guid>https://chezo.uno/post/2016-12-25-jin-nian-du-ndemian-bai-katutaman-hua-2016nian-bian/</guid><description>&lt;p&gt;海外出張の移動やKindle Unlimitedとかもあって結構漫画を読む機会が多かったのですが、今年読んだ漫画のオススメを書いていきます。&lt;/p&gt;
&lt;p&gt;買っているものと、マンガワンで一気読みしたものとあります。マンガワンはDAUを上げるための施策がよく出来ていて、12時間毎にチケットが4枚回復して4話まで読めるという設計(iOS。Androidは時間制限)はなかなか良く出来ています。4チケット以上持つことができないので、回復時間が来たら読まなきゃ、という気持ちになります。実際このスタイルは結構成功している部類に入っているのか、コミコなどの他のアプリも似た手法を取ってきています。なお、定期的に入れ替えられる「一気読み」がなかなか良く、まぁ10巻以上のものは普通に全部読み終わらないので、追加チケットを買うか別のところで買わざるを得ません。&lt;/p&gt;
&lt;p&gt;さて、前置きはこの辺にして本題に入ろうと思います。どちらかと言うとメジャーな作品が多いかとは思います。&lt;/p&gt;
&lt;h1 id="マージナルオペレーション"&gt;マージナル・オペレーション&lt;/h1&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B00HD9J0ZW/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
マージナル・オペレーション（１） (アフタヌーンコミックス)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作者: 芝村裕吏,キムラダイスケ&lt;/li&gt;
&lt;li&gt;出版社/メーカー: 講談社&lt;/li&gt;
&lt;li&gt;発売日: 2014/01/10&lt;/li&gt;
&lt;li&gt;メディア: Kindle版&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ラノベ好きゲーム好きニート体質の主人公がやっとの思いで就職した会社が倒産し、民間軍事会社の「内勤」を始める。この内勤というのが曲者で、「グラフィックもしょぼくできの悪い戦略シミュレーションゲームのよう」なものを進めていきます。成績良くこなしていく主人公が見たものは&amp;hellip;。ということで、同名の小説を元にした漫画で戦争ものの作品が好きな人は良いと思います。&lt;/p&gt;
&lt;h1 id="ブラックラグーン"&gt;ブラック・ラグーン&lt;/h1&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作者: 広江礼威&lt;/li&gt;
&lt;li&gt;メディア: Kindle版&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Netflixでアニメも見れる作品です。タイの無法者が集まるロアナプラという架空の都市を舞台にした、ガンアクションものです。テイストとしては現代のカウボーイビバップという感じで、あのノリが好きな人は良いと思います。&lt;/p&gt;
&lt;h1 id="aiの遺電子"&gt;AIの遺電子&lt;/h1&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作者: 山田胡瓜&lt;/li&gt;
&lt;li&gt;メディア: Kindle版&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;人間とヒューマノイドが共に暮す近未来社会でのオムニバス作品です。主人公は人工知能の専門医ですが、手塚治虫や星新一を読んでいるような面白さです。人間とヒューマノイドが結婚もできる時代に、それでもロボットは行動が制限されている、みたいな設定の中、様々な人やヒューマノイドが苦悩しながら生きていきます。&lt;/p&gt;
&lt;h1 id="かもめチャンス"&gt;かもめ☆チャンス&lt;/h1&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作者: 玉井雪雄&lt;/li&gt;
&lt;li&gt;メディア: Kindle版&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;自転車漫画です。さえない信金のおじさんがある時自転車に目覚めるという作品です。弱虫ペダルなんかよりは比較的地道に成長していくので、読んでいて親近感がわきます。完結しています。&lt;/p&gt;
&lt;h1 id="オメガトライブ--オメガトライブキングダム"&gt;オメガトライブ / オメガトライブキングダム&lt;/h1&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作者: 玉井雪雄&lt;/li&gt;
&lt;li&gt;メディア: Kindle版&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作者: 玉井雪雄&lt;/li&gt;
&lt;li&gt;メディア: Kindle版&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;かもめ☆チャンスの作者の玉井雪雄の作品。主人公がひょんなことから人類が新しい種に進化し、そこから世界を巻き込んだ新しい戦いがはじまります。本作品は、梶秋一や桜一郎など非常に強烈なキャラクターが所狭しと駆け回るのも面白いところです。なお、かもめ☆チャンスで梶も桜もちょっと違う名前で出ています。完結しています。&lt;/p&gt;
&lt;h1 id="盾の勇者の成り上がり"&gt;盾の勇者の成り上がり&lt;/h1&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B00LBPG6QA/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
盾の勇者の成り上がり　1&amp;lt;盾の勇者の成り上がり&amp;gt; (コミックフラッパー)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作者: 藍屋球&lt;/li&gt;
&lt;li&gt;出版社/メーカー: KADOKAWA / メディアファクトリー&lt;/li&gt;
&lt;li&gt;発売日: 2014/07/23&lt;/li&gt;
&lt;li&gt;メディア: Kindle版&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;同名のラノベの漫画化作品。異世界転生した主人公が災厄と戦うために与えられた伝説の武器が盾だった&amp;hellip;。自分一人では攻撃力がないため、虐げられながら仲間を探しながら旅を続けていく話です。人間周りの駆け引きが多く、異世界に行くけれど地道に努力するタイプの作品です。&lt;/p&gt;
&lt;h1 id="中卒労働者から始める高校生活"&gt;中卒労働者から始める高校生活&lt;/h1&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B00H2A7E9Q/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
中卒労働者から始める高校生活 1
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作者: 佐々木ミノル&lt;/li&gt;
&lt;li&gt;出版社/メーカー: 日本文芸社&lt;/li&gt;
&lt;li&gt;発売日: 2013/12/06&lt;/li&gt;
&lt;li&gt;メディア: Kindle版&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;家庭の事情で中卒の主人公が働きながら妹と一緒に定時制高校に行く話です。定時制高校だから、様々な年齢や経歴（普通高校を退学したり、若い時代には高校に行けなかったり）を持った生徒が通っていてそこで起こる人間模様が描かれています。&lt;/p&gt;
&lt;h1 id="ろんぐらいだぁす"&gt;ろんぐらいだぁす！&lt;/h1&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B089Y3RDHW/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
ろんぐらいだぁす！新装版
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;アニメにもなった自転車漫画です。タイトルの通り、長距離を自転車で走るだけの話ですが、少しずつ乗れるようになって成長していく様が読んでいて楽しいです。のんびりぼーっと読めるので気分転換にはちょうどよいです。なお、読んでいるとどう見ても美少女の中はオッサンにしか見えません。&lt;/p&gt;
&lt;h1 id="landreaall"&gt;Landreaall&lt;/h1&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B00AIL4DG8/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
Landreaall: 1 (ZERO-SUMコミックス)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作者: おがきちか&lt;/li&gt;
&lt;li&gt;出版社/メーカー: 一迅社&lt;/li&gt;
&lt;li&gt;発売日: 2012/12/07&lt;/li&gt;
&lt;li&gt;メディア: Kindle版&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;剣と魔法との中世ファンタジーものです。最初は辺境の貴族と囚われの姫との恋物語という雰囲気ではじまるのですが、王都の学園に行くに従って様々な国の思惑が絡んできます。ファイアーエムブレムやファイナルファンタジータクティクスのような中世をテーマとしたシミュレーションゲームが好きな人には良いでしょう。もともとはKindle Unlimitedで読み始めたのですが、思った以上に人間模様の描写が面白くのめり込んでしまいました。&lt;/p&gt;
&lt;h1 id="スティーブズ"&gt;スティーブズ&lt;/h1&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B079TNHVWX/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
スティーブズ（５） (ビッグコミックス)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;言わずと知れた、スティーブジョブズ、ウォズニアックによるApple創業からのお話。ジョブズの現実歪曲空間やアランケイの東條シーンなど、漫画っぽいアレンジで非常に楽しく表現しています。裏取りをしながらも、伝記を読むよりも話として楽しめるように作られています。&lt;/p&gt;
&lt;h1 id="まおゆう魔王勇者この我のものとなれ勇者よ断る"&gt;まおゆう魔王勇者「この我のものとなれ、勇者よ」「断る！」&lt;/h1&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B01K197ZKC/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
まおゆう魔王勇者　「この我のものとなれ、勇者よ」「断る！」(18)&amp;lt;まおゆう魔王勇者　「この我のものとなれ、勇者よ」「断る！」&amp;gt; (角川コミックス・エース)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作者: 石田あきら&lt;/li&gt;
&lt;li&gt;出版社/メーカー: KADOKAWA / 角川書店&lt;/li&gt;
&lt;li&gt;発売日: 2016/08/26&lt;/li&gt;
&lt;li&gt;メディア: Kindle版&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;もともと2ちゃんねるに投稿された小説の漫画版。ようやく完結しました。魔王と勇者が戦わず世界をより良くするよう手を結んだら、という話です。文明の進んでいく様子や他種族混成の軍隊による戦いが展開されるのが面白いです。&lt;/p&gt;
&lt;h1 id="シドニアの騎士"&gt;シドニアの騎士&lt;/h1&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B00TIFKG70/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
シドニアの騎士（１４） (アフタヌーンコミックス)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作者: 弐瓶勉&lt;/li&gt;
&lt;li&gt;出版社/メーカー: 講談社&lt;/li&gt;
&lt;li&gt;発売日: 2015/02/23&lt;/li&gt;
&lt;li&gt;メディア: Kindle版&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;アニメにもなった作品。完結しました。宇宙で未知の生命体との戦いを繰り返していくという、王道的なSFものです。rebuildでなおやさんが話題にしていたので覚えている方も多いと思います。宇宙ものが好きな人は是非。&lt;/p&gt;
&lt;h1 id="市場クロガネは稼ぎたい"&gt;市場クロガネは稼ぎたい&lt;/h1&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B00C7Q5NN4/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
市場クロガネは稼ぎたい（１） (少年サンデーコミックス)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作者: 梧桐柾木&lt;/li&gt;
&lt;li&gt;出版社/メーカー: 小学館&lt;/li&gt;
&lt;li&gt;発売日: 2013/03/29&lt;/li&gt;
&lt;li&gt;メディア: Kindle版&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;稼ぐことが正義とされる学園で、財閥の御曹司である市場クロガネが一文無しからスタートして稼ぎまくる話。外部のお金が全く使えない世界で、自分の実力だけでチャレンジして稼いでいくという資本主義を凝縮したような学園です。漫画としてデフォルメされていますが、少年誌にしては経済的な要素を盛り込んできていて、インベスターZとは少し違う系統ですが面白いです。&lt;/p&gt;
&lt;h1 id="ヴィンランドサガ"&gt;ヴィンランド・サガ&lt;/h1&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B074C9PB88/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
ヴィンランド・サガ
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;プラネテスの幸村誠の作品。ヴァイキングの時代のアイスランドやノルウェー、イギリスなどの戦いの話。血なまぐさい所も多いですが、結構史実も調べた上で作品を書いているようで幸村先生の遅筆さ丁寧さが際立ちます。少しずつ進んでいますが、緊迫感が続いており面白さは変わりません。&lt;/p&gt;
&lt;h1 id="振り返ってみると"&gt;振り返ってみると&lt;/h1&gt;
&lt;p&gt;振り返ってみると、プラネテスやビバップみたいな宇宙モノや中世の時代物、戦争ものが好きなようです。他にも面白い作品があればどんどん読んでいきたいと思います。&lt;/p&gt;</description></item><item><title>#eigo と私〜あるいは子持ちの業務外活動の続け方</title><link>https://chezo.uno/post/2016-12-21-number-eigo-tosi-aruihazi-chi-tinoye-wu-wai-huo-dong-nosok-kefang/</link><pubDate>Wed, 21 Dec 2016 05:00:00 -0800</pubDate><guid>https://chezo.uno/post/2016-12-21-number-eigo-tosi-aruihazi-chi-tinoye-wu-wai-huo-dong-nosok-kefang/</guid><description>&lt;p&gt;こんにちは、温泉行きたいです。この記事は、
の21日目です。1日前は、
の保険の話でした。&lt;/p&gt;
&lt;p&gt;Clouderaという外資系のHadoop/Sparkを中心としたプラットフォームを提供する会社に今年転職しました。そこで生きていく上で必要な #eigo の話を中心に2016年を振り返ります。&lt;/p&gt;
&lt;h1 id="転職した"&gt;転職した&lt;/h1&gt;
&lt;p&gt;
にも書きました。今ちょうど9ヶ月経ちましたが、まだ首にならずなんとか頑張ってやっています。&lt;/p&gt;
&lt;p&gt;シンガポールでAPACのSales Enginnerでのミーティングに行ったら、いろんなアジアの国の英語とディスカッションをして揉まれました。 日本のチームは成長中なので、グローバルに比べると相対的に人数も少なく、Doug CuttingやMLlibに詳しいSparkコミッターのSean OwenをはじめとするUSのエンジニアと話す時間が多くあるのがとても楽しいです。&lt;/p&gt;
&lt;p&gt;機械学習周りを自分の強みとして、いくつかの発表もさせていただきました。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2016-07-26-xia-zhen-tusheng-ri-spark-plus-python-plus-data-scienceji-ri-wokai-cui-simasita-and-ibiswoshao-jie-simasita-number-summerds/" data-iframely-url="//cdn.iframe.ly/X2lxekC"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;&lt;/br&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2016-11-14-cloudera-world-tokyo-2016deji-jie-xue-xi-purodakutonozuo-rifang-wohua-simasita-number-cwt2016/" data-iframely-url="//cdn.iframe.ly/vauT4G3"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;さらに機械学習の話に加えHadoop/Spark周りの技術やスキル増やしており、考えられることの幅が広がっているのを実感できます。また、会社の新しいプロダクトや大きな変更が3ヶ月毎に起こるので、それを理解し広めるのに終わりがなく、息をつく暇もありません。&lt;/p&gt;
&lt;p&gt;全然関係ないのですが、Clouderaに誘ってくれた @shiumachi さんとはIngressのコミュニティ運営で繋がったのですが、人生何が何につながるかわかりませんね。でも、今回の転職で「この人達と働きたい」という想いを重視したのですが、それには間違いがなかったなと思っています。&lt;/p&gt;
&lt;h1 id="英語の話"&gt;英語の話&lt;/h1&gt;
&lt;p&gt;転職のところでも書きましたが、英語はDMM英会話とiKnow!、podcastで継続して学習しています。DMM英会話の話をkawasaki.rbでLTしたらインタビューもしていただきました&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;。&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Feikaiwa.dmm.com%2Fblog%2Fenglish%2Fariga-michiaki%2F" title="英会話未経験から外資系に転職したエンジニア有賀康顕さんの英語学習法【ユーザーインタビュー#1】" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="http://eikaiwa.dmm.com/blog/english/ariga-michiaki/"&gt;eikaiwa.dmm.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;DMM英会話は先生のばらつきがありますが、いろいろな国の多くの先生と話せるのが良いです。フィリピンの先生から自分の好きだった合唱団がなくなってしまった話を聞いたときは感慨深いものがありました。また、ニュースの教材が、VOAからよい感じにピックアップしてくれる&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;ので気に入っています。 DMM英会話のスケジュールをGoogle カレンダーに登録してるのですが、最近見つけたこのブックマークレットが非常に便利です。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2016-12-21-number-eigo-tosi-aruihazi-chi-tinoye-wu-wai-huo-dong-nosok-kefang/20161219084621_hu_4d38e0c85373dce0.webp 320w, https://chezo.uno/post/2016-12-21-number-eigo-tosi-aruihazi-chi-tinoye-wu-wai-huo-dong-nosok-kefang/20161219084621_hu_1de4ee3ea0533017.webp 480w, https://chezo.uno/post/2016-12-21-number-eigo-tosi-aruihazi-chi-tinoye-wu-wai-huo-dong-nosok-kefang/20161219084621_hu_a78813dce0421b72.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2016-12-21-number-eigo-tosi-aruihazi-chi-tinoye-wu-wai-huo-dong-nosok-kefang/20161219084621_hu_4d38e0c85373dce0.webp"
width="760"
height="501"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;10月はこんな感じです。11月に長らく風邪を引いてしまったので、ちょっとブランク空きましたが、会社からもDMM英会話のお金を出してもらっているので、手を抜くわけにはいきません。&lt;/p&gt;
&lt;p&gt;単語については、そろそろiKnow!からvocabulary.comに移行しようかとも悩んでいますが今のところアプリもあるし、効率良くできるのでiKnow!で続けています。iKnow!はPCでやると圧倒的に効率良くできるので家でできるときはそうしていますが、通勤でやることもあります。&lt;/p&gt;
&lt;p&gt;最近おすすめのpodcastとしては、All Ears English, GCP Podcastです。GCP Podcastは技術的な話も分かりやすく説明してくれ、スピードもそこそこなので良いです。&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.allearsenglish.com%2F" title="All Ears English Podcast | Learn Advanced English" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://www.allearsenglish.com/"&gt;www.allearsenglish.com&lt;/a&gt;&lt;/cite&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.gcppodcast.com%2F" title="Google Cloud Platform Podcast" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://www.gcppodcast.com/"&gt;www.gcppodcast.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;英語の学習は筋トレみたいなもので、使わなければ衰えていきます。実際、風邪でダウンしたりしてレッスンをしばらくやらないと、lとrの発音周りで舌が回らずに苦労します。あとは、語彙にしろ表現にしろ、引き出しの多さを増やさないとと思っています。 Duolingoの萩原さんも言うとおり、語学学習は継続してやる人が伸びると言いますし、DMM英会話のような低価格で毎日継続するのが一番得な料金体系&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt;はペースを作りやすいのが良いです。&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fjp.techcrunch.com%2F2016%2F12%2F20%2Fduolingo%2F" title="週末勉強する人は続かない―データから見えた外国語学習に成功する人の3つの特徴 | TechCrunch Japan" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="http://jp.techcrunch.com/2016/12/20/duolingo/"&gt;jp.techcrunch.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;業務で英語を使うようになって、以前に比べて明らかに話せるようになったなぁという実感はあります。例えば、妻の友人のスウェーデン人カップルと2年前に話したときは、片言で会話する感じだったのが今は難なく話せるなという実感を得ています。一方で、英語がほぼネイティブの人同士の手加減のないスピードで議論をしている環境にいくと、まだまだしんどいです。DMM英会話のインタビューのときにお試しでいただいたネイティブ講師のチケットを試した時にも、ネイティブの人の語彙の豊富さと速い言い回しがとても訓練になりましたが、語彙セットが違うのが一番苦労します。&lt;/p&gt;
&lt;p&gt;特に、Cloudera World TokyoのJulietの発表の統計や物理、数学用語の訳をして感じたのですが、専門用語の英語の語彙が圧倒的に少ないと感じています。 半分英語の学習と称して、
を学んでいますが、Quizがバグってる、Hopfield NetworkやRBMは2016年にやる必要があるのかなど色々な障壁と戦いながら続けています。&lt;/p&gt;
&lt;p&gt;英語が前よりできるようになって良かったことは、コミッターや同僚との議論が気楽に望めるようになったことに加えて、各国のエンタープライズやスタートアップ系のソフトウェア関係の状況が前よりも見えてくるようになったことです。例えば、ソフトウェアの文脈ではアメリカ全体が凄いというよりはシリコンバレーは特に特殊な環境で天下一武道会みたいな場所である、とか、エンタープライズ系の企業はどの国でも似たような慎重さがあるんだなとか。&lt;/p&gt;
&lt;p&gt;一方、英語ができるようになって残念なこともありました。例えば、GitHubで公開した簡単なラッパーに関する質問がメールで飛んできてそれをIssueに誘導したら
を
りしました。これは、多くの人と接する機会が生まれる反面、出会う人の分散も広くなるので仕方のないことだとは思います。&lt;/p&gt;
&lt;h1 id="妻子を持ちながら仕事以外の活動を続けるには"&gt;妻子を持ちながら仕事以外の活動を続けるには&lt;/h1&gt;
&lt;p&gt;
を月一で開催したり、
を主催したり、たまに
を収録したりしていると、たまに「お子さんがいるのによく時間がとれますね？」と言われる時があります。&lt;/p&gt;
&lt;p&gt;確かに、今年は3ヶ月に一回海外出張もしていたので、妻への負荷は上がった面もあります。また、1年位本の執筆に勤しんでいたこともあり、週末に子供を外出させることをサボっていたところもあります。なお、本は諸般の事情により企画がなくなったのですが、レビューいただいたpyspaの面々からはchezou概念本と呼ばれ一部から「まだなの」と定期的にツッコミが続くため、
に応募しています&lt;sup id="fnref:4"&gt;&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref"&gt;4&lt;/a&gt;&lt;/sup&gt;。「サークルカットって何？」と妻に聞いたら「カタログに載せるやつじゃん。必要なら作るよ」という心強い環境なので、通ったら技術書典でお会いしましょう。&lt;/p&gt;
&lt;p&gt;DMM英会話も原則毎朝やるようにしていますし、週末にCourseraのコースをまとめて取り組んでいたりしますが、リズムを作って継続するということが良かったのかなと思います。こうしたリズムは、執筆活動を継続していたときに通勤時間に書いたり週末に書いたりという時間を作っていたのでできるだろうなという気はしていました。&lt;/p&gt;
&lt;p&gt;今年に入ってゲームをすることが圧倒的に減りました。new 3DS LLも買ったんですがなかなか聖戦の系譜が進まない&amp;hellip;。情報の収集等も基本はてブのマイホットエントリーとpodcastを聞き流す程度です。以前に比べてあまり勉強会に行かないようにしています。これは、人から執筆するなら勉強会は行かないほうが良いと言われたのもあってです。場を作る側の意義は認識しているのでkawasaki.rbは継続していますが、参加したのは大きなイベントだとRuby Kaigiくらいでしょうか。有り体に言えば、自分の時間は有限なので取捨選択を意識的にするようにはしています。&lt;/p&gt;
&lt;p&gt;ただ、そもそも出社時間に融通がきくこと、お客様とのミーティング等がない限り自宅で働くことも許容されている&lt;sup id="fnref:5"&gt;&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref"&gt;5&lt;/a&gt;&lt;/sup&gt;ので、そこが大きく効いていると思います。また、妻が体調崩したときにも子供の面倒を見ながら家で仕事をすることができる環境なので、そこは助かっています。&lt;sup id="fnref:6"&gt;&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref"&gt;6&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;あとは、できるだけ継続するためのコストを削減することを意識しています。kawasaki.rbは場所はNTT-ATさんのおかげで悩む必要もなく、ペースメーカーとしての読書会があるので手ぶらで参加もできます。DMM英会話もレッスンが終わったら強制的に翌日のレッスンを予約するルールを適用することで、翌日の時間を選ぶだけの問題に帰着させています。&lt;/p&gt;
&lt;h2 id="今年一番の買い物"&gt;今年一番の買い物&lt;/h2&gt;
&lt;p&gt;家庭内/業務での業務効率を上げるために、ルンバ870とPHILIPSの43インチの4kモニタを買いました。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B00LKQBHVO/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
iRobot Roomba 自動掃除機ルンバ870 ピューターグレー 870 【日本仕様正規品】
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: iRobot (アイロボット)&lt;/li&gt;
&lt;li&gt;メディア: その他&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B01D9FP20A/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
Philips 43型ワイド液晶ディスプレイ (4K対応/IPSパネル/5年間フル保証) BDM4350UC/11
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: Philips(フィリップス)&lt;/li&gt;
&lt;li&gt;発売日: 2016/04/15&lt;/li&gt;
&lt;li&gt;メディア: Personal Computers&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;洗濯乾燥機はもともとあったのですが、ルンバは何故これまで買ってこなかったのかというくらい活躍しています。Amazonのタイムセールさまさまです。後は、食器洗浄機があればいいんですが、賃貸だとなかなかスペース作るのが難しいので悩ましいところです。&lt;/p&gt;
&lt;p&gt;ルンバのおかげで部屋が以前より片付くようになったので、PHILIPSの43インチモニタを買いました。これは、おそらく2016年12月段階では7万円前後までの低価格の4kモニタの中では頭一つ抜きん出ています。IPS液晶なので見る角度による色の変化が少ないこと、フリッカーフリーなので輝度を下げてもちらつかないことが挙げられます。4kモニタの生産性は目の視線移動だけで4枚のモニタがあるのと同義になるというところでしょうか。Cloudera World Tokyoでの発表資料を作る際は、社内のスライド2枚とマインドマップを開きながら自分のスライドを書いて効率がかなりあがりました。&lt;/p&gt;
&lt;p&gt;また、モニタにChromeCastとAppleTVが繋がっていますが、主にChromeCastが活躍しています。妻が子供にYouTubeを見せたり、Netflixを見せたりしています。 ChromeCastの良いところは、HDMI-CMCに対応しているモニタならYouTubeアプリからキャストを開始すると電源連動で起動するのでキッチンからリビングの操作が可能です。(残念ながらフィリップスのモニタは対応していない) また、スマホの制御とは独立してChromeCastが動くので、ChromeCastでYouTubeを再生しながらキッチンではpodcastを聞くということが可能です。ChromeCastのYouTubeアプリにはキューが存在し、それに見せたい動画をリストに突っ込めば適切な動画のみを見せることができます。キューが枯渇しても関連動画やオススメ動画が出ないので、うっかり子供に見せたく無い動画が出てくるのを防げます。&lt;/p&gt;
&lt;p&gt;当たり前の話ではありますが、業務や家庭内の活動の生産性を上げるための投資は惜しんではいけないなと思います。&lt;/p&gt;
&lt;h2 id="子どもと-eigo"&gt;子どもと #eigo&lt;/h2&gt;
&lt;p&gt;子供がNetflixのエルモズワールドという番組を気に入ったおかげで、今ではYouTubeにあるセサミストリートシリーズ(Sesame Studios)を見ているようです。&lt;/p&gt;
&lt;p&gt;ちょっと前にピコ太郎さんのPPAPのエルモとクッキーモンスター版の
が出ましたが、これ以外にも実はアメリカで有名な俳優さんやアーティストとコラボをしていたりします。ロードオブザリングのガンダルフにクッキーモンスターが&amp;quot;resist&amp;quot;という単語の意味を学んだり、スターウォーズパロディをしたり、ワンダイレクションとコラボしたり。&lt;/p&gt;
&lt;p&gt;&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/GxCplsdCwxY?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/j-LfQCPJJkY?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;横で聞いていると、自分の語彙力が小学生以下なんだなと改めて気づかされます。&lt;/p&gt;
&lt;h1 id="まとめに変えて"&gt;まとめに変えて&lt;/h1&gt;
&lt;p&gt;今年は新たな人たちとつながることができたのが特に大きな年だったなと思います。 これだけ色々とやっていけるのは、妻のおかげだなぁと思っています。本当に感謝しております。 来年は今より子供を外に連れ出したいなぁ。&lt;/p&gt;
&lt;p&gt;明日は@mopemopeさんです。&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;英会話未経験とはテクニカルタームですね :)&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;
など、日本人に合いそうな記事がわりと多い&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:3"&gt;
&lt;p&gt;1日1回25分で4950円で、レッスンは翌日持ち越しができない&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:4"&gt;
&lt;p&gt;
&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:5"&gt;
&lt;p&gt;社内ミーティングもビデオ通話でも大丈夫&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:6"&gt;
&lt;p&gt;夫婦で体調崩したりしたときのリカバリー方法をいい方法を見つけたいです。まだ、ファミサポなどは試していません。&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>iPhone 6sのバッテリー交換には電話サポート+エクスプレス交換がオススメ</title><link>https://chezo.uno/post/2016-12-17-iphone-6snobatuterijiao-huan-nihadian-hua-sapoto-plus-ekusupuresujiao-huan-gaosusume/</link><pubDate>Sat, 17 Dec 2016 11:05:14 -0800</pubDate><guid>https://chezo.uno/post/2016-12-17-iphone-6snobatuterijiao-huan-nihadian-hua-sapoto-plus-ekusupuresujiao-huan-gaosusume/</guid><description>&lt;p&gt;噂のiPhone 6sのバッテリー交換に当選しました。症状としては、突然電源断が起こるというもので、ちょいちょい突如落ちる現象には悩まされていました。&lt;/p&gt;
&lt;p&gt;当選確認は、以下のサイトでシリアル番号をいれることで確認できます。
&lt;/p&gt;
&lt;p&gt;当選したら、以下のサイトから「修理サービスを申し込む」で進めていきます。
&lt;/p&gt;
&lt;p&gt;で、ここからが本題ですが、特に東京近辺の人たちは、カジュアルにアップルストアに行けるため、すぐに終わるため店舗に行って修理交換をすることが多いと思います。ですが、今回は一斉にバッテリー交換が発生したため、バッテリーの店舗在庫が切れていたり、代替となるiPhone6sの在庫も切れているという状況になっていたそうです。&lt;/p&gt;
&lt;p&gt;今回は、店舗ですぐ交換できないという情報を同僚などから聞いていたため、試しに電話サポートを受けて見ることにしました。 というのも、電話サポートならその時々のおおよその在庫状況を把握していることが期待でき、最短の選択肢を提示してくれると考えたからです。&lt;/p&gt;
&lt;p&gt;「今すぐアドバイザーと話がしたい」を選ぶと、30秒後に電話がかかってきてトントン拍子に話が進んでいきました。「rebuildでアメリカ人は何でも電話で解決したがる」ということを言っていましたが、やはり音声情報でやりとりするのは密度が高いためスピーディーに解決しました。先方も数をこなしていたため、的確なポイントを聞いていただけましたし、予想通り店舗は在庫が切れているため1,2週間かかり、かつ複数回店舗に行かなければならないということを教えていただきました。&lt;/p&gt;
&lt;p&gt;また、音声でやりとりしているため必要な時のみ「iPhoneを探す」をオフにするなど、合理的なタイミングで必要最小限の作業をするのですみました。おそらく、チャットサポートだとやりとりが倍になっていたのではないかな、と想像します。&lt;/p&gt;
&lt;p&gt;最終的には、
という、ヤマトの宅急便で新しいiPhoneと交換してくれる方法を教えてもらい、そのまま電話で手続きが完了しました。&lt;/p&gt;
&lt;p&gt;エクスプレス交換は家で受け取りをしなければならないという手間はかかりますが、受け取り即発送となるので受け取ることができれば復元するだけです。また、通常の宅急便と同様に再配達のお願いもできるし、原則的に追加のお金がかかるわけではないので店舗に複数回行く必要もなく良かったです。&lt;/p&gt;
&lt;p&gt;**[12/18追記]**エクスプレス交換はAppleCare+加入だと無償で使え、そうで無い場合は3000円程度かかるそうです。地方などでAppleCareに入っておらずリコールにお金かかるとすると、かなり酷いですね…。 また、クレジットカードで7万円程度のお金が保証金として引き落とされ、後日返却されます。 thx @tsuboi !&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;iPhone 6sのバッテリ問題で本体交換すべく
ブログを見てAppleに電話。Appleによると、Express交換はApplecareなしだとオプション料金3000円。また、クレカ必須で本体代が一時課金される。
&lt;/p&gt;
&lt;p&gt;— S.TSUBOI (@tsuboi)
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;script async src="//platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;&lt;strong&gt;[/追記]&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;結果として、月曜に手続きをして金曜に交換完了するという5日で済んでしまったので、とても満足しています。また、はじめてアップルの電話サポートを受けましたが、他の日本のメーカーのようなたらい回しや待たされる体験もなく、やりとりも無駄にへりくだることもなく非常に気持ちが良かったです。&lt;/p&gt;
&lt;p&gt;交換時には、SIMも抜いて保護フィルムもカバーも外さなければいけないので、フィルムは買い直しました。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B00VSOCMOE/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
OAproda iphone6/6s強化ガラスフィルム2.5D 4.7inch 0.3mm硬度9H
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: OAproda&lt;/li&gt;
&lt;li&gt;メディア: エレクトロニクス&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;当選したけどまだ交換していないという人は、お試しあれ。&lt;/p&gt;</description></item><item><title>Rubyで深層学習を使った音声合成Amazon Pollyを使ってWebサイトの読み上げ音声合成してみた</title><link>https://chezo.uno/post/2016-12-01-rubydeshen-ceng-xue-xi-woshi-tutayin-sheng-he-cheng-amazon-pollywoshi-tutewebsaitonodu-mishang-geyin-sheng-he-cheng-sitemita/</link><pubDate>Thu, 01 Dec 2016 15:10:05 -0800</pubDate><guid>https://chezo.uno/post/2016-12-01-rubydeshen-ceng-xue-xi-woshi-tutayin-sheng-he-cheng-amazon-pollywoshi-tutewebsaitonodu-mishang-geyin-sheng-he-cheng-sitemita/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2016-12-01-rubydeshen-ceng-xue-xi-woshi-tutayin-sheng-he-cheng-amazon-pollywoshi-tutewebsaitonodu-mishang-geyin-sheng-he-cheng-sitemita/20161201230818_hu_4575bd82d4ad4367.webp 320w, https://chezo.uno/post/2016-12-01-rubydeshen-ceng-xue-xi-woshi-tutayin-sheng-he-cheng-amazon-pollywoshi-tutewebsaitonodu-mishang-geyin-sheng-he-cheng-sitemita/20161201230818_hu_5c2f870f9bab33d3.webp 480w, https://chezo.uno/post/2016-12-01-rubydeshen-ceng-xue-xi-woshi-tutayin-sheng-he-cheng-amazon-pollywoshi-tutewebsaitonodu-mishang-geyin-sheng-he-cheng-sitemita/20161201230818_hu_1d823f8a37c8c48b.webp 736w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2016-12-01-rubydeshen-ceng-xue-xi-woshi-tutayin-sheng-he-cheng-amazon-pollywoshi-tutewebsaitonodu-mishang-geyin-sheng-he-cheng-sitemita/20161201230818_hu_4575bd82d4ad4367.webp"
width="736"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;今日のre:InventでDeep Learningを使った音声合成サービスのAmazon Pollyが発表されました。 正直、DLを使ったの音声合成が話題になったのなんて今年に入ってからだと思っていたのに、もう商用化したんか！という気持ちでいっぱいです。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://aws.amazon.com/jp/blogs/news/polly-text-to-speech-in-47-voices-and-24-languages/" data-iframely-url="//cdn.iframe.ly/2rv5lYs?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;&lt;/br&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://aws.amazon.com/jp/polly/" data-iframely-url="//cdn.iframe.ly/mY21nZH?card=small"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//cdn.iframe.ly/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;&lt;strong&gt;[2016/12/02追記]&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;PollyがDLベースという話は
に、&amp;ldquo;Polly is an Amazon AI service that uses advanced deep learning technologies to synthesize speech that sounds like a human voice. &amp;ldquo;と書かれていますが、DNNを一部のモジュールとして使っている波形接続型じゃないの？とのことです。なので、「DLを使った」という表現に修正しました。&lt;/p&gt;
&lt;blockquote class="twitter-tweet"&gt;&lt;p lang="en" dir="ltr"&gt;Amazon Polly sounds like concatenative TTS, neither parametric nor WaveNet. I can hear concatenation glitches in its samples.&lt;/p&gt;&amp;mdash; Heiga Zen (全 炳河) (@heiga_zen) &lt;a href="https://twitter.com/heiga_zen/status/804202482780008448?ref_src=twsrc%5Etfw"&gt;December 1, 2016&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;blockquote class="twitter-tweet"&gt;&lt;p lang="ja" dir="ltr"&gt;多分DNNをどこかのモジュールで使ってる単位選択型です。Appleもそうだったりします。&lt;/p&gt;&amp;mdash; Heiga Zen (全 炳河) (@heiga_zen) &lt;a href="https://twitter.com/heiga_zen/status/804503598675750913?ref_src=twsrc%5Etfw"&gt;December 2, 2016&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;なので、
のように音声を直接生成しているわけではなさそうです。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;[/追記]&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Amazon Pollyは
のサービスとして展開していますが、画像認識(Amazon Rekognition)、音声合成(Amazon Polly)、音声認識と自然言語理解という対話用のコンポーネント(Amazon Lex)が使えるようになりました。 画像認識についてはGoogleのVision APIで話題になりましたが、その他の2つはちょっと変わっていると思いますがこれはおそらくSiriのような対話エージェントである
のバックエンドを切り売りしているんだと思います。&lt;/p&gt;
&lt;p&gt;Pollyが凄いのは、AWS CLIで簡単に音声合成がされるということです。しかも、お値段は月500万字までは無料で、その後も$0.000004/文字と非常に安く、本一冊で$2.4くらいという驚異的な安さです。なので、ちょっと前にrebuild.fmでスクリプト書くだけで音声合成でpodcastできるんじゃないみたいな話題がありましたが、
。&lt;/p&gt;
&lt;p&gt;AWS CLIを使ったbashのサンプルコードはこんな感じです。かんたんでしょ？&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ aws polly synthesize-speech &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --output-format mp3 --voice-id Joanna &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --text &lt;span class="s2"&gt;&amp;#34;Hello my name is Joanna.&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; joanna.mp3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;また、サポートしている言語数も2016/12/01現在で、ヨーロッパ言語を中心に以下の24言語をサポートしています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;アイスランド語&lt;/li&gt;
&lt;li&gt;イタリア語&lt;/li&gt;
&lt;li&gt;ウェールズ語&lt;/li&gt;
&lt;li&gt;オランダ語&lt;/li&gt;
&lt;li&gt;スウェーデン語&lt;/li&gt;
&lt;li&gt;スペイン語 (カスティリヤ)&lt;/li&gt;
&lt;li&gt;スペイン語 (米国)&lt;/li&gt;
&lt;li&gt;デンマーク語&lt;/li&gt;
&lt;li&gt;トルコ語&lt;/li&gt;
&lt;li&gt;ドイツ語&lt;/li&gt;
&lt;li&gt;ノルウェー語&lt;/li&gt;
&lt;li&gt;フランス語&lt;/li&gt;
&lt;li&gt;フランス語 (カナダ)&lt;/li&gt;
&lt;li&gt;ポルトガル語&lt;/li&gt;
&lt;li&gt;ポルトガル語 (ブラジル)&lt;/li&gt;
&lt;li&gt;ポーランド語&lt;/li&gt;
&lt;li&gt;ルーマニア語&lt;/li&gt;
&lt;li&gt;ロシア語&lt;/li&gt;
&lt;li&gt;日本語&lt;/li&gt;
&lt;li&gt;英語 (インド)&lt;/li&gt;
&lt;li&gt;英語 (ウェールズ)&lt;/li&gt;
&lt;li&gt;英語 (オーストラリア)&lt;/li&gt;
&lt;li&gt;英語 (米国)&lt;/li&gt;
&lt;li&gt;英語 (英国)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;日本語も聞いていて結構自然に聞こえており、ちょいちょい単語の認識に失敗するときは変なアクセントになりますが、レキシコンで単語を登録すれば自分で改善もできそうです。 サンプル音声はこんな感じです。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;script async src="https://assets.tumblr.com/post.js"&gt;&lt;/script&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="http://chezou.tumblr.com/post/153883804175/amazon"&gt;chezou.tumblr.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;[2016/12/02追記] Google翻訳に手伝ってもらって
。それの生成した音声も貼っておきます。&lt;/p&gt;
&lt;iframe width="100%" height="400" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?visual=true&amp;amp;url=https%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F295800373&amp;amp;show_artwork=true"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://soundcloud.com/chezou/amazon-polly-tts-demo-from-medium-article"&gt;soundcloud.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;[/追記]&lt;/p&gt;
&lt;p&gt;で、Mediumなんかの記事の中に面白い記事をよく見るのですが、英文だとなかなか途中で挫折するので、音声にすれば聞くんじゃないかと思い、記事を音声に変換するコードをRubyで書いてみました。 以下にコードがあります。&lt;/p&gt;
&lt;script src="https://gist.github.com/chezou/9919f5065cbc52f8d0349d3084ac3616.js"&gt; &lt;/script&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://gist.github.com/chezou/9919f5065cbc52f8d0349d3084ac3616"&gt;gist.github.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;ポイントとしては、幾つか重要な制約があります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API一回あたりの文字数が1500字&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;（なので、catでmp3を結合している）&lt;/li&gt;
&lt;li&gt;長い音声は、5分以降が切り捨てられる&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;詳細は以下を参考にしてください。&lt;iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fdocs.aws.amazon.com%2Fpolly%2Flatest%2Fdg%2Flimits.html" title="Limits in Amazon Polly - Amazon Polly" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="http://docs.aws.amazon.com/polly/latest/dg/limits.html"&gt;docs.aws.amazon.com&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;実際には、ちょうどHckr newsで見つけた以下の記事の音声を聞いてみました。意外と聞けます。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;もうちょっと頑張ってRSSを取得すれば、特定のサイトの最新の記事の音声を生成して、Dropboxに保存した音声をモバイルから再生するということもできそうですね。&lt;/p&gt;
&lt;p&gt;正直、安くて多言語でそれなりに自然で何よりAPIが使いやすいということで、既存の日本の音声合成を頑張ってきた企業は大変だなぁという気持ちになりますが、いろいろな使い方ができそうで楽しみです。&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;厳密には、&amp;ldquo;1500 billed characters (3000 total characters)&amp;ldquo;と書いてあるけど&amp;quot;billed characters&amp;quot;がわからない&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>icloudのカレンダーに来るイベントスパムを避けるための設定変更</title><link>https://chezo.uno/post/2016-11-26-icloudnokarendanilai-ruibentosupamuwobi-kerutamenoshe-ding-bian-geng/</link><pubDate>Sat, 26 Nov 2016 05:17:55 -0800</pubDate><guid>https://chezo.uno/post/2016-11-26-icloudnokarendanilai-ruibentosupamuwobi-kerutamenoshe-ding-bian-geng/</guid><description>&lt;p&gt;最近、めちゃくちゃicloudのカレンダーにレイバンのスパムが来るようになってうざいので、通知されないように回避するためのicloudの設定方法を書いておく。&lt;/p&gt;
&lt;h1 id="1-pcのブラウザでicloudcom-へ行きカレンダーを開く"&gt;1. PCのブラウザでiCloud.com へ行きカレンダーを開く&lt;/h1&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2016-11-26-icloudnokarendanilai-ruibentosupamuwobi-kerutamenoshe-ding-bian-geng/20161126130933_hu_fbdf177f11a833ba.webp 320w, https://chezo.uno/post/2016-11-26-icloudnokarendanilai-ruibentosupamuwobi-kerutamenoshe-ding-bian-geng/20161126130933_hu_ab2bf204a8eb77ea.webp 480w, https://chezo.uno/post/2016-11-26-icloudnokarendanilai-ruibentosupamuwobi-kerutamenoshe-ding-bian-geng/20161126130933_hu_b2533e07d2829d71.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2016-11-26-icloudnokarendanilai-ruibentosupamuwobi-kerutamenoshe-ding-bian-geng/20161126130933_hu_fbdf177f11a833ba.webp"
width="760"
height="391"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h1 id="2-左下の歯車から環境設定を開く"&gt;2. 左下の歯車から環境設定を開く&lt;/h1&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2016-11-26-icloudnokarendanilai-ruibentosupamuwobi-kerutamenoshe-ding-bian-geng/20161126130701_hu_8c8b35cd56da19c7.webp 211w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2016-11-26-icloudnokarendanilai-ruibentosupamuwobi-kerutamenoshe-ding-bian-geng/20161126130701_hu_8c8b35cd56da19c7.webp"
width="211"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h1 id="3-詳細設定のイベント参加依頼の受信方法の設定をxxxxyyyycomへメールを送信にする"&gt;3. 「詳細設定」の「イベント参加依頼の受信方法」の設定を「xxxx@yyyy.comへメールを送信」にする&lt;/h1&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2016-11-26-icloudnokarendanilai-ruibentosupamuwobi-kerutamenoshe-ding-bian-geng/20161126130707_hu_12d067a3ce2f8f2a.webp 320w, https://chezo.uno/post/2016-11-26-icloudnokarendanilai-ruibentosupamuwobi-kerutamenoshe-ding-bian-geng/20161126130707_hu_2b76a1edf98fcabb.webp 480w, https://chezo.uno/post/2016-11-26-icloudnokarendanilai-ruibentosupamuwobi-kerutamenoshe-ding-bian-geng/20161126130707_hu_5871ce972a2b7517.webp 749w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2016-11-26-icloudnokarendanilai-ruibentosupamuwobi-kerutamenoshe-ding-bian-geng/20161126130707_hu_12d067a3ce2f8f2a.webp"
width="749"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;この設定にすると、設定したメールアドレスに通知が来るのでメールを削除するだけになる。&lt;/p&gt;
&lt;h1 id="補足"&gt;補足&lt;/h1&gt;
&lt;p&gt;追加された予定を通知しないように削除するには、icloudに新規カレンダーを追加してそちらに移動してから、カレンダーごと削除すると招待した輩に通知をすることなく消せる
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2016-11-26-icloudnokarendanilai-ruibentosupamuwobi-kerutamenoshe-ding-bian-geng/20161126131353_hu_d6781effca69429.webp 320w, https://chezo.uno/post/2016-11-26-icloudnokarendanilai-ruibentosupamuwobi-kerutamenoshe-ding-bian-geng/20161126131353_hu_5f2d026313c74e1a.webp 480w, https://chezo.uno/post/2016-11-26-icloudnokarendanilai-ruibentosupamuwobi-kerutamenoshe-ding-bian-geng/20161126131353_hu_3b4a949fecbf646a.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2016-11-26-icloudnokarendanilai-ruibentosupamuwobi-kerutamenoshe-ding-bian-geng/20161126131353_hu_d6781effca69429.webp"
width="760"
height="217"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id="参考サイト"&gt;参考サイト&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>Cloudera World Tokyo 2016で機械学習プロダクトの作り方を話しました #cwt2016</title><link>https://chezo.uno/post/2016-11-14-cloudera-world-tokyo-2016deji-jie-xue-xi-purodakutonozuo-rifang-wohua-simasita-number-cwt2016/</link><pubDate>Mon, 14 Nov 2016 15:05:21 -0800</pubDate><guid>https://chezo.uno/post/2016-11-14-cloudera-world-tokyo-2016deji-jie-xue-xi-purodakutonozuo-rifang-wohua-simasita-number-cwt2016/</guid><description>&lt;p&gt;さる11/8に、自社の主催する
で、機械学習プロダクトの作り方について話をしました。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2016-11-14-cloudera-world-tokyo-2016deji-jie-xue-xi-purodakutonozuo-rifang-wohua-simasita-number-cwt2016/20161108182005_hu_4413329273d59c03.webp 320w, https://chezo.uno/post/2016-11-14-cloudera-world-tokyo-2016deji-jie-xue-xi-purodakutonozuo-rifang-wohua-simasita-number-cwt2016/20161108182005_hu_49417ec88f39f0e5.webp 480w, https://chezo.uno/post/2016-11-14-cloudera-world-tokyo-2016deji-jie-xue-xi-purodakutonozuo-rifang-wohua-simasita-number-cwt2016/20161108182005_hu_da60365f2c7693b7.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2016-11-14-cloudera-world-tokyo-2016deji-jie-xue-xi-purodakutonozuo-rifang-wohua-simasita-number-cwt2016/20161108182005_hu_4413329273d59c03.webp"
width="760"
height="507"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
図: Hadoopの生みの親 Doug (
)と握力王新沼さん (
) の対談イベントの様子&lt;/p&gt;
&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/key/B8ylsXGU1Awlts" width="427" height="356" frameborder="0" marginwidth="0"; marginheight="0" scrolling="n" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen&gt; &lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;
&lt;/strong&gt; from &lt;strong&gt;
&lt;/strong&gt;
&lt;cite class="hatena-citation"&gt;&lt;a href="http://www.slideshare.net/Cloudera_jp/data-science-toward-big-data-cwt2016"&gt;
&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;データの民主化の話、データサイエンティストとデータエンジニアの役割分担とチーム構成、機械学習の業務フロー、Cloud Nativeなデータサイエンスといった盛りだくさんの話をしました&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; 。&lt;/p&gt;
&lt;p&gt;話の中で特に言いたかったことは2つ、P.16のリスクを取ってくれる責任者を捕まえようという話と、P.29の機械学習込みのプロダクトは改善をし続けないと死ぬという話です。 あとは、できるだけ機械学習をしないで、サンクコストが生まれる開始前に撤退ラインを決めておこうということも言いました。&lt;/p&gt;
&lt;p&gt;個人的には、今回 Cloudera のエンジニアリングチームと共に
しているJuliet(
)の話や、
さんの話も、自分からお願いをしたのですがお互い相補的な話でとても良かったと思います。&lt;/p&gt;
&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/key/ypsEOVchFn6g4u" 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&gt; &lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;
&lt;/strong&gt; from &lt;strong&gt;
&lt;/strong&gt;
&lt;cite class="hatena-citation"&gt;&lt;a href="http://www.slideshare.net/TokorotenNakayama/kpi-ab-cwt2016"&gt;
&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;特にtokorotenさんの話は、データ分析チームのアンチパターンが並んでいます。どれも耳が痛い話です。また、A/Bテストから機械学習にアップリフトモデリングを通じてどうつなげていくかという話もとても面白いです。&lt;/p&gt;
&lt;p&gt;3人の話を総合すると、データサイエンティストとデータエンジニアという区分では、こういった人たちが求められているのかなと思っています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ビジネスの意思決定をデータから支援する人&lt;/li&gt;
&lt;li&gt;プロダクトの改善を予測モデル含めてデータドリブンで行う人&lt;/li&gt;
&lt;li&gt;データ基盤を作るデータエンジニア&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="cloud-native-な話"&gt;Cloud Native な話&lt;/h3&gt;
&lt;p&gt;Cloud Nativeのデータサイエンスの話は、時間の関係でちょっと話足りなかったのですが、同僚の
の話を見ていただけると良いと思います。&lt;/p&gt;
&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/key/cnkUJMqWQx34c2" 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&gt; &lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;
&lt;/strong&gt; from &lt;strong&gt;
&lt;/strong&gt;
&lt;cite class="hatena-citation"&gt;&lt;a href="http://www.slideshare.net/Cloudera_jp/cloud-native-hadoop"&gt;
&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;機械学習やデータ分析の文脈で言うと、今までImpalaとかHive on SparkとかはHadoopクラスタを持っている人の持ち物というイメージしかなかったんですが、昨今S3を始めとしたオブジェクトストレージに置かれたデータを直接処理できるようになったのが大きな変化だと思っています。&lt;/p&gt;
&lt;p&gt;特に、HiveやImpalaのテーブルさえ作っておけば、S3に直接SQLを投げられるようになったというのは大きな変化かなと思います。
を使うと、一時的なクラスタを上げ下げ増減が簡単にできて、永続化層をS3にするだけという感じになります。 そうすることで、必要なときに必要な量のクラスタを立ち上げて対話的に分析をし、ワークロード決まったらバッチ用に組み替える、なんてことも容易になってきます。&lt;/p&gt;
&lt;p&gt;少しずつではありますが、RedshiftやBigQueryに対する第3の選択肢になってくることを期待しています。&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;思い返してみると、この手のあるある&amp;hellip;辛い&amp;hellip;って話MLCTでよくやっていたのであった&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>homebrewを移動してiRubyが壊れたときに見直すポイント</title><link>https://chezo.uno/post/2016-10-29_homebrew-----iruby---------------6a02e5194ff2/</link><pubDate>Fri, 28 Oct 2016 21:50:25 -0700</pubDate><guid>https://chezo.uno/post/2016-10-29_homebrew-----iruby---------------6a02e5194ff2/</guid><description>&lt;p&gt;kawasaki.rb #041 で得た知見です。&lt;/p&gt;
&lt;p&gt;/opt 以下から /usr/local 以下にhomebrewの場所を戻しました。理由はhomebrew caskが/optから/usr/localに移ったためなんですが、これに伴いrbenvで入れたirubyがopensslを/opt以下から探すようになってしまったため、壊れてしまいました。&lt;/p&gt;
&lt;p&gt;いつもはjupyterでパーフェクトRubyの読み会をやっていたんですが、この日はこれを解決するのが間に合いませんでした。&lt;/p&gt;
&lt;p&gt;で、このときにどうしたかというと、以下の記事に従って解決しました。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;iruby register &amp;ndash;force&lt;br&gt;
jupyter kernelspec install&lt;br&gt;
iruby notebook&lt;/p&gt;
&lt;p&gt;これで大丈夫です。&lt;br&gt;
実際には、僕は &lt;code&gt;iruby register --force&lt;/code&gt; をやって、それを &lt;code&gt;/.ipython/kernels/ruby/kernel.json&lt;/code&gt; にコピーしました。&lt;/p&gt;
&lt;p&gt;困ったところとしては、ipythonからjupyterに名前が変わったので &lt;code&gt;~/.jupyter&lt;/code&gt; 以下に何かおけばいいだろうと思って色々こねこねしてたんですが、結局大事なのは &lt;code&gt;~/.ipython&lt;/code&gt; が重要でした。 &lt;code&gt;jupyter --paths&lt;/code&gt; をやると &lt;code&gt;~/.jupyter&lt;/code&gt; しかでてこないので騙されてしまいました。気をつけてください。&lt;/p&gt;</description></item><item><title>RNNLMベースの形態素解析器 JUMAN++ をhomebrewでインストールできるようにした</title><link>https://chezo.uno/post/2016-10-15-rnnlmbesunoxing-tai-su-jie-xi-qi-juman-plus-plus-wohomebrewdeinsutorudekiruyounisita/</link><pubDate>Sat, 15 Oct 2016 09:20:47 -0700</pubDate><guid>https://chezo.uno/post/2016-10-15-rnnlmbesunoxing-tai-su-jie-xi-qi-juman-plus-plus-wohomebrewdeinsutorudekiruyounisita/</guid><description>&lt;p&gt;京大の黒橋・河原研から最近出た
をmacOSのhomebrewでinstallできるようにしました。&lt;/p&gt;
&lt;p&gt;JUMAN++はRNNLMというディープラーニングベースの言語モデルを使っています。 こちらの記事を読んで知ったという方も多いのではないでしょうか。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;インストール方法は、現段階では後述する理由のためhomebrew-coreにはまだ入っていないので、tapを使ってください。&lt;/p&gt;
&lt;p&gt;[2016/10/23追記] やっと本家homebrewに入ったので、tapは要らなくなりました。 [/追記]&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ brew install jumanpp
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;github&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h2 id="jumanのサイト凄い"&gt;JUMAN++のサイト凄い&lt;/h2&gt;
&lt;p&gt;JUMAN++のサイトには解析を試せるWebアプリケーションがあるのですが、それがなかなか面白いです。&lt;/p&gt;
&lt;p&gt;この「どうも、julialang界の頑固おじさんです」というフレーズを解析した結果が
です。&lt;/p&gt;
&lt;p&gt;こういうラティスを出力してくれます。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2016-10-15-rnnlmbesunoxing-tai-su-jie-xi-qi-juman-plus-plus-wohomebrewdeinsutorudekiruyounisita/20161015161841_hu_f65d86ad32bfd9bf.webp 320w, https://chezo.uno/post/2016-10-15-rnnlmbesunoxing-tai-su-jie-xi-qi-juman-plus-plus-wohomebrewdeinsutorudekiruyounisita/20161015161841_hu_7265a6dc868a98a2.webp 480w, https://chezo.uno/post/2016-10-15-rnnlmbesunoxing-tai-su-jie-xi-qi-juman-plus-plus-wohomebrewdeinsutorudekiruyounisita/20161015161841_hu_658f804f8b44527d.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2016-10-15-rnnlmbesunoxing-tai-su-jie-xi-qi-juman-plus-plus-wohomebrewdeinsutorudekiruyounisita/20161015161841_hu_f65d86ad32bfd9bf.webp"
width="760"
height="436"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;楽しい&lt;/p&gt;
&lt;h2 id="jumanとmecabどっちがいいの"&gt;JUMAN++とMeCabどっちがいいの？&lt;/h2&gt;
&lt;p&gt;冒頭のQiitaの記事に対してはRNNLMベースだからというよりは、辞書の改善によるものなのでは？という話はMeCab作者の工藤さんからも指摘があります。&lt;/p&gt;
&lt;blockquote class="twitter-tweet"&gt;&lt;p lang="ja" dir="ltr"&gt;これってほとんど辞書による改善だと思う...&lt;a href="https://t.co/NnbXreOR48"&gt;https://t.co/NnbXreOR48&lt;/a&gt;&lt;/p&gt;&amp;mdash; Taku Kudo (@taku910) &lt;a href="https://twitter.com/taku910/status/786520352297918464?ref_src=twsrc%5Etfw"&gt;October 13, 2016&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;
さんが精力的に更新をしている
との比較をしているため、MeCab側としては現在普通に入手可能なMeCabの辞書としては最も良いものを使っていると思います。 なので、neologd以前に良く問題とされていた「最近の用語が入っていない」という部分に関しては議論の対象にはなっていませんね。&lt;/p&gt;
&lt;p&gt;表記ゆれや長音記号のハンドリングに関しては
ことです。 JUMANの頃からWikipediaを使った語彙獲得やオノマトペの処理など、未知語獲得を黒橋研として頑張っている印象がありました。&lt;/p&gt;
&lt;p&gt;また、部分アノテーションか辞書かという話に関しては、以前から議論が分かれている所です。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;JUMAN++(の前のJUMAN)とMeCabの比較は以下が詳しいのですが、使っている文法が違ったりなど癖が違うので注意が必要です。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;個人的にはneologdが頻繁に辞書を更新してリリースし続けている状況に対して、JUMAN++の側がどれだけの頻度で更新されたモデルが出せるというところが実用的な差になるのではないでしょうか。普通のエンジニアが部分アノテーションのためのコーパスを作り続けるのは、正直かなり厳しいと思います。&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;
でも、4万5千文を再学習することで性能がMeCabを越えたと言っています。&lt;/p&gt;
&lt;p&gt;現段階では、実際に比較をしてみてどちらが用途に合うのかを判断するのが良いと思います。&lt;/p&gt;
&lt;p&gt;なお、読み推定がしたい場合は
を使うといいと思います :)&lt;/p&gt;
&lt;h2 id="homebrew-coreに入っていない理由"&gt;homebrew-coreに入っていない理由&lt;/h2&gt;
&lt;p&gt;この記事を書いている段階では、upstream(v1.01)のMakefileにあるバグのため、&lt;code&gt;make&lt;/code&gt;に&lt;code&gt;-j&lt;/code&gt;オプションを付与して並列でビルドすると失敗する問題があります。&lt;/p&gt;
&lt;p&gt;このパッチを当てれば大丈夫です。&lt;/p&gt;
&lt;script src="https://gist.github.com/chezou/076cb9c407de729ad2e2d04749f07f3e.js"&gt;&lt;/script&gt;
&lt;p&gt;で、何故これがcoreに入っていないかというと、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;特定のワークアラウンドが必要（並列ビルドを抑える &lt;code&gt;ENV.depararelize&lt;/code&gt; を使う）な場合は、upstreamのissueを立ててそこへのリンクを貼る必要がある&lt;/li&gt;
&lt;li&gt;juman++は2016/10/15現在レポジトリが公開されておらず&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt; 、publicなissueがない&lt;/li&gt;
&lt;li&gt;homebrew-coreにはupstreamにマージされないパッチを当てるFormulaは受け入れられない&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;つまり、 &lt;strong&gt;homebrewでビルド時のバグが有り、かつpublicなレポジトリ（正確にはpublicなticketやissueなど）がない&lt;/strong&gt; という条件下ではcoreに登録することはできないようです。 気持ちはわからなくもないけど、すべてGithubにissueがある（あるいは公開MLがある）という前提はちょっと不寛容じゃないかと思います。 Githubで公開されていることしか考えていないんでしょうかね&amp;hellip;。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;はじめての、新規Formula作成でしたがちょっと疲れました。。。&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;sugyanさんのアイドルコーパスも好きだから続けられると思っているし、それくらいコーパス作るの大変&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;じきに
とのこと&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>PDFの表をpandasのDataFrameにできる tabula-py 作った</title><link>https://chezo.uno/post/2016-09-11-pdfnobiao-wopandasnodataframenidekiru-tabula-py-zuo-tuta/</link><pubDate>Sun, 11 Sep 2016 15:19:54 -0700</pubDate><guid>https://chezo.uno/post/2016-09-11-pdfnobiao-wopandasnodataframenidekiru-tabula-py-zuo-tuta/</guid><description>&lt;p&gt;RubyKaigiに参加するとコード書きたいという気持ちが高まって良いのですが、今回はPDFの表を読み込んで pandas の DataFrame に変換できる
を作りました。 これをもってRubyKaigiの参加報告とさせていただければと思います。&lt;/p&gt;
&lt;h1 id="tabula-pyとは"&gt;tabula-pyとは&lt;/h1&gt;
&lt;p&gt;
というJavaで書かれたPDFから表を抽出するライブラリをPythonでうすーくラップしたものです。実装を見てもらえばわかると思いますが、本当にsubprocessでJavaのプログラムを叩いて標準出力で受け取るというだけしかやっていません。&lt;/p&gt;
&lt;p&gt;もともとは、Rのtabula実装がかなり色々できるのを知ってPythonがないらしいというので作りました。Rの実装はマジでJavaをごりごり書いていて尊敬の念を抱いています。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=https%3A%2F%2Fgithub.com%2Fropenscilabs%2Ftabulizer" title="ropenscilabs/tabulizer" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://github.com/ropenscilabs/tabulizer"&gt;github.com&lt;/a&gt;&lt;/cite&gt;
&lt;h1 id="使い方"&gt;使い方&lt;/h1&gt;
&lt;p&gt;インストールは&lt;code&gt;pip&lt;/code&gt;で入ります。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pip install tabula-py
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;こんな感じで使えます。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;from tabula import read\_pdf\_table df = read\_pdf\_table(&amp;quot;data.pdf&amp;quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;詳細はnotebookを見てください。&lt;/p&gt;
&lt;iframe src="https://nbviewer.jupyter.org/github/chezou/tabula-py/blob/master/examples/tabula_example.ipynb" width="800" height="600"&gt; &lt;/iframe&gt;
# RubyKaigiの成果と感想
&lt;ul&gt;
&lt;li&gt;rubyist.clubで
さんをゲストに
した&lt;/li&gt;
&lt;li&gt;tabula-pyを作った&lt;/li&gt;
&lt;li&gt;個人的には、Julianの
が一番おもしろかった。事前にまつださんに聞いていたからこそ辿りつけたのであった&lt;/li&gt;
&lt;li&gt;daru周りは色々と頑張っているけど、visualization周りをどうするかが肝だろうなと思いながら作者と飲めたので良かった&lt;/li&gt;
&lt;li&gt;機械学習の話は個人的には、sklearnのモデルを読み込んでpredictするとかが良いのかなと思っているので、
とか
とかみたいにinter-languageな方向を強化していくのがいいんじゃないかなと思いながら聞いていた&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="今後の展望"&gt;今後の展望&lt;/h1&gt;
&lt;p&gt;Py4jを使えばRと同じことができるのは確認ができたのですが、JavaをPythonの上で書かされている感が半端無いので困ったら考えようと思います。&lt;/p&gt;</description></item><item><title>川崎Ruby会議 01を開催しました #kwsk01</title><link>https://chezo.uno/post/2016-08-23-chuan-qi-rubyhui-yi-01wokai-cui-simasita-number-kwsk01/</link><pubDate>Tue, 23 Aug 2016 15:25:47 -0700</pubDate><guid>https://chezo.uno/post/2016-08-23-chuan-qi-rubyhui-yi-01wokai-cui-simasita-number-kwsk01/</guid><description>&lt;p&gt;さる 8/20 に川崎Ruby会議01を開催しました。&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fregional.rubykaigi.org%2Fkwsk01%2F" title="トップページ - 川崎Ruby会議01" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="http://regional.rubykaigi.org/kwsk01/"&gt;regional.rubykaigi.org&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;川崎Ruby会議は、
の主催する地域Ruby会議です。 ちゃんとしたまとめはるびまに出ると思うので、ここでは開催の経緯なんかを簡単に書こうと思います。&lt;/p&gt;
&lt;p&gt;なお、発表内容が気になる方は
にあるスライドや動画へのリンクを見ると良いと思います。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h2 id="きっかけは-ruby-kaigi-2015"&gt;きっかけは Ruby Kaigi 2015&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
に参加したところ、
に「次のregionalはやらないの」と言われ、基調講演者が決まればありかもと答える&lt;/li&gt;
&lt;li&gt;翌日、miyagawaさんと飲んでる
と話して、「2回以上続くregionalはやっぱり特定の地域コミュニティがやってるね」と言われる&lt;/li&gt;
&lt;li&gt;さらに翌朝、帰る直前の
に会って「川崎のregionalやるとしたら、基調講演とかしていただけます？」「いいよ」と快諾いただく&lt;/li&gt;
&lt;li&gt;次のミートアップで、kawasaki.rbのメンバーに「発表してみたい？やってみたい？」と聞いたら思いの外反応が良かった&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;というようにトントン拍子でした。&lt;/p&gt;
&lt;p&gt;自分としては、やるならいつもの地域コミュニティの皆が話せる場をつくりたい、と思っていたので、これはこれで良かったです。&lt;/p&gt;
&lt;h2 id="とにかく楽をする"&gt;とにかく楽をする&lt;/h2&gt;
&lt;p&gt;神奈川の時はペアプロあり、パネルディスカッションありのもりもりだったのですが、今回は「できるだけ楽をする」ということに徹しました。 東京Ruby会議11は
のでかなり重い感じだったのと対象的に、我々は&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;手間を掛けない&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;お金をかけない&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;という方式で行きました。&lt;/p&gt;
&lt;p&gt;なので、どうしてもやりたい！という人が現れないかぎりは、「やれたら良いよね」はやらないという方針のもと進めてきました。&lt;/p&gt;
&lt;p&gt;当初はサイトロゴもなしで行こうとしていました。スタッフTシャツも皆大好き
で行こうとしていました。そしたら、ロゴを作るよと実行委員の
の奥さんが言ってくださり、更にはミュートンの可愛さが理解できないためかTシャツもデザインをしていただくという流れになりました。
いつもありがとうございます！&lt;/p&gt;
&lt;p&gt;正直、この方法はやる気のある人に負荷がかかってしまうというデメリットはあるものの、手を動かす人が一番推進力はあるかなとも思うので、悩ましいところです。&lt;/p&gt;
&lt;p&gt;なお、ぺらさんの奥様経由で
が届いているので共有させていただきますね。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;igaigaさん(@igaiga555)が投稿した写真 - &lt;time style=" font-family:Arial,sans-serif; font-size:14px; line-height:17px;" datetime="2016-08-20T08:46:48+00:00"&gt;2016 8月 20 1:46午前 PDT&lt;/time&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;script async defer src="//platform.instagram.com/en_US/embeds.js"&gt;&lt;/script&gt;
&lt;h2 id="やってみた感想"&gt;やってみた感想&lt;/h2&gt;
&lt;p&gt;コンセプトの「kwskバザー」は、多分なんのこっちゃわからんだろうなぁと思いながら提示しましたが、大江戸Ruby会議の「生活発表会」からヒントを得ました。 始めた3年前の当初からPythonの話もあり、ずっと「kawasaki.rbはkawasaki.pyなのでは！？」というご指摘をいただき続けてきたので、いつもどおりやっていれば多様性がでるだろうな、という思いもあり、それを全面に出してみました。&lt;/p&gt;
&lt;p&gt;都内だと特定の言語でも人が集まるかもしれませんが、川崎まで来ると遠い人は来ないのとRalisやってる人口も相対的に都内より少ないので、地域に根ざしたテックコミュニティとしてやってきました。なので、C#やScala、はてはサーバーレスアーキテクチャの話が出てきたわけです。&lt;/p&gt;
&lt;p&gt;実際にその多様性について、簡単にまとめたリストが以下になります。気になる方は是非スライドや動画で確認してみてください。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rubyとファミコンの仕様&lt;/li&gt;
&lt;li&gt;C#とC++/CLI&lt;/li&gt;
&lt;li&gt;Scala&lt;/li&gt;
&lt;li&gt;Rubyと思ったら猫動画&lt;/li&gt;
&lt;li&gt;Rails&lt;/li&gt;
&lt;li&gt;Railsから気がつけばPHPに変わっていたでござる&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Railsエンジニア&amp;quot;はただの枕詞のサーバーレス&lt;/li&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;li&gt;Elixer本の宣伝&lt;/li&gt;
&lt;li&gt;世界をまたにかける話&lt;/li&gt;
&lt;li&gt;Rubyと思ったら数学の話で終わってしまったでござる&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4274219151/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
プログラミングElixir
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作者: Dave Thomas,笹田耕一,鳥井雪&lt;/li&gt;
&lt;li&gt;出版社/メーカー: オーム社&lt;/li&gt;
&lt;li&gt;発売日: 2016/08/19&lt;/li&gt;
&lt;li&gt;メディア: 単行本（ソフトカバー）&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;また、パーフェクトRubyの読書会も続けているためか、「Ruby初心者です」という方もちょこちょこ来ていただいています。kawasaki.rbがきっかけで今回発表された蓑島さんのように一人エンジニアの環境で独学で業務でコードを書くようになった人、転職した人、Herokuのイベントに登壇した人、Railsを学び始めて起業した人など様々な人がいるのも特徴です。 正直、Rubyにとても詳しい人には物足りない側面もあるのかもしれないとは思うのですが、asakusa.rbなどとはまた違った路線で来ているのかなと思っています。 「ここに来れば困ったことを質問できる」とか「ここに来れば自分の知見を気軽に発表できる」という場所を続けてきたかいがあって、今回のregionalにつながったのだと思います。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4774158798/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
パーフェクトRuby (PERFECT SERIES 6)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作者: Rubyサポーターズ,すがわらまさのり,寺田玄太郎,三村益隆,近藤宇智朗,橋立友宏,関口亮一&lt;/li&gt;
&lt;li&gt;出版社/メーカー: 技術評論社&lt;/li&gt;
&lt;li&gt;発売日: 2013/08/10&lt;/li&gt;
&lt;li&gt;メディア: 大型本&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;個人的には、
のうち、&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;効果を検証せよ：実行平均時間の単純比較ではなく統計的検定とか使うといい。有意差がなかったら変更を捨てろ。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;がとても印象的でした。普段検定というと限定された時にしか使われないという偏見があったのですが、ソフトウェア開発にも生きてくるというのは目から鱗が落ちました。&lt;/p&gt;
&lt;p&gt;発表・参加いただいた皆様、どうもありがとうございました。そして、実行委員の皆様、本当に何もしない実行委員長でしたが全力でサポートいただきありがとうございました。&lt;/p&gt;
&lt;p&gt;なお、
を開催しますので、興味を持たれた方は是非ご参加ください :)&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;Tokyuリスペクト&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>「夏真っ盛り！Spark + Python + Data Science祭り」を開催しました＆Ibisを紹介しました #summerDS</title><link>https://chezo.uno/post/2016-07-26-xia-zhen-tusheng-ri-spark-plus-python-plus-data-scienceji-ri-wokai-cui-simasita-and-ibiswoshao-jie-simasita-number-summerds/</link><pubDate>Tue, 26 Jul 2016 10:27:38 -0700</pubDate><guid>https://chezo.uno/post/2016-07-26-xia-zhen-tusheng-ri-spark-plus-python-plus-data-scienceji-ri-wokai-cui-simasita-and-ibiswoshao-jie-simasita-number-summerds/</guid><description>&lt;p&gt;2016/07/25に「夏真っ盛り！Spark + Python + Data Science祭り」を開催しました。&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fconnpass.com%2Fevent%2F34680%2F" title="夏真っ盛り！Spark + Python + Data Science祭り (2016/07/25 19:00〜)" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="http://connpass.com/event/34680/"&gt;connpass.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;今回はClouderaに入って初めてのコミュニティイベントということでしたが、なんと400人を超える応募をいただいてとてもありがたい限りです。 会場をご提供いただいたDMM.comラボ様、発表いただいたサイバーエージェントの内藤さん、DMM.comラボの加嵜さん、LTの皆様ありがとうございました。&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Ftogetter.com%2Fli%2F1004741" title="夏真っ盛り！Spark + Python + Data Science祭り まとめ #summerDS" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="http://togetter.com/li/1004741"&gt;togetter.com&lt;/a&gt;&lt;/cite&gt;
&lt;h1 id="pandasを大規模データにつなぐibis"&gt;pandasを大規模データにつなぐIbis&lt;/h1&gt;
&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/key/q9kfzAPGQBoLA7" 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&gt; &lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;
&lt;/strong&gt; from &lt;strong&gt;
&lt;/strong&gt;
&lt;cite class="hatena-citation"&gt;&lt;a href="http://www.slideshare.net/Cloudera_jp/ibis-pandas-summerds"&gt;
&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;Ibisはpandasの作者でもある Wes McKinney(
) の作っているライブラリです。 ひとことで言うと、pandasのプログラマブルな処理を大規模データにもできるようにします。 大規模データは高速なSQLエンジンにまかせて、pandas likeなDSLでpandasと連携できるようにしており、データがTB以上のデータに対してもSQLを書かずに試行錯誤できます。&lt;/p&gt;
&lt;p&gt;なお、日本語の情報はかなり少ないのですが&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; 、こちらの
が参考になると思います。 もし、Impalaを試すのであれば
か、
を使うとブラウザでポチポチするだけでAWS, GCP, Azureに簡単にImpalaクラスターが立てれるのでおすすめです。Director導入方法は
が参考になります。&lt;/p&gt;
&lt;p&gt;Ibisの詳細は資料を見ていただければと思いますが、いくつか補足をしたいと思います。&lt;/p&gt;
&lt;h2 id="sqlじゃなくてプログラマブルなのは何が嬉しいの"&gt;SQLじゃなくてプログラマブルなのは何が嬉しいの？&lt;/h2&gt;
&lt;p&gt;pandasをお使いの方はわかると思いますが、SQLに比べると試行錯誤がやりやすいと思います。例えば、SQLの途中結果を変数に格納できるので、途中までの処理は共通でそこから先を複数パターン作るというのも同じ変数に格納して、後段のメソッドチェーンを変えれば楽にできるというメリットが有ります。使っている感覚はRailsのActive Recordみたいなイメージです。&lt;/p&gt;
&lt;h2 id="sparkより7倍速いのは嬉しいの"&gt;Sparkより7倍速いのは嬉しいの？&lt;/h2&gt;
&lt;p&gt;大事なのは15TBのデータを4.4秒で処理できる&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt; というスピード感です。処理を投げて帰ってくるまでの時間が短いと、思考の中断が減ります。 例えば、ビルドやテストに時間がかかってコーヒーをいれにいく、みたいな経験はあるんじゃないかと思います。その断絶がなくなるので、考えを継続できますし、ポッと思いついたことをどんどん試行錯誤できます。&lt;/p&gt;
&lt;h2 id="sparkとの住み分けは"&gt;Sparkとの住み分けは？&lt;/h2&gt;
&lt;p&gt;Ibisは、WesがPythonでend to endでPythonを使って分析をしたいという想いでスタートしています。 個人的にはJupyterとともに対話的に試行錯誤をする強力なツールになっていると思います。 もともとImpalaとPython/pandasをつなぐものとしてスタートしたのですが、RedshiftやPrestoなども今後対応していきたいということも言及されています。 なので、プロトタイピングにJupyterとIbisを使うというのが良いと思います。プロトタイプ後にSparkSQL&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt; でバッチとして安定化をはかるということもできるでしょう。&lt;/p&gt;
&lt;p&gt;もう一つの方向性としては、
ように、大規模な機械学習はSpark + MLlibで、絞った後のデータはIbis + scikit-learnでみたいな使い分けは可能だと思います。&lt;/p&gt;
&lt;h1 id="サイバーエージェント内藤さん-amebaにおけるレコメンデーションシステムの紹介"&gt;サイバーエージェント内藤さん： Amebaにおけるレコメンデーションシステムの紹介&lt;/h1&gt;
&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/key/2dcaCyZYeU8I3u" 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&gt; &lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;
&lt;/strong&gt; from &lt;strong&gt;
&lt;/strong&gt;
&lt;cite class="hatena-citation"&gt;&lt;a href="http://www.slideshare.net/cyberagent/ameba-64381671"&gt;
&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;Amebaでの協調フィルタリングによるHBaseを使ったリアルタイムレコメンドの話。 Hadoopスタックだとリアルタイム性を出すのにはHBaseを使うのが多いのですが&lt;sup id="fnref:4"&gt;&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref"&gt;4&lt;/a&gt;&lt;/sup&gt; 、更にClick数を取得してバンディットアルゴリズムも使っているというのは凄いですね。&lt;/p&gt;
&lt;p&gt;単純なA/Bテストをするという話はDMM.comラボの加嵜さんもお話されていましたが、バンディットアルゴリズムを組み合わせることで、レコメンド結果が複数のロジックの中でも良い物に動的に改善されていくという仕組みが入っています。 僕個人としてはこうした取り組みを聞いたことがなかったので、とても驚きました。&lt;/p&gt;
&lt;h1 id="dmmcomラボ加嵜さんsparkを活用したレコメンドエンジンのパフォーマンスチューニング自動化"&gt;DMM.comラボ加嵜さん：Sparkを活用したレコメンドエンジンのパフォーマンスチューニング＆自動化&lt;/h1&gt;
&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/key/gVyO2JqZqd4GS7" 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&gt; &lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;
&lt;/strong&gt; from &lt;strong&gt;
&lt;/strong&gt;
&lt;cite class="hatena-citation"&gt;&lt;a href="http://www.slideshare.net/knagato/sparkrecommendtuning"&gt;
&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;チューニングの話もインパクトが大きかったですが、jsonで「レシピ」を書けば、自分のサービスのレコメンドモデルができるという話はとても驚きました。 これを使えば、レコメンドに詳しくない人でも簡単にサービスに導入できそうです。 おそらく、ログフォーマットをきちんと統一して横展開をしているのでしょうね。&lt;/p&gt;
&lt;h1 id="lt"&gt;LT&lt;/h1&gt;
&lt;h2 id="horiken4-さん初めてのsparkでハマったこと"&gt;horiken4 さん：初めてのSparkでハマったこと&lt;/h2&gt;
&lt;p&gt;Google Data ProcでSparkを使ったら/tmpにjarが貯まるなど、いろいろハマった話を紹介いただきました。&lt;/p&gt;
&lt;h2 id="uryyyyyyyさんemr上でpython3系でpysparkする話"&gt;uryyyyyyyさん：EMR上でPython3系でpysparkする話&lt;/h2&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fqiita.com%2Furyyyyyyy%2Fprivate%2Fefd4e96d292ffdedf2ef" title="EMR上でPython3系でpysparkする話 - Qiita" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="http://qiita.com/uryyyyyyy/private/efd4e96d292ffdedf2ef"&gt;qiita.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;EMRにAnacondaをいれてPySparkでモデルを作る話でした。逆質問でJuliaを使ってると答えた人が2人くらいだったとのことで寂しかったです。&lt;/p&gt;
&lt;h2 id="suthio-さんsparkで実装しているレコメンドエンジンの基本的なパフォーマンスチューニング-について"&gt;suthio さん：Sparkで実装しているレコメンドエンジンの基本的なパフォーマンスチューニング について&lt;/h2&gt;
&lt;p&gt;DAGを見よう！という話でした。そして、ポケモンGO仲間を募集しているとのことです。&lt;/p&gt;
&lt;h1 id="終わりに"&gt;終わりに&lt;/h1&gt;
&lt;p&gt;やはり、自社で手を動かして取り組まれているという話は、様々な知見が含まれていてとても楽しかったです。 AmebaのHBaseを使ったリアルタイムレコメンド＋バンディットアルゴリズムという構成や、DMM.comラボさんのレコメンドの「レシピ」を書くだけで新規サービスのレコメンドモデルができるという話は衝撃的でした。&lt;/p&gt;
&lt;p&gt;自分がホストしたイベントの中では過去最大の募集人数だったのですが、大盛況のうちに終わりました。ご協力・ご参加いただいた皆様ありがとうございました。 今回参加できなかった方もたくさんいらっしゃると思いますので、また次回もこういったイベントをできればと考えています。 乞うご期待ください。&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;しかし、日本でIbisというと某研究会しか出てこないので非常につらい&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;
&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:3"&gt;
&lt;p&gt;こちらもIbisのスコープに入っています&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:4"&gt;
&lt;p&gt;リクルートさんも
&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>JupyterからSpark clusterを操作できるlivy + sparkmagicを試してみた</title><link>https://chezo.uno/post/2016-07-12-jupyterkaraspark-clusterwocao-zuo-dekirulivy-plus-sparkmagicwoshi-sitemita/</link><pubDate>Tue, 12 Jul 2016 04:50:00 -0700</pubDate><guid>https://chezo.uno/post/2016-07-12-jupyterkaraspark-clusterwocao-zuo-dekirulivy-plus-sparkmagicwoshi-sitemita/</guid><description>&lt;p&gt;Spark Summit 2016でもトークがあったSparkのREST serverであるlivyですが、
上のSpark clusterとJupyterをlivyを使って繋げられるようにしたと聞いて、早速試してみました。&lt;/p&gt;
&lt;p&gt;Jupyterって何？という方は簡単に言うと、ブラウザで各種言語のREPLが動くものと思ってもらえばいいです。 詳細は過去に書いた以下の記事を読んでみてください。&lt;/p&gt;
&lt;iframe src="https://techlife.cookpad.com/embed/write-once-share-anywhare" title="現代のエンジニアのための強力なメモ帳 Jupyter notebookのすゝめ - クックパッド開発者ブログ" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://techlife.cookpad.com/entry/write-once-share-anywhare"&gt;techlife.cookpad.com&lt;/a&gt;&lt;/cite&gt;
&lt;h1 id="livyとは"&gt;livyとは&lt;/h1&gt;
&lt;p&gt;
はSpark clusterをコントロールするためのREST Serverです。 Microsoftはこれとjupyter notebookの
を使ってHDInsightとjupyterをつなげるようにしているそうです。&lt;/p&gt;
&lt;p&gt;MSの取り組みはSpark Summit 2016のトークがわかりやすいです。
&lt;/p&gt;
&lt;p&gt;このsparkmagicの構成図がわかりやすいですね。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="https://github.com/jupyter-incubator/sparkmagic/raw/master/screenshots/diagram.png" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h2 id="なぜlivyがいるのか"&gt;なぜlivyがいるのか？&lt;/h2&gt;
&lt;p&gt;Sparkは通常gatewayにつないで処理をするが、ユーザー管理は通常のHadoopと同じ形になります。つまり、localにsparkユーザーみたいなのが必要とかになってちょっと面倒。 とはいえ、jupyter server立ててそこのユーザーと同期するというのも面倒くさい。 livyを使えばREST server経由でSparkの処理を行うことが可能になります。&lt;/p&gt;
&lt;p&gt;
としては以下のとおりです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;複数のSpark job、複数のクライアントから使える長時間動くSparkContextを持てる&lt;/li&gt;
&lt;li&gt;cacheしたRDDやDataFramesを複数のジョブやクライアントで共有できる&lt;/li&gt;
&lt;li&gt;複数のSparkContextを同時に管理でき、YARN/Mesosで動くクラスターがLivy Serverの代わりにfault toleranceとconcurrencyを実現する&lt;/li&gt;
&lt;li&gt;Jobはprecompileされたjarやコードスニペット、Java/Scala client API経由でsubmitされる&lt;/li&gt;
&lt;li&gt;Apache Licenseで100% オープンソース&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;それだけだと僕にはあまり嬉しさがわかりにくかったのですが、手元で管理したJupyterと繋げられるようになるというのが個人的には最大のヒットでした。 Jupyterは
、データエンジニアリングや機械学習系の取り組みをメモして共有するのにはとても便利なので、クラスターのSparkがあたかもlocalにあるように操作できるのはとてもありがたいですね。&lt;/p&gt;
&lt;h1 id="予め用意するもの"&gt;予め用意するもの&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Hadoopクラスター
&lt;ul&gt;
&lt;li&gt;今回は
で作ったCDH 5.7を使った。お手軽にSparkクラスターを用意出来て便利&lt;/li&gt;
&lt;li&gt;Cent OS 7で用意&lt;/li&gt;
&lt;li&gt;git, mavenを入れておく&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;jupyter環境&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="準備"&gt;準備&lt;/h1&gt;
&lt;p&gt;重要なレポジトリは以下の2つ。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;まずはlivyからいれていきます。&lt;/p&gt;
&lt;h2 id="rをインストールする"&gt;Rをインストールする&lt;/h2&gt;
&lt;p&gt;requirementsに書かれているので一応用意しました。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ sudo yum install -y epel-release $ sudo yum install -y R
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="livyをbuildする"&gt;livyをbuildする&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;$ git clone git@github.com:cloudera/livy.git $ cd livy $ mvn -Dspark.version=1.6.0 -DskipTests clean package
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;今回試した時はtestがこけたので、&lt;code&gt;-DskipTests&lt;/code&gt;をつけました&lt;/p&gt;
&lt;h2 id="livyを起動する"&gt;livyを起動する&lt;/h2&gt;
&lt;p&gt;今回はCloudera Manager経由でsparkを入れたので、環境変数をこんな感じでセットします。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ export SPARK\_HOME=/opt/cloudera/parcels/CDH-5.7.1-1.cdh5.7.1.p0.11/lib/spark $ export HADOOP\_CONF\_DIR=/etc/hadoop/conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;livy.confに以下の1行を追加しないとYARN modeで起動しない&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;livy.server.session.factory = yarn
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;ここまでできたら、livy serverを起動します&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ ./bin/livy-server
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;別のterminalで動作確認をする&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ curl localhost:8998/sessions{&amp;quot;from&amp;quot;:0,&amp;quot;total&amp;quot;:0,&amp;quot;sessions&amp;quot;:[]}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;デフォルトで8998番のportが使われるので、必要に応じてportを開けるなりsshでport forwardingしてください。&lt;/p&gt;
&lt;h2 id="jupyter側のsparkmagicの準備"&gt;jupyter側のsparkmagicの準備&lt;/h2&gt;
&lt;p&gt;
にあるとおりにinstallします。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ pip install sparkmagic $ jupyter nbextension enable --py --sys-prefix widgetsnbextension
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;wrapper kernelを入れます。&lt;code&gt;pip show sparkmagic&lt;/code&gt;のLocation以下で実行します。以下の場合だと &lt;code&gt;/Users/ariga/.virtualenvs/ibis/lib/python3.5/site-packages&lt;/code&gt; になります。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ pip show sparkmagic --- Metadata-Version: 2.0 Name: sparkmagic Version: 0.2.3 Summary: SparkMagic: Spark execution via Livy Home-page: https://github.com/jupyter-incubator/sparkmagic/sparkmagic Author: Jupyter Development Team Author-email: jupyter@googlegroups.org Installer: pip License: BSD 3-clause Location: /Users/ariga/.virtualenvs/ibis/lib/python3.5/site-packages Requires: ipywidgets, pandas, ipython, requests, mock, autovizwidget, numpy, nose, ipykernel, notebook, hdijupyterutils Classifiers: Development Status :: 4 - Beta Environment :: Console Intended Audience :: Science/Research License :: OSI Approved :: BSD License Natural Language :: English Programming Language :: Python :: 2.6 Programming Language :: Python :: 2.7 Programming Language :: Python :: 3.3 Programming Language :: Python :: 3.4 $ cd /Users/ariga/.virtualenvs/ibis/lib/python3.5/site-packages $ jupyter-kernelspec install sparkmagic/kernels/sparkkernel $ jupyter-kernelspec install sparkmagic/kernels/pysparkkernel
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;~/.sparkmagic/config.json&lt;/code&gt;を
をもとに入れます。&lt;/p&gt;
&lt;h2 id="jupyter-notebookの起動"&gt;jupyter notebookの起動&lt;/h2&gt;
&lt;p&gt;起動する前に、curlでlocalからlivyに通信できるか確認しましょう。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ curl YOUR\_HOSTNAME:8998/sessions
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;jupyter notebook&lt;/code&gt;でいつもどおり起動をして&lt;code&gt;PySpark&lt;/code&gt;を選べばOK&lt;/p&gt;
&lt;p&gt;notebookの例はこちら&lt;/p&gt;
&lt;script src="https://gist.github.com/chezou/88568ce2bb620107cfdbdd20f0c966ae.js"&gt; &lt;/script&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://gist.github.com/chezou/88568ce2bb620107cfdbdd20f0c966ae"&gt;gist.github.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;gistには出てませんが、こんな感じでSparkに対してSQLで処理した結果を簡単にvisualiseできます。sparkmagicすごい！&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2016-07-12-jupyterkaraspark-clusterwocao-zuo-dekirulivy-plus-sparkmagicwoshi-sitemita/20160712155306_hu_7b8d73e4a1fe5e6.webp 320w, https://chezo.uno/post/2016-07-12-jupyterkaraspark-clusterwocao-zuo-dekirulivy-plus-sparkmagicwoshi-sitemita/20160712155306_hu_225d6c511b34519a.webp 480w, https://chezo.uno/post/2016-07-12-jupyterkaraspark-clusterwocao-zuo-dekirulivy-plus-sparkmagicwoshi-sitemita/20160712155306_hu_118350430b6f7493.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2016-07-12-jupyterkaraspark-clusterwocao-zuo-dekirulivy-plus-sparkmagicwoshi-sitemita/20160712155306_hu_7b8d73e4a1fe5e6.webp"
width="760"
height="572"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;code&gt;%%local&lt;/code&gt;でlocalのcontextに行ったりするのがまだなれないですが、magic commandの &lt;code&gt;%%sql&lt;/code&gt;で実行した結果をDataFrameで受け取れたりと、いろいろ便利そうです。&lt;/p&gt;
&lt;h2 id="参考url"&gt;参考URL&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>そのモデル、過学習してるの？未学習なの？と困ったら</title><link>https://chezo.uno/post/2016-05-29-sonomoderu-guo-xue-xi-siteruno-wei-xue-xi-nano-tokun-tutara/</link><pubDate>Sun, 29 May 2016 14:57:39 -0700</pubDate><guid>https://chezo.uno/post/2016-05-29-sonomoderu-guo-xue-xi-siteruno-wei-xue-xi-nano-tokun-tutara/</guid><description>&lt;h1 id="q-うわっワタシのモデル過学習してる"&gt;Q: うわっ&amp;hellip;ワタシのモデル過学習してる…？&lt;/h1&gt;
&lt;p&gt;機械学習をしていると、「やったほぼ100％の性能でました！」みたいな話がちょこちょこでて、その度に「あー、はいはい過学習乙」とか「
」とかいう話になると思います。&lt;/p&gt;
&lt;p&gt;過学習というのは、とても雑に言うと「学習に使ったデータに対してはバッチリ正解できるけど、知らないデータに対しては全然当たらない」というモデルのことを指します。 昔センター試験の英語を受けた年に突如出題傾向が変わったのですが、塾でバッチリ対策をしていた人々が「うわー、今年傾向変わって全然解けなかったー。きっと他の人も解けなかったよね」という話をしていたのですが、今思うとこれもある意味過学習ですね。&lt;/p&gt;
&lt;p&gt;この辺は、PRMLなんかから伝統的に説明される、回帰モデルに対して高次のモデルをフィットさせていくと、やり過ぎになるよねみたいな話が書いてあります。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4621061224/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
パターン認識と機械学習 上
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作者: C.M.ビショップ,元田浩,栗田多喜夫,樋口知之,松本裕治,村田昇&lt;/li&gt;
&lt;li&gt;出版社/メーカー: 丸善出版&lt;/li&gt;
&lt;li&gt;発売日: 2012/04/05&lt;/li&gt;
&lt;li&gt;メディア: 単行本（ソフトカバー）&lt;/li&gt;
&lt;li&gt;購入: 6人 クリック: 33回&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;では、どういう時に過学習が起こるかというと、これもざっくり言うと以下の時に起こります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;データが少ない時&lt;/li&gt;
&lt;li&gt;モデル&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; が、問題に対して複雑すぎる時&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;書いていて表裏一体な気がしましたが、「じゃあこれどうやって気づけばいいの？」ということを思うと思います。 その答えが、今度日本語版が出る&amp;quot;Python Machine Learning&amp;quot;に分かりやすく書いてありました。日本語版も6月に出るので楽しみですね！&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B00YSILNL0/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
Python Machine Learning
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作者: Sebastian Raschka&lt;/li&gt;
&lt;li&gt;出版社/メーカー: Packt Publishing&lt;/li&gt;
&lt;li&gt;発売日: 2015/09/23&lt;/li&gt;
&lt;li&gt;メディア: Kindle版&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4844380605/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
Python機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作者: Sebastian Raschka,株式会社クイープ,福島真太朗&lt;/li&gt;
&lt;li&gt;出版社/メーカー: インプレス&lt;/li&gt;
&lt;li&gt;発売日: 2016/06/30&lt;/li&gt;
&lt;li&gt;メディア: 単行本（ソフトカバー）&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="a-learning-curveとvalidation-curveを見よう"&gt;A: learning curveとvalidation curveを見よう&lt;/h1&gt;
&lt;p&gt;（以降の図は&amp;quot;Python Machine Learning&amp;quot;英語版の本より引用です）&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2016-05-29-sonomoderu-guo-xue-xi-siteruno-wei-xue-xi-nano-tokun-tutara/20160529204510_hu_da062fd19ccce228.webp 320w, https://chezo.uno/post/2016-05-29-sonomoderu-guo-xue-xi-siteruno-wei-xue-xi-nano-tokun-tutara/20160529204510_hu_6bdfa66ad749a55.webp 480w, https://chezo.uno/post/2016-05-29-sonomoderu-guo-xue-xi-siteruno-wei-xue-xi-nano-tokun-tutara/20160529204510_hu_8d8d712b3add42e2.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2016-05-29-sonomoderu-guo-xue-xi-siteruno-wei-xue-xi-nano-tokun-tutara/20160529204510_hu_da062fd19ccce228.webp"
width="760"
height="629"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;この図は、わりと有名なbias-variance tradeoffの図です。 bias-varianceのトレードオフは
を見るとわかりやすいのですが、とても端折って書くとHigh varianceの状態が過学習（overfitting）で、High biasの状態が未学習（underfitting）です。&lt;/p&gt;
&lt;p&gt;これだけだと、ナンノコッチャって感じなので言葉で説明すると、横軸をデータサイズとした時に、過学習（High Variance (+ Low bias)）の時は訓練データに対する精度( 図中のtraining accuracy。なお、ここでの精度とは？という話は詳しく言及しないですが、詳しくは
参照。個人的には、accuracyでもprecisionでも指標はケースバイケースで良いと思います)がとても高く、検証データに対する精度(図中のvalidation accuracy)は低いです。なお、訓練データは学習に使ったデータ、検証データは元のデータから訓練データを除いておいた検証用のデータと思ってください。&lt;/p&gt;
&lt;p&gt;それに対して未学習(High bias (+Low variance))の時は、データサイズを増やしても訓練データと検証データに対する精度が共に低い状況です。&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;ポイントとなるのは&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;desired accuracy、つまり求める精度に対して低すぎないか&lt;/li&gt;
&lt;li&gt;訓練データの性能だけ高すぎないか&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ということです。&lt;/p&gt;
&lt;h2 id="learning-curveを描く"&gt;learning curveを描く&lt;/h2&gt;
&lt;p&gt;では、どうやってこれらの状況に気づけば良いのでしょうか？もう既に少し書いていますが、learning curve（学習曲線）とvalidation curve&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt; を書けば良いのです。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2016-05-29-sonomoderu-guo-xue-xi-siteruno-wei-xue-xi-nano-tokun-tutara/20160529212335_hu_15ab2016ffdfbf62.webp 320w, https://chezo.uno/post/2016-05-29-sonomoderu-guo-xue-xi-siteruno-wei-xue-xi-nano-tokun-tutara/20160529212335_hu_aa7c6466684969f.webp 480w, https://chezo.uno/post/2016-05-29-sonomoderu-guo-xue-xi-siteruno-wei-xue-xi-nano-tokun-tutara/20160529212335_hu_c2b5af3367cbd86c.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2016-05-29-sonomoderu-guo-xue-xi-siteruno-wei-xue-xi-nano-tokun-tutara/20160529212335_hu_15ab2016ffdfbf62.webp"
width="760"
height="509"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;これは、learning curveの例です。先ほど少し簡単に説明を書いてしまいましたが、横軸をデータサイズとして持っているデータをサンプリングして増やした時に、どのように訓練データと検証データの精度が推移するかを描いたグラフです。幅があるのはCross Validationした際の精度の最大値と最小値です。learning curveを描いた時に、訓練データに対する精度だけ高かった場合は過学習を疑いましょう。（この例は、原著では少し過学習の気があるけど、訓練データと検証データの精度の差が小さいので許容範囲だよね、って書いてあります） 対処法としては、データ量を増やすかモデルが複雑すぎるのでもっと簡単なものを使うかのいずれかです。（もちろん、正則化を入れるというのもありです）&lt;/p&gt;
&lt;p&gt;また、データサイズを増やしても精度があがらなければ（accuracyが0.3らへんでさまようとか）、未学習と思えばよいでしょう。この場合は、モデルをもっと複雑なものを使うのが良いでしょう。&lt;/p&gt;
&lt;p&gt;[追記]なお、ニューラルネットワークのように、SGDを使い何度もepochを繰り返して損失が計算できる場合は、損失を用いてlearning curveを書きます。[/追記]&lt;/p&gt;
&lt;h2 id="validation-curveを描く"&gt;validation curveを描く&lt;/h2&gt;
&lt;p&gt;もう一つの方法としては、validation curveを描きます。以下はその例です。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2016-05-29-sonomoderu-guo-xue-xi-siteruno-wei-xue-xi-nano-tokun-tutara/20160529214644_hu_bb7553157a124f0a.webp 320w, https://chezo.uno/post/2016-05-29-sonomoderu-guo-xue-xi-siteruno-wei-xue-xi-nano-tokun-tutara/20160529214644_hu_79d1093e4c64af1f.webp 480w, https://chezo.uno/post/2016-05-29-sonomoderu-guo-xue-xi-siteruno-wei-xue-xi-nano-tokun-tutara/20160529214644_hu_c6a79c8168114bf7.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2016-05-29-sonomoderu-guo-xue-xi-siteruno-wei-xue-xi-nano-tokun-tutara/20160529214644_hu_bb7553157a124f0a.webp"
width="760"
height="510"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;この例は、ロジスティック回帰の正則化項の逆比であるCパラメータを横軸にとっています。右に行けば行くほど正則化項の意味が弱くなり（つまり過学習しやすくなり）、左に行けば行くほど正則化項が強くなり（遊びが強くなりすぎる）ます。&lt;/p&gt;
&lt;p&gt;このように、パラメータに対するfitting具合を見るのがvalidation curveです。これを描くことで、適切なパラメータを見つけることができるでしょう。&lt;/p&gt;
&lt;h1 id="まとめみたいなもの"&gt;まとめみたいなもの&lt;/h1&gt;
&lt;p&gt;以上のように、learning curveやvalidation curveを描くことで、そのモデルが過学習しているか未学習なのかを判別できます。&lt;/p&gt;
&lt;p&gt;いろいろ書きましたが、解決方法としては、cross validationするとか、
とか色々あります。それについてはさまざまな書籍やブログで記述されていると思うので今回は書きませんでした。&lt;/p&gt;
&lt;p&gt;また、この辺の話はPython Machine Learningに丁寧にコードとともに書かれているので、是非発売されたら買うといいと思います。訳の監督もsfchaosさんなので期待が高まりますね！&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;学習アルゴリズムと読み替えてもOK&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;以前、AI学会の研究会で
先生が「それは未学習なのでは？」というツッコミをしていたのが、意外と未学習を気にしないのではという思いに至った端緒です&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:3"&gt;
&lt;p&gt;訳語わからない⇨検証曲線と訳しているそうです&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>機械学習の分類の話を損失関数と決定境界を中心に整理してみた</title><link>https://chezo.uno/post/2016-05-09-ji-jie-xue-xi-nofen-lei-nohua-wosun-shi-guan-shu-tojue-ding-jing-jie-wozhong-xin-nizheng-li-sitemita/</link><pubDate>Sun, 08 May 2016 17:06:39 -0700</pubDate><guid>https://chezo.uno/post/2016-05-09-ji-jie-xue-xi-nofen-lei-nohua-wosun-shi-guan-shu-tojue-ding-jing-jie-wozhong-xin-nizheng-li-sitemita/</guid><description>&lt;p&gt;機械学習の分類の話を、主に決定境界と損失関数の観点から整理してみました。 とはいっても、k-NNとか損失関数関係ないのもいます。&lt;/p&gt;
&lt;p&gt;最初ははてなブログに書こうとしたのですが、数式を埋め込むのが辛かったのでjupyter notebookにしました。&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=https%3A%2F%2Fgithub.com%2Fchezou%2Fnotebooks%2Fblob%2Fmaster%2Fclassification.ipynb" title="chezou/notebooks" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://github.com/chezou/notebooks/blob/master/classification.ipynb"&gt;github.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;[追記]&lt;/p&gt;
&lt;p&gt;githubだと日本語を含む数式のレンダーが壊れるので、nbviewerの方がいいかもしれません。
&lt;/p&gt;
&lt;p&gt;[/追記]&lt;/p&gt;
&lt;p&gt;パーセプトロンが見直されたのはなんでだっけ、SVMってどういう位置づけだっけ、というのを確認できればなぁと思っています。 多層パーセプトロンまでに至るところの流れがうまく伝わればなぁと思っています。 間違いなどがあれば、是非ご指摘いただければ嬉しいです。&lt;/p&gt;
&lt;p&gt;本当はcourseraのMachine Learningのコース前の人に届けば嬉しいんですが、きっと修了した人にしか伝わらないかなぁ。 もし、まだNgのコース終わっていない人がいたら、感想聞いてみたいです。&lt;/p&gt;</description></item><item><title>データを一箇所に集めることでデータ活用の民主化が進んだ話</title><link>https://chezo.uno/post/2016-05-05-detawo-ge-suo-niji-merukotodedetahuo-yong-nomin-zhu-hua-gajin-ndahua/</link><pubDate>Thu, 05 May 2016 15:20:46 -0700</pubDate><guid>https://chezo.uno/post/2016-05-05-detawo-ge-suo-niji-merukotodedetahuo-yong-nomin-zhu-hua-gajin-ndahua/</guid><description>&lt;p&gt;先日、この記事を読んで分析のハードルを下げること大事だよね、というのを思い出したのでつらつらと書いてみようと思います。&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fqiita.com%2Furaura%2Fitems%2F8020989e79a6985b0c29" title="マーケティング担当者にSQLを完全マスターさせた話 - Qiita" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="http://qiita.com/uraura/items/8020989e79a6985b0c29"&gt;qiita.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;内容としては正直タイトル詐欺で、SlackからRDSにクエリ発行できるようにして、各種権限を持っているエンジニアでなくても分析できるようになったよ、という話です。&lt;/p&gt;
&lt;p&gt;ここでいう「データ活用の民主化」というのはかっこ良く言ってみたかっただけで、「データ分析を生業にしている人以外もデータを活用してビジネスを進められるようになる」というくらいのニュアンスだと思って下さい。 「データ分析」というとアナリストの人がやること、みたいな職務が分かれている環境もあるとは思いますが、そうではない会社（前職）の一例です。&lt;/p&gt;
&lt;h2 id="データ活用が広まった流れ"&gt;データ活用が広まった流れ&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;数秒〜数十秒で対話的にクエリが返ってくると、トライアンドエラーが100倍くらいできる&lt;/li&gt;
&lt;li&gt;今まで実行計画を気にして避けていたことにガンガン挑戦して、新しいメタデータ達が付与される&lt;/li&gt;
&lt;li&gt;エンジニアがSQLに慣れ親しむ&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; と、ノウハウがチームや社内ブログに蓄積される&lt;/li&gt;
&lt;li&gt;身近なエンジニアがサポートできるようになり、Webディレクターの人もSQLを覚えてKPIを主体的に考え始める&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;こういう流れでSQLが社内のエンジニアからWebディレクターの人たちに広まっていきました。 また、SQLの苦手意識が減ってきたことで、プロダクトのフェーズに応じて変化するKPIを考える力が、数字が得意ではないWebディレクター&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt; にも身についてきました。&lt;/p&gt;
&lt;h2 id="前提"&gt;前提&lt;/h2&gt;
&lt;p&gt;この流れを支える前提としては、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Redshiftに入るデータを整備するいわゆる
をしている人&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt; がいた事&lt;/li&gt;
&lt;li&gt;
が「データの移動は悪だ！必要なテーブルは言えば集める！」&lt;sup id="fnref:4"&gt;&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref"&gt;4&lt;/a&gt;&lt;/sup&gt; と一貫して主張し続けて、一箇所でSQL叩けばだいたいなんとかなる（と思える）ようにしてくれていたこと&lt;sup id="fnref:5"&gt;&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref"&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;分析をする人が楽できるようにsshやproxyもなしで
みたいなGUIクライアントで直接Redshift叩けるようにしてくれたこと&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;といった事実があります。 3つめのポイントなんかは、前述のQiitaに書かれていた記事のポイントですよね。&lt;/p&gt;
&lt;p&gt;ここでいう「データを一箇所に集める」ということは、分析する人の立場からすると「一箇所でSQL叩けばだいたいなんとかなる」という状況です。 もちろん、処理方法はSQLに限った話ではないですが、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;分析のために余計なデータ転送のコストをかけない&lt;/li&gt;
&lt;li&gt;一定の前処理はなされており、何かしらの統一した方法でデータを処理すればよい&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;という状況を想定しています。&lt;/p&gt;
&lt;p&gt;ここまでお膳立てされて、最初は面倒くさいと思って僕含むRubyに逃げていたエンジニアたちも
と言い始めるに至りました。&lt;/p&gt;
&lt;p&gt;また、多くのWebディレクターの人たちはRubyなどのスクリプト言語は書けない人がほとんどでしたが、データが一箇所に集まったおかげで「SQLだけ覚えればエンジニアの手を借りること無く色々できる！」と思っていただけたのも良かったのかもしれません。&lt;/p&gt;
&lt;p&gt;@mineroaokiさんの思想はこちらのスライドにたっぷり詰まっています。P.12から「一箇所にまとめる」話がありますので、そこだけでも読んでみると良いでしょう。&lt;/p&gt;
&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/key/1KKYwrA60I1FMR" 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&gt; &lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;
&lt;/strong&gt; from &lt;strong&gt;
&lt;/strong&gt;
&lt;cite class="hatena-citation"&gt;&lt;a href="http://www.slideshare.net/mineroaoki/cookpad-techconf-2016-dwh"&gt;
&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;なお、Airbnbは
ようですが、分析に必要なデータが一箇所にまとまっていると言っても差し支え無いでしょう。&lt;/p&gt;
&lt;h2 id="ちなみに"&gt;ちなみに&lt;/h2&gt;
&lt;p&gt;実はもう一つの要素として、インフルエンサーとなるディレクターの人が居たのも事実です。 彼女は、今や
もしているようですが、昔はSQLができなくてエンジニアに毎回お願いしていたそうです。 その当時一緒に組んでいたエンジニア（SQLはめちゃ得意）が、あまりに面倒くさそうに対応するのが嫌でSQLを覚え始めたと聞きました。 その後、社内のデータ分析相談チャットで質問しまくったり、青木さんに質問したり、使ったクエリを自分のメモとしてストックすることで、他のディレクターに3,4段はネストするサブクエリ含んだSQLを展開するに至っています。&lt;/p&gt;
&lt;p&gt;彼女がSQLを武器にできるようになったのはもう一つ、青木さんの本の助けもあったと聞いています。 おそらく、他のWebディレクターの人たちにとっては、同じポジションの人に相談できるのは似たようなところを躓いたりした経験を聞けたりするのが良いのだと思います。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4797376279/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
10年戦えるデータ分析入門 SQLを武器にデータ活用時代を生き抜く (Informatics &amp;amp;IDEA)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作者: 青木峰郎&lt;/li&gt;
&lt;li&gt;出版社/メーカー: SBクリエイティブ&lt;/li&gt;
&lt;li&gt;発売日: 2015/06/30&lt;/li&gt;
&lt;li&gt;メディア: 単行本&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="データを一箇所に集めると民主化が進むのか"&gt;データを一箇所に集めると民主化が進むのか？&lt;/h2&gt;
&lt;p&gt;もちろん、ただ集めるだけでは進みません。&lt;/p&gt;
&lt;p&gt;「一箇所に集める」とはデータ分析をする人のコストを徹底的に下げる、ということに他なりません。 データ分析基盤を用意する人にとっては正直面倒なことも多いとは思います。 ですが、使ってもらってなんぼのデータ分析基盤は、最大限分析する人にやさしくするのが必須です。 自分より苦手意識を持つ人に、「あちらのDBは実行計画気をつけて、こちらのDBはjoinすると辛いから&amp;hellip;」みたいな面倒くさいことやってくれると思いますか？&lt;/p&gt;
&lt;p&gt;その上で、そうしたデータをどう料理すればいいのかを、まずはエンジニアを中心とした比較的データやSQLに慣れ親しんでいる人がお手本を見せます。 もちろん、得られた知見を含む、加工したデータも蓄えていきます。&lt;/p&gt;
&lt;p&gt;このときに、社内Wikiやブログではコピペで動く状態のクエリ（コメントもできれば付けて）と結果を添えて共有すると良いでしょう。 SQLが苦手な人でも、「コピペではじめるDAUの分析」みたいなタイトルの記事だったらきっと読んでくれます。&lt;/p&gt;
&lt;p&gt;良いツールや本を広めていくのと同じように、「何ができるようになるか」という具体例とともに、少しずつ仲間を増やしていくことが大事です。&lt;/p&gt;
&lt;h2 id="データ活用の民主化が進むと"&gt;データ活用の民主化が進むと&lt;/h2&gt;
&lt;p&gt;
の話でも、「検索セッション」の話が出てきていますが、検索チームなら「検索セッション」を見て仮説を立てて検証するよね、というように、生のデータを見るだけではなく、セッションのような塊で見ることで仮説を立てる、ということがデータに詳しくない人（元のデータやクエリを作った人ではない人）でもできるようになります。&lt;/p&gt;
&lt;p&gt;もちろん、Jupyter notebookのようなノートブック系のツールが発展することで、それらが加速することはあると思いますが、本質的に大事なのは「データにどういう切り口を与えて見ればいいのか」ということを、多くの人ができるようになることです。&lt;/p&gt;
&lt;p&gt;パソコンやワープロが普及したことで、タイプライター専業の人の職がなくなってしまいましたが、その代わりに何かをしたい人がワープロを道具として新しいことを生み出すことができるようになりました。 SQLやデータも同じで、データ活用の民主化が進むことでドメインに対する知識やパッションを持った人が、道具としてのデータを使って新しいことを生み出すことができるようになると信じています。&lt;/p&gt;
&lt;p&gt;この話を他の人にすると「でも、それエンジニアが凄い会社だからできたんでしょ？」と言われるのですが、多分データを一箇所に集めて誰でも分析できるようになった時にどうなるか、というイメージがわかないのがコストを割けない1つの原因なのではないか、と思いこういった記事を書いてみました。 もちろん、特にデータエンジニアリングを中心にいくつかの技術的ハードルはあるとは思いますが、チャレンジする価値はあると思います。&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;前職はRuby大好きな人が多かったため、アプリケーション用のSQLはかけるけどサブクエリやWindow関数バリバリの分析用クエリ書ける人は最初は少なく、手元でRubyで処理することが多かった&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;後に、もともと学校の算数・数学大嫌いだったと笑いながら言っていたのが印象的でした&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:3"&gt;
&lt;p&gt;@mineroaokiさんたち&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:4"&gt;
&lt;p&gt;実際に、テラバイト規模のデータを移動するのにN時間とかアホみたいなことも世の中にはあったりしますよね&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:5"&gt;
&lt;p&gt;もちろん、権限ないと見れないスキーマとかもありましたが&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>転職しました</title><link>https://chezo.uno/post/2016-03-30-zhuan-zhi-simasita/</link><pubDate>Wed, 30 Mar 2016 15:32:21 -0700</pubDate><guid>https://chezo.uno/post/2016-03-30-zhuan-zhi-simasita/</guid><description>&lt;p&gt;はじめての転職エントリです。 一部の方にはお伝えしましたが、先週からClouderaで働いています。&lt;/p&gt;
&lt;h1 id="まとめ"&gt;まとめ&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Ruby大好きポエム&lt;/li&gt;
&lt;li&gt;プロダクトエンジニアポエム&lt;/li&gt;
&lt;li&gt;データ大好きポエム&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="お前だれよ"&gt;お前だれよ？&lt;/h1&gt;
&lt;p&gt;kawasaki.rbやMachine Learning Casual Talks、Julia Tokyoなどのミートアップをやってます。 なお、今後もコミュニティ活動は続けていきたいと思います。&lt;/p&gt;
&lt;h1 id="rubyが好きでクックパッドに入った"&gt;Rubyが好きでクックパッドに入った&lt;/h1&gt;
&lt;p&gt;仕事でまったくRailsを書いていない人だった&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; のに、「Rubyが好きです！Rubyistなら一度は働いてみたいです！NLPと機械学習はやってきたんですが、世の人の役に立つものを作って使ってもらいたいです」とミーハーな気持ちで挑んだのですが、なんとか拾ってもらえて2年8ヶ月働くことができました。&lt;/p&gt;
&lt;p&gt;「Rails書いたことないのに採用されて驚いた」と飲んだ時に話したら、同僚の
が&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;「自分がわかるスキル持ってるかどうかだけで判断すると、多様性が失われて硬直するよね」&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;ということを言っていてなるほどー、と思いました。その考えのおかげで他のエンジニアとは違った成果を出すことができました。&lt;/p&gt;
&lt;p&gt;入社して歓迎ランチに迎えに来てくれた赤い髪の人を見て「これが噂のWeb系か&amp;hellip;」と思っていたら、青や緑の髪の人がいて&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt; 、最初のうちはめっちゃビビってました。仕事し始めるとそんな彼らは暖かく指導してくれて、修行をさせていただきました。&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;h1 id="前職での仕事を振り返って"&gt;前職での仕事を振り返って&lt;/h1&gt;
&lt;p&gt;同僚はキレッキレ&lt;sup id="fnref:4"&gt;&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref"&gt;4&lt;/a&gt;&lt;/sup&gt; で誠実な人が多く、特に現場が自分で考えて動いて進めていく人ばかりで、常に「お前はここで何がしたいの？貢献できるの？」というのが問われ続けていた環境でした。&lt;/p&gt;
&lt;p&gt;自分が取り組んだ仕事はいくつかあるのですが、副菜提案のレコメンドをしたり、ディレクターと1から有料会員向けのトップページのリニューアルをしたり幅広い事をさせてもらいました。&lt;/p&gt;
&lt;p&gt;でも、1社目で培ったSolrの脳内クエリビルダーや、NLP、機械学習の知識を適切に活かせるようになったのは、1年位過ぎてからでした。 複雑なアルゴリズムで凄いことをするより、シンプルだけどユーザーの欲求を最短で満たせる方法を選ぶべきということに気づいてから、機械学習は手段であり、それより大事なプロダクトの本質について考えることに時間を割くようになりました。&lt;/p&gt;
&lt;p&gt;優秀なエンジニアや情熱あふれるディレクターと仕事をするなかで、プロダクトを作ること、それを通じてユーザーの課題を解決することが好きだということに気づいていきました。 いわゆるプロダクトエンジニアっぽい感じでサービス開発をしていると、最先端の技術を使ったりミドルウェアをリリースしてないとダメなんじゃないかという、
悩みにぶち当たることもありましたが、彼らとは興味が違うんだなという事に気づいてから楽になりました。&lt;/p&gt;
&lt;p&gt;一時期、優秀なエンジニアがいれば何でもできると思ってた時があったのですが、一緒に仕事していたディレクターが、それこそ我々が技術書を買い漁るように、大学の頃からレシピ本を買い続けている、という人で、逆立ちしてもこの人の愛を持ったプロダクトにはかなわん、と思いながら一緒に仕事できたのもまたいい経験でした。&lt;/p&gt;
&lt;p&gt;最後1年は、
研究開発を加速するべく、データの学術公開やアカデミアとのリレーションシップの構築にも携わらせていただきました。特に、データ公開やハッカソンのおかげで、それまでバイトでRails書いてました！みたいな、プロの新卒がほとんどだったところに、データ系の能力を持った学生への門戸を開けたのは良かったと思っています。&lt;/p&gt;
&lt;p&gt;あとは、終盤は
のエバンジェリスト業を社内で勝手にやっていました。クックパッドに不本意ながらPythonを広めたのはワタシです。&lt;/p&gt;
&lt;p&gt;振り返ると、機械学習がある程度わかり、Railsも書けて、プロダクトを作ることが好きというちょっと面白いエンジニアになっていました。 バランス感覚を持ったジェネラリストになれればいいなと思っています。&lt;/p&gt;
&lt;h1 id="転職のきっかけ"&gt;転職のきっかけ&lt;/h1&gt;
&lt;p&gt;段々と「Rubyで仕事をしたい」から「プロダクトを通じて価値を届けたい」「データをビジネスに変えたい」という方向に考え方がシフトしてきました。 DeepLearning以降、特にTensorFlowがリリースしてから、機械学習界隈の変化のスピードの加速とコモディティ化が激しくなってきて、身の振り方を考えないといけないなと思い始めました。&lt;/p&gt;
&lt;p&gt;一方で、garyuさんの本を読んで「USに行きたいのなら日本法人に入るのが定石」というのを学んで頭の奥底に溜まっていました。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B01626P712/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
エンジニアとして世界の最前線で働く選択肢　?渡米・面接・転職・キャリアアップ・レイオフ対策までの実践ガイド
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作者: 竜盛博&lt;/li&gt;
&lt;li&gt;出版社/メーカー: 技術評論社&lt;/li&gt;
&lt;li&gt;発売日: 2015/10/08&lt;/li&gt;
&lt;li&gt;メディア: Kindle版&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;そんな中で、
を読んで、「なるほど、英語で仕事をするという選択肢は自分のキャリアにとっても重要だな」という想いが強くなった時に、一緒に飲む機会があって誘われて面接を受けて入ることになりました。&lt;sup id="fnref:5"&gt;&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref"&gt;5&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;前々からセールスエンジニアは、ユーザーに価値をどうやったら届けられるかを考える点で、BtoBにおけるプロダクトエンジニアだなとshiumachiさんの言葉を読んで感じていました。&lt;/p&gt;
&lt;p&gt;今の上司がとても良い人で彼に惚れたというのも大きいです。 マネージャーだけど最新の技術に対しても常にキャッチアップをし続けて、かつ非ネイティブに対してもとても辛抱強く接してくれて、ここまで条件の良い上司はめったに出会えない（＝自分に言い訳ができない）と思っています。 Hadoopを中心としたエコシステムにもう一度飛び込んで、データ基盤のインフラ周りについてもがっつり取り組みたいなと思っています。 色んなデータをみてどう価値を生み出すかを考えるのが好きなのですが、仕事をすることが、データを活かしてビジネスに変えることにつながるので、今からワクワクしています。&lt;/p&gt;
&lt;h1 id="今の様子"&gt;今の様子&lt;/h1&gt;
&lt;p&gt;今回もまた優秀な同僚に囲まれ、社内にある膨大な情報の中で泳ぎまくりたい衝動を抑えながら&lt;sup id="fnref:6"&gt;&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref"&gt;6&lt;/a&gt;&lt;/sup&gt; 、久しぶりのHadoop周りを楽しんでキャッチアップしています。 グローバルではそれなりに人数がいる会社ですが、ソースコードは自由に見られるしMLの議論もオープンだし、風通しはとてもよいです。 英語もまだまだだけど、
とDMM英会話を使って必死に頑張っています。&lt;/p&gt;
&lt;p&gt;会社が変わって、社内の機械学習チャットルームがなくなった分情報少なくなるかなと少し心配していたのですが、Data Science系のMLがあってそこを眺めてテンション上がっています。 自分の強みを活かしつつ、少しでも多くのデータが価値を生み出せるように貢献していきたいです。&lt;/p&gt;
&lt;p&gt;ちなみに、1社目を転職するきっかけとなったApache Nutch, Luceneを
&lt;sup id="fnref:7"&gt;&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref"&gt;7&lt;/a&gt;&lt;/sup&gt; が作っていたということを、今更ながら知り、なるほどこれは必然だったかという想いでいっぱいです。&lt;sup id="fnref:8"&gt;&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref"&gt;8&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;念のため補足すると、簡単なSolr検索のデモアプリをRails2系で書いて、後はSinatraでAPIサーバー書いてたり、OSS活動はしてたけど、他の人からするとほぼ0レベルだった&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;大体元ドワ勢&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:3"&gt;
&lt;p&gt;本当にyoshioriさんとmakimotoさんには頭が上がらない&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:4"&gt;
&lt;p&gt;人生N周目以降の強くてニューゲームっぽい人が多かった&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:5"&gt;
&lt;p&gt;なお、昨年末から転職活動はしていたので、例の話とは関係ありません&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:6"&gt;
&lt;p&gt;クックパッドの社内wikiのGroupadもたいがい時間泥棒だったけど、それを上回る時間泥棒っぷり&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:7"&gt;
&lt;p&gt;Hadoopの生みの親。今はClouderaのChief Architectをしている&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:8"&gt;
&lt;p&gt;1社目を出るきっかけがRubyとSolr,Nutch,Hadoopだったので、MatzとDougが僕の人生を変えたと言っても過言ではない&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>#CookpadTechConf 2016でクックパッドの研究まわりの取り組みを発表しました</title><link>https://chezo.uno/post/2016-01-25-number-cookpadtechconf-2016dekutukupatudonoyan-jiu-mawarinoqu-rizu-miwofa-biao-simasita/</link><pubDate>Sun, 24 Jan 2016 16:00:00 -0800</pubDate><guid>https://chezo.uno/post/2016-01-25-number-cookpadtechconf-2016dekutukupatudonoyan-jiu-mawarinoqu-rizu-miwofa-biao-simasita/</guid><description>&lt;p&gt;1/23に開催された
で、クックパッドの研究開発に関する取り組みを紹介させていただきました。&lt;/p&gt;
&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/key/GEKzIf4kdyFWOF" 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&gt; &lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;
&lt;/strong&gt; from &lt;strong&gt;
&lt;/strong&gt;
&lt;cite class="hatena-citation"&gt;&lt;a href="http://www.slideshare.net/chezou/rd-at-foodtech-company-cookpad-techconf-2016"&gt;
&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;メッセージとして伝えたかったことは、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
という主にtoB向けに提供しているクックパッドの検索履歴を可視化したサービスを
開始しました&lt;/li&gt;
&lt;li&gt;普段はAndroid書いてるアプリエンジニアが、自らレシピをカテゴリ分類できる仕組みがありますよ&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ということです。&lt;/p&gt;
&lt;p&gt;[2016/01/25 10:04追記] たべみるの学術アカウントは無償提供させていただいております [/追記]&lt;/p&gt;
&lt;p&gt;たべみるは、社内でも季節の食材やトレンドを見てレシピを選定するためにも活用しているのですが、地域ごとの差異なんかもわかったりします。なので、生の検索データではないのですが統計的に見やすくなった情報をインタラクティブに調べることができるので、研究のあたりを付けるための仮説を出すためには十分使えるんじゃないかなと思っています。&lt;/p&gt;
&lt;p&gt;もう一つは、アプリエンジニアも機械学習できる仕組みの話ですが、これには少し端折った点があります。 普通の機械学習をするためには（DeepLearningはまた違うけど）、テキストから適切な情報を取り出してベクトルに変換する必要があります。そして、その変換の仕方が肝になってきているのですが、そこは既に知見があるので仕組みの裏側に隠蔽されています。また、今回の資料にはないですが、クックパッドにはユーザーが推薦するカテゴリ情報というものがあり、カテゴリベースで正解データを与えることが出来ます。そして、それがかなり有用な教師データとなっています。&lt;/p&gt;
&lt;p&gt;あとは、さらりとデグレを防ぐために性能をチェックしてます、という話も含めていますが、ここに至るまでに痛い失敗をしたのでこういう形に落ち着いています。機械学習の予測モデルは、確率的な要素が含まれるので普通のrspecなどのテストではなかなか検出できません。そこで、少数の評価セットを予め用意しておいて、性能が一定基準以下になったらアラートをモデルの更新を止める仕組みが入っています。過去には、これがなかったために、テキストからベクトル化するために使っている辞書データのミスマッチで予測器が壊れてしまったこともありました。&lt;/p&gt;
&lt;p&gt;比較的小さいチームなので、特に気をつけているのがその研究はユーザーにどういう価値があるのか？という事を考えること。自分が取り組んでいる情報推薦なんかは割りとプロダクトと表裏一体なのですが、これからも先端を見据えつつ実際に役に立つ技術を追求していけたらと思います。&lt;/p&gt;
&lt;p&gt;今回、運営側の方々も少数精鋭で開催していただいて本当にありがたいと思います。1月のカンファレンスは辛いんですよね&amp;hellip;&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; 。 楽屋で青木さんがmirakuiさんを煽るのを聞きながら皆で爆笑したり、いつものカンファレンスとは一味ちがった楽しみ方ができました。 去年は神奈川Ruby会議の開催をできて、今年は32歳になる前にCookpad TechConfで登壇と大きな経験を積めて本当にありがたい限りです。&lt;/p&gt;
&lt;p&gt;ちなみに、今日が誕生日なので例のリスト置いておきますね&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;大晦日・元旦に神奈川Ruby会議の打ち合わせした記憶が蘇ってきます&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;この手法、2年連続である&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>2015年を振り返って</title><link>https://chezo.uno/post/2015-12-30-2015nian-wozhen-rifan-tute/</link><pubDate>Wed, 30 Dec 2015 13:41:51 -0800</pubDate><guid>https://chezo.uno/post/2015-12-30-2015nian-wozhen-rifan-tute/</guid><description>&lt;p&gt;今年は色々と挑戦をし、成功したもの失敗したもの多くの体験ができました。&lt;/p&gt;
&lt;h1 id="雑感"&gt;雑感&lt;/h1&gt;
&lt;p&gt;その中で痛感したのが、背中を預けられる仲間と働くことの重要性でした。 通年を通じて会社の同僚に散々言われつづけてきた2つの言葉があります。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;責任を取らない人の言葉は気にしてはいけない。自分で責任を取り権限を掴め。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;この言葉が実行できたのは今年の終盤でした。開き直ってしまえば、しんどさはあるもののどんどん進めていくことができるようになりました。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;本当にそれは自分がやるべきことか？断れないから引き受けていないか。自分のキャパを過大に見積もりすぎてはいけない。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;年の中盤から意図的に参加する勉強会を絞ったり、主催も控えめにデリゲートできるものはデリゲートしてきました。結構切り捨てるものは切り捨てました。 けど、もう少し抑えられる気がしています。&lt;/p&gt;
&lt;p&gt;自分の「得意」が何で、それを踏まえた上で何を伸ばしていきたいか、何でもやる、からもう少し指向性を持たせて歩を進めてきました。&lt;/p&gt;
&lt;p&gt;とくに上の2つを言っていた人が最初の先輩に聞いたという&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;履歴書に書ける仕事を選べ&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;という話は、とても印象に残っていて今後の指針にもなっています。&lt;/p&gt;
&lt;h1 id="コミュニティ"&gt;コミュニティ&lt;/h1&gt;
&lt;p&gt;「コミュニティおじさん」と呼ばれて久しいですが、仕事が多忙で苦しいことも多少ありましたが充実した一年でした。&lt;/p&gt;
&lt;p&gt;友達がいない/自分の求める勉強会がないなら、勉強会を立ち上げてみるのはいいんじゃないかと思います。少なくとも似た興味を持つ人が集まって来て毎月飲み会も開催できます&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;h2 id="神奈川ruby会議"&gt;神奈川Ruby会議&lt;/h2&gt;
&lt;p&gt;なんといっても今年の最初から神奈川Ruby会議という大きいイベントを開催しました。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2015-01-25-shen-nai-chuan-rubyhui-yi-wokai-cui-simasita-number-kana01/" data-iframely-url="//iframely.net/Uv6RBE8"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;h2 id="podcast"&gt;podcast&lt;/h2&gt;
&lt;p&gt;
というPodcastを
にあこがれてはじめました。&lt;/p&gt;
&lt;p&gt;きっかけは神奈川Ruby会議のパネルディスカッションをもっと深掘りしたいという気持ちだったのですが、最近では&amp;quot;Rubyist&amp;quot;という縛りが厳しすぎたかなぁという気持ちになっています😅&lt;/p&gt;
&lt;p&gt;来年も月1くらいで継続していきたいと思います。&lt;/p&gt;
&lt;p&gt;なお、rebuildの
は無事家庭内稟議が通りました。&lt;/p&gt;
&lt;p&gt;ちなみに、今年聞いているpodcastはこんな感じです。わりと通勤のながら聴きなので英語は左の耳から右の耳です。。。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;tech系
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;長いけどWindowsネタやガジェットネタのRSS追いかけない代わりに聞いてる。結構濃いトークできる業界の人がサラリと出てくるので、まずは興味のある話だけ聴くのがオススメ&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ML系
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;ゲストにHinton出てきたりとメジャーな企業の研究者が出てきて豪華なのでオススメ。音はいまいち&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;英語
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;「Friendsは今でも英語の日常会話の学習に最適なの？」という質問が中国の人から出るなど、USの文化だったり語学学習者に適したコンテンツが多い&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="kawasakirb"&gt;kawasaki.rb&lt;/h2&gt;
&lt;p&gt;神奈川Ruby会議との相乗効果で、新しい方々に参加していただけるようになりました。 GolangだけでなくPythonやScala、はてはRailsブートキャンプに参加した話など多様なアウトプットをしていただける場になり、地域に根ざしたコミュニティができているのではないかと思います。&lt;/p&gt;
&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/key/wnLGLiP9Wy5gZd" 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&gt; &lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;
&lt;/strong&gt; from &lt;strong&gt;
&lt;/strong&gt;
&lt;cite class="hatena-citation"&gt;&lt;a href="http://www.slideshare.net/rojiuratech/camp-report-forkwskrb-55531773"&gt;
&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/key/Kb77fszNVfOW5t" 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&gt; &lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;
&lt;/strong&gt; from &lt;strong&gt;
&lt;/strong&gt;
&lt;cite class="hatena-citation"&gt;&lt;a href="http://www.slideshare.net/yutomatsukubo/rubyistscala"&gt;
&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;勉強会の懇親会にぴったりなお店も教えていただくことができ、大満足です。&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Ftabelog.com%2Fkanagawa%2FA1405%2FA140501%2F14021478%2F" title="狸小路飯店 (川崎/中華料理)" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="http://tabelog.com/kanagawa/A1405/A140501/14021478/"&gt;tabelog.com&lt;/a&gt;&lt;/cite&gt;
&lt;h2 id="mlct"&gt;MLCT&lt;/h2&gt;
&lt;p&gt;今年も2回開催できました。安定して胃が痛くなる実務でよくある苦労話が多く聞けており、主催者冥利に尽きます。毎回、やってよかったと思いながらタイムキーピングとかもしないで聞けるのが一番いいのにな、と思っています。 最近、開催するとHivemallのmyuiさんやGoogleの佐藤さんなどLTでさらりと大御所がトークしてくださることが増えており、恐縮することが増えています。&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fmlct.connpass.com%2Fevent%2F13995%2F" title="Machine Learning Casual Talks #3 (2015/04/30 19:00〜)" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="http://mlct.connpass.com/event/13995/"&gt;mlct.connpass.com&lt;/a&gt;&lt;/cite&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fmlct.connpass.com%2Fevent%2F22192%2F" title="Machine Learning Casual Talks #4 (2015/12/15 19:00〜)" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="http://mlct.connpass.com/event/22192/"&gt;mlct.connpass.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;MLCTはスピーカーのアサインとテーマ設定がなかなか難しくて、コンスタントに開催できないのが苦しいのですが、話したいことあるよ！という方がいましたらご連絡ください。&lt;/p&gt;
&lt;h2 id="julia-tokyo"&gt;Julia Tokyo&lt;/h2&gt;
&lt;p&gt;一年に3回開催することが出来ました。 だんだんとDeep Learningな話が増えてきており、楽しい限りです。言語縛りは有りますが最適化や機械学習が好きな人が集まってきてトークする流れが定着しているのは良いなぁと思います。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2015-12-25-julia-tokyo-number-5wokai-cui-simasita-number-juliatokyo/" data-iframely-url="//iframely.net/BMSZcWF"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;h1 id="プライベートな開発"&gt;プライベートな開発&lt;/h1&gt;
&lt;h2 id="julia"&gt;Julia&lt;/h2&gt;
&lt;p&gt;個人的にもJuliaの一年でした。特にTinySegmenter.jlを時差を最大限に活用した高速化をしたのはいい思い出です。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2015-04-26-number-juliatokyo-de-number-juliawakaran-toiuza-narepozitoriwoli-tetahua-wositara-julia-dot-tokyo-gadekiteta/" data-iframely-url="//iframely.net/6fTO8dS"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js" charset="utf-8"&gt;&lt;/script&gt;&lt;/br&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2015-09-23-mecab-dot-jlwojulia-v0-dot-4-0-rc2nidui-ying-sita/" data-iframely-url="//iframely.net/aeV1LVa"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2015-10-21-tinysegmenterwojuliayi-zhi-sitaramitnoxian-sheng-nizhi-dao-sitemoraetahua/" data-iframely-url="//iframely.net/Xo3BkWN"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;MeCab.jlとTinySegmenter.jlで少しずつ日本語のテキスト解析事例が増えてきたので嬉しい限りです。来年はもっときちんとしたものを作りたいなぁと思っています。&lt;/p&gt;
&lt;h2 id="jupyter-notebook--pandas"&gt;Jupyter notebook &amp;amp; pandas&lt;/h2&gt;
&lt;p&gt;iRubyを通じて
ですが、githubがレンダーするようになったのと、pandas-tdが非常に便利なことから職場で普及活動をしていました。&lt;/p&gt;
&lt;p&gt;jupyter notebookのいいところは、試行錯誤をしやすいことと再現性が担保されることです。なかなか伝わりにくいその魅力もアニgifとハンズオンで広まって、会社のブログで書いた記事も大分広まって良かったです。&lt;/p&gt;
&lt;iframe src="https://techlife.cookpad.com/embed/write-once-share-anywhare" title="現代のエンジニアのための強力なメモ帳 Jupyter notebookのすゝめ - クックパッド開発者ブログ" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://techlife.cookpad.com/entry/write-once-share-anywhare"&gt;techlife.cookpad.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;また、ここに至るまでに
さんの10年本がなければ至らなかったです。結局何事にもSQLが必要だと思い知らされた一年でした。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4797376279/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
10年戦えるデータ分析入門 SQLを武器にデータ活用時代を生き抜く (Informatics &amp;amp;IDEA)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作者: 青木峰郎&lt;/li&gt;
&lt;li&gt;出版社/メーカー: SBクリエイティブ&lt;/li&gt;
&lt;li&gt;発売日: 2015/06/30&lt;/li&gt;
&lt;li&gt;メディア: 単行本&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="翻訳のお手伝い"&gt;翻訳のお手伝い&lt;/h2&gt;
&lt;p&gt;Lean Analyticsの日本語版の翻訳のお手伝いをしたのですが、今年出版されました。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4873117119/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
Lean Analytics ―スタートアップのためのデータ解析と活用法 (THE LEAN SERIES)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作者: アリステア・クロール,ベンジャミン・ヨスコビッツ,林千晶,エリック・リース,角征典&lt;/li&gt;
&lt;li&gt;出版社/メーカー: オライリージャパン&lt;/li&gt;
&lt;li&gt;発売日: 2015/01/24&lt;/li&gt;
&lt;li&gt;メディア: 単行本（ソフトカバー）&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;もともと、昨年社内で読書会をしていたのですが、データ分析をするものの心構えとして大事なことが詰まっている本です。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2014-12-29-she-nei-delean-analyticsdu-shu-hui-wozhong-emasita/" data-iframely-url="//iframely.net/1KyO1VQ"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;harupongさんみたいに翻訳をゴリゴリやっている人とのレベル差も知ることが出来て良い経験でした。&lt;/p&gt;
&lt;h1 id="サービス開発という仕事"&gt;サービス開発という仕事&lt;/h1&gt;
&lt;p&gt;
とは違って、逆立ちしても叶わないディレクターの作りたい世界を作るために自分の武器は何を提供できるか、というのを考えながら進めてきた一年でした。&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt; 最初はコンセプトメイキングを横で眺めていただけだったのから、自分もその世界観にずっぽりハマるきっかけをいただき、何をすればいいのか何が必要なのか何があればこの世界観に繋がるんだろうかということを考えていました。&lt;/p&gt;
&lt;p&gt;また、それを後方支援するために資料作ったり数字出したりログ設計して集計したり、ということをやりながら、裏側の仕掛けを考えたりRails書いたりhamlとsassかいたり、泣きながらCSS修正しまくったりしていました。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;サービス開発は常にこれでいいんだろうか、ピボットはいつすべきなんだろうかと考えながら一歩一歩進むので、胃がキリキリしますよ。納得の行くものが出来た時には充実感を感じますね。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;以前一緒に働いたディレクターのこの言葉の、少なくとも何割かは実感できた一年でした。&lt;/p&gt;
&lt;p&gt;サービス開発をするエンジニアは、圧倒的な技術力を発揮したりプロセス改善をどんどんしていくというよりは、コードが書けなくとも何を作るのかを常に考えたりクマさんのように話を受けたり、はたまたぶれそうになった時にツッコミを入れたりということが大事なんだということを実感しました。&lt;/p&gt;
&lt;h1 id="まとめ"&gt;まとめ&lt;/h1&gt;
&lt;p&gt;言葉にすると当たり前のことばかりでも、それらが自分の血肉になった一年でした。&lt;/p&gt;
&lt;p&gt;また、今年はいい人との出会いも出来たなぁと思っています。結構いい年齢の人と話すことで「こういうアプローチでビジネスを回していくんだ」というのが少しずつ見えてきて、仕事の違った面白さも見えてきています。&lt;/p&gt;
&lt;p&gt;来年も、もっともっと成長できるよう挑戦をしていきたいと思います。&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;ただし、LINEのアカウントは交換していない&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;成長している人の側で仕事するのは楽しいですね！&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>2015年に買ってよかった物まとめ</title><link>https://chezo.uno/post/2015-12-29-2015nian-nimai-tuteyokatutawu-matome/</link><pubDate>Tue, 29 Dec 2015 12:33:41 -0800</pubDate><guid>https://chezo.uno/post/2015-12-29-2015nian-nimai-tuteyokatutawu-matome/</guid><description>&lt;p&gt;書いておくと後から検索できることもあり、今年買ってよかったものを書いていこうと思います。&lt;/p&gt;
&lt;h2 id="1-防水bluetoothスピーカー"&gt;1. 防水Bluetoothスピーカー&lt;/h2&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B00NFGRM48/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
Patech　Bluetooth 3.0　ワイヤレススピーカー　内蔵マイク付　吸盤式対応　防水仕様　（ブラック）
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: Patech&lt;/li&gt;
&lt;li&gt;メディア: エレクトロニクス&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;お風呂にも使えるし、キッチンでも冷蔵庫に貼り付けたりして使えて便利です。水の音に負けない程度の音量を稼げて、iPhoneやiPadで単純に再生するよりもながら聴きが捗ります。 Podcastを聞くのにちょうどよいです。Podcastの音をAirplayで良いスピーカーに繋いで出すとあまり音が頭に入らないんですが、ちょっと昔のラジカセみたいな感じでちょうど聴きやすくなります。 妻もこれを使って英語のPodcastを聞くようになっています。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2015-10-07-xi-pan-fu-kiofeng-lu-supikagapodcastwen-kunonisugoibian-li/" data-iframely-url="//iframely.net/f9HcC5z"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;h2 id="2-二重窓フィルム"&gt;2. 二重窓フィルム&lt;/h2&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B00476HMHC/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
窓ガラス透明断熱フィルム 【二重窓構造が作れる! 超透明断熱フィルム】 E0590
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: Nitoms&lt;/li&gt;
&lt;li&gt;メディア: ホーム&amp;amp;キッチン&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これは結露がかなり減るのでオススメです。劇的に変わりました。普通のプチプチみたいなのとは異なり、窓ガラスから少し浮かせた位置にフィルムを両面テープで固定するものになります。 二重窓をフィルムでつくり上げる形ですね。&lt;/p&gt;
&lt;p&gt;特に網入りガラスなど割れる可能性がある窓にも適用できるのと、毎日結露していた窓がかなり水滴がなくなりました。賃貸の方にもオススメです。&lt;/p&gt;
&lt;h2 id="3-synology-diskstation-ds215j"&gt;3. Synology DiskStation DS215j&lt;/h2&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B00PRXT088/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
Synology DiskStation DS215j デュアルコアCPU搭載多機能2ベイNASキット CS5029 DS215j
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: Synology&lt;/li&gt;
&lt;li&gt;発売日: 2014/11/30&lt;/li&gt;
&lt;li&gt;メディア: Personal Computers&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本当はこれ単品でレビュー書きたかったんですが、結果としてここでの紹介になってしまいました。 もともとQNAPに入っていたディスクが壊れたので、いい機会だから2枚刺さるNASにしようと思い選びました。 僕が買った当時はSynologyしかbox.comとのsyncに対応しておらず&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; 、必然的にSynologyを選ばざるを得なかったのですが、使い勝手は割と良いです。&lt;/p&gt;
&lt;p&gt;そもそも、シングルコアからデュアルコアのCPUに変わったことも有り、転送速度もかなり改善したのが大きいですが、アプリ周りも良い感じです。 ただ、家の外からアクセスする際に結構細かくファイアーウォールなどを設定できる反面、どれが設定に必要なのかが少しわかりにくいので玄人向けという印象です。&lt;/p&gt;
&lt;p&gt;なお、ハードウェアのスペック重視でいくならAsustorのNASがいいんだろうなと思っています。&lt;/p&gt;
&lt;p&gt;NASは4年くらいに一回買い換えるのがいいかもしれません。&lt;/p&gt;
&lt;p&gt;ディスクはNAS用途の24時間稼働を想定した赤いやつを買っています。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B008P56QEQ/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
WD HDD 内蔵ハードディスク 3.5インチ 3TB Red WD30EFRX / IntelliPower / SATA 6Gb/s / 3年保証
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: Western Digital&lt;/li&gt;
&lt;li&gt;メディア: Personal Computers&lt;/li&gt;
&lt;li&gt;購入: 5人 クリック: 6回&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="4-サイクルロッカー"&gt;4. サイクルロッカー&lt;/h2&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B00TD128N4/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
サイクルロッカー(CycleLocker)　室内用縦置き自転車スタンド　クランクストッパースタンド　CS-650 (RED)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: 株式会社サイクルロッカー&lt;/li&gt;
&lt;li&gt;メディア: その他&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;室内で自転車を置きたかったのですが、それまで横置きしていて場所をとっていたのでこれを買いました。 地震が来ても大丈夫な感じで安定しています&lt;/p&gt;
&lt;h2 id="5-panasonic-ledかしこいテールライト-skl090"&gt;5. Panasonic LEDかしこいテールライト SKL090&lt;/h2&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B006L09B0I/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
Panasonic(パナソニック) LEDかしこいテールライト SKL090 ブラック
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: Panasonic(パナソニック)&lt;/li&gt;
&lt;li&gt;発売日: 2012/03/09&lt;/li&gt;
&lt;li&gt;メディア: スポーツ用品&lt;/li&gt;
&lt;li&gt;購入: 3人 クリック: 10回&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;いわゆる、振動でテールライトがオンになるやつです。 これまで夜走り始める前にいちいち電源をオンにしていたのが必要なくなって地味に便利です。&lt;/p&gt;
&lt;h2 id="6-サンシェードとdcモーター扇風機"&gt;6. サンシェードとDCモーター扇風機&lt;/h2&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B00C56VL14/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
UVカット オーニング スクリーン 幅180cmタイプ グリーン
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: 大徳商事株式会社&lt;/li&gt;
&lt;li&gt;メディア: Tools &amp;amp; Hardware&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B00TZ9W8FW/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
山善(YAMAZEN) (DCモーター搭載)30cmリビング扇風機(静音モード搭載)(リモコン)(風量4段階)入切タイマー付 ホワイト YLX-LD302(W)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: 山善(YAMAZEN)&lt;/li&gt;
&lt;li&gt;メディア: ホーム&amp;amp;キッチン&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;時期を逸してしまった感はありますが、今年の夏にこれを導入したおかげでかなり快適に過ごせました。 特にサンシェードは温度上昇が劇的に抑えることができ、とてもよかったです。体感で温度が違うことが感じることができる程度には効果がありました。&lt;/p&gt;
&lt;p&gt;DCモーター扇風機もほとんどお値段しないわりに、静かだったので子供が寝ている時にも活躍しました。&lt;/p&gt;
&lt;p&gt;というわけで、今年は色々なものを買いました。dotとか
は来年レビューを書こうと思います&amp;hellip;。&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;今はQNAPも対応したようです&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>Julia Tokyo #5を開催しました #JuliaTokyo</title><link>https://chezo.uno/post/2015-12-25-julia-tokyo-number-5wokai-cui-simasita-number-juliatokyo/</link><pubDate>Fri, 25 Dec 2015 13:02:48 -0800</pubDate><guid>https://chezo.uno/post/2015-12-25-julia-tokyo-number-5wokai-cui-simasita-number-juliatokyo/</guid><description>&lt;p&gt;さる12/19に
を開催しました。&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;togetterのまとめはこちら。&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Ftogetter.com%2Fli%2F914680" title="#JuliaTokyo 05 まとめ" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="http://togetter.com/li/914680"&gt;togetter.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;資料はまだいくつかしかアップロードされていませんが、今回は機械学習の話やDeep Learningの話が多かったように思います。&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fjuliatokyo.connpass.com%2Fevent%2F21715%2Fpresentation%2F" title="JuliaTokyo #5 - 資料一覧 - connpass" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="http://juliatokyo.connpass.com/event/21715/presentation/"&gt;juliatokyo.connpass.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;個人的に印象的だったのは、hshindoさんのMerlin.jlです。さくっとDeep Learning用のフレームワークを実装できるのは驚きでした。&lt;/p&gt;
&lt;p&gt;また、今回運営サイドとしては、
さまのスポンサードをいただいており、Slackとの連携出来て嬉しい感じです。&lt;/p&gt;
&lt;h1 id="本編"&gt;本編&lt;/h1&gt;
&lt;h2 id="sorami-さんのイントロ"&gt;
さんのイントロ&lt;/h2&gt;
&lt;iframe allowfullscreen="true" allowtransparency="true" frameborder="0" height="463" id="talk_frame_323691" mozallowfullscreen="true" src="//speakerdeck.com/player/8a33b8868e974c218084ab559884c579" style="border:0; padding:0; margin:0; background:transparent;" webkitallowfullscreen="true" width="710"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://speakerdeck.com/sorami/juliatokyo-number-5-introduction"&gt;speakerdeck.com&lt;/a&gt;&lt;/cite&gt;
&lt;h2 id="bicycle1885さん-juliaチューニングハンズオン"&gt;
さん Juliaチューニングハンズオン&lt;/h2&gt;
&lt;p&gt;
を題材に、Juliaのボトルネックをprofileしながら高速化していくハンズオンでした。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h2 id="oyamadさん-quanteconjl-の-discretedp-の紹介"&gt;oyamadさん QuantEcon.jl の DiscreteDP の紹介&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/h2&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=https%3A%2F%2Fgithub.com%2Foyamad%2Fpresentations%2Ftree%2Fmaster%2FJuliaTokyo05" title="oyamad/presentations" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://github.com/oyamad/presentations/tree/master/JuliaTokyo05"&gt;github.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;oyamad先生のゼミ（経済学部）では来年からJuliaが必須になるそうです！&lt;/p&gt;
&lt;h2 id="kimrinさん-メカジョさんとジュリアたん"&gt;
さん メカジョさんとジュリアたん&lt;/h2&gt;
&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/key/8jh4GpSk2RvCjR" 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&gt; &lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;
&lt;/strong&gt; from &lt;strong&gt;
&lt;/strong&gt;
&lt;cite class="hatena-citation"&gt;&lt;a href="http://www.slideshare.net/kimrinjp/mechajyo-and-juliatan-juliatokyo-julialang"&gt;
&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;MITのJuliaの研究室ではジュリアたんステッカーがマシンに貼られているそうです。世界を股にかける！&lt;/p&gt;
&lt;h2 id="quantixresearchさん-mxnetjlaws-gpu-deeplearning-super-powers-from--035hr"&gt;
さん MXNet.jl+AWS GPU: DeepLearning Super Powers from ~ $0.35hr&lt;/h2&gt;
&lt;p&gt;Mocha.jlの作者はMXNet.jlに移行したそうです。 というわけで、GPUもCPUも分散で行けるMXNetに移行しよう！という話でした。 AndreさんがAMIも作ったそうです。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Releasing an
AMI with everything you need to run GPU enabled MXNet.jl
&lt;/p&gt;
&lt;p&gt;— Andre Pemmelaar (@QuantixResearch)
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;script async src="//platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;h2 id="hshindoさん-neural-pos-tagging-with-julia"&gt;
さん Neural POS-Tagging with Julia&lt;/h2&gt;
&lt;p&gt;NAISTの松本研では、Pythonを使う学生とF#を使うhshindo先生が共通の言語としてJuliaを使い始めているそうです。 紹介のあったMerin.jlは、characterベースのPOS taggingをNNを使ってやりたかったから作ったとのこと。 パット見たかんじChainerっぽい書き方で、DLができます。&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=https%3A%2F%2Fgithub.com%2Fhshindo%2FMerlin.jl" title="hshindo/Merlin.jl" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://github.com/hshindo/Merlin.jl"&gt;github.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;資料はこちら。
&lt;/p&gt;
&lt;h1 id="lt"&gt;LT&lt;/h1&gt;
&lt;h2 id="bicycle1885さん-v05に入りそうな気がする変更"&gt;bicycle1885さん v0.5に入りそうな気がする変更&lt;/h2&gt;
&lt;p&gt;資料&lt;/p&gt;
&lt;h2 id="いしたーさん-juliaでオンライン線形分類器つくった"&gt;
さん Juliaでオンライン線形分類器つくった&lt;/h2&gt;
&lt;p&gt;Exact Soft Confidence Weightedを実装したよ、という話。会場からも実装が綺麗と評判でした。&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=https%3A%2F%2Fgithub.com%2FIshitaTakeshi%2FSoftConfidenceWeighted.jl" title="IshitaTakeshi/SoftConfidenceWeighted.jl" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://github.com/IshitaTakeshi/SoftConfidenceWeighted.jl"&gt;github.com&lt;/a&gt;&lt;/cite&gt;
&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/key/7YVZPx8vmmvpmL" 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&gt; &lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;
&lt;/strong&gt; from &lt;strong&gt;
&lt;/strong&gt;
&lt;cite class="hatena-citation"&gt;&lt;a href="http://www.slideshare.net/TakeshiIshita/julia-56356347"&gt;
&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;h2 id="iizukakさん-hierarchical-temporal-memory-どうでしょう"&gt;
さん Hierarchical Temporal Memory どうでしょう&lt;/h2&gt;
&lt;p&gt;次回、HTM.jl作ってみた、乞うご期待。&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=https%3A%2F%2Fdocs.google.com%2Fpresentation%2Fd%2F1F6jYDOgXNkbXqqyovXuNksS54Rlbn45aXg98D0H53_g%2Fhtmlpresent" title="Hierarchical Temporal Memory どうでしょう" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://docs.google.com/presentation/d/1F6jYDOgXNkbXqqyovXuNksS54Rlbn45aXg98D0H53_g/htmlpresent"&gt;docs.google.com&lt;/a&gt;&lt;/cite&gt;
&lt;h2 id="kazoo04さん-arow"&gt;
さん AROW&lt;/h2&gt;
&lt;p&gt;
でも有名なkazoo04さんのAROW.jlの話。 SCWにAROWにとオンライン学習アルゴリズムが一通り揃った感ありますね。&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=https%3A%2F%2Fgithub.com%2Fkazoo04%2FAROW.jl" title="kazoo04/AROW.jl" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://github.com/kazoo04/AROW.jl"&gt;github.com&lt;/a&gt;&lt;/cite&gt;
&lt;h2 id="olanleedさん-juliaでcudaを扱うのはらくだ"&gt;
さん JuliaでCUDAを扱うのはらく～だ&lt;/h2&gt;
&lt;p&gt;全然楽じゃなさそうです&amp;hellip;。maleadtさんのCUDA.jlが理想に近いそうですが、上手く動かないという&amp;hellip;&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=https%3A%2F%2Fgithub.com%2Fmaleadt%2FCUDA.jl" title="maleadt/CUDA.jl" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://github.com/maleadt/CUDA.jl"&gt;github.com&lt;/a&gt;&lt;/cite&gt;
&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/key/74PF7HHKo1xvTs" 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&gt; &lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;
&lt;/strong&gt; from &lt;strong&gt;
&lt;/strong&gt;
&lt;cite class="hatena-citation"&gt;&lt;a href="http://www.slideshare.net/tomohiromito/julia-tokyo"&gt;
&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;h2 id="ysekky_さん-テキスト分析"&gt;
さん テキスト分析&lt;/h2&gt;
&lt;p&gt;MeCab.jlとTextAnalysis.jlを使ったテキスト分析の話でした。JMW仕事しろ案件&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fqiita.com%2Fysekky%2Fitems%2Fcdb6ed28b903e4719bea" title="Juliaでテキスト分析をしてみる - Qiita" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="http://qiita.com/ysekky/items/cdb6ed28b903e4719bea"&gt;qiita.com&lt;/a&gt;&lt;/cite&gt;
&lt;h2 id="ohtamanさん-声質変換"&gt;
さん 声質変換&lt;/h2&gt;
&lt;p&gt;福山雅治が歌う関白宣言を、さだまさしが歌うように声質変換する！ということで胸熱な話でした。 続編があるようで、期待大です。&lt;/p&gt;
&lt;h1 id="まとめと雑感"&gt;まとめと雑感&lt;/h1&gt;
&lt;p&gt;懇親会では、
さん寄贈「データサイエンティスト養成読本　機械学習入門編」争奪じゃんけん大会がありました。&lt;/p&gt;
&lt;p&gt;まさか、遠方からの参戦があるなど日本全国にJuliaが広がっている機運が高まっています。Advent Calendarも無事終わって、時代はJuliaですね！&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fqiita.com%2Fadvent-calendar%2F2015%2Fjulialang" title="Julia Advent Calendar 2015 - Qiita" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="http://qiita.com/advent-calendar/2015/julialang"&gt;qiita.com&lt;/a&gt;&lt;/cite&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;週3勉強会開催のフィニッシュdayでした&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;どうでもいいけど、はてなブログPDFをgithub上の埋め込むすべがないな。。。&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>Juliaで得られたマイナー言語を盛り上げる方法 #JuliaAC</title><link>https://chezo.uno/post/2015-12-25-juliadede-raretamainayan-yu-wosheng-rishang-gerufang-fa-number-juliaac/</link><pubDate>Thu, 24 Dec 2015 16:00:00 -0800</pubDate><guid>https://chezo.uno/post/2015-12-25-juliadede-raretamainayan-yu-wosheng-rishang-gerufang-fa-number-juliaac/</guid><description>&lt;p&gt;この記事は
の最終日です。&lt;/p&gt;
&lt;p&gt;Juliaは大分マイナーな言語で、日本語による情報が殆ど無かったのですが、以下の要因で大分盛り上がってきていると思います。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;イベント（JuliaTokyo）を年数回開催している&lt;/li&gt;
&lt;li&gt;Advent Calendarを毎年開催している&lt;/li&gt;
&lt;li&gt;エヴァンジェリスト(a.k.a bicycle1885)が宣伝し続ける&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id="1-イベントを年に何回か開催する"&gt;1. イベントを年に何回か開催する&lt;/h1&gt;
&lt;p&gt;最近は大分3つ目の要素がでかいなと思ってきているのですが、 そもそものJuliaTokyoのスタートとしては僕がMachine Learning Casual Talksを開催したところ、偶々来ていたbicycle1885さんがいたということと、Tokyo.RでJuliaの宣伝をしていた
さんとで意気投合して始めました。&lt;/p&gt;
&lt;p&gt;この手のマイナー言語の通例としては英語圏でなんだか盛り上がっているらしいぞ、でも日本語の情報もないし何が嬉しいんだっけ？というケースが圧倒的に多いと思うのですが、やる気のある人が3人いれば勉強会を継続的に開催できます。&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; 負荷分散大事。&lt;/p&gt;
&lt;p&gt;最近は、
にスポンサードもしていただいて、情報の共有も少しずつすすめております。&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;h1 id="2-advent-calendarを毎年開催する"&gt;2. Advent Calendarを毎年開催する&lt;/h1&gt;
&lt;p&gt;かなり広がりを感じたのがQiitaで開催した
です。 きっかけは同僚の[gfx](
&lt;strong&gt;gfx&lt;/strong&gt; )氏に煽られてはじめたのですが、何とか25日埋まって良かったです。&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Qiitaは最近情報が溢れてきて質が云々とかいう議論がたまに出てくるのを見かけるのですが、ことJuliaに関して言えば「試してみた」「installしてみた」とかでも全然情報としては価値がありますし、投稿していただけるととてもうれしいです。&lt;br&gt;
JuliaTokyo名物「Juliaはじめて24時間以内枠」というLT枠がいつもなんとなくあるのですが、こうした気軽にやってみた/作ってみた/試してみたという行為が日本語の情報を増やすことにつながるので、正の連鎖がつながっていきます。&lt;br&gt;
また、Julia自体が変化の速い言語なので、過去の記事と同じ事をやっても実行できないということがざらにあります。ですので、「最新の入門情報」というのは非常にありがたいわけです。&lt;/p&gt;
&lt;p&gt;もちろん、ガチ勢は放っておいても英語の情報を取ってくるのですが、日本で裾野を広げるためには日本語の情報が欠かせません。&lt;/p&gt;
&lt;p&gt;今年は名古屋方面にもJuliaが広まっているのを実感して、とてもうれしい限りです。&lt;/p&gt;
&lt;h1 id="3-エヴァンジェリストを確保する"&gt;3. エヴァンジェリストを確保する&lt;/h1&gt;
&lt;p&gt;最後のエヴァンジェリストを確保するという話は、結構大変かも知れません。我々の場合、エネルギーもある程度の時間もある優秀な大学院生がJSoCというグラントも取って開発しちゃったり研究に使っているのですが、彼が常に「Julia良いよJulia」「これからはJuliaの時代」と言い続けている&lt;sup id="fnref:4"&gt;&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref"&gt;4&lt;/a&gt;&lt;/sup&gt; ことで、じわじわと広がっているように見受けられます。 そのおかげで、ウサギィさんやNAISTの松本研にまでJuliaが広がっていると聞き、やはり良いと言い続けることと情報を蓄積し続けることは大事だなと通関しています。&lt;/p&gt;
&lt;p&gt;無論、そもそもの言語としてのウリ（NumPy, SciPyでできない行列計算以上のことをやるときに速さが欲しい）がなければこれも無意味ではあります。しかし、いかに良い言語であっても広まらない時は広まらないし、そこまで良いと思っていない言語でもデファクトになるという時はあります。 であれば、自分の好きな言語を広めると幸せになれるんじゃないか、と思います。&lt;/p&gt;
&lt;p&gt;後は
など、他言語との比較を行うことができると、より他言語のユーザーに認知が広まるのではないでしょうか。&lt;/p&gt;
&lt;h1 id="まとめ"&gt;まとめ&lt;/h1&gt;
&lt;p&gt;最後にテクニカルではない話になってしまいましたが、Juliaの事例を通じていろいろな言語が盛り上がっていけばなと思います。&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;この辺僕が死んだら開催されなさそうなkawasaki.rbとは対称的ですね :p&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;コミュニティ運営で重要なのはSPOFを作らないことだと思っているので、esaなりSlackでのchat opsなりは負荷分散のために非常に重要。負荷の集中を舐めてはいけない&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:3"&gt;
&lt;p&gt;途中までだいぶ一人カレンダーの様相を呈していた&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:4"&gt;
&lt;p&gt;壊れたロボットの用に同じ言葉を繰り返す作戦にしか思えない&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>Machine Learning Casual Talks #4 を開催しました #MLCT</title><link>https://chezo.uno/post/2015-12-21-machine-learning-casual-talks-number-4-wokai-cui-simasita-number-mlct/</link><pubDate>Mon, 21 Dec 2015 05:24:03 -0800</pubDate><guid>https://chezo.uno/post/2015-12-21-machine-learning-casual-talks-number-4-wokai-cui-simasita-number-mlct/</guid><description>&lt;p&gt;まさかの一週間内に自分の主催する勉強会が3回重なるデスロードを走ってきたchezouです。&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;前回からだいぶ感覚があきましたが、MLCTを
さんの火付けのもと開催しました。&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fmlct.connpass.com%2Fevent%2F22192%2F" title="Machine Learning Casual Talks #4 (2015/12/15 19:00〜)" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="http://mlct.connpass.com/event/22192/"&gt;mlct.connpass.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;テーマは
さん発案のDevOpsをもじった&amp;quot;DevData&amp;quot;というテーマでしたが、奇しくもデータ分析チームの立ち上げ方とどうやってビジネスにコミットしていくか、という話になりました。&lt;/p&gt;
&lt;p&gt;まとめはこちら&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Ftogetter.com%2Fli%2F913152" title="Machine Learning Casual Talks #4 " devdata class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="http://togetter.com/li/913152"&gt;togetter.com&lt;/a&gt;&lt;/cite&gt;
&lt;h2 id="chezou-オープニングトーク"&gt;chezou オープニングトーク&lt;/h2&gt;
&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/key/847q2l4e4hjo1J" 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&gt; &lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;
&lt;/strong&gt; from &lt;strong&gt;
&lt;/strong&gt;
&lt;cite class="hatena-citation"&gt;&lt;a href="http://www.slideshare.net/chezou/why-i-started-machine-learning-casual-talks-mlct"&gt;
&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;h2 id="shakezo_-さんプロトタイプで終わらせない死の谷を超える機械学習プロジェクトの進め方"&gt;
さん「プロトタイプで終わらせない死の谷を超える機械学習プロジェクトの進め方」&lt;/h2&gt;
&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/key/26XX3PsrPymXgt" 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&gt; &lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;
&lt;/strong&gt; from &lt;strong&gt;
&lt;/strong&gt;
&lt;cite class="hatena-citation"&gt;&lt;a href="http://www.slideshare.net/shakezo/mlct4"&gt;
&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;リブセンスでデータを活かしたプロダクトを作るに当たり、リスクとリターンを鑑みてビジネスとしてどこを狙うべきかということを様々な手法を駆使して進めてこられた様子がわかります。&lt;/p&gt;
&lt;h2 id="dmmcomラボ-田宮さんビッグデータチームを発足するにあたって気をつけておきたいn個のこと"&gt;DMM.comラボ 田宮さん「ビッグデータチームを発足するにあたって気をつけておきたいn個のこと」&lt;/h2&gt;
&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/key/k3LALSG3EZO3xy" 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&gt; &lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;
&lt;/strong&gt; from &lt;strong&gt;
&lt;/strong&gt;
&lt;cite class="hatena-citation"&gt;&lt;a href="http://www.slideshare.net/naototamiya9/machine-learning-casual-talks-4-n"&gt;
&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;DMM.comラボでのデータ分析チームの立ち上げの話。読まれないレポーティングなど、あるある話から現実に活かされるようにするためにはという試行錯誤を知見として教えていただきました。&lt;/p&gt;
&lt;h2 id="ディスカッション"&gt;ディスカッション&lt;/h2&gt;
&lt;p&gt;複雑なモデルと簡単なモデルどう考えて選ぶのか？など、実際の機械学習としてエレガントな方向と泥臭いところのバランスをはじめ色々な話を聞くことが出来ました。&lt;/p&gt;
&lt;h2 id="ysekky_さんgunosy分析チームとabテスト運用"&gt;
さん「Gunosy分析チームとA/Bテスト運用」&lt;/h2&gt;
&lt;iframe allowfullscreen="true" allowtransparency="true" frameborder="0" height="463" id="talk_frame_323240" mozallowfullscreen="true" src="//speakerdeck.com/player/9f166423056e48d9b482b95faf748644" style="border:0; padding:0; margin:0; background:transparent;" webkitallowfullscreen="true" width="710"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://speakerdeck.com/ysekky/ab-testing-in-gusnoy"&gt;speakerdeck.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;Gunosyのデータ分析チームの現在の話、LTではもったいない話でした。会社の規模もおおきくなりだいぶチームのあり方やABテストの取組み方も変わったようです。&lt;/p&gt;
&lt;h2 id="yamakatu-さん-ヤフオクと分散表現"&gt;@yamakatu さん 「ヤフオク！と分散表現」&lt;/h2&gt;
&lt;p&gt;資料まってまーす&lt;/p&gt;
&lt;h2 id="google佐藤さんgoogleのmlについて"&gt;Google佐藤さん「GoogleのMLについて」&lt;/h2&gt;
&lt;p&gt;残念ながら資料は公開されないということですが、Vision APIの話を中心にTensorFlowなどの話をしていただきました。Vision APIは一般物体認識のタスクではかなり便利そうですね。 特に、手書き文字認識も頑張っていたり、ガリガリ君の立体物の文字認識をきっちり出来ていたのはさすがだなと思いました。&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;火曜MLCT, 水曜kawasaki.rb, 土曜JuliaTokyo！！&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;言い出した割にはLTだけだったので後で🍣反省会を開きましょう&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>小さい子供が自分から薬を飲みたくなる「おくすり飲めたね」 #childadvent</title><link>https://chezo.uno/post/2015-12-21-xiao-saizi-gong-gazi-fen-karayao-woyin-mitakunaru-okusuriyin-metane-number-childadvent/</link><pubDate>Sun, 20 Dec 2015 16:00:00 -0800</pubDate><guid>https://chezo.uno/post/2015-12-21-xiao-saizi-gong-gazi-fen-karayao-woyin-mitakunaru-okusuriyin-metane-number-childadvent/</guid><description>&lt;p&gt;この記事は
の21日目の記事です。&lt;/p&gt;
&lt;p&gt;前日は、
さんの
でした。&lt;/p&gt;
&lt;p&gt;今回はまったくテクノロジーの話をしません。&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;h1 id="1行で"&gt;1行で&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;「おくすり飲めたね」を使うと、子供が薬をのむのが好きになった&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;言いたいのはこれだけです。はい、解散。&lt;/p&gt;
&lt;h1 id="流石にそれは短すぎるので"&gt;流石にそれは短すぎるので&amp;hellip;&lt;/h1&gt;
&lt;p&gt;おくすり飲めたねとは、龍角散が出している薬を包むゼリーです。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B0074ZFJ3W/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
龍角散 おくすり飲めたね いちご 200g
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: 龍角散&lt;/li&gt;
&lt;li&gt;メディア: ヘルスケア&amp;amp;ケア用品&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;我が家で愛用しているのは、パックタイプのものでキャップを外して中を押すと少しずつクラッシュされてでてきます。&lt;/p&gt;
&lt;p&gt;うちの子供達はよく咳が出たりして薬のお世話になることが多いのですが、 これを使う前はすぐにむせたり吐き出してしまったりと親子で疲弊していました。&lt;/p&gt;
&lt;p&gt;ある時薬局でおくすり飲めたねの存在に気づいて試してみたところ、子供が「おいしい」といって薬をすすんで飲むようになったではありませんか。 下の子なんかは、上の子だけが薬を飲んでいると「私も薬を飲みたい」と泣き始める始末。&lt;/p&gt;
&lt;p&gt;本当にこれがなかった頃の我が家は&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;薬を出す→治らない→飲む期間が伸びる→薬を出す→&amp;hellip;.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;というように毎日が戦争でした。&lt;/p&gt;
&lt;h1 id="味についての注意"&gt;味についての注意&lt;/h1&gt;
&lt;p&gt;味が複数ありますが、いちごはAmazonのお急ぎ便対応なので重宝します。我が家のメインはこれです。&lt;br&gt;
そして、たまにでる抗生物質なんかはチョコレート味で包まないと、恐ろしく苦くなってしまい出してしまうので注意が必要です。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B000FQUF9K/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
龍角散 おくすり飲めたね チョコレート味 100g
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: 龍角散&lt;/li&gt;
&lt;li&gt;メディア: ヘルスケア&amp;amp;ケア用品&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;近所のドラッグストアにも売っているとは思うので、お子さんが風邪を引いた時など、一度ためしてみると良いのでは？&lt;/p&gt;
&lt;p&gt;明日はzuzuさんのエントリです。&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;ひどい&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>Juliaの情報を収集しつづけるには</title><link>https://chezo.uno/post/2015-12-10-julianoqing-bao-woshou-ji-situdukeruniha/</link><pubDate>Wed, 09 Dec 2015 16:00:00 -0800</pubDate><guid>https://chezo.uno/post/2015-12-10-julianoqing-bao-woshou-ji-situdukeruniha/</guid><description>&lt;p&gt;この記事は
の10日目です。 昨日は、bicycle1885さんの
でした。&lt;/p&gt;
&lt;p&gt;Juliaは変化が速い言語なため、最新の情報を追い続けるのが必要な言語です。 しかし、初心者にはその変化の速さになかなかついていくことが難しいです。&lt;/p&gt;
&lt;p&gt;そこで、今回はJuliaの情報を追いかけるための情報源について書いていきます。&lt;/p&gt;
&lt;p&gt;なんといってもJuliaの日本語情報で一番お手軽なのは
さんの情報を追いかけることです。&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Ftwitter.com%2Fbicycle1885" title="佐藤(｢・ω・)｢ｶﾞｵｰ建太 (@bicycle1885) | Twitter" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="http://twitter.com/bicycle1885"&gt;twitter.com&lt;/a&gt;&lt;/cite&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fbicycle1885.hatenablog.com%2F" title="りんごがでている" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="http://bicycle1885.hatenablog.com/"&gt;bicycle1885.hatenablog.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;また、JuliaTokyoのslackも出来たのでこちらで気軽に質問していただくのも良いでしょう。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;英語で最新情報を追う方法はいくつか有りますが、 bicycle1885さんに一番おすすめと言われたのが JuliaLang/juliaのNEWS.mdの変更を追いかけることでした。&lt;/p&gt;
&lt;p&gt;ということで、RSS feedを作ってみたのでお使い下さい。
&lt;/p&gt;
&lt;p&gt;他にも、redditのjuliaカテゴリや&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.reddit.com%2Fr%2Fjulia" title="The Julia Language Subreddit • /r/Julia" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://www.reddit.com/r/julia"&gt;www.reddit.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;juliaの著名な方々がpostするJulia関連のblogを集めたjuliabloggers.comなんかも良いでしょう。&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fwww.juliabloggers.com%2F" title="juliabloggers.com - A Julia Language Blog Aggregator" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="http://www.juliabloggers.com/"&gt;www.juliabloggers.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;これらのfeedはjulia-tokyoのslackにも流れてくるようにしたので、そちらに居るだけで皆でワイワイする様子が見ることが出来ますね。&lt;/p&gt;
&lt;p&gt;なお、僕は大好き
はSN比が悪いのであまりオススメしないとの言葉。&lt;/p&gt;
&lt;p&gt;というわけで、今後もJuliaを追いかけ続けたい方々に向けた情報でした。&lt;/p&gt;</description></item><item><title>どんな子供も好きになる、「うーやん」を広めるたった1つの方法</title><link>https://chezo.uno/post/2015-12-06-donnazi-gong-mohao-kininaru-uyan-woguang-merutatuta1tunofang-fa/</link><pubDate>Sat, 05 Dec 2015 16:00:00 -0800</pubDate><guid>https://chezo.uno/post/2015-12-06-donnazi-gong-mohao-kininaru-uyan-woguang-merutatuta1tunofang-fa/</guid><description>&lt;p&gt;このエントリは、
の6日目です。&lt;/p&gt;
&lt;h1 id="うーやんとは"&gt;「うーやん」とは？&lt;/h1&gt;
&lt;p&gt;うどんです。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2015-12-06-donnazi-gong-mohao-kininaru-uyan-woguang-merutatuta1tunofang-fa/20151205171506_hu_ba12786cd195b5f1.webp 320w, https://chezo.uno/post/2015-12-06-donnazi-gong-mohao-kininaru-uyan-woguang-merutatuta1tunofang-fa/20151205171506_hu_51d50e435b64f9cd.webp 480w, https://chezo.uno/post/2015-12-06-donnazi-gong-mohao-kininaru-uyan-woguang-merutatuta1tunofang-fa/20151205171506_hu_eb8a23eab44d120c.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2015-12-06-donnazi-gong-mohao-kininaru-uyan-woguang-merutatuta1tunofang-fa/20151205171506_hu_ba12786cd195b5f1.webp"
width="760"
height="570"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;本の正式名称は「うどんのうーやん」です。&lt;/p&gt;
&lt;h1 id="うーやんとは-1"&gt;「うーやん」とは？&lt;/h1&gt;
&lt;p&gt;働き者のうどんです。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2015-12-06-donnazi-gong-mohao-kininaru-uyan-woguang-merutatuta1tunofang-fa/20151205171532_hu_2b31768510bc14a9.webp 320w, https://chezo.uno/post/2015-12-06-donnazi-gong-mohao-kininaru-uyan-woguang-merutatuta1tunofang-fa/20151205171532_hu_669d76bdeacb26b7.webp 480w, https://chezo.uno/post/2015-12-06-donnazi-gong-mohao-kininaru-uyan-woguang-merutatuta1tunofang-fa/20151205171532_hu_52d40162aa9c1690.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2015-12-06-donnazi-gong-mohao-kininaru-uyan-woguang-merutatuta1tunofang-fa/20151205171532_hu_2b31768510bc14a9.webp"
width="760"
height="669"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;人手不足の煽りを受けて、自分自身で配達に行きます。&lt;br&gt;
世が世なら、世界中の仕事が人工知能によって奪われて「うーやん」は自ら配達に行く必要は無かったのかもしれません。&lt;/p&gt;
&lt;h1 id="うーやんとは-2"&gt;「うーやん」とは？&lt;/h1&gt;
&lt;p&gt;哲学です。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2015-12-06-donnazi-gong-mohao-kininaru-uyan-woguang-merutatuta1tunofang-fa/20151205171619_hu_ad3058204f896148.webp 320w, https://chezo.uno/post/2015-12-06-donnazi-gong-mohao-kininaru-uyan-woguang-merutatuta1tunofang-fa/20151205171619_hu_67c5f97338bd514e.webp 480w, https://chezo.uno/post/2015-12-06-donnazi-gong-mohao-kininaru-uyan-woguang-merutatuta1tunofang-fa/20151205171619_hu_6b790aee9c0d74b8.webp 570w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2015-12-06-donnazi-gong-mohao-kininaru-uyan-woguang-merutatuta1tunofang-fa/20151205171619_hu_ad3058204f896148.webp"
width="570"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;そこに川があるから渡り、&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2015-12-06-donnazi-gong-mohao-kininaru-uyan-woguang-merutatuta1tunofang-fa/20151205171645_hu_d9d8ed0ab9ddb8bb.webp 320w, https://chezo.uno/post/2015-12-06-donnazi-gong-mohao-kininaru-uyan-woguang-merutatuta1tunofang-fa/20151205171645_hu_336c55ef43d2b1c2.webp 480w, https://chezo.uno/post/2015-12-06-donnazi-gong-mohao-kininaru-uyan-woguang-merutatuta1tunofang-fa/20151205171645_hu_e7553dc7b354f10e.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2015-12-06-donnazi-gong-mohao-kininaru-uyan-woguang-merutatuta1tunofang-fa/20151205171645_hu_d9d8ed0ab9ddb8bb.webp"
width="760"
height="667"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;そこに山があるから登ります。&lt;/p&gt;
&lt;p&gt;さらに、食べてしまおうと迫り来る鳥との戦いでは、唐辛子さんとの熱い友情も見ることが出来ます。 子供の情操教育にぴったりですね。 さらに、前編関西弁で記述されているため、関東地方に住む子供にとっては方言を通じて「地域によって言葉が違う」という多様性を学ぶことができます。&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;h1 id="うーやんを広める唯一の方法"&gt;「うーやん」を広める唯一の方法&lt;/h1&gt;
&lt;p&gt;ここからは僕が取った方法なので、再現性が高いかわかりませんが、5歳未満の子持ちの同僚がそこそこ居る会社に所属されている方なら通用すると思います。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Wishlistに子供向けのものを入れている人（子供の誕生日とかだとなお良し）に、 &lt;strong&gt;頼まれてもいないのにもう一品うーやんを追加して&lt;/strong&gt; 送りつける&lt;/li&gt;
&lt;li&gt;届いた子供が気に入ったという話題が出るので、社内でとても面白いという評判を広める&lt;/li&gt;
&lt;li&gt;次々とお子さんを持っている同僚が買いはじめ、お子さんがいない同僚にも広まる&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;こうして、普段自分の子供の話すらしたことがない同僚からも「うーやん見てみたいんですけど」と言われるまでになります。&lt;/p&gt;
&lt;p&gt;2歳位のお子さんをお持ちの同僚と話をしていると、思った以上に「どういう絵本を読めばいいのかわからない」と困っている人が多いように感じました。
でも紹介した、
のように、 おまかせで毎月届けてくれるサービスを使うのも良いかもしれません。&lt;/p&gt;
&lt;p&gt;小さいお子さんをお持ちで、まだうーやんを持っていない方は是非一度手にとって見るとよいでしょう。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4893095501/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
うどんのうーやん
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作者: 岡田よしたか&lt;/li&gt;
&lt;li&gt;出版社/メーカー: ブロンズ新社&lt;/li&gt;
&lt;li&gt;発売日: 2012/08&lt;/li&gt;
&lt;li&gt;メディア: 単行本&lt;/li&gt;
&lt;li&gt;購入: 1人 クリック: 75回&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;明日は、ohesotoriさんの記事です。&lt;/p&gt;
&lt;h1 id="あわせて読みたい"&gt;あわせて読みたい&lt;/h1&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4893095285/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
ちくわのわーさん
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4893095617/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
こんぶのぶーさん
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;なお、私は似非関西弁を話すと刺される名古屋文化圏で育ったため、できるだけ妻に読んでもらっています&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>SympyとJupyter notebookで数式のメモを取ろう</title><link>https://chezo.uno/post/2015-11-23-sympytojupyter-notebookdeshu-shi-nomemowoqu-rou/</link><pubDate>Mon, 23 Nov 2015 13:02:07 -0800</pubDate><guid>https://chezo.uno/post/2015-11-23-sympytojupyter-notebookdeshu-shi-nomemowoqu-rou/</guid><description>&lt;p&gt;
さんによるSympyの紹介がとてもよい感じだったのですが、Sympy Liveわざわざ使わなくてもJupyter notebook使えるのでは！？と思ったので試してみました。&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; わざわざ、というと語弊があると思いますが、手元でメモ＋αとして管理するのにはJupyter notebookの方がいいかなと思っています。&lt;/p&gt;
&lt;iframe src="https://myenigma.hatenablog.com/embed/2015/11/21/222755" title="Pythonの数式処理ライブラリSymPyをWolfram Alpha(Mathematica, Maxima)の代わりに使う方法 - MyEnigma" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://myenigma.hatenablog.com/entry/2015/11/21/222755"&gt;myenigma.hatenablog.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;Sympyは
でも見ていて、ふーん、凄いなと思っていた程度なのですが、 単純に数式を記述するだけではなく、それを方程式として展開したり微分、積分したりできるのが良いですね。 単に数式をメモするだけならJupyter notebookでLaTex記法で数式を書くことができます。&lt;/p&gt;
&lt;p&gt;meison_amslさんのものを Jupyter notebook で実行しただけのお手軽版はこちらです。&lt;/p&gt;
&lt;script src="https://gist.github.com/chezou/af6756cf50bb08a1d6ad.js"&gt; &lt;/script&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://gist.github.com/chezou/af6756cf50bb08a1d6ad"&gt;gist.github.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;グラフもさくさくっとかけるので、極限求めるついでにグラフ書くとかするととても便利ですね。 （これがあれば、PRMLもらくらく戦えるのかな&amp;hellip;）&lt;/p&gt;
&lt;p&gt;kindleでも売っているInstant Sympy Starterですが、ちょうどPacktのアンケートに答えたらなんでも$5で買えるキャンペーンがやっていたので、そちらで買いました。 Packtは一度買うとガンガンクーポン来るし、月額定額で読み放題とかもできるみたいなので、Kindleで買うくらいならPacktで買うのも良いかもしれません。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B00CYHB3CG/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
Instant SymPy Starter
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作者: Ronan Lamy&lt;/li&gt;
&lt;li&gt;出版社/メーカー: Packt Publishing&lt;/li&gt;
&lt;li&gt;発売日: 2013/05/23&lt;/li&gt;
&lt;li&gt;メディア: Kindle版&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.packtpub.com%2Fbig-data-and-business-intelligence%2Finstant-sympy-starter-instant" title="Instant SymPy Starter | PACKT Books" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://www.packtpub.com/big-data-and-business-intelligence/instant-sympy-starter-instant"&gt;www.packtpub.com&lt;/a&gt;&lt;/cite&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;完全に人の褌で相撲を取るやつですね&amp;hellip;&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>IDCFクラウドの500円サーバーでpodcast serverをはじめて8ヶ月が経ちました</title><link>https://chezo.uno/post/2015-11-22-idcfkuraudono500yuan-sabadepodcast-serverwohazimete8keyue-gajing-timasita/</link><pubDate>Sun, 22 Nov 2015 13:30:37 -0800</pubDate><guid>https://chezo.uno/post/2015-11-22-idcfkuraudono500yuan-sabadepodcast-serverwohazimete8keyue-gajing-timasita/</guid><description>&lt;p&gt;どうも、最近PSYCHO-PASSを見終わってシュタインズ・ゲートを見ています。 この記事はIDCFクラウド1周年キャンペーンを応援する記事です。&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Rubyistといろいろなことを話すpodcast
をはじめて半年経ちました。 最近リリース前のドタバタでご無沙汰していますが、12月には次回の配信をできると思います。&lt;/p&gt;
&lt;p&gt;IDCFクラウドは、
さんが使ってますよー、というのをいつかのお友達紹介キャンペ言っていて知りました。おかげさまで、そこからクーポンを使ってしのいでいます :)&lt;/p&gt;
&lt;p&gt;
。クーポンのおかげでほとんどまだお金を払っていないのですが、それを割り引いてもカジュアルに使うのには良いです。 AWSほど複雑な設定はしづらいですが、逆に言うとシンプルに使えるのが便利です。 本当はプログラマブルにAPI経由で使えるようなのですが、そのへんの経験が浅い自分でもGUIベースで使えるので楽ちんです。ゆくゆくは、itamaeで構成管理をしたいなぁと思っています。&lt;/p&gt;
&lt;p&gt;S1プランは500円で使えるのですが、オブジェクトストレージとかを使わない分には本当に500円を超えることはまず無いです。 オブジェクトストレージはCyber Duckとかを使うことでS3のように便利に使えるので良いのですが、転送量課金が結構大きいので、おそらくpodcastのような転送量が増えるコンテンツにはノード内にデータをおけるならそれで済ますのが良いでしょう。 また、オブジェクトストレージはちょいちょい障害の報告がきますが、通常のノードはほとんど落ちることはないので、安定して使えます。&lt;/p&gt;
&lt;p&gt;ドキュメントや使用事例がweb上の情報としては少ない感じがするのがあれですが、それを補って余りあるお値打ち感が魅力です。&lt;/p&gt;
&lt;p&gt;是非、この機会に使ってみるとよいでしょう！&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;つまり、宣伝ですね&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>TinySegmenter.jlをGoと比較して負けたと思ったら若者が最適化してくれた</title><link>https://chezo.uno/post/2015-11-08-tinysegmenter-dot-jlwogotobi-jiao-sitefu-ketatosi-tutararuo-zhe-gazui-shi-hua-sitekureta/</link><pubDate>Sun, 08 Nov 2015 11:00:00 -0800</pubDate><guid>https://chezo.uno/post/2015-11-08-tinysegmenter-dot-jlwogotobi-jiao-sitefu-ketatosi-tutararuo-zhe-gazui-shi-hua-sitekureta/</guid><description>&lt;p&gt;先日、
を書いたら各方面から反響を頂きました。&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Frepeatedly.github.io%2Fja%2F2015%2F10%2Ftinysegmenter-benchmark-and-d%2F" title="TinySegmenterのベンチマーク + D言語版 - Go ahead!" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="http://repeatedly.github.io/ja/2015/10/tinysegmenter-benchmark-and-d/"&gt;repeatedly.github.io&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;script async src="https://secure.assets.tumblr.com/post.js"&gt;&lt;/script&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="http://woxtu.tumblr.com/post/132337169740/rust-tinysegmenter"&gt;woxtu.tumblr.com&lt;/a&gt;&lt;/cite&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fqiita.com%2Fikasamt%2Fitems%2F471bfae96ce590a4fe82" title="ベンチマーク - TinySegmenterをCrystalで書いてみた。雑だけど。 - Qiita" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="http://qiita.com/ikasamt/items/471bfae96ce590a4fe82"&gt;qiita.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;そんな中で、ikawahaさんがGoでも同様の最適化を実装していました。&lt;/p&gt;
&lt;iframe src="https://ikawaha.hateblo.jp/embed/2015/10/23/161351" title="TinySegmenter.jl の高速化手法を追っかけてみた - 押してダメならふて寝しろ" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://ikawaha.hateblo.jp/entry/2015/10/23/161351"&gt;ikawaha.hateblo.jp&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;それと比較するために、とりあえず
して比較しました。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2015-11-08-tinysegmenter-dot-jlwogotobi-jiao-sitefu-ketatosi-tutararuo-zhe-gazui-shi-hua-sitekureta/20151108175610_hu_ffc8b08b8085ed33.webp 320w, https://chezo.uno/post/2015-11-08-tinysegmenter-dot-jlwogotobi-jiao-sitefu-ketatosi-tutararuo-zhe-gazui-shi-hua-sitekureta/20151108175610_hu_ccb6ea8ef4861850.webp 480w, https://chezo.uno/post/2015-11-08-tinysegmenter-dot-jlwogotobi-jiao-sitefu-ketatosi-tutararuo-zhe-gazui-shi-hua-sitekureta/20151108175610_hu_e3df8017c715a4e9.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2015-11-08-tinysegmenter-dot-jlwogotobi-jiao-sitefu-ketatosi-tutararuo-zhe-gazui-shi-hua-sitekureta/20151108175610_hu_ffc8b08b8085ed33.webp"
width="760"
height="544"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Ruby&lt;/th&gt;
&lt;th&gt;Perl&lt;/th&gt;
&lt;th&gt;Python&lt;/th&gt;
&lt;th&gt;Node.js&lt;/th&gt;
&lt;th&gt;C++&lt;/th&gt;
&lt;th&gt;Go&lt;/th&gt;
&lt;th&gt;Julia&lt;/th&gt;
&lt;th&gt;Julia (hash optimized)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;132.98&lt;/td&gt;
&lt;td&gt;134&lt;/td&gt;
&lt;td&gt;111.85&lt;/td&gt;
&lt;td&gt;105.31&lt;/td&gt;
&lt;td&gt;48&lt;/td&gt;
&lt;td&gt;10.50&lt;/td&gt;
&lt;td&gt;11.70&lt;/td&gt;
&lt;td&gt;10.35&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;実はTinySegmenterMakerのshogo82148さんが一部のhashのkeyをordしたIntで表現するというさらなる最適化を進めていたので、 ちょっと負けてしまったのですがJuliaのDictを生成するときのhash計算が遅いということを
ので、Julia本体の最適化が進めば同じくらいにはなりそうだね、ということがわかりました(表のhash optimized)。&lt;/p&gt;
&lt;p&gt;ちなみに、SGJ先生は「実は言語間の比較ではなくて最適化の比較になっていたんだけどね（てへぺろ）」
を告白しており、ikawahaさんの目の付け所は正しかったようです。&lt;/p&gt;
&lt;p&gt;そういう意味では、Stringとしても処理できるし頑張れば最適化できるJuliaは楽しいですね、という気持ちになりました。今時のコンパイル型の言語だと突き詰めれば似たような性能になるんでしょうね。&lt;/p&gt;</description></item><item><title>Amazon Fire TV Stickを買ったらApple TV+ChromeCast-ちょっとになった</title><link>https://chezo.uno/post/2015-11-02-amazon-fire-tv-stickwomai-tutaraapple-tv-plus-chromecast-tiyotutoninatuta/</link><pubDate>Mon, 02 Nov 2015 15:42:22 -0800</pubDate><guid>https://chezo.uno/post/2015-11-02-amazon-fire-tv-stickwomai-tutaraapple-tv-plus-chromecast-tiyotutoninatuta/</guid><description>&lt;p&gt;Amazon Fire TV StickをPrime会員割引で\1980で買いました。（定価は\4980)&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B00ZVNYLS8/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
Fire TV Stick
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: Amazon&lt;/li&gt;
&lt;li&gt;発売日: 2015/10/28&lt;/li&gt;
&lt;li&gt;メディア: エレクトロニクス&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;なぜFire TV Stickを買ったかというと&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;安かった&lt;/li&gt;
&lt;li&gt;iOS/Androidのアプリで音声認識ができるのを知っていた(→音声認識リモコンいらない)&lt;/li&gt;
&lt;li&gt;4k写せるモニタなかった(Fire TVはいいかな)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;という3点からです。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B00UH6MXT8/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
Amazon Fire TV
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: Amazon&lt;/li&gt;
&lt;li&gt;発売日: 2015/10/28&lt;/li&gt;
&lt;li&gt;メディア: エレクトロニクス&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これと大分構成違いますよね？&lt;/p&gt;
&lt;h1 id="proscons"&gt;Pros/Cons&lt;/h1&gt;
&lt;h2 id="pros"&gt;Pros&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;AirPlayを受信できるソフトを立てるとAirPlayが受けれる&lt;/li&gt;
&lt;li&gt;NetflixやYouTubeなどFire TV側のアプリが対応しているとChromeCastと同様にアプリからCastできる&lt;/li&gt;
&lt;li&gt;AirPlayとかChromeCastでまともに見れないニコニコ動画のアプリがあって、最低限の使用に耐えている&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="cons"&gt;Cons&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;無線が結構弱い/Apple TVやMacBook Proの直下に置くと5GHz帯の無線が繋がらなかった&lt;/li&gt;
&lt;li&gt;なんだかんだでリモコン前提なので、操作が若干だるい（Apple TVやChromeCastほどスマホで操作する感じじゃない）&lt;/li&gt;
&lt;li&gt;情報が殆ど無い（困ったらReddit探すのがよい）&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="やると良いこと"&gt;やると良いこと&lt;/h1&gt;
&lt;p&gt;AirReciever入れるとAirPlayサーバーになります。 ただ、Netflixは飛ばせたり飛ばせなかったりしたので、挙動が怪しいです。 iPhoneのMusicアプリとかの音楽系のアプリは普通に動いたので十分かな、と思います。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B00L5HQRGS/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
AirReceiver
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: ?方儿&lt;/li&gt;
&lt;li&gt;発売日: 2014/06/24&lt;/li&gt;
&lt;li&gt;メディア: アプリ&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;自分がよく使うアプリやスマホと連動させたいアプリはFireTV側で入れておく必要があります。 特に、ChromeCastに慣れていると、アプリを入れないとCastできないという仕様はぱっとわかりませんでした。 （OSレベルでサポートしていないけどアプリレベルでサポートしているという意味）&lt;/p&gt;
&lt;h1 id="総括"&gt;総括&lt;/h1&gt;
&lt;p&gt;完全に互換ではないけど、AirPlayサーバーにもなるし、アプリが限定的だけどChromeCastの代わりになるので割と満足しています。 5000円だったら買ってもいいんじゃないかな、と思う一品です。&lt;/p&gt;
&lt;p&gt;ただし、情報が圧倒的に少ないので英語で調べられる人がいいと思います。 罠にハマった時は大分辛かったです。（2.4GHZじゃないとしばらく繋がらなかった&amp;hellip;）&lt;/p&gt;
&lt;p&gt;試していないけどHDMI-CECに対応しているので、もしかしたらChromeCastのように転送したらテレビが自動で付くとかもできるかも（できないかも） おもちゃとして買うのにはまぁまぁ良いのかなと思います。&lt;/p&gt;
&lt;p&gt;なお、当方ChromeCastの音声飛ばす版の販売を喉から手が出るほど待っています。&lt;/p&gt;</description></item><item><title>「ネットフリックスの時代」にはコンテンツの山に埋もれなさせないためのヒントが詰まっていた</title><link>https://chezo.uno/post/2015-10-27-netutohuritukusunoshi-dai-nihakontentunoshan-nimai-morenasasenaitamenohintogajie-matuteita/</link><pubDate>Tue, 27 Oct 2015 02:20:31 -0700</pubDate><guid>https://chezo.uno/post/2015-10-27-netutohuritukusunoshi-dai-nihakontentunoshan-nimai-morenasasenaitamenohintogajie-matuteita/</guid><description>&lt;p&gt;backspace.fmでもよくゲストに出ている西田宗千佳さん(
)の書かれた、「ネットフリックスの時代−配信とスマホがテレビを変える」読んだ。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B016KDOC3Q/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
ネットフリックスの時代　配信とスマホがテレビを変える (講談社現代新書)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作者: 西田宗千佳&lt;/li&gt;
&lt;li&gt;出版社/メーカー: 講談社&lt;/li&gt;
&lt;li&gt;発売日: 2015/10/16&lt;/li&gt;
&lt;li&gt;メディア: Kindle版&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一言で言うと、Netflixは「イッキ見」という新しいスタイルを中心とした視聴スタイルを作り出し、次々コンテンツを見せるためにレコメンデーションが存在している、という内容だ。&lt;/p&gt;
&lt;p&gt;西田さんはテレビとかガジェットを中心としたジャーナリストだが、よく取材されていて非常にわかりやすく書かれていた。 特に、Netflix周りの事だけでなく、国内のdTV周りの取り組みや対比としてのApple Musicまでのストリーミングミュージックの流れがコンパクトにまとまっていた。&lt;/p&gt;
&lt;p&gt;特に4章、5章の音楽と映像コンテンツの対比がぼやっと考えていたところを整理してくれてよかった。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;プレイリストという考え方は短い時間で消費するコンテンツの反復利用性をベ ースに組み立てられた考え方&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;音楽の性質としてその反復性示して、映像はそこまで反復して楽しむものではないという特性の違いを明らかにしている。言われれば当たり前なのだが、レコメンデーションをする立場としては、ECサイトでの購入みたいな繰り返しの少ないものと、音楽のような反復性の高いものでは使う手法が違ってくるし見せ方も違うということが再確認できた。きっと、レシピはその中間くらいなんだろう、ということも見えてくる。&lt;/p&gt;
&lt;p&gt;また、見放題系のサービスでは、コンテンツが増えてきて何があるかわからなくなるということが往々にしてある。結局見つからないコンテンツはないと同じとバッサリ言ってしまう。グーグルの時代以降検索ができれば良いという発想に成りがちだったが、「いかにコンテンツとの出会いを提供するか」が肝で、検索はその部分の一つでしかないということを改めて意識させられた。そうした背景を前提にすれば、SpotifyやNetflixがレコメンデーションを自然に忍ばせるのは納得感がある。 サービス体験の中で自然にレコメンデーションを忍ばせるのは結構注力しようと思わないと、取って付けた感しかでなくて受け入れられない。 Spotifyのある曲を中心とした類似曲の自動ラジオや、Netflixのおすすめ動画がホーム画面を埋め尽くすのは良い表現方法である。&lt;/p&gt;
&lt;p&gt;今やNetflixだけでなく、dTVも裏で人手でのメタタグの作成を頑張っているということが書かれており、5章では自動Appleのプレイリスト方式(自動でプレイリストを生成して人手でチェックをしているらしい)とラジオ方式(曲やアーティストから類似曲でラジオを生成する)の比較がなされている。個人的にはプレイリスト方式の方が納得感のあるコンテンツを得られて好きなのだが、USでは開発速度に勝るラジオ方式のサービスの方が広まっているようだ。日本国内でもソニーのMusic Unilimitedがプレイリスト方式取り組んでそのプレイリスト増える速度が遅くて結局Spotifyベースにピボットした事例もあるらしい。一見思想的に良さそうでもビジネス的に最適解ではないというのもあり得るのである。&lt;/p&gt;
&lt;p&gt;これ踏まえた上で、レコメンデーションのトップ会議RecSys2015のNetflixとSpotifyの人々によるチュートリアルを見ると、タグの話が全く書かれていなくて頭を悩ませる。多分特徴量の一つになってるのかな。&lt;/p&gt;
&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/key/AXST4Fqy8F331" 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&gt; &lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;
&lt;/strong&gt; from &lt;strong&gt;
&lt;/strong&gt;
&lt;cite class="hatena-citation"&gt;&lt;a href="http://www.slideshare.net/MrChrisJohnson/interactive-recommender-systems-with-netflix-and-spotify"&gt;
&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;実は、この本を読む前にドワンゴの川上さんの「鈴木さんにもわかるネットの未来」も読んでいたのだが、電子書籍が良いというのはイデオロギーであり宗教だ。音楽を見るとCDから電子に移行してビジネスモデルが変わる度にビジネスがシュリンクしている、という旨の事が書かれていた。西田さんはテレビからスマホが隙間時間を奪っているため定額制の配信サービスに以降するのは自然な流れ、と書いているが、ビジネスのパイは小さくなるような気もする。両者に主張を比較するのも面白いだろう&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B010PZ8SUI/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
鈴木さんにも分かるネットの未来 (岩波新書)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作者: 川上量生&lt;/li&gt;
&lt;li&gt;出版社/メーカー: 岩波書店&lt;/li&gt;
&lt;li&gt;発売日: 2015/07/16&lt;/li&gt;
&lt;li&gt;メディア: Kindle版&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;コンテンツに埋もれる時代に、どのように多様なニーズに応えるのか、多分UGCだとアプローチは違うのかもしれないが示唆に富んだ一冊である。&lt;/p&gt;</description></item><item><title>TinySegmenterをJulia移植したらMITの先生に指導してもらえた話</title><link>https://chezo.uno/post/2015-10-21-tinysegmenterwojuliayi-zhi-sitaramitnoxian-sheng-nizhi-dao-sitemoraetahua/</link><pubDate>Wed, 21 Oct 2015 16:43:17 -0700</pubDate><guid>https://chezo.uno/post/2015-10-21-tinysegmenterwojuliayi-zhi-sitaramitnoxian-sheng-nizhi-dao-sitemoraetahua/</guid><description>&lt;p&gt;先日、工藤さんがJavaScript向けに作った日本語のコンパクトな分かち書きツール、TinySegmenterをJuliaに移植した
を作りました。 もともとは、PyconJPで
を聞いたら居ても立っても居られなくなって、簡単なTinySegmenterを移植したんですが、そしたら思いもよらぬ展開が待っていました。&lt;/p&gt;
&lt;p&gt;[2015/10/22 23:38 追記] 計測の問題を
さんから指摘いただいたので再計測しました。&lt;/p&gt;
&lt;h2 id="パッケージ登録時にmitの先生からツッコミが入る"&gt;パッケージ登録時にMITの先生からツッコミが入る&lt;/h2&gt;
&lt;p&gt;Juliaのパッケージは
というセントラルなレポジトリで管理されています。 ここに登録されたパッケージは&lt;code&gt;Pkg.add(&amp;quot;TinySegmenter&amp;quot;)&lt;/code&gt;とREPLで実行するだけでパッケージが導入できます。&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;ここに登録をしようとした時に、「日本語の分かち書きツールなのに、パッケージ名が一般的すぎるのでは」という
をMITの
先生(以下、SGJ先生)からいただきます。Juliaのパッケージの命名規則は
にもあるのですが、portingの時はそのまま名前を付けても良さそうなので反論をして、翌日マージされました。&lt;/p&gt;
&lt;h2 id="パッケージ登録後1週間ほぼ毎日issueが立つ"&gt;パッケージ登録後、1週間ほぼ毎日issueが立つ&lt;/h2&gt;
&lt;p&gt;僕の初期実装はmhagiwaraさんの
を参考に、割とベタに実装をしていました。&lt;/p&gt;
&lt;p&gt;ですが、LLっぽい書き方で書いていたため、多くのツッコミどころがあったので、最適化したらどう？的なissueがぼっこぼこ立ちました。 プライベートのコードでこんなにissueもらったのは初めてだったのですごい嬉しい反面、一番多い時で夜寝る前に一個こなしては朝起きると次のissueが立ち、出社前に一つ片付けたら昼にもう一個増えるみたいな、時差をフル活用したハードな指導が始まりました。&lt;/p&gt;
&lt;p&gt;最適化としては主に以下のような最適化をしました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;const使おう&lt;/li&gt;
&lt;li&gt;RegexやめてCharに展開しよう&lt;/li&gt;
&lt;li&gt;DictのkeyはCharのTuple使おう&lt;/li&gt;
&lt;li&gt;Stringはコピーが発生するのでStringBuf使おう&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="日本語が読めないsgj先生オリジナル実装のバグを見つける"&gt;日本語が読めないSGJ先生、オリジナル実装のバグを見つける&lt;/h2&gt;
&lt;p&gt;面白かったのは、途中で日本語が全くわからないSGJ先生&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt; がオリジナルの実装にバグを見つけたところ。半角カタカナの&amp;quot;ｸﾞ&amp;quot;がUnicodeでは二文字になるはずなのに、それを考慮した実装になってないからスコアが反映されてない、という点。工藤さんにも確認しましたが、ご本人も昔のことなので詳細は覚えていないが今の実装は間違っていそうだという事を確認しました。 気づいた原因は、DictのkeyをCharのTupleで表現する関係で、文字数応じた型宣言をしていたからなんです。&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;実際には、日本語の中で半角カタカナはほとんど出てこないのでそこまで影響は出ませんが、ASCII圏の力を思い知らされました。なお、ここの議論で日本語知らない人に英語で半角カタカナ全角カタカナの議論をする必要があり、泣きそうでした。 この頃にはPRも来ていたのですが、
とか来ていたのも、今となっては良い思い出です。&lt;/p&gt;
&lt;h2 id="sgj先生の狙いは"&gt;SGJ先生の狙いは&lt;/h2&gt;
&lt;p&gt;「なんでこの人はこんなマニアックな日本語の分かち書きプログラムに、熱心にissue立てるんだ？」と謎に思いながら、毎日の宿題のようにこなしていたのですが、最後の課題 issueを見て納得します。&lt;/p&gt;
&lt;p&gt;そう、ベンチマークだったのです。&lt;/p&gt;
&lt;p&gt;おそらく、最初のパッケージ名反論の時に、「TinySegmenterは多数の言語で実装されており日本人には一般的な名前だ」と主張した時に調査し、気づいたのだと思います。&lt;/p&gt;
&lt;p&gt;というわけで、Python実装のバグを見つけて直したり、Python3対応したり、Node.jsのファイルの読み込み方調べたりしながら、ベンチマークとりました。&lt;/p&gt;
&lt;p&gt;その結果がこちら。(詳細は
)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;[2015/10/22 23:38 追記]&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;@repeatedly 先生が色々指摘をしてくれて、Pythonのループ回数が10分の1だったり、Juliaのコードが足りなかったり、Rubyの実装も高速化していただいたので計測しなおしました。 なお、D言語でのベンチはこれからです。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;JavaScript&lt;/th&gt;
&lt;th&gt;Python2&lt;/th&gt;
&lt;th&gt;Python3&lt;/th&gt;
&lt;th&gt;Julia&lt;/th&gt;
&lt;th&gt;Ruby&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;9.62&lt;/td&gt;
&lt;td&gt;93.08&lt;/td&gt;
&lt;td&gt;23.94&lt;/td&gt;
&lt;td&gt;1.46&lt;/td&gt;
&lt;td&gt;19.44&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2015-10-21-tinysegmenterwojuliayi-zhi-sitaramitnoxian-sheng-nizhi-dao-sitemoraetahua/20151022234902_hu_9bdede121e5ecc29.webp 320w, https://chezo.uno/post/2015-10-21-tinysegmenterwojuliayi-zhi-sitaramitnoxian-sheng-nizhi-dao-sitemoraetahua/20151022234902_hu_416d5f7655948162.webp 480w, https://chezo.uno/post/2015-10-21-tinysegmenterwojuliayi-zhi-sitaramitnoxian-sheng-nizhi-dao-sitemoraetahua/20151022234902_hu_3e0d8ec2bdcac700.webp 578w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2015-10-21-tinysegmenterwojuliayi-zhi-sitaramitnoxian-sheng-nizhi-dao-sitemoraetahua/20151022234902_hu_9bdede121e5ecc29.webp"
width="578"
height="371"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;[追記ここまで]&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;JavaScript&lt;/th&gt;
&lt;th&gt;Python2&lt;/th&gt;
&lt;th&gt;Python3&lt;/th&gt;
&lt;th&gt;Julia&lt;/th&gt;
&lt;th&gt;Ruby&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;121.04&lt;/td&gt;
&lt;td&gt;92.85&lt;/td&gt;
&lt;td&gt;29.64&lt;/td&gt;
&lt;td&gt;12.36&lt;/td&gt;
&lt;td&gt;(933+)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;メタメタした実装で遅すぎたRubyを外したグラフはこちら。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2015-10-21-tinysegmenterwojuliayi-zhi-sitaramitnoxian-sheng-nizhi-dao-sitemoraetahua/20151021232829_hu_dee337070ec7eaa9.webp 320w, https://chezo.uno/post/2015-10-21-tinysegmenterwojuliayi-zhi-sitaramitnoxian-sheng-nizhi-dao-sitemoraetahua/20151021232829_hu_2f4bbecc797059a3.webp 480w, https://chezo.uno/post/2015-10-21-tinysegmenterwojuliayi-zhi-sitaramitnoxian-sheng-nizhi-dao-sitemoraetahua/20151021232829_hu_c9c59adad4398902.webp 578w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2015-10-21-tinysegmenterwojuliayi-zhi-sitaramitnoxian-sheng-nizhi-dao-sitemoraetahua/20151021232829_hu_dee337070ec7eaa9.webp"
width="578"
height="371"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;最適化をしたJuliaは確かに速いです。 そして、意外だったのはPython 3.5.0の速度。Unicode周りの実装が刷新されたという話は聞いていましたが、Juliaの二倍程度に肉薄してくるとは。条件にもよるかもしれないけど、文字列処理するNLPerは3系に今すぐ移行したほうが良いのでは？と思いました。&lt;/p&gt;
&lt;p&gt;最後に、SGJ先生はjulia-usersのMLに成果を
。 なんか、一人JSoCって感じですね。&lt;/p&gt;
&lt;h2 id="まとめ"&gt;まとめ&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Juliaでパッケージを作ると、MITの先生が指導してくれる&lt;/li&gt;
&lt;li&gt;Julia速いけどCharacter辛い&lt;/li&gt;
&lt;li&gt;Pythonは3.5.0に今すぐ移行しないと！&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;というわけで、今後はC++やgoと比較するために
のJulia template作って比較したいね、と話しています。
にもtryしたいなぁ。&lt;/p&gt;
&lt;p&gt;12/19(土)に Julia Tokyoの
が開催されます！ いつもJuliaはじめて24時間枠の発表もあるので、お気軽に参加・発表しに来て下さい！&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;METADATAに登録しないで、githubからcloneすることもできます&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;なお、ご専門は最適化の様子でNLP関係ない&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:3"&gt;
&lt;p&gt;この頃には、2015年にもなって日本人がChar型のある言語を触るのしんどい心折れそうでした&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>バッキバキになっていたNexus5を$40で修理した</title><link>https://chezo.uno/post/2015-10-19-batukibakininatuteitanexus5wo40dexiu-li-sita/</link><pubDate>Mon, 19 Oct 2015 01:06:18 -0700</pubDate><guid>https://chezo.uno/post/2015-10-19-batukibakininatuteitanexus5wo40dexiu-li-sita/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2015-10-19-batukibakininatuteitanexus5wo40dexiu-li-sita/20151018110109_hu_776d946d43864931.webp 320w, https://chezo.uno/post/2015-10-19-batukibakininatuteitanexus5wo40dexiu-li-sita/20151018110109_hu_99af2765de40e260.webp 480w, https://chezo.uno/post/2015-10-19-batukibakininatuteitanexus5wo40dexiu-li-sita/20151018110109_hu_58040f9f70e6bf94.webp 570w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2015-10-19-batukibakininatuteitanexus5wo40dexiu-li-sita/20151018110109_hu_776d946d43864931.webp"
width="570"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Ingress をやるときに自転車のマウンタから飛んでしまってバキバキになってしまったNexus5。 大きい画面でKindleも読みやすい！と言っていたけど、ガラスが割れてから使用率がぐっと下がっていました。&lt;/p&gt;
&lt;p&gt;Googleプレイ版は修理するのに三万円近くするというので四万円で買った機体の修理代じゃないなと思って諦めていたのですが、ふとした事からebayで変えの液晶を探したら$40.23で売っていたので買ってしまいました。(Amazon.co.jpだと一万円くらい)&lt;/p&gt;
&lt;p&gt;買ったのは
から。 注文から2週間くらいで届きました。&lt;/p&gt;
&lt;p&gt;Amazonだとこれかな。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B00V7VB8U2/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
（エスエスケイ）LG Nexus5 d820 d821 液晶 ディスプレイ ガラス　デジタイザ 修理 交換 キット ベゼルフレーム 付き ブラック Ｙ字ドライバー工具 及び 硬度9 ガラスフィルム 付き　発熱基盤部分に日本製オリジナルフィルム WATSON社オリジナル (製造物責任法）PL保険加入済み
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: エスエスケイ&lt;/li&gt;
&lt;li&gt;メディア: エレクトロニクス&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ケースを開ける道具やドライバーも付いているとの触れ込みでしたが、Y字ドライバーは含まれていませんでした。なので適当に家にあった小さいマイナスドライバーで代用。&lt;/p&gt;
&lt;p&gt;やり方は、
に書いてあるのをそのままやれば良いです。&lt;/p&gt;
&lt;p&gt;だいたいレベル感としては、ノートPCのHDD換装くらいなのでお手軽です。&lt;/p&gt;
&lt;p&gt;途中の新旧液晶パネルの裏側とバックパネルたち
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2015-10-19-batukibakininatuteitanexus5wo40dexiu-li-sita/20151018110026_hu_d2a9690e73a4f1ef.webp 320w, https://chezo.uno/post/2015-10-19-batukibakininatuteitanexus5wo40dexiu-li-sita/20151018110026_hu_95740d5b781b39fe.webp 480w, https://chezo.uno/post/2015-10-19-batukibakininatuteitanexus5wo40dexiu-li-sita/20151018110026_hu_7461064d19b2e721.webp 570w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2015-10-19-batukibakininatuteitanexus5wo40dexiu-li-sita/20151018110026_hu_d2a9690e73a4f1ef.webp"
width="570"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;途中最大の山場はバッテリーを両面テープから剥がす時。これは少しドキドキしました。&lt;/p&gt;
&lt;p&gt;新しくなった画面(気泡が入ってるのは、ガラスフィルム適当に張りすぎたからです)
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2015-10-19-batukibakininatuteitanexus5wo40dexiu-li-sita/20151018110316_hu_ab25da3578115fb8.webp 320w, https://chezo.uno/post/2015-10-19-batukibakininatuteitanexus5wo40dexiu-li-sita/20151018110316_hu_21df2e1cf1da9a36.webp 480w, https://chezo.uno/post/2015-10-19-batukibakininatuteitanexus5wo40dexiu-li-sita/20151018110316_hu_9417b73be20f67f2.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2015-10-19-batukibakininatuteitanexus5wo40dexiu-li-sita/20151018110316_hu_ab25da3578115fb8.webp"
width="760"
height="570"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;液晶はものによってはタッチの効きが悪くなると聞いていたのですが、今回買ったものについては特に問題ありませんでした。&lt;/p&gt;
&lt;p&gt;
先生に捧げる記事でした&lt;/p&gt;</description></item><item><title>PyConJP 2015に参加した #pyconjp</title><link>https://chezo.uno/post/2015-10-12-pyconjp-2015nican-jia-sita-number-pyconjp/</link><pubDate>Mon, 12 Oct 2015 09:24:25 -0700</pubDate><guid>https://chezo.uno/post/2015-10-12-pyconjp-2015nican-jia-sita-number-pyconjp/</guid><description>&lt;p&gt;はじめてPyConJPに参加してきました。&lt;/p&gt;
&lt;p&gt;スライドまとめは以下が詳しいです。&lt;iframe src="//hatenablog-parts.com/embed?url=https%3A%2F%2Ftechstars.jp%2Fblog%2Fpycon15-1%2F" title="もう確認した？PyCon JP 2015、公開済み全スライドまとめ #pyconjp" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://techstars.jp/blog/pycon15-1/"&gt;techstars.jp&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;最近、会社ではJupyter notebookの伝道師として振る舞っており&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; 、その結果として空前のpandasブームを巻き起こしました。 データ分析/機械学習といえばPythonだよね、というのは
、pandas-tdを契機に使い始めてからかなり傾倒しています。&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;そんなpandas周りの話やデータ分析の他社事例が聞ければと思って参加したPyConですが、想像していた以上に参加者のdiversityを感じました。 海外からのスピーカーや参加者も多く、Ruby Kaigiのような国際カンファレンスに近いなという印象を受けました。 また、スタッフや登壇者含め会場の女性の割合が高いため、PyLadiesの効果が出ているんだろうなーという印象を受けました。もしかしたら、RailsGirlsよりもPyLadiesの方が範囲が広いからコミュニティとして長く続いていくのだろうか、とも思いました。&lt;/p&gt;
&lt;p&gt;さて、参加して聞いた発表の中でも特に面白かったものを抜粋しようと思います。&lt;/p&gt;
&lt;h2 id="pandasによるデータ加工時の注意点やライブラリの話"&gt;pandasによるデータ加工時の注意点やライブラリの話&lt;/h2&gt;
&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/key/s8lo31mVVJSQb7" 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&gt; &lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;
&lt;/strong&gt; from &lt;strong&gt;
&lt;/strong&gt;
&lt;cite class="hatena-citation"&gt;&lt;a href="http://www.slideshare.net/c-bata/pandas-53769651"&gt;
&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;pandasのDataFrameは便利だけど中のデータが保証されないから辛かったので、
作ったよという
さんの話。 JSON schemaっぽいなと思いました。&lt;/p&gt;
&lt;h2 id="daskの話とpandas-internal"&gt;Daskの話とpandas internal&lt;/h2&gt;
&lt;iframe allowfullscreen="true" allowtransparency="true" frameborder="0" height="596" id="talk_frame_314840" mozallowfullscreen="true" src="//speakerdeck.com/player/1cca96cdcee843fda18f93f8b20c9485" style="border:0; padding:0; margin:0; background:transparent;" webkitallowfullscreen="true" width="710"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://speakerdeck.com/sinhrks/pyconjp-2015-dask-qing-liang-bing-lie-ji-suan-huremuwaku-lightning-talks"&gt;speakerdeck.com&lt;/a&gt;&lt;/cite&gt;
&lt;iframe allowfullscreen="true" allowtransparency="true" frameborder="0" height="596" id="talk_frame_314858" mozallowfullscreen="true" src="//speakerdeck.com/player/d3fa3c6563a54ac18e321b8d01a6899c" style="border:0; padding:0; margin:0; background:transparent;" webkitallowfullscreen="true" width="710"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://speakerdeck.com/sinhrks/pyconjp-2015-pandas-internals"&gt;speakerdeck.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;pandasとDaskのコミッターである
さんの発表。 pandasはSciPyの10倍以上のCythonの塊であるとかCategorical Value&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt; を使ったほうが速くなるよとか、pandasの速度出すためのtipsや背景がしれたのは良かったです。また、データ量が増えてきたらDaskのDataFrameを使うと並列処理できるよ、というのも知っていたけどマイクロベンチとともに提示されると使って見たい気持ちが高まりました。&lt;/p&gt;
&lt;p&gt;この2つの発表だけで元が取れた感じがしました。&lt;/p&gt;
&lt;h2 id="pythonで作って学ぶ形態素解析"&gt;Pythonで作って学ぶ形態素解析&lt;/h2&gt;
&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/key/juSG2RLMPcdLMf" 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&gt; &lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;
&lt;/strong&gt; from &lt;strong&gt;
&lt;/strong&gt;
&lt;cite class="hatena-citation"&gt;&lt;a href="http://www.slideshare.net/tomokouchida505/pyconjp2015-python"&gt;
&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;IPADICを使って、pure pythonで実装されたMeCab互換の形態素解析器janomeについて、作者の
さんが丁寧に解説してくれました。特にFSTの話はなるほど、図解が分かりやすく良かったです。ただ、いつもフォントサイズが小さいのはなんでだろう&amp;hellip;。&lt;/p&gt;
&lt;p&gt;なお、janomeの話聞いて帰ってからテンションが上がったので一人sprintして
を作ってしまいました。&lt;/p&gt;
&lt;h2 id="アドネットワークのデータ解析を支える技術"&gt;アドネットワークのデータ解析を支える技術&lt;/h2&gt;
&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/key/gJTagoecnaoT6n" 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&gt; &lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;
&lt;/strong&gt; from &lt;strong&gt;
&lt;/strong&gt;
&lt;cite class="hatena-citation"&gt;&lt;a href="http://www.slideshare.net/hagino_3000/ss-53786917"&gt;
&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;Voyage groupでこの夏
さんのデータ解析チームの話。&lt;/p&gt;
&lt;p&gt;特に、14ページ目の広告の広告主、メディア、オーディエンス、Voyage groupのプレーヤーに応じた4つの取り組むべき問題が分かりやすかったので引用します。&lt;/p&gt;
&lt;iframe src="//www.slideshare.net/slideshow/embed_code/key/gJTagoecnaoT6n?startSlide=14" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen&gt; &lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;
&lt;/strong&gt; from &lt;strong&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;また、BigQuery版のpandas-tdである
の存在が分かったのも収穫でした。VoyageさんでもJupyter notebookをリポジトリで管理して情報を共有しているとのことなので、自分の選択は間違っていなかったなという気持ちです。&lt;/p&gt;
&lt;h1 id="雑感"&gt;雑感&lt;/h1&gt;
&lt;p&gt;はじめていったPyConJPですが、600人近くの規模を少ないスタッフで取りまとめてくださっているのは感服しました。また、参加者・発表者の diversity が高かったのも良かったです。&lt;/p&gt;
&lt;p&gt;また、普段Pythonを使わない人としてはaodagさんの
はありがたかったです。結構Webのドキュメントはバージョンばらばらで何をやればいいんだっけ、とかWheelなんで嬉しいの？とかわかっていなかったので、初心者には助かりました。&lt;/p&gt;
&lt;p&gt;全般的にもう少し事例紹介よりもコアな技術的な話が増えるといいなぁという気もしていたのは、メインがPythonのユーザーじゃないからなのかな。&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;
&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;その辺りは近々会社のブログに書こうと思っている&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:3"&gt;
&lt;p&gt;DataFrames.jlにはない！&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>IIJmioの「おうちでナンバーポータビリティ」使って自宅でMNPした</title><link>https://chezo.uno/post/2015-10-08-iijmiono-outidenanbapotabiritei-shi-tutezi-zhai-demnpsita/</link><pubDate>Thu, 08 Oct 2015 14:00:00 -0700</pubDate><guid>https://chezo.uno/post/2015-10-08-iijmiono-outidenanbapotabiritei-shi-tutezi-zhai-demnpsita/</guid><description>&lt;p&gt;IIJmioのファミリーシェアプランにSIMを追加する際に、9/16に始まっていた「おうちでナンバーポータビリティ」を使ってみました。&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.iijmio.jp%2Fhdd%2Fmiofone%2Fhomemnp%2F" title="おうちでナンバーポータビリティ｜IIJmio
" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://www.iijmio.jp/hdd/miofone/homemnp/"&gt;www.iijmio.jp&lt;/a&gt;&lt;/cite&gt;
&lt;h1 id="おうちでナンバーポータビリティの流れ"&gt;おうちでナンバーポータビリティの流れ&lt;/h1&gt;
&lt;p&gt;IIJmioあるあるなのが、ドキュメントがしっかりしていなくてやり方がいまいち分からないという問題があったのですが、 流れとしては以下のとおりです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;旧キャリアにMNP番号発行以来をする&lt;/li&gt;
&lt;li&gt;IIJmioの申し込みをする&lt;/li&gt;
&lt;li&gt;翌日simが届いたので、所定の電話番号に電話をかける（24時間自動応答）&lt;/li&gt;
&lt;li&gt;数時間後にSIMが開通している&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;IIJmioのファミリーシェアプランに音声通話プランを追加するときには、免許証などの身分証明書がいるのですが、 iPhoneのカメラで取ったものをそのままアップロードするだけで済みました。スムーズに行けば全工程2日くらいです。&lt;/p&gt;
&lt;p&gt;一番時間がかかったところは、ソフトバンクでMNP番号を発行するところでした。 非常にお手軽なので、SIMの受け取りさえできればビックカメラみたいな店頭でのMNPはいらないなというように思います。&lt;/p&gt;
&lt;p&gt;以下から申し込んでもらうと、2ヶ月間10％データ量が増えますので、よろしければどうぞ。&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=https%3A%2F%2Fwww.iijmio.jp%2Fcampaign%2Fmgm%2Finvite%2F%3Fid%3D573353464122315%26sns%3D0" title="IIJmio:お友達ご紹介キャンペーン!!" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://www.iijmio.jp/campaign/mgm/invite/?id=573353464122315&amp;amp;sns=0"&gt;www.iijmio.jp&lt;/a&gt;&lt;/cite&gt;
&lt;h1 id="注意複数のミニマムライトプランをファミリーシェアプランにして更にmnpでsimを追加するのは面倒"&gt;注意：複数のミニマム・ライトプランをファミリーシェアプランにして、更にMNPでSIMを追加するのは面倒&lt;/h1&gt;
&lt;p&gt;我が家のSIMの構成はもともと&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;妻iPhone（ミニマムプラン）&lt;/li&gt;
&lt;li&gt;自分Nexus5（ミニマムプラン）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;だったのを、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;妻iPhone（ファミリーシェアプラン）&lt;/li&gt;
&lt;li&gt;自分Nexus5（ファミリーシェアプラン）&lt;/li&gt;
&lt;li&gt;自分iPhone（ファミリーシェアプラン、MNP）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;としようとしました。&lt;/p&gt;
&lt;p&gt;しかし、このページで3月ぐらいからずっと言われている、複数プランをファミリーシェアプランにまとめる機能は、2015/10/08現在まだ提供されていません。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;そのため、二段階に分けて作業を行いました。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;妻のSIMをファミリーシェアプランにする（翌月頭変更）&lt;/li&gt;
&lt;li&gt;1と同時に自分のNexus5用のファミリーシェアプランSIMを申し込む（翌月頭SIM到着）&lt;/li&gt;
&lt;li&gt;Nexus5のミニマムプランのSIMを解約する（当月末までに解約）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;IIJmioの契約は日割り計算されないため、3のタイミングには注意が必要です。 僕の場合は、解約タイミングを失敗して1ヶ月使わないSIMが遊ぶはめになりましたのでお気をつけ下さい。。。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B00PLIDFTO/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
IIJ IIJmio SIM ウェルカムパック microSIM 版 &amp;lt;開通期限2016年3月31日まで&amp;gt; IM-B054
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: IIJ&lt;/li&gt;
&lt;li&gt;発売日: 2014/12/15&lt;/li&gt;
&lt;li&gt;メディア: エレクトロニクス&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B00IUFBHQS/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
IIJ BIC SIM音声通話パック
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: IIJ&lt;/li&gt;
&lt;li&gt;メディア: エレクトロニクス&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="番外編iphone6s対応のケースは対応していない場合がある"&gt;番外編：iPhone6s「対応」のケースは対応していない場合がある&lt;/h1&gt;
&lt;p&gt;今回iPhone6sのsim free端末を買いました。 そこで、発売前からケースとガラスカバーを手配していたのですが、ケースは失敗しました。&lt;/p&gt;
&lt;p&gt;spigenのハイブリッド系のケースだったのですが、画面保護のためハードなバンパーが端っこ数ミリ盛り上がっていました。 これが曲者で、左端を強く押す3Dタッチが全く効きませんでした。 サイズの上では6s対応でも、機能の上では対応していないケースがあるようなのでご注意を。&lt;/p&gt;
&lt;p&gt;結局僕はTPUの柔らかいケースを買ったのですが、非常に満足しています。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B00N797VZ8/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
ELECOM iPhone6S iPhone6 ソフトケース TPU素材 パーフェクトクリア PM-A14UCTCR
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: エレコム&lt;/li&gt;
&lt;li&gt;発売日: 2014/09/19&lt;/li&gt;
&lt;li&gt;メディア: エレクトロニクス&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;余談ですが、ケースをしばらく買わないで使っていた5sは買取価格が6千円ほどさがりました&amp;hellip;。 売るのであれば、ケースは付けて外で長時間スマホを持ち歩くゲームはやらないほうがいいですね😇&lt;/p&gt;</description></item><item><title>吸盤付きお風呂スピーカーがPodcast聞くのにすごい便利</title><link>https://chezo.uno/post/2015-10-07-xi-pan-fu-kiofeng-lu-supikagapodcastwen-kunonisugoibian-li/</link><pubDate>Wed, 07 Oct 2015 16:47:53 -0700</pubDate><guid>https://chezo.uno/post/2015-10-07-xi-pan-fu-kiofeng-lu-supikagapodcastwen-kunonisugoibian-li/</guid><description>&lt;p&gt;前々からBluetoothのお風呂ラジオをほしいなーと思っていたのですが、昔に比べるとかなり安くなっていたので買いました。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B00NFGTRNC/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
Patech　Bluetooth 3.0　ワイヤレススピーカー　内蔵マイク付　吸盤式対応　防水仕様　（ブルー）
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: Patech&lt;/li&gt;
&lt;li&gt;メディア: エレクトロニクス&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Amazonで2000円を切っているので勢い余って買ってしまったのですが、非常に重宝しています。 お風呂では鏡につければ安定しますし、音量もそれなりに大きいです。&lt;/p&gt;
&lt;p&gt;この商品を選んだ決め手は、「ロードバイクのトップチューブにもつきます」って書いてあったからなのですが、 よくよく読んでみると大分無茶してる使い方でした&amp;hellip;。&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;一番嬉しいのが、冷蔵庫にくっつくということ。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2015-10-07-xi-pan-fu-kiofeng-lu-supikagapodcastwen-kunonisugoibian-li/20151003172542_hu_992e55369cd9aa2b.webp 320w, https://chezo.uno/post/2015-10-07-xi-pan-fu-kiofeng-lu-supikagapodcastwen-kunonisugoibian-li/20151003172542_hu_abcd5f3c3e3092f3.webp 480w, https://chezo.uno/post/2015-10-07-xi-pan-fu-kiofeng-lu-supikagapodcastwen-kunonisugoibian-li/20151003172542_hu_f2e2cf234dcd36a9.webp 570w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2015-10-07-xi-pan-fu-kiofeng-lu-supikagapodcastwen-kunonisugoibian-li/20151003172542_hu_992e55369cd9aa2b.webp"
width="570"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;食器を洗ったり料理をしながらPodcastを聞くことが多いのですが、iPhoneのスピーカーだと水の音などに負けて聞き取れないことが多々有りました。しかし、このスピーカーにしてからはそういう問題がなくなって安定しています。&lt;/p&gt;
&lt;p&gt;特にOvercastでsmart speedを使っていると、sやtなどの子音がほとんど聞こえなくなってしまうため、日本語が聞き取りにくくなりがちなのですが、そういった問題もクリアできます。&lt;/p&gt;
&lt;p&gt;肝心の音は、モノラルだけど値段に比べると少しマシかなという印象です。普通にpopsとか流しても昔のラジオっぽい雰囲気がでてよいです。&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;カラビナついてるから、どこかにぶら下げるのは良いかも&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>MeCab.jlをJulia v0.4.0-rc2に対応した</title><link>https://chezo.uno/post/2015-09-23-mecab-dot-jlwojulia-v0-dot-4-0-rc2nidui-ying-sita/</link><pubDate>Tue, 22 Sep 2015 19:16:08 -0700</pubDate><guid>https://chezo.uno/post/2015-09-23-mecab-dot-jlwojulia-v0-dot-4-0-rc2nidui-ying-sita/</guid><description>&lt;p&gt;ついに、Julia v0.4.0-rc2が2015/9/19出ましたね！ Dictの&lt;code&gt;[:symbol =&amp;gt; :value]&lt;/code&gt;といったsyntax sugarがなくなったりして、自分が作っているMeCab.jlでも対応をしました。&lt;/p&gt;
&lt;p&gt;詳細はPRを見ていただければと思いますが、
を使えば基本OKです。&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=https%3A%2F%2Fgithub.com%2Fchezou%2FMeCab.jl%2Fpull%2F8" title="Suppress warnings on julia v0.4.0-rc2 by chezou · Pull Request #8 · chezou/MeCab.jl" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://github.com/chezou/MeCab.jl/pull/8"&gt;github.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;（PRボロボロだったのであとから修正を加えました&amp;hellip;）&lt;/p&gt;
&lt;p&gt;bicycle1885さんのCompat.jlの解説もとてもわかり易いです。&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fqiita.com%2Fbicycle1885%2Fitems%2F1c848fa3bdccfe20be73" title="Juliaで異なるバージョンの差異を吸収する方法 - Qiita" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="http://qiita.com/bicycle1885/items/1c848fa3bdccfe20be73"&gt;qiita.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;なお、Juliaの複数環境の構築はsymbolic linkでjulia3, julia4, julia-devみたいなのを用意するのが良いです。 IJuliaも含めたやり方は以下に詳しいです。&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fqiita.com%2Fantimon2%2Fitems%2Fa8cd98257219773b9ef3" title="Jupyter 環境設定補足 #pythontokai - Qiita" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="http://qiita.com/antimon2/items/a8cd98257219773b9ef3"&gt;qiita.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;ちなみに、Google codeが死亡したおかげでMeCabのソースがGoogle driveに移動したのですが、そのおかげでソースのファイル名を指定できないBinDeps.jlが死んだので初issueとPR投げました&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=https%3A%2F%2Fgithub.com%2FJuliaLang%2FBinDeps.jl%2Fpull%2F178" title="Add filename option for NetworkSource and RemoteBinaries by chezou · Pull Request #178 · JuliaLang/BinDeps.jl" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://github.com/JuliaLang/BinDeps.jl/pull/178"&gt;github.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;Juliaの困ったときは、以下に日本語でissue立ててもらうか
で聞いてもらえると良いです！（めっちゃお世話になりました）&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>「データサイエンティスト養成読本 機械学習入門編」を読んだ</title><link>https://chezo.uno/post/2015-09-09-detasaienteisutoyang-cheng-du-ben-ji-jie-xue-xi-ru-men-bian-wodu-nda/</link><pubDate>Wed, 09 Sep 2015 15:14:09 -0700</pubDate><guid>https://chezo.uno/post/2015-09-09-detasaienteisutoyang-cheng-du-ben-ji-jie-xue-xi-ru-men-bian-wodu-nda/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2015-09-09-detasaienteisutoyang-cheng-du-ben-ji-jie-xue-xi-ru-men-bian-wodu-nda/20150906164556_hu_6b57c8652844b7ee.webp 320w, https://chezo.uno/post/2015-09-09-detasaienteisutoyang-cheng-du-ben-ji-jie-xue-xi-ru-men-bian-wodu-nda/20150906164556_hu_55487235d7244d36.webp 480w, https://chezo.uno/post/2015-09-09-detasaienteisutoyang-cheng-du-ben-ji-jie-xue-xi-ru-men-bian-wodu-nda/20150906164556_hu_992fac3f0d292910.webp 570w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2015-09-09-detasaienteisutoyang-cheng-du-ben-ji-jie-xue-xi-ru-men-bian-wodu-nda/20150906164556_hu_6b57c8652844b7ee.webp"
width="570"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;明日発売の「データサイエンティスト養成読本 機械学習入門編」を著者の一人の福島さん(
)にいただきました。 きっかけは、福島さんが「機械学習ソフトウェアの外観」という特集でJuliaの紹介をしていただいたからでした。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4774176311/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
データサイエンティスト養成読本 機械学習入門編 (Software Design plus)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作者: 比戸将平,馬場雪乃,里洋平,戸嶋龍哉,得居誠也,福島真太朗,加藤公一,関喜史,阿部厳,熊崎宏樹&lt;/li&gt;
&lt;li&gt;出版社/メーカー: 技術評論社&lt;/li&gt;
&lt;li&gt;発売日: 2015/09/10&lt;/li&gt;
&lt;li&gt;メディア: 大型本&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この本は著者のPFI比戸さんが自身のブログでも描かれているのですが、&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;一般向けに機械学習を応用面から説明する記事・書籍は増えています。しかし、そこで興味を持って実際に使い始めようとすると、大学講義の教科書として用意された学部生・院生向けの機械学習入門書で理論の基礎を学ぶ以外の選択肢、具体的には手を動かすところから始める日本語の書籍が（特にR言語周辺以外では）少ないように思えました。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;とあるように、対象としては最初の入門として、オライリーの「
」を読んだけど、もっと詳しく知りたいがきっかけが掴めない、という人にぴったりなんじゃないかと思います。&lt;/p&gt;
&lt;p&gt;以下に目次を書きます。ご存じの方は分かる通りとても豪華な執筆陣です。データサイエンティスト養成読本シリーズの中でも、過去最高に充実してるといえるでしょう。（そして、おそらく過去最高の厚さ！）&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;第1部 しくみと概要を学ぼう！&lt;/p&gt;
&lt;p&gt;特集1 機械学習を使いたい人のための入門講座…… 比戸将平&lt;/p&gt;
&lt;p&gt;特集2 機械学習の基礎知識…… 馬場雪乃&lt;/p&gt;
&lt;p&gt;特集3 ビジネスに導入する機械学習…… 里 洋平・戸嶋龍哉&lt;/p&gt;
&lt;p&gt;特集4 深層学習最前線…… 得居誠也&lt;/p&gt;
&lt;p&gt;第2部 手を動かして学ぼう！&lt;/p&gt;
&lt;p&gt;特集1 機械学習ソフトウェアの概観…… 福島真太朗&lt;/p&gt;
&lt;p&gt;特集2 Pythonによる機械学習入門…… 加藤公一&lt;/p&gt;
&lt;p&gt;特集3 推薦システム入門…… 関 喜史&lt;/p&gt;
&lt;p&gt;特集4 Pythonで画像認識にチャレンジ…… 阿部 厳&lt;/p&gt;
&lt;p&gt;特集5 Jubatusによる異常検知…… 熊崎宏樹&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;個人的に特におすすめなのが、第1部比戸さんの特集1「機械学習を使いたい人のための入門講座」と馬場先生の特集2「機械学習の基礎知識」、第2部福島さんの特集1「機械学習ソフトウェアの概観」です。 この3つの特集を読むと、機械学習の歴史的な流れから基礎的な概念、そしてどのようなライブラリが存在するかがコンパクトにつかむことができるでしょう。&lt;/p&gt;
&lt;p&gt;ただし、特集2は大学の学部生が読むのにちょうどよい感じの数式が出てくるので、数式が苦手な方は豊富な図とそのイメージをつかむ程度で、まずは良いかもしれません。&lt;/p&gt;
&lt;p&gt;この3特集を読んだ上で、他の好きな特集をつまみ食いする、というのが読むのに楽かなぁと思いました。&lt;/p&gt;
&lt;p&gt;この本の内容自体は、僕自身は知っていることも多かったのですが、普段あまりscikit-learnを使わずにRや素のlibsvmなど他のフレームワークで機械学習をしている人にとっても、「今どきの機械学習のフレームワークが交差検定やグリッドサーチなど何を標準で提供しているのか」、そして「今どれを選ぶのが良いのか」、ということを見つめなおす材料としてとても良くまとまっていると思います。&lt;/p&gt;
&lt;p&gt;また、いきなり流行りに乗ろうとして「
」や「
」を買ってしまって積んでしまった人にはこちらの本で入門するのが良いと思います。 初級者から中級者に向けて書かれた良書だと思います。本書が機械学習入門の羅針盤となることでしょう。&lt;/p&gt;</description></item><item><title>#tqrk09 で Accept LT してはじめての Gem をライブリリースに失敗しました</title><link>https://chezo.uno/post/2015-08-30-number-tqrk09-de-accept-lt-sitehazimeteno-gem-woraiburirisunishi-bai-simasita/</link><pubDate>Sun, 30 Aug 2015 14:10:51 -0700</pubDate><guid>https://chezo.uno/post/2015-08-30-number-tqrk09-de-accept-lt-sitehazimeteno-gem-woraiburirisunishi-bai-simasita/</guid><description>&lt;p&gt;Tokyu Ruby Kaigi 09 でAccept LTのトリで話しました。 3分だってのに盛りすぎ、かつDEMOで接続が悪くなるという前回もあった失敗を重ねてはじめてのGemをライブリリースすることに失敗しました。&lt;/p&gt;
&lt;p&gt;なお、カリーヴルストは無事リリースできました。&lt;/p&gt;
&lt;iframe src="//instagram.com/p/68wonPAdwS/embed/" data-entry-image="http://instagram.com/p/68wonPAdwS/media/?size=l" width="612" height="710" frameborder="0" scrolling="no" allowtransparency="true"&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://instagram.com/p/68wonPAdwS/"&gt;instagram.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;レシピはクックパッドって便利なサイトを使いました。&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fcookpad.com%2Frecipe%2F3131580" title="簡単★カリーヴルスト by エスビー食品" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;a href="http://cookpad.com/recipe/3131580"&gt;簡単★カリーヴルスト by エスビー食品&lt;/a&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="http://cookpad.com/recipe/3131580"&gt;cookpad.com&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;その後、きちんとリリースしたので今では Macをお使いのあなたなら、&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;brew install kytea gem install kytea
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;で kyteaがRubyから使えるようになります！&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;kyteaはどんな子かというと、 三期も放送されているという「Working」に対してきちんと読み推定をしてくれる優秀な形態素解析です。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ echo Working | mecab Working 名詞,固有名詞,組織,\*,\*,\*,\* EOS $ echo Working | kytea Working/名詞/わーきんぐ
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;YAPCの間使って頑張ってSWIGの挙動を調べた結果、Ruby側で更なるwrapperを書くという屈辱を味わっていますが、 おかげで、ぼちぼちな使い方ができるようになったのでよしとしています。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;str = &amp;quot;今日はいい天気です。&amp;quot;kytea.segment(str)#=\&amp;gt; [&amp;quot;今日&amp;quot;, &amp;quot;は&amp;quot;, &amp;quot;い&amp;quot;, &amp;quot;い&amp;quot;, &amp;quot;天気&amp;quot;, &amp;quot;で&amp;quot;, &amp;quot;す&amp;quot;, &amp;quot;。&amp;quot;]kytea.tag\_info\_of(str)#=\&amp;gt; &amp;quot;今日/名詞/きょう は/助詞/は い/形容詞/い い/語尾/い 天気/名詞/てんき で/助動詞/で す/語尾/す 。/補助記号/。 &amp;quot;kytea.tags\_of(str)#=\&amp;gt; [{:surface=\&amp;gt;&amp;quot;今日&amp;quot;, :tags=\&amp;gt;[[{:tag=\&amp;gt;&amp;quot;名詞&amp;quot;, :val=\&amp;gt;3.610404674503611}], [{:tag=\&amp;gt;&amp;quot;きょう&amp;quot;, :val=\&amp;gt;1.0726515803715995}]]},# {:surface=\&amp;gt;&amp;quot;は&amp;quot;, :tags=\&amp;gt;[[{:tag=\&amp;gt;&amp;quot;助詞&amp;quot;, :val=\&amp;gt;3.5500698037485963}], [{:tag=\&amp;gt;&amp;quot;は&amp;quot;, :val=\&amp;gt;100.0}]]},# {:surface=\&amp;gt;&amp;quot;い&amp;quot;, :tags=\&amp;gt;[[{:tag=\&amp;gt;&amp;quot;形容詞&amp;quot;, :val=\&amp;gt;2.5966088884369523}], [{:tag=\&amp;gt;&amp;quot;い&amp;quot;, :val=\&amp;gt;100.0}]]},# {:surface=\&amp;gt;&amp;quot;い&amp;quot;, :tags=\&amp;gt;[[{:tag=\&amp;gt;&amp;quot;語尾&amp;quot;, :val=\&amp;gt;2.7064013574728385}], [{:tag=\&amp;gt;&amp;quot;い&amp;quot;, :val=\&amp;gt;100.0}]]},# {:surface=\&amp;gt;&amp;quot;天気&amp;quot;, :tags=\&amp;gt;[[{:tag=\&amp;gt;&amp;quot;名詞&amp;quot;, :val=\&amp;gt;4.220721634732509}], [{:tag=\&amp;gt;&amp;quot;てんき&amp;quot;, :val=\&amp;gt;100.0}]]},# {:surface=\&amp;gt;&amp;quot;で&amp;quot;, :tags=\&amp;gt;[[{:tag=\&amp;gt;&amp;quot;助動詞&amp;quot;, :val=\&amp;gt;2.9093304720685786}], [{:tag=\&amp;gt;&amp;quot;で&amp;quot;, :val=\&amp;gt;0.99994530321086}]]},# {:surface=\&amp;gt;&amp;quot;す&amp;quot;, :tags=\&amp;gt;[[{:tag=\&amp;gt;&amp;quot;語尾&amp;quot;, :val=\&amp;gt;2.5160490891753264}], [{:tag=\&amp;gt;&amp;quot;す&amp;quot;, :val=\&amp;gt;0.9998735552127426}]]},# {:surface=\&amp;gt;&amp;quot;。&amp;quot;, :tags=\&amp;gt;[[{:tag=\&amp;gt;&amp;quot;補助記号&amp;quot;, :val=\&amp;gt;3.070959942739055}], [{:tag=\&amp;gt;&amp;quot;。&amp;quot;, :val=\&amp;gt;100.0}]]}]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;ブログを書いて、サントリーさんの応募ハガキを投函するまでがTokyu Ruby Kaigiなので、エンドレスTokyuにならないよう頑張ります！&lt;/p&gt;</description></item><item><title>YAPC::ASIA Tokyo 2015参加してきた #yapcasia</title><link>https://chezo.uno/post/2015-08-23-yapc-asia-tokyo-2015can-jia-sitekita-number-yapcasia/</link><pubDate>Sat, 22 Aug 2015 18:27:50 -0700</pubDate><guid>https://chezo.uno/post/2015-08-23-yapc-asia-tokyo-2015can-jia-sitekita-number-yapcasia/</guid><description>&lt;p&gt;初参加にして最後のYAPC::ASIA Tokyoに行ってきた。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;イベント開催したい熱が高まった&lt;/li&gt;
&lt;li&gt;コード書きたい気持ちが高まったので、Mykytea-rubyの
&lt;/li&gt;
&lt;li&gt;意外とはじめての参加でもぼっちにならずに済んで良かった&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="聞いた"&gt;聞いた&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fyapcasia.org%2F2015%2Ftalk%2Fshow%2Ff5aa5054-12fd-11e5-b4c9-d9f87d574c3a" title="はてなブックマークのトピックページの裏側 - YAPC::Asia Tokyo 2015" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;a href="http://yapcasia.org/2015/talk/show/f5aa5054-12fd-11e5-b4c9-d9f87d574c3a"&gt;はてなブックマークのトピックページの裏側 - YAPC::Asia Tokyo 2015&lt;/a&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="http://yapcasia.org/2015/talk/show/f5aa5054-12fd-11e5-b4c9-d9f87d574c3a"&gt;yapcasia.org&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;個人的には、はてなブックマークのトピックページの話は資料は読んでいたけど、こんな重そうな処理どれくらいのマシンと時間で処理しているのかとか聞きたかったのが聞けてよかったです。 ESのクラスターは本番とは別のクラスターで、結構メモリ積んで処理してるとことで、やはりNLP系の処理は重いですよねー、と話しました。&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fyapcasia.org%2F2015%2Ftalk%2Fshow%2Ff283a924-fddc-11e4-90cd-bdc07d574c3a" title="DeepLearning の前に知っておくことがある！ 再帰型のニューラルネットワークや自己組織化マップについて語ろう - YAPC::Asia Tokyo 2015" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;a href="http://yapcasia.org/2015/talk/show/f283a924-fddc-11e4-90cd-bdc07d574c3a"&gt;DeepLearning の前に知っておくことがある！ 再帰型のニューラルネットワークや自己組織化マップについて語ろう - YAPC::Asia Tokyo 2015&lt;/a&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="http://yapcasia.org/2015/talk/show/f283a924-fddc-11e4-90cd-bdc07d574c3a"&gt;yapcasia.org&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;1日目はまさか2つのセッションで自分が引用されるとは思っていなかったので光栄です。&lt;/p&gt;
&lt;p&gt;@muddydixonさんのSOMの話は、大分酷いブコメを付けたので怯えさせてしまったようでしたが、その後ご本人とお話をして認知よりの人と工学寄りの人との立ち位置の違いを認識しました。 ちなみに、僕自身も2000年代前半にSOMを使っていたので、ブコメは完全にブーメランでした。&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fyapcasia.org%2F2015%2Ftalk%2Fshow%2Fcf39f7fc-ff44-11e4-9264-66c47d574c3a" title="Podcastを支える技術、エンジニアのためのWebメディア、そしてCPAN - YAPC::Asia Tokyo 2015" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;a href="http://yapcasia.org/2015/talk/show/cf39f7fc-ff44-11e4-9264-66c47d574c3a"&gt;Podcastを支える技術、エンジニアのためのWebメディア、そしてCPAN - YAPC::Asia Tokyo 2015&lt;/a&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="http://yapcasia.org/2015/talk/show/cf39f7fc-ff44-11e4-9264-66c47d574c3a"&gt;yapcasia.org&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;@yusukebeさんの Podcastを支える技術では、機材写真が出る度にテンションがあがって、wish listに追加するというどうしようもないやつでした。 自分のpodcast始めた話が引用されていたのでとても嬉しかったです。 「ドメイン取得駆動開発」はとてもいい方法ですが、.fmドメインは高いので半年放送を継続出来てから買えばいいと、codelunch.fmの中の人に聞きました。&lt;/p&gt;
&lt;p&gt;質疑応答でも補足したのですが、家で収録できない人は市民向けの会議室が安くてそこそこ静かでオススメです。（場所にもよるかもしれないけど） 結構楽器の練習に使われるようなところもあるので、是非狙ってみてください。&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fyapcasia.org%2F2015%2Ftalk%2Fshow%2Fad57ca84-13e9-11e5-aca1-525412004261" title="【特別企画】YAPCあるある（仮） - YAPC::Asia Tokyo 2015" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;a href="http://yapcasia.org/2015/talk/show/ad57ca84-13e9-11e5-aca1-525412004261"&gt;【特別企画】YAPCあるある（仮） - YAPC::Asia Tokyo 2015&lt;/a&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="http://yapcasia.org/2015/talk/show/ad57ca84-13e9-11e5-aca1-525412004261"&gt;yapcasia.org&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;YAPCあるあるの話やCONBの人の設営の話、LTで勉強会をはじめました、的な話を聞いていたら自分もまたイベントやりたいという気持ちが高まってきました。 （でも、大規模なのはかなり大変なので、そのうちかなーとは思います） 特に都心以外で勉強会を開催するのはとても有意義で、自分の家の側の隠れたソフトウェアエンジニアを発掘できるチャンスなので、是非やるといいと思います。&lt;/p&gt;
&lt;h1 id="雑感"&gt;雑感&lt;/h1&gt;
&lt;p&gt;YAPCは廊下で人と話すのが楽しいということで、色々な人と話しました。 そして、普段なかなか休日には書けないコードを書いたりしてはかどりました。&lt;/p&gt;
&lt;p&gt;各所でpandas最高おじさんとして話まくっていたのは私です。 （そのうち、Jupyter使ってpandas-tdとかRedshift叩く話をブログに書く）&lt;/p&gt;
&lt;h2 id="今回得られたyapcに関係ない知見"&gt;今回得られたYAPCに関係ない知見&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;SWIGでRuby binding作るとstd::stringはASCIIでしか帰ってこない&lt;/li&gt;
&lt;li&gt;Juliaでanyenvはjlenvを自分で作らないといけない&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Apple Music のプレイリストを中心としたレコメンド戦略</title><link>https://chezo.uno/post/2015-07-08-apple-music-nopureirisutowozhong-xin-tositarekomendozhan-lue/</link><pubDate>Wed, 08 Jul 2015 15:52:00 -0700</pubDate><guid>https://chezo.uno/post/2015-07-08-apple-music-nopureirisutowozhong-xin-tositarekomendozhan-lue/</guid><description>&lt;p&gt;膨大な音楽というコンテンツの海に放り出された時に、人は何をするだろうか。&lt;/p&gt;
&lt;p&gt;今回Apple Musicをさわってみて、様々な路線から音楽との出会いをつくろうとしているな、と感じたのでまとめておく。&lt;/p&gt;
&lt;p&gt;きっと、Apple Musicについてその辺の話がbackspace.fmで出てくるかなと思って期待していたんだけど、どちらかというと話の中心は「邦楽がない」みたいなコンテンツの内容中心だった。&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;放送中に、
さんの
を読んでいてなかなか良かったんだけど、更に見てみると西田さん (
) の記事がとても良くまとまっていた。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;大体言いたいことが記事に書いてあるんだけど、以下の気になった4点を補足したい。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;プレイリストを中心としたレコメンドは、音楽にはあっている&lt;/li&gt;
&lt;li&gt;曲やアーティストから展開できる「ステーション」は、YouTubeのミックスリストと同じ世界をめざしている&lt;/li&gt;
&lt;li&gt;影響を受けたアーティスト/同じタイプのアーティストといったデータベースとしてもきっちり作ってきている&lt;/li&gt;
&lt;li&gt;「アクティビティ」がいい感じ&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="プレイリストと音楽"&gt;プレイリストと音楽&lt;/h2&gt;
&lt;p&gt;プレイリストは「誰か詳しい人の意図したテーマ」を介してレコメンドできるので、理由が伝えやすくて受け入れやすい。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2015-07-08-apple-music-nopureirisutowozhong-xin-tositarekomendozhan-lue/20150708224512_hu_8abe045ae23bc39c.webp 320w, https://chezo.uno/post/2015-07-08-apple-music-nopureirisutowozhong-xin-tositarekomendozhan-lue/20150708224512_hu_7c51fe8d37455ce3.webp 428w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2015-07-08-apple-music-nopureirisutowozhong-xin-tositarekomendozhan-lue/20150708224512_hu_8abe045ae23bc39c.webp"
width="428"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;例えば、「雨の日に家で聴きたいロック集」なんてのが雨の日に出されると、「お、聞いてみようかな」って感じになる。 もう一つ、楽曲がApple Musicに増える速度よりも、プレイリストが増える速度の方が速くすることができるので、変化を生みやすい。これは、毎日聞きながらLove(♡)をつけることで、どんな変化がするのか、というのを楽しむことがしやすいし、ある一定の場所にサチるのを抑えることができる。&lt;/p&gt;
&lt;p&gt;まつおさんの話でもあったけど、Appleが金をかけてプレイリストを作りこむのは、多様性を確保するためだと思う。 素人のプレイリストが山ほどあっても最終的にはマス指向の平均的なものになってしまって、何の楽しさも得られない。 そういう意味では、誰かが真剣に考えた切り口＝プレイリストとして価値が大きいんだと思う。&lt;/p&gt;
&lt;h2 id="ステーション"&gt;ステーション&lt;/h2&gt;
&lt;p&gt;ステーションは、アーティストや楽曲を起点として、連続で曲が聞けるものである。ぶっちゃけ、YouTubeのミックスリストのApple Music版である。 YouTubeのミックスリストは良いんだけど、音質が悪い曲とかに行き当たることがあったり、広告動画が入ったりちょっと嬉しくないシーンも有った。けど、Apple Musicではお金を払っていい感じの曲を無限に聞くことができるわけである。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2015-07-08-apple-music-nopureirisutowozhong-xin-tositarekomendozhan-lue/20150708224614_hu_6cf32f761c0b2a27.webp 320w, https://chezo.uno/post/2015-07-08-apple-music-nopureirisutowozhong-xin-tositarekomendozhan-lue/20150708224614_hu_6c7ed814bd9087a5.webp 428w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2015-07-08-apple-music-nopureirisutowozhong-xin-tositarekomendozhan-lue/20150708224614_hu_6cf32f761c0b2a27.webp"
width="428"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;しかも、OS組込みで好みに合うか否かを★でフィードバックできるのだ。 こりゃ凄い。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2015-07-08-apple-music-nopureirisutowozhong-xin-tositarekomendozhan-lue/20150708224542_hu_9e7549712278a873.webp 320w, https://chezo.uno/post/2015-07-08-apple-music-nopureirisutowozhong-xin-tositarekomendozhan-lue/20150708224542_hu_c533686d4a4bc938.webp 428w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2015-07-08-apple-music-nopureirisutowozhong-xin-tositarekomendozhan-lue/20150708224542_hu_9e7549712278a873.webp"
width="428"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;ちなみに、ちょっとアグレッシブだなと思うのが、アーティスト名で検索してアーティストリストに到達すると勝手にフォローする所。これは、ちょっと意図していなかったかも。&lt;/p&gt;
&lt;h2 id="データベースの作り込み"&gt;データベースの作り込み&lt;/h2&gt;
&lt;p&gt;押尾コータローと同じタイプのアーティストに、村治佳織やゴンチチを出す、みたいな、ベーシックなアーティスト間の関係性をきっちりと作りこみをしている。これは凄い。 「影響を与えたアーティスト」みたいなのも用意しているので、プレイリストで「エリック・クラプトンが影響をうけたサウンド」みたいなのもできるわけだ。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="%5c1" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;ユーザー自信に回遊をさせるためだけでなく、プレイリストを作るためにもデータをきっちり作りこんでいる。天晴である。&lt;/p&gt;
&lt;h2 id="アクティビティ"&gt;アクティビティ&lt;/h2&gt;
&lt;p&gt;これだけでなく、シーンにそったプレイリストを用意してくれている。 場所が凄いわかりにくいのだけど、Newの下の方にある。 おもてなし、ドライブといった定番のものだけでなく、作業中、勉強中、失恋、目覚め、といったものまである。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="%5c1" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="%5c1" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;こういうシーンやフィーリングに対して楽曲を提供するのは、未知の曲に出会うきっかけとしては良いと思う。プレイリストはURLを持っているので、さながらネットで共有できるラジオだ。&lt;/p&gt;
&lt;h2 id="雑感"&gt;雑感&lt;/h2&gt;
&lt;p&gt;Apple Musicの&amp;quot;For You&amp;quot;の初期の精度がいまいちだし、邦楽少ないし微妙だなーと最初は思ったのだが、好きなアーティストが居ることがわかった瞬間にどんどんはまっていったし、そこから♡をつけることで、知らなかったけど好きなアーティストと似たジャンルのアーティストが出てきて楽しくなってきている。&lt;/p&gt;
&lt;p&gt;プレイリストというテーマを提案するのは、これからのレコメンドでは結構重要になってくるのではないかと思っているが、それ以外にも全力で攻めてきている感じが好感を持てて良い。&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;この放送中の話では、初期のレコメンドの設定がBeats Musicのそれと同じらしい&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>日本人向けPodcastやるならIDCFクラウドが良さそう</title><link>https://chezo.uno/post/2015-06-07-ri-ben-ren-xiang-kepodcastyarunaraidcfkuraudogaliang-sasou/</link><pubDate>Sun, 07 Jun 2015 14:00:00 -0700</pubDate><guid>https://chezo.uno/post/2015-06-07-ri-ben-ren-xiang-kepodcastyarunaraidcfkuraudogaliang-sasou/</guid><description>&lt;p&gt;
というpodcastをやっているのですが、
の上で動いています。&lt;/p&gt;
&lt;h1 id="tldr"&gt;tl;dr&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;IDCFクラウド月500円で3TBまで転送量無料なので、国内向けPodcastには便利&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="いいところ"&gt;いいところ&lt;/h1&gt;
&lt;p&gt;安いこと。 IDCFクラウドは、一番小さいインスタンスなら月500円で使えて月3TBまで転送量が無料です。&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; ただし、この構成だと15GBのボリュームしか使えませんが、まぁpodcastのデータはたかが知れているので大丈夫でしょう。 Mackerelも無料で制限されたプランがついてきます。&lt;/p&gt;
&lt;p&gt;あと、ちょいちょい3000円クーポンを配る
ので、試しに始めるのは気軽にできます。&lt;/p&gt;
&lt;h1 id="わるいところ"&gt;わるいところ&lt;/h1&gt;
&lt;p&gt;料金体系がわかりにくいところです。AWSもたいがいなんだと思いますが、IDCFクラウドもよくわからないです。&lt;/p&gt;
&lt;p&gt;僕がハマったのは、オブジェクトストレージ(S3 compatibleなストレージ)。 こちらは50GB未満の保存料は無料だけど、転送量は月10GBまでしか無料でなくて、Matzに宣伝していただいたrubyist.clubはあっさり超えたので辞めました。&lt;/p&gt;
&lt;p&gt;また、
も厄介で、とろうと思った時にいくら掛かるのかパッとわからないし、シミュレータではスナップショットの「ス」の字も書いてない。おそらくアーカイブデータなのはわかるけど、この不親切さはちと厳しい。&lt;/p&gt;
&lt;p&gt;IDCF自体の障害はちょこちょこ発生しているようですが、今のところCDNも経由してるしなんとかなっています。&lt;/p&gt;
&lt;h1 id="録音環境"&gt;録音環境&lt;/h1&gt;
&lt;p&gt;ついでですが、以前にも少し
が、ソフトウェア構成が変わったので書きます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Skype
&lt;ul&gt;
&lt;li&gt;
でバックアップ用に会話を録音&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;GarageBand
&lt;ul&gt;
&lt;li&gt;自分の声の録音および、領域のカット&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;
で音量調整をしてる&lt;/li&gt;
&lt;li&gt;yusukebeさんはlevelatorで調整しているみたいですが、こちらの方がより自分で調整できるので気に入っています&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以前書いたsoundflowerは、クロックが狂う原因になることがわかったので使用をやめています。&lt;/p&gt;
&lt;p&gt;ゲストの環境の典型的なパターンは&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;iPhoneで口元で録音
&lt;ul&gt;
&lt;li&gt;
みたいなアプリでwav形式で録音をしてもらう&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Mac/iPadなどでSkype&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;という構成にしてもらっています。これは、口の近くでiPhoneを置いて録音することで、ゲインが稼げてかつ音量も安定するからです。 結構キーボード叩く音とか入っちゃうんですけどね&amp;hellip;&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt; 。指向性のマイクを持っていない人がゲストのことが多いので、こういう方法でアプローチしています。&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;たしか、rebuild.fmは
使ってて2~3TB無料なので、それくらいなら大丈夫かと踏んでいる&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;🐸の声も入ってしまった&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>pip install kyteaできるようになりました</title><link>https://chezo.uno/post/2015-06-06-pip-install-kyteadekiruyouninarimasita/</link><pubDate>Sat, 06 Jun 2015 10:14:41 -0700</pubDate><guid>https://chezo.uno/post/2015-06-06-pip-install-kyteadekiruyouninarimasita/</guid><description>&lt;p&gt;先月のkawasaki.rbで、Rubyistなのにgemより先にPypiデビューしましたという話をしました。&lt;/p&gt;
&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/key/nzuS2SusU9LaBR" 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&gt; &lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;
&lt;/strong&gt; from &lt;strong&gt;
&lt;/strong&gt;
&lt;cite class="hatena-citation"&gt;&lt;a href="http://www.slideshare.net/chezou/py-48654458"&gt;
&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;中身は、kyteaをpipから入れられるようにしたよということですが、ちょっとsetup.pyへの恨み節も入ってます。 SWIGに対応している
、実は
とか、しかもその
とか&amp;hellip;。 SWIGオワコンなんですかねぇ。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;bundle gem&lt;/code&gt;みたいな方法が確立してないから、ディレクトリ構成もよくわからないんですよね。&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=https%3A%2F%2Fpypi.python.org%2Fpypi%2Fkytea%2F0.1.0" title="kytea 0.1.0 : Python Package Index" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;a href="https://pypi.python.org/pypi/kytea/0.1.0"&gt;kytea 0.1.0 : Python Package Index&lt;/a&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://pypi.python.org/pypi/kytea/0.1.0"&gt;pypi.python.org&lt;/a&gt;&lt;/cite&gt;
&lt;p&gt;一応、gem化も進めていますがあまり需要がなさそうなので、真面目にやっていません。&lt;/p&gt;
&lt;h3 id="参考"&gt;参考&lt;/h3&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fqiita.com%2Fedvakf%40github%2Fitems%2Fd82cd7ab77ea2b88506c" title="Python - PyPIにパッケージ登録する - Qiita" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;a href="http://qiita.com/edvakf@github/items/d82cd7ab77ea2b88506c"&gt;Python - PyPIにパッケージ登録する - Qiita&lt;/a&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="http://qiita.com/edvakf@github/items/d82cd7ab77ea2b88506c"&gt;qiita.com&lt;/a&gt;&lt;/cite&gt;</description></item><item><title>Googleドライブやカレンダーの共有権限を管理するにはGoogle groupsが便利</title><link>https://chezo.uno/post/2015-05-21-googledoraibuyakarendanogong-you-quan-xian-woguan-li-surunihagoogle-groupsgabian-li/</link><pubDate>Wed, 20 May 2015 17:37:16 -0700</pubDate><guid>https://chezo.uno/post/2015-05-21-googledoraibuyakarendanogong-you-quan-xian-woguan-li-surunihagoogle-groupsgabian-li/</guid><description>&lt;p&gt;ネットで調べていてもGoogle Appsの情報しか出ないので、備忘録として書きます。&lt;/p&gt;
&lt;p&gt;Googleドライブは情報共有するのには手軽なツールなので、使っている人も多いと思います。&lt;/p&gt;
&lt;p&gt;一方でドライブの公開範囲を公開にしておいて、出すべきではない情報が漏れてしまうということもあると思います。&lt;/p&gt;
&lt;p&gt;そこで、今回はその解決方法としてGoogle groupsの便利な使い方を紹介します。&lt;/p&gt;
&lt;h3 id="やり方"&gt;やり方&lt;/h3&gt;
&lt;p&gt;やり方はとても簡単で、共有したい人が参加するGoogle groupsを作成して、閲覧/編集権限をgroupsのアドレスに付与するだけです。&lt;/p&gt;
&lt;p&gt;会社でGoogle Appsを使っている人はチームのMLを作ってそこに権限を与えたりしていると思いますが、あれと同じです。&lt;/p&gt;
&lt;p&gt;ただし、注意点としては、ドメインへの公開がなくて全世界への公開がデフォルトであることに気をつけてください。&lt;/p&gt;
&lt;h3 id="メリット"&gt;メリット&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;役割に応じてフォルダに権限を付与できるので、権限の管理がしやすい&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;参加希望者のメールアドレスを知らなくても、登録フォームが存在する&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ログイン状態でないと見れないので、編集履歴のログが残る&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;1についての補足ですが、一般メンバーのグループと管理メンバーのグループなどロールによってグループを分ける事で、管理者のみ編集可能なドキュメントなどが容易に管理できます。&lt;/p&gt;
&lt;h3 id="おまけgoogleカレンダーで共有カレンダーも作れる"&gt;おまけ:Googleカレンダーで共有カレンダーも作れる&lt;/h3&gt;
&lt;p&gt;公式ヘルプにもある通り、カレンダーの共有メンバーにGroupsを設定すると、そのメンバーで共有カレンダーが作れます。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;編集権限も一括で与える事ができるのでとても便利です。&lt;/p&gt;
&lt;p&gt;以上、Google groupsの便利情報でした。&lt;/p&gt;</description></item><item><title>rubyist.club はじめてました #rubyistclub</title><link>https://chezo.uno/post/2015-05-03-rubyist-dot-club-hazimetemasita-number-rubyistclub/</link><pubDate>Sun, 03 May 2015 03:00:00 -0700</pubDate><guid>https://chezo.uno/post/2015-05-03-rubyist-dot-club-hazimetemasita-number-rubyistclub/</guid><description>&lt;p&gt;
というドメインが勢い余ってとれたので、podcastを始めました。
でも話題になっていた、静的ファイルを置くためだけにIDCFクラウドにインスタンス立てて、nginx立ててっていう無駄なことをやっています。&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;もともとは、
さんと神奈川Ruby会議のポストモーテムで「トークセッション人数多かったから消化不良気味でしたね」という話から、個別にお話させていただければもっと引き出せたのかもしれないという話からスタートしました。&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;もう一つ考えているのが、勉強会や地域Ruby会議といったオフラインミートアップに対して、少し違ったアプローチを取れないだろうかという考えもあります。 オフラインのミートアップでは、実際に会ったからこそできる話や生で受ける刺激は、他の手段ではなかなか得ることができません。&lt;/p&gt;
&lt;p&gt;地域Ruby会議のような規模のイベントは距離や人数、日程の制約など様々なハードルを超えることで実現できるとても有意義なものです。その一方で、開催するのにはかなりのリソースをかかる割に、リーチする人は3桁程度の人にしか届きません。もう少し多くの人に届けるにはどうしたらいいだろう、と考えました。&lt;/p&gt;
&lt;p&gt;音声podcastというメディアは、講演動画に比べてながらで聴きやすく通勤や運動、家事などをしながら聞くというスタイルが以前より増えてきている気がします。 また、
でも触れましたが、podcastには懇親会で親しい仲の人たちが話をするのに聞き耳を立てるような、なかなか聞けない話を聞けるというメリットもあると思っています。&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;ともあれ、音量調整&lt;sup id="fnref:4"&gt;&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref"&gt;4&lt;/a&gt;&lt;/sup&gt; やらジングル作成など、はじめての事だらけで色々お聞き苦しい点もあるかもしれませんが、温かく見守っていただければ嬉しいです。 感想や
でのレビューもお待ちしております。ゲストのRubyistも募集してます。&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;うっかりnginxのバージョン上げたら、設定ファイルが壊れて今日さっきまで落ちていた。この辺いい感じに安定させたい&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;miyohideさんが、podcastに出演するのにノリノリだったので始めたという説もある&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:3"&gt;
&lt;p&gt;誤解なきよう補足すると、僕自身地域Ruby会議の開催には今後も携わっていきたいと考えていますし、その存在価値を否定するものではありません&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:4"&gt;
&lt;p&gt;第二回はカエルの鳴き声に負けた&amp;hellip;&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>Machine Learning Casual Talks #3 (略称MLCT)やりました #MLCT</title><link>https://chezo.uno/post/2015-05-02-machine-learning-casual-talks-number-3-lue-cheng-mlct-yarimasita-number-mlct/</link><pubDate>Sat, 02 May 2015 14:41:44 -0700</pubDate><guid>https://chezo.uno/post/2015-05-02-machine-learning-casual-talks-number-3-lue-cheng-mlct-yarimasita-number-mlct/</guid><description>&lt;p&gt;先日、
を行いました。
&lt;/p&gt;
&lt;p&gt;久しぶりのMLCTでしたが、今回も濃密な議論が行われました。&lt;/p&gt;
&lt;p&gt;今回、発表資料を乗せるとともに、開催にあたってカジュアルとは、何故始めたか、を改めてお知らせしたので、それをこちらにも書いておきます(次回は募集ページに書こう)&lt;/p&gt;
&lt;h2 id="発表資料"&gt;発表資料&lt;/h2&gt;
&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/key/3CuMqdbNysvpDv" 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&gt; &lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;
&lt;/strong&gt; from &lt;strong&gt;
&lt;/strong&gt;
&lt;cite class="hatena-citation"&gt;&lt;a href="http://www.slideshare.net/TokorotenNakayama/mlct"&gt;
&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/key/v6V59XfiGtFHG" 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&gt; &lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;
&lt;/strong&gt; from &lt;strong&gt;
&lt;/strong&gt;
&lt;cite class="hatena-citation"&gt;&lt;a href="http://www.slideshare.net/masakazusano75/mlct-20150430v2"&gt;
&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/key/dC7WAonWspVRlD" 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&gt; &lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;
&lt;/strong&gt; from &lt;strong&gt;
&lt;/strong&gt;
&lt;cite class="hatena-citation"&gt;&lt;a href="http://www.slideshare.net/myui/hivemall-mlct3"&gt;
&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;まさか、Hivemallのユーザーと開発者が同じ場所で発表するとは思っていませんでした。&lt;/p&gt;
&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/key/9fQxgpk8taf6Ok" 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&gt; &lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;[LSTMで話題分類](
&lt;strong&gt;john_smith&lt;/strong&gt; /lstm &amp;ldquo;LSTMで話題分類&amp;rdquo;)&lt;/strong&gt; from &lt;strong&gt;[__john_smith__](
&lt;strong&gt;john_smith&lt;/strong&gt; )&lt;/strong&gt;
&lt;cite class="hatena-citation"&gt;&lt;a href="http://www.slideshare.net/ __john_smith__ /lstm"&gt;
&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;
でLSTMやろうとしたら、ドキュメントなさすぎてうまく行かなかったというお話でした。 補足記事も上がっています。&lt;/p&gt;
&lt;iframe src="https://john-smith.hateblo.jp/embed/2015/05/02/224928" title="RNNこれくしょんでLSTM使おうと思って失敗した話をMLCTでした - Java Coffee Cafe" class="embed-card embed-blogcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;"&gt;&lt;a href="https://john-smith.hateblo.jp/entry/2015/05/02/224928"&gt;RNNこれくしょんでLSTM使おうと思って失敗した話をMLCTでした - Java Coffee Cafe&lt;/a&gt;&lt;/iframe&gt;&lt;cite class="hatena-citation"&gt;&lt;a href="https://john-smith.hateblo.jp/entry/2015/05/02/224928"&gt;john-smith.hateblo.jp&lt;/a&gt;&lt;/cite&gt;
&lt;h2 id="カジュアルとは"&gt;カジュアルとは&lt;/h2&gt;
&lt;p&gt;
さんのこれをみてください。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;AWS Casual Talks#1 で説明したカジュアルとはを再掲
&lt;/p&gt;
&lt;p&gt;— con_mame (@con_mame)
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;script async src="//platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;これだけでは、わかりにくいと思うのですが、第一回のMLCTで
さんが説明もなしにこのスライド(P.26)を流したというのがわかりやすいと思います。&lt;/p&gt;
&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/key/6B92WutHaru5ww" 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&gt; &lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;
&lt;/strong&gt; from &lt;strong&gt;
&lt;/strong&gt;
&lt;cite class="hatena-citation"&gt;&lt;a href="http://www.slideshare.net/unnonouno/20140606-mlct/26"&gt;
&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;ディスカッションをメインにするという点はTokyo WebMiningなんかも似ているのですが、ある程度の前提は知っているというつもりで話してもらっているので、突っ込んだ議論ができていると思います。&lt;/p&gt;
&lt;h2 id="何故はじめたのか"&gt;何故はじめたのか&lt;/h2&gt;
&lt;p&gt;そもそも、機械学習をWebサービスなどのシステムに組み込む上で、論文にならないけど大事な工夫が多くあると思います。 そういうのどうしてるの？と皆に聞ける場所が欲しいと思い始めました。&lt;/p&gt;
&lt;p&gt;そしたら、
という、まさにという感じのWorkshopがNIPSに併催されていたりしました。(
が発表されたあそこです)&lt;/p&gt;
&lt;h2 id="募集方法について-20150502-2150追記"&gt;募集方法について [2015/05/02 21:50追記]&lt;/h2&gt;
&lt;p&gt;こういうモチベーションなので、「これから入門したい！」という人にはお互い不幸になることが容易に想像できました。 「機械学習」というとはやりの言葉として追いかけようとしている人も増えているとは思いますが、最低限
を終えている人をターゲットにしたいという思いはありました。&lt;/p&gt;
&lt;p&gt;ただ、どうすればそういう人にリーチするかという解がわからなかったのと、connpassの抽選機能は
ので、一度は試さないといけないなと思い、rand()の神様にすべてを託しました&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; 。&lt;/p&gt;
&lt;p&gt;結果としては、GWに突入している人も多かったのかガチな人が多かった印象です。こちらとしてはあまり言いたくないけど、「ドタキャンした人は今後お断りする可能性があります」という事を書いておくのは大事だと認識しました。&lt;/p&gt;
&lt;p&gt;
の先着+抽選という手法や、
の各種レベルの発表枠など色々方法がありそうだとは考えています。 この辺、同じ悩みを抱えるであろうPydata.tokyoの人の知見を聞きたいところです。&lt;/p&gt;
&lt;h2 id="というわけで"&gt;というわけで&lt;/h2&gt;
&lt;p&gt;次回は&amp;quot;DevData&amp;quot;というテーマがいいというお話をtokorotenさん方面からいただいています。&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;
にある通り、指名もできるが今回は運営意外は指名しなかった&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>#JuliaTokyo で #juliaわからん という雑なレポジトリを立てた話をしたら julia.tokyo ができてた</title><link>https://chezo.uno/post/2015-04-26-number-juliatokyo-de-number-juliawakaran-toiuza-narepozitoriwoli-tetahua-wositara-julia-dot-tokyo-gadekiteta/</link><pubDate>Sun, 26 Apr 2015 15:25:18 -0700</pubDate><guid>https://chezo.uno/post/2015-04-26-number-juliatokyo-de-number-juliawakaran-toiuza-narepozitoriwoli-tetahua-wositara-julia-dot-tokyo-gadekiteta/</guid><description>&lt;p&gt;
を @soramiさんと @bycicle1885 さんと開催しました。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;第3回
にお越しの皆様、楽しい時間をありがとうございました！結論は「julia-wakalang」に質問や要望を書こう、ですかね。ひとつ書いてみました;
&lt;/p&gt;
&lt;p&gt;— Sorami Hisamoto (@sorami)
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;script async src="//platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;そこで、
というリポジトリの話をしてきました。&lt;/p&gt;
&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/key/JTJrdlOGm25gmp" 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&gt; &lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;
&lt;/strong&gt; from &lt;strong&gt;
&lt;/strong&gt;
&lt;cite class="hatena-citation"&gt;&lt;a href="http://www.slideshare.net/chezou/make-julia-more-popular-in-japan1"&gt;
&lt;/a&gt;&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;資料にも書いたとおり、日本でのJuliaがもっと盛り上がるように
さんの「
」という記事を参考にして、「こんなのがあったらな」「こういうことがわからないんだよなー」というのをissueでやりとりするための場所を作りました。&lt;/p&gt;
&lt;p&gt;日本語のドキュメントを増やしたり活用事例を増やすのもすごく大事なのですが、実際問題わからないことをわからないと聞ける場所があるのが大事なのではないか、そしてそれは現代ならgithubのissueではないか、と思って作りました。&lt;/p&gt;
&lt;p&gt;こういうコミュニティの議論を行う場所としては、google groupsやFacebookなんかが今は多いと思うんですが、うまくはまらない時はやりとりが活発にならないという悩みを抱えていました。&lt;/p&gt;
&lt;p&gt;idobataやSlackなどでチャットベースのやりとりをする場所を作る方法も考えましたが、昼間チャットをチェックできない人には辛いなと思っていました。&lt;/p&gt;
&lt;p&gt;issueならwatchしておけばMLのようにメールも飛ぶし、MLみたいに登録していない人でも議論に参加できます。&lt;/p&gt;
&lt;p&gt;また、雑なissueとしての&lt;code&gt;dream&lt;/code&gt;タグは好評で、とりあえず誰の責務でもないけど夢や妄想を書けるのって大事だよねーと懇親会で話していました。&lt;/p&gt;
&lt;p&gt;Twitterで
と書くと僕がissue立てるかもしれません。&lt;/p&gt;
&lt;p&gt;副産物として
というorganizationを作ったら、
というサイトができました。&lt;/p&gt;
&lt;p&gt;あわせて、
も合流したので、いよいよ盛り上がってきました。&lt;/p&gt;
&lt;p&gt;Juliaの情報を増やして、もっともっと盛り上げて行きたいと思います！&lt;/p&gt;</description></item><item><title>Googleフォームで作った申請フォームからSlackに通知をする方法</title><link>https://chezo.uno/post/2015-03-04-googlehuomudezuo-tutashen-qing-huomukaraslacknitong-zhi-wosurufang-fa/</link><pubDate>Tue, 03 Mar 2015 16:31:31 -0800</pubDate><guid>https://chezo.uno/post/2015-03-04-googlehuomudezuo-tutashen-qing-huomukaraslacknitong-zhi-wosurufang-fa/</guid><description>&lt;p&gt;Slackは連絡先を知っている人が参加することが多いですが、ゲームのコミュニティ等相手の連絡先がわからない場合もあると思います。(IngressとかIngressとかIngressとか)&lt;/p&gt;
&lt;p&gt;そういう時のために申請フォームを作って、Slackに通知をするための方法をまとめます。&lt;/p&gt;
&lt;h2 id="1-slackのincoming-webhookを設定する"&gt;1. SlackのIncoming Webhookを設定する&lt;/h2&gt;
&lt;p&gt;Slackの
を新規作成する。 デフォルトの部屋は適当に選べば良い。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Webhook URL&lt;/code&gt;のURLを記録しておく。&lt;/p&gt;
&lt;h2 id="2-googleフォームを作る"&gt;2. Googleフォームを作る&lt;/h2&gt;
&lt;p&gt;今回想定している項目は、以下の4点&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;紹介者名&lt;/li&gt;
&lt;li&gt;名前&lt;/li&gt;
&lt;li&gt;あなたのG+プロフィールページ&lt;/li&gt;
&lt;li&gt;メールアドレス&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="3-slack通知用のスクリプトを作成する"&gt;3. Slack通知用のスクリプトを作成する&lt;/h2&gt;
&lt;p&gt;フォームの&lt;code&gt;ツール -&amp;gt; スクリプト エディタ&lt;/code&gt;を開く&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2015-03-04-googlehuomudezuo-tutashen-qing-huomukaraslacknitong-zhi-wosurufang-fa/20150304002603_hu_99f69b856c131e68.webp 254w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2015-03-04-googlehuomudezuo-tutashen-qing-huomukaraslacknitong-zhi-wosurufang-fa/20150304002603_hu_99f69b856c131e68.webp"
width="254"
height="82"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;通知するためのコードを書く。 以下の例では、public channel(&lt;code&gt;#public_notify&lt;/code&gt;)にメールアドレス以外の情報を、private group(&lt;code&gt;private&lt;/code&gt;)にすべての情報を通知しています。&lt;/p&gt;
&lt;p&gt;urlのところには先ほど取得した&lt;code&gt;Webhook URL&lt;/code&gt;を設定します。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;function sendToSlack(body, channel) { var url = &amp;quot;https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&amp;quot;; var data = { &amp;quot;channel&amp;quot; : channel, &amp;quot;username&amp;quot; : &amp;quot;invitation bot&amp;quot;, &amp;quot;text&amp;quot; : body, &amp;quot;icon\_emoji&amp;quot; : &amp;quot;:gohst:&amp;quot; }; var payload = JSON.stringify(data); var options = { &amp;quot;method&amp;quot; : &amp;quot;POST&amp;quot;, &amp;quot;contentType&amp;quot; : &amp;quot;application/json&amp;quot;, &amp;quot;payload&amp;quot; : payload }; var response = UrlFetchApp.fetch(url, options); } function test() { sendToSlack(&amp;quot;It's a test message&amp;quot;, &amp;quot;#public\_notify&amp;quot;) } function onFormSubmit(e){ var body = &amp;quot;公開版申請が来たよ\n&amp;quot;; var introducer = &amp;quot;&amp;quot;; var applicant = &amp;quot;&amp;quot;; var plusUrl = &amp;quot;&amp;quot;; var itemResponse = e.response.getItemResponses(); for (var j = 0; j \&amp;lt; itemResponse.length; j++){ var formData = itemResponse[j]; var title = formData.getItem().getTitle(); var response = formData.getResponse(); body += &amp;quot;【&amp;quot; + title + &amp;quot;】\n&amp;quot;; body += response + &amp;quot;\n\n&amp;quot;; switch (title) { case &amp;quot;紹介者名&amp;quot;: introducer = response; break; case &amp;quot;名前&amp;quot;: applicant = response; break; case &amp;quot;あなたのG+プロフィールページ&amp;quot;: plusUrl = response; break; default: break; } } var bodyPublic = &amp;quot;@&amp;quot; + introducer + &amp;quot;さ〜ん\n&amp;quot; + applicant + &amp;quot;さんがお呼びよ！\n&amp;quot;; bodyPublic += &amp;quot;確認したら「&amp;quot; + applicant + &amp;quot;さん確認しました！」と発言してね\n【Google+】&amp;quot; + plusUrl; sendToSlack(bodyPublic, &amp;quot;#public\_notify&amp;quot;); sendToSlack(body, &amp;quot;private&amp;quot;); }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Slackへの通知が動くかどうかは、&lt;code&gt;test()&lt;/code&gt;を実行してみると良い。&lt;/p&gt;
&lt;p&gt;最後に、フォームが送信された時にこのスクリプトが動くように&lt;code&gt;onFormSubmit()&lt;/code&gt;のトリガーを設定します。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2015-03-04-googlehuomudezuo-tutashen-qing-huomukaraslacknitong-zhi-wosurufang-fa/20150304002636_hu_d7cb77c4e9f053c2.webp 286w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2015-03-04-googlehuomudezuo-tutashen-qing-huomukaraslacknitong-zhi-wosurufang-fa/20150304002636_hu_d7cb77c4e9f053c2.webp"
width="286"
height="150"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2015-03-04-googlehuomudezuo-tutashen-qing-huomukaraslacknitong-zhi-wosurufang-fa/20150304002721_hu_720e5988b488367c.webp 320w, https://chezo.uno/post/2015-03-04-googlehuomudezuo-tutashen-qing-huomukaraslacknitong-zhi-wosurufang-fa/20150304002721_hu_580e339dcfbff6a7.webp 480w, https://chezo.uno/post/2015-03-04-googlehuomudezuo-tutashen-qing-huomukaraslacknitong-zhi-wosurufang-fa/20150304002721_hu_8c4ee8d67c6262c5.webp 552w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2015-03-04-googlehuomudezuo-tutashen-qing-huomukaraslacknitong-zhi-wosurufang-fa/20150304002721_hu_720e5988b488367c.webp"
width="552"
height="176"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2015-03-04-googlehuomudezuo-tutashen-qing-huomukaraslacknitong-zhi-wosurufang-fa/20150304002736_hu_edfeaef8516121d4.webp 320w, https://chezo.uno/post/2015-03-04-googlehuomudezuo-tutashen-qing-huomukaraslacknitong-zhi-wosurufang-fa/20150304002736_hu_f25961a7b4dcf5b5.webp 480w, https://chezo.uno/post/2015-03-04-googlehuomudezuo-tutashen-qing-huomukaraslacknitong-zhi-wosurufang-fa/20150304002736_hu_39f1b2dc877fcd6f.webp 612w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2015-03-04-googlehuomudezuo-tutashen-qing-huomukaraslacknitong-zhi-wosurufang-fa/20150304002736_hu_edfeaef8516121d4.webp"
width="612"
height="97"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;このとき、スクリプトからドキュメントへのアクセス権限を求められるので承認します。(これがないと、設定できない)&lt;/p&gt;
&lt;p&gt;なお、デバッグの時は最後の&lt;code&gt;通知&lt;/code&gt;に&lt;code&gt;今すぐ&lt;/code&gt;という設定を追加するとエラーが分かりやすくなってよいです。&lt;/p&gt;
&lt;p&gt;うまくいけば、こういう通知がでることになります。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="20150304002942.png" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id="参考url"&gt;参考URL&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>#ingress のpodcast「水やり通信」を始めました #mizuyari</title><link>https://chezo.uno/post/2015-02-20-number-ingress-nopodcast-shui-yaritong-xin-woshi-memasita-number-mizuyari/</link><pubDate>Thu, 19 Feb 2015 16:45:18 -0800</pubDate><guid>https://chezo.uno/post/2015-02-20-number-ingress-nopodcast-shui-yaritong-xin-woshi-memasita-number-mizuyari/</guid><description>&lt;p&gt;こっそりと、いつぞやの
を仕掛けたBersergaさんとingressニュースを紹介するpodcastを始めました。&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fmizuyari.link%2F" title="水やり通信" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;a href="http://mizuyari.link/"&gt;水やり通信&lt;/a&gt;&lt;/iframe&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Michiaki Ariga&lt;/li&gt;
&lt;li&gt;ゲーム／趣味&lt;/li&gt;
&lt;li&gt;¥0&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ingress専門のPodcastなんて国内にはないだろう!?と思って始めたのですが、アイデアを思いついた頃は他のpodcastは存在していなかったけれど、昨年12月から
さんが始まっていました。&lt;/p&gt;
&lt;p&gt;地域Rubyコミュニティpodcastをやる前の素振りとして始めたのですが、プロの方にポスプロをしていただいたりジングル作っていただいたりと超展開になって嬉しい限りです。&lt;/p&gt;
&lt;p&gt;イメージとしては
のingress版があってもいいかな、というのが発想のスタートです。 Ingressの情報って大抵がGoogle+から流れてくることが多くて(それを他のblogが広げている)、もうちょっと多くの人に中で何が起こっているのか伝わるといいなぁという想いもあります。&lt;/p&gt;
&lt;p&gt;本当は青も緑も両方楽しめる番組にしたいのですが、ツテがあったのが自分と同じ青の人だったので、少しそちら側に偏っているかもしれません。是非、緑の方もお便りやゲスト出演をお待ちしています。&lt;/p&gt;
&lt;p&gt;隔週くらいのペースを目指してゆったりマイペースでやろうと思いますので、よければ購読してみてください。&lt;/p&gt;
&lt;h1 id="録音環境"&gt;録音環境&lt;/h1&gt;
&lt;h2 id="software"&gt;Software&lt;/h2&gt;
&lt;p&gt;ソフトウェア的な構成は前のエントリで書きました。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2015-02-14-garagebanddeskypetomaikunoyin-wobie-toratukudelu-yin-surufang-fa/" data-iframely-url="//iframely.net/dE2f2FZ"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;ただ、この構成少し無駄があったり複雑だったりする(LineInは2つもいらなさそう)ので、次回はmiyagawaさんおすすめの
を使ってシンプルにしてみようと思います。&lt;/p&gt;
&lt;p&gt;今回は、Bersergaさん側もダイナミックマイク用意したりしていたのですが、途中のケーブルがダメだったので、急遽iPadでskypeをしました。&lt;/p&gt;
&lt;p&gt;音質的には、まぁまぁ聞くには耐えるくらいかなと思いますが、ポスプロが大変だったとのことなので、次回のSkype録音はそれぞれが録音するスタイルにしたいと思います。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;
僕もそうしてます。Skypeは参照＋バックアップで、各自ローカルでとったものをマージ (double ender) です&lt;/p&gt;
&lt;p&gt;— Tatsuhiko Miyagawa (@miyagawa)
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;script async src="//platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;h2 id="hardware"&gt;HardWare&lt;/h2&gt;
&lt;p&gt;大昔に多重録音向けに買った機材が役に立っています。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2009-11-26-oan-kuoshou-qing-akaperaduo-zhong-lu-yin-notamenoji-cai/" data-iframely-url="//iframely.net/RYvUmRr"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;ul&gt;
&lt;li&gt;マイク: BEHRINGER XM500&lt;/li&gt;
&lt;li&gt;AudioIF: m-audio fast track usb&lt;/li&gt;
&lt;li&gt;卓上マイクスタンド&lt;/li&gt;
&lt;li&gt;マイクケーブル&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B0002KZAKS/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
BEHRINGER XM8500
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: BEHRINGER&lt;/li&gt;
&lt;li&gt;メディア: エレクトロニクス&lt;/li&gt;
&lt;li&gt;購入: 11人 クリック: 47回&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B000FHP0FS/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
M-AUDIO オーディオインターフェース Fast Track USB MFTUSB
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: M-Audio&lt;/li&gt;
&lt;li&gt;発売日: 2004/11/20&lt;/li&gt;
&lt;li&gt;メディア: Personal Computers&lt;/li&gt;
&lt;li&gt;購入: 3人 クリック: 7回&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B000TV16VW/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
KC デスクトップマイクスタンド ブラック MDS-1500/BK
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: KC&lt;/li&gt;
&lt;li&gt;メディア: エレクトロニクス&lt;/li&gt;
&lt;li&gt;購入: 28人 クリック: 80回&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;今は、ニコ生や歌ってみたなどのおかげで、個人向けのオーディオインターフェースのエントリーモデルが増えてきたので、こういうのもいいかもしれません。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B008O517IC/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
BEHRINGER ベリンガー Q802USB ミキサー
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: BEHRINGER&lt;/li&gt;
&lt;li&gt;メディア: エレクトロニクス&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ダイナミックマイク二本使う場合は、これが一番安価で手軽そうです。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B003WI3LNU/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
Steinberg USB AUDIO INTERFACE CI1
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;出版社/メーカー: Steinberg&lt;/li&gt;
&lt;li&gt;発売日: 2010/08/02&lt;/li&gt;
&lt;li&gt;メディア: エレクトロニクス&lt;/li&gt;
&lt;li&gt;購入: 1人 クリック: 17回&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="サーバー側の環境"&gt;サーバー側の環境&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Github pages + octopress&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="github-pages"&gt;Github pages&lt;/h2&gt;
&lt;p&gt;kozytyさんの
のですが、音声ファイルはGithub pagesに置くのが良さそうです。&lt;/p&gt;
&lt;p&gt;これは、podcastがいつまで続くかわからないので、最初はできるだけ無料で済ませたかったのですが、今は
なようなので、CDN使ってそこそこの速度で使えているんじゃないかなと思っています。&lt;/p&gt;
&lt;h2 id="feedburner"&gt;feedburner&lt;/h2&gt;
&lt;p&gt;購読者数などの統計情報を把握するのに、feed.pressがよく使われます。しかし、去年の夏頃にfeed.pressが全有料化したので、今回はfeedburnerを使いました。&lt;/p&gt;
&lt;p&gt;元となるfeedは、
を使って生成しています。&lt;/p&gt;
&lt;h1 id="ハマりどころ-失敗したところ"&gt;ハマりどころ 失敗したところ&lt;/h1&gt;
&lt;h2 id="show-notes"&gt;Show notes&lt;/h2&gt;
&lt;p&gt;rebuild.fmのようなリンク付きのshow notesを表示させるためには以下の情報が参考になります。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;条件としては、``entityの中の&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;``を使わない&lt;/li&gt;
&lt;li&gt;``を使う&lt;/li&gt;
&lt;li&gt;descriptionの中身のXMLをescapeする&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;の3条件を満たす必要があります。&lt;/p&gt;
&lt;p&gt;今回、feed burnerを使っているのですが、設定の途中で&amp;quot;I&amp;rsquo;m a podcaster&amp;quot;みたいな選択肢を選ぶと&amp;quot;SmartCast&amp;quot;というオプションが選ばれます。 しかし、これを選ぶとfeedburnerがitunesタグを勝手に付与しようとします。今回はJekyllのtemplateで生成するデータの方を使いたいので、下記の画面でSmartCastのチェックを外し停止します。&lt;/p&gt;
&lt;p&gt;
&lt;figure id="figure-スクリーンショット-2015-02-19-234357png"&gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="https://qiita-image-store.s3.amazonaws.com/0/11143/5bb84257-38ab-d5d2-9230-dca181e47633.png" alt="スクリーンショット 2015-02-19 23.43.57.png" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;figcaption&gt;
スクリーンショット 2015-02-19 23.43.57.png
&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id="しゃべりかた"&gt;しゃべりかた&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;早口になるのでゆっくりしゃべる&lt;/li&gt;
&lt;li&gt;相槌は基本打たない&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;特に後者はpodcast独特ですが、ラジオ番組とかでも相槌って基本打たないんですよね。結構我慢してる。これは、話者だと気にならないんですが、第三者として聞いていると邪魔なんですよね。情報量がない。 なので、相槌は我慢した方が良いです。&lt;/p&gt;
&lt;h2 id="itunes-storeの登録"&gt;iTunes storeの登録&lt;/h2&gt;
&lt;p&gt;iTunes storeの登録はすぐに出来ると謎の勘違いをしていましたが、1週間弱は承認までに必要です。 水やり通信の場合は4日かかりました。&lt;/p&gt;
&lt;h1 id="最後に"&gt;最後に&lt;/h1&gt;
&lt;p&gt;今回のpodcastを始めるにあたって、
の
さんや
の
さん、
の
さんには、色々アドバイスとモチベーションをいただきました。ありがとうございます。&lt;/p&gt;
&lt;p&gt;地域Rubyコミュニティ podcast の方も近々始めようと思いますので、そちらもお楽しみにして下さい :)&lt;/p&gt;</description></item><item><title>word2vec可視化するやつをipython notebookから見れるようにした</title><link>https://chezo.uno/post/2015-02-18-word2vecke-shi-hua-suruyatuwoipython-notebookkarajian-reruyounisita/</link><pubDate>Wed, 18 Feb 2015 10:45:17 -0800</pubDate><guid>https://chezo.uno/post/2015-02-18-word2vecke-shi-hua-suruyatuwoipython-notebookkarajian-reruyounisita/</guid><description>&lt;p&gt;オライリーから出てる、
の付録についてくる
さんが書いた可視化のコードがあります。&lt;/p&gt;
&lt;iframe src="//hatenablog-parts.com/embed?url=http%3A%2F%2Fd.hatena.ne.jp%2Fnishiohirokazu%2F20140109%2F1389251331" title="word2vecのword-analogyを可視化した - 西尾泰和のはてなダイアリー" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;a href="http://d.hatena.ne.jp/nishiohirokazu/20140109/1389251331"&gt;word2vecのword-analogyを可視化した - 西尾泰和のはてなダイアリー&lt;/a&gt;&lt;/iframe&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;これを、ipython notebookから扱えるようにしました。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;今回ipython notebookから使えるようにしたのは、厳密には上記のコードではなくて、
のコードなのですが、ある単語の周辺にある単語をPCAで2次元に縮退させて可視化してくれます。&lt;/p&gt;
&lt;iframe src="https://nbviewer.ipython.org/gist/chezou/3899461aa550f73854a1/word2vec.ipynb" width="640" height="800"&gt;&lt;/iframe&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;ipython notebookに関しての説明は、過去の記事を参照してください。&lt;/p&gt;
&lt;div class="iframely-embed"&gt;&lt;div class="iframely-responsive" style="height: 140px; padding-bottom: 0;"&gt;&lt;a href="https://chezo.uno/post/2015-01-11-dockershang-ninbviewerwoli-teteiruby-plus-nyaplotdemiao-itagurahuwogong-you-dekiruyounisitemita/" data-iframely-url="//iframely.net/9Xh22Us"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;script async src="//iframely.net/embed.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;同じ要領で、ベクトルの引き算をした空間の可視化の奴もできると思います。&lt;/p&gt;
&lt;p&gt;注意点としては、MacだとBoost.Pythonがsystem Pythonに対して入れなければならず(anacondaだと死にました)、ドはまりしたことでしょうか。 やはり、こうしたグラフをインタラクティブに生成するのはipython notebookの得意領域ですね&lt;/p&gt;</description></item><item><title>Garagebandでskypeとマイクの音を別トラックで録音する方法</title><link>https://chezo.uno/post/2015-02-14-garagebanddeskypetomaikunoyin-wobie-toratukudelu-yin-surufang-fa/</link><pubDate>Sat, 14 Feb 2015 15:50:08 -0800</pubDate><guid>https://chezo.uno/post/2015-02-14-garagebanddeskypetomaikunoyin-wobie-toratukudelu-yin-surufang-fa/</guid><description>&lt;p&gt;最近、rebuild.fmやwada.fmを聞いていると、自分もpodcastをはじめてみたいという気持ちが強くなってきました。&lt;/p&gt;
&lt;p&gt;試験的にskype経由でpodcast向けの録音をしてみたのですが、skypeのゲストと自分の声が別々の方が後々の編集作業が楽になるぞ、ということで以下のサイトを参考にやってみました。というか、ほとんどこの記事の日本語版という内容になっています。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h2 id="用意するもの"&gt;用意するもの&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="設定"&gt;設定&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;経路1
&lt;ul&gt;
&lt;li&gt;Skype -&amp;gt; Soundflower (2ch) -&amp;gt; Soundflower (16ch)の1,2ch&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;経路2
&lt;ul&gt;
&lt;li&gt;マイク -&amp;gt; Soundflower (16ch)の3,4ch&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ざっくり全体の設定を示す画像を先にはっておきます。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2015-02-14-garagebanddeskypetomaikunoyin-wobie-toratukudelu-yin-surufang-fa/20150214234917_hu_3af2f08b4227ca0c.webp 320w, https://chezo.uno/post/2015-02-14-garagebanddeskypetomaikunoyin-wobie-toratukudelu-yin-surufang-fa/20150214234917_hu_ded3a2e0f80f74ae.webp 480w, https://chezo.uno/post/2015-02-14-garagebanddeskypetomaikunoyin-wobie-toratukudelu-yin-surufang-fa/20150214234917_hu_be31e57d4937fa27.webp 717w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2015-02-14-garagebanddeskypetomaikunoyin-wobie-toratukudelu-yin-surufang-fa/20150214234917_hu_3af2f08b4227ca0c.webp"
width="717"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id="linein"&gt;LineIn&lt;/h3&gt;
&lt;p&gt;LineInは音をroutingするためのものです。&lt;/p&gt;
&lt;p&gt;LineInはアプリ自体をコピーして2つ開きます。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2015-02-14-garagebanddeskypetomaikunoyin-wobie-toratukudelu-yin-surufang-fa/20150214233717_hu_d849ded67c1f0b7d.webp 320w, https://chezo.uno/post/2015-02-14-garagebanddeskypetomaikunoyin-wobie-toratukudelu-yin-surufang-fa/20150214233717_hu_32b4e794c6e78a59.webp 452w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2015-02-14-garagebanddeskypetomaikunoyin-wobie-toratukudelu-yin-surufang-fa/20150214233717_hu_d849ded67c1f0b7d.webp"
width="452"
height="466"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;1つめのLineInでは、Inputを自分のマイク(写真では内蔵マイク)、Outputを&lt;code&gt;Soundflower (64ch)&lt;/code&gt;にします。さらに、&lt;code&gt;Advanced...&lt;/code&gt;を開いてOutputのLeft channelを3に、right channelを4にします。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2015-02-14-garagebanddeskypetomaikunoyin-wobie-toratukudelu-yin-surufang-fa/20150214233729_hu_fb086c2d9511d0e.webp 320w, https://chezo.uno/post/2015-02-14-garagebanddeskypetomaikunoyin-wobie-toratukudelu-yin-surufang-fa/20150214233729_hu_87badfae3116000d.webp 455w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2015-02-14-garagebanddeskypetomaikunoyin-wobie-toratukudelu-yin-surufang-fa/20150214233729_hu_fb086c2d9511d0e.webp"
width="455"
height="470"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;2つめのLineInでは、Inputを&lt;code&gt;Soundflower (2ch)&lt;/code&gt;、Outputを&lt;code&gt;Soundflower (64ch)&lt;/code&gt;にします。 さらに&lt;code&gt;Advanced...&lt;/code&gt;を開いて、Output Left channelを1, Right channelを2にします。&lt;/p&gt;
&lt;p&gt;設定が終わったら、&lt;code&gt;Play Thru&lt;/code&gt;を押します。&lt;/p&gt;
&lt;h3 id="skype"&gt;Skype&lt;/h3&gt;
&lt;p&gt;入力を、自分のマイク(今回は&lt;code&gt;内蔵マイク&lt;/code&gt;)、呼び出し音を自分の出力(今回は&lt;code&gt;内蔵出力&lt;/code&gt;)、スピーカーを&lt;code&gt;Soundflower (2ch)&lt;/code&gt;にします。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2015-02-14-garagebanddeskypetomaikunoyin-wobie-toratukudelu-yin-surufang-fa/20150214233746_hu_23a8583d0c5711e2.webp 320w, https://chezo.uno/post/2015-02-14-garagebanddeskypetomaikunoyin-wobie-toratukudelu-yin-surufang-fa/20150214233746_hu_9c31d391944b70e3.webp 359w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2015-02-14-garagebanddeskypetomaikunoyin-wobie-toratukudelu-yin-surufang-fa/20150214233746_hu_23a8583d0c5711e2.webp"
width="359"
height="204"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;こうすると、Skypeの出力が&lt;code&gt;Soundflower (2ch)&lt;/code&gt;を経由して&lt;code&gt;Soundflower (16ch)&lt;/code&gt;の3,4chに出ます。&lt;/p&gt;
&lt;h3 id="soundflowerbed"&gt;SoundflowerBed&lt;/h3&gt;
&lt;p&gt;SoundflowerはMac用の仮想サウンドデバイスです。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Soundflower (2ch)&lt;/code&gt;を&lt;code&gt;Build-In Output&lt;/code&gt;にします。 こうすることでSkypeの音を自分のヘッドホンなどに出力します。&lt;/p&gt;
&lt;p&gt;なお、64chの方はnoneのままにすることで、自分の音が遅延して聞こえる嫌な体験をしなくてすみます。&lt;/p&gt;
&lt;h2 id="garageband"&gt;Garageband&lt;/h2&gt;
&lt;p&gt;基本的に、トラックを全部削除して、新規トラックを作成するときにSoundflower(64ch)の1/2と3/4を分けて追加します。&lt;/p&gt;
&lt;p&gt;まず、&lt;code&gt;トラック→新規トラック&lt;/code&gt;でSkype側を録音するためのトラックを追加します。 その際に、リアル音源を選んで&lt;code&gt;音源の設定&lt;/code&gt;を押した後、&lt;code&gt;モノ1&lt;/code&gt;(あるいは&lt;code&gt;ステレオ1/2&lt;/code&gt;)を選びます。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2015-02-14-garagebanddeskypetomaikunoyin-wobie-toratukudelu-yin-surufang-fa/20150214234109_hu_78c90bf349d394c3.webp 320w, https://chezo.uno/post/2015-02-14-garagebanddeskypetomaikunoyin-wobie-toratukudelu-yin-surufang-fa/20150214234109_hu_92d37a8c54718767.webp 480w, https://chezo.uno/post/2015-02-14-garagebanddeskypetomaikunoyin-wobie-toratukudelu-yin-surufang-fa/20150214234109_hu_3a8beedd1937e471.webp 756w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2015-02-14-garagebanddeskypetomaikunoyin-wobie-toratukudelu-yin-surufang-fa/20150214234109_hu_78c90bf349d394c3.webp"
width="756"
height="542"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;同様に、自分のマイク用のトラックを追加します。 先ほどと同様にして、最後の入力を&lt;code&gt;モノ3&lt;/code&gt;(あるいは&lt;code&gt;ステレオ3/4&lt;/code&gt;)にします。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2015-02-14-garagebanddeskypetomaikunoyin-wobie-toratukudelu-yin-surufang-fa/20150214234348_hu_fbc889a9d8c1230b.webp 320w, https://chezo.uno/post/2015-02-14-garagebanddeskypetomaikunoyin-wobie-toratukudelu-yin-surufang-fa/20150214234348_hu_304ee81d6f59201b.webp 480w, https://chezo.uno/post/2015-02-14-garagebanddeskypetomaikunoyin-wobie-toratukudelu-yin-surufang-fa/20150214234348_hu_940a8f3685f29e8a.webp 758w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2015-02-14-garagebanddeskypetomaikunoyin-wobie-toratukudelu-yin-surufang-fa/20150214234348_hu_fbc889a9d8c1230b.webp"
width="758"
height="545"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;バージョン古いですが、こちらの動画も参考になります。&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/21DUC_x_z5g?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="ちなみに"&gt;ちなみに&lt;/h2&gt;
&lt;p&gt;最近のiPadのマイクはそこそこ良いので、とりあえず相手が機材を持っていないのであれば、iPadかiPhoneのskypeから参戦するのも良さそうです。&lt;/p&gt;
&lt;p&gt;
で配信できるということがわかったので、最初のPodcastはJekyll(octopress)をGithub pagesで使って無料で構築することにしました。&lt;/p&gt;
&lt;p&gt;ゆくゆくはIDCクラウドフロンティアもクーポンがあるので、そっちも試してみたいです。&lt;/p&gt;</description></item><item><title>神奈川Ruby会議を開催しました #kana01</title><link>https://chezo.uno/post/2015-01-25-shen-nai-chuan-rubyhui-yi-wokai-cui-simasita-number-kana01/</link><pubDate>Sat, 24 Jan 2015 16:41:03 -0800</pubDate><guid>https://chezo.uno/post/2015-01-25-shen-nai-chuan-rubyhui-yi-wokai-cui-simasita-number-kana01/</guid><description>&lt;p&gt;去る2015年1月17日に神奈川Ruby会議を行いました。
にはスライドや動画も上げましたのでよろしければご覧ください。また、るびま班が近々レポートを上げてくれるはずですので、そちらもお楽しみに。&lt;/p&gt;
&lt;p&gt;スタッフの反省会はこれからですが、その前に自分自身で振り返ってみたいと思います。&lt;/p&gt;
&lt;h2 id="なぜやったか"&gt;なぜやったか&lt;/h2&gt;
&lt;p&gt;僕自身、
に参加したのがはじめてのRubyコミュニティの活動への参加でした。 予備知識もなく行ったのですが、Rubyの世界にもっと飛び込んでみたいと思ったのを覚えています。そして翌月からはyokohama.rbに通うようになり、kawasaki.rbを立ち上げました。&lt;/p&gt;
&lt;p&gt;kawasaki.rbを開催する中で、RailsをやっていないRubyistに来てもらえることが結構多いなーと感じていました。また、昼間はJava/PHPで趣味でRuby書いてますみたいな人も多いように感じていました。 勉強会や地域Rubyコミュニティは東京に集中しているけど、神奈川みたいな東京以外にもRubyを触っている人はいっぱいいるはずで、そういう人たちで集まってリージョナルをやると一味違った会になるのではないか、という想いが強くなりました。 また、普段あまり勉強会に出ないエンプラな人たちとっても、Rubyコミュニティに参加できるきっかけになるようなリージョナルをやりたい、と思いました。 そして、エンプラな人やWebな人が様々な場所でクロスする、そんなきっかけの会議になるといい、そう思っていました。&lt;/p&gt;
&lt;h3 id="techyじゃないリージョナルruby会議"&gt;techyじゃないリージョナルRuby会議&lt;/h3&gt;
&lt;p&gt;会議中にも僕自身言ってしまったのですが、「エモいリージョナルRuby会議」だったと思います。 プログラムを考える段階で、技術に触れるのはむしろペアプロだけになるな、とはわかっていましたが、あえてそういう構成にしました。 ペアプロは準備をきちんとしただけあって、かなり楽しんでいただけたようで嬉しかったです。&lt;/p&gt;
&lt;p&gt;それは、Railsという前提を持たないで、楽しんでもらうにはどうしたら良いだろうか、ということを考えた結果でもあり、はじめてのリージョナルがどういう形ならモチベートされるだろう、ということも考えていました。&lt;/p&gt;
&lt;p&gt;高橋会長が偶然にも講演の中で「勉強会で勉強するのは思ったより効率が悪い」という話をされていましたが、それについての説明で「つながりを作ったり、疑問に思ってること/わからないことを質問したり、モチベーションを高めたりするという効果が大きい」というを話されていました。 モチベーションを維持したり上げたりするのに、こういうリージョナルのようなイベントや勉強会は非常に良いという想いを僕自身持っており、面白いことをやっている人の話を聴くだけで、自分も創造的な活動をしようという気になってきました。それを恩返ししたいと思っていたのでした。&lt;/p&gt;
&lt;p&gt;もう一つ、せっかくだからRubyにまつわる色々な立場の人を集めて、自身の言葉でエンジニア(やその先から発展したマネージャー、経営層)の考えに触れたいとも思っていました。 トークセッションを中心に、「何を作ったか」ではなくて「どう考えてきてどう歩んでいるか」にフォーカスするような話をお聞かせいただきました。 ソフトウェア業界の歴史自体がまだ浅く、キャリアパスについて何がベストプラクティスかがわからないという人も多いのではないでしょうか。そうしたなかで、咳さんのチームの中での帽子を発明してもいいんだよ、という言葉ではありませんが、絶対的なパスが無い中でいかに自分の道を選ぶかの事例として参考に出来る部分があれば良かったなと思っています。&lt;/p&gt;
&lt;p&gt;技術的な楽しみは、ペアプロでやってもらえばいい、そう割りきりましたが、結果的に幅広いレベルの人に楽しんでもらえたようで良かったです。&lt;/p&gt;
&lt;h3 id="切り捨てたもの"&gt;切り捨てたもの&lt;/h3&gt;
&lt;p&gt;コミュニティのLTの時間を設けませんでした。 これはあえて割り切っていたのだけれど、結構色々な方から「LTの募集はいつですか？」と聞かれました。コンセプトによるとは思うのだけど、大江戸Ruby会議のように「生活発表会」というスタイルでやるのであればLTの時間は設けても良いと思います。&lt;/p&gt;
&lt;p&gt;ここらへん、次回やるとしたら(コンセプトにもよるけど)多分やるのかなぁと思います。&lt;/p&gt;
&lt;p&gt;今回、yokohama,kawasakiの両コミュニティの助力を得ながら進めていったのですが、もっと協力したかった、という声をいただいたのも事実です。ですので、普段やっていることベースで表現する場所があってもよかったな、というふうに思います。&lt;/p&gt;
&lt;h2 id="やると決めてからの流れ"&gt;やると決めてからの流れ&lt;/h2&gt;
&lt;h3 id="前半戦"&gt;前半戦&lt;/h3&gt;
&lt;p&gt;2014年の4月にはサイボウズLiveに一つ目のToDoができていました。 この段階で会場にはだいたい当たりをつけて交渉を始めていました。 ちなみに、日時の決定はもう少し先までかかったのですが、ShibuyaRuby会議やTokyu Ruby会議など様々なリージョナルとかぶる日程になりそうだったので、年をずらしての開催としました。&lt;/p&gt;
&lt;p&gt;コンセプトも決めて、登壇者もこの人にお願いしたいというのを話し合いで決めて、満足して1,2ヶ月止まるということもザラにありました。&lt;/p&gt;
&lt;h3 id="後半戦"&gt;後半戦&lt;/h3&gt;
&lt;p&gt;サイトを作ったり、トークセッションの打ち合わせをしたり、Tシャツ作ることにしたり、色々ありました。&lt;/p&gt;
&lt;p&gt;Tシャツは、アンチハラスメントポリシーを決めた段階で相談できる相手がわかりやすいのが大事であろう、ということもあり導入しました。
@
さんにはとても感謝しています。&lt;/p&gt;
&lt;p&gt;
のPaulにも色々相談に乗ってもらって助かりました。&lt;/p&gt;
&lt;h3 id="開催当日"&gt;開催当日&lt;/h3&gt;
&lt;p&gt;設営はNTT-ATさんにほぼ全面的に協力していただく形で、ほとんどお任せ状態でした。 朝会をやり、バタバタしながらのオペレーションでした。(特に、1syoさんとmiyohideさんには大分助けられました)&lt;/p&gt;
&lt;p&gt;当日、実行委員長は他に何もやっちゃいけないという当たり前のことを痛感しました。&lt;/p&gt;
&lt;h3 id="ツール"&gt;ツール&lt;/h3&gt;
&lt;p&gt;チャットにはFacebook Messengaerを使い、タスク管理にはサイボウズLiveを使いました。 今どきだったら、Slack+Github private repoなのだとは思うが、2014/2とかの段階ではまだSlackという選択肢をあまり考えられていませんでした。&lt;/p&gt;
&lt;p&gt;特に我々のコアスタッフの中にはGithubが社内proxyで阻まれている人がいたため、モバイルアプリが安定していることと、Githubのprivate repoはお金がかかるため、プロジェクトが終わった時に削除するとデータもアクセスできなくなるというデメリットが発生します。 あと、サイボウズLiveについては、一元管理ができるという期待を持って使っていました。実際には通知周りや検索、モバイルアプリの辛さが重なりました。&lt;/p&gt;
&lt;p&gt;結局は一覧・検索性の高さが大事で、それが担保されていなければ一元管理した所で意味が無いと気づいたのはもう色々やり始めた後でした。&lt;/p&gt;
&lt;p&gt;今やるなら、Androidアプリも安定してきたこともありSlack+Google Docsでの共有で進めると思います。Google DocsはGoogle groupsでメンバー管理をすると、グループに対する権限のコントロールが簡単になります。 ただし、緊急の時のためにFacebookでつながっているとMessengerで電話がかけれるのでおすすめです。&lt;/p&gt;
&lt;p&gt;ちなみに、公式サイトは既に立ち上がっていたkawasaki.rbにのっかる形でJekyll in Jekyllにしました。(かなりハマりどころが多くて同一orgに二個サイトは辛かった)&lt;/p&gt;
&lt;h2 id="感想"&gt;感想&lt;/h2&gt;
&lt;p&gt;はじめての実行委員長業務で不慣れな中を、色々と手から溢れることをスタッフの仲間に支えてもらってなんとか走り抜けることができました。&lt;/p&gt;
&lt;p&gt;個人的には、お話いただいた講演はどれも想像していた以上に、Rubyistとしてソフトウェアエンジニアとしてどう進んでいくべきかという考える種に富んでいた内容で嬉しかったです。&lt;/p&gt;
&lt;p&gt;特に高橋会長の「文化としてのRubyを広めていく」という話を聞いて、まさに自分がこの会議でやりたかったことだとうのを再認識させられました。Rubyが良い理由は様々なところにあって、「Gemfileやbundler便利じゃん、なんでこの言語にないのよ？」って気軽に展開していく様とか、当たり前と思っているところが実はRubyの文化を背景にしているからなんだなぁと振り返っていました。&lt;/p&gt;
&lt;p&gt;あと、気づけば31歳になっていたので、miyohideさんが「コミュニティ活動していて嬉しかったこと」としてあげていた、例のリストを共有して終わりたいと思います :)&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>非エンジニアのコミュニティにSlackを導入した話 #ingress</title><link>https://chezo.uno/post/2015-01-16-fei-enzinianokomiyuniteinislackwodao-ru-sitahua-number-ingress/</link><pubDate>Thu, 15 Jan 2015 17:10:49 -0800</pubDate><guid>https://chezo.uno/post/2015-01-16-fei-enzinianokomiyuniteinislackwodao-ru-sitahua-number-ingress/</guid><description>&lt;p&gt;普通の人達&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; の集まりである、Ingressの地域コミュニティでSlackを導入してそろそろ3ヶ月になったので、知見を書こうと思います。&lt;/p&gt;
&lt;h1 id="ingress内でのコミュニケーション"&gt;Ingress内でのコミュニケーション&lt;/h1&gt;
&lt;p&gt;Ingressではゲーム内のチャットはcommと呼ばれるものがありますが、ほとんど使われていません。&lt;/p&gt;
&lt;p&gt;その理由は主に2つあります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;commは行動ログが流れる中でメンションができるというスタイルをとっているため、特に関東圏では流れるデータ量が多すぎてiOS版のcommはフリーズの原因として嫌われている&lt;/li&gt;
&lt;li&gt;全体公開のチャットと自陣内のチャットとがタブ一つ隣り合わせのため、うっかりチームチャットを公開してしまう事故が多発する&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;そこで、多くの場合はGoogleアカウントとの親和性の高いGoogle+での広い地域のコミュニティ&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt; と、地元の地域チャットとしてHangoutの組み合わせで使われてきました。 これは、どうも国内だけの話ではなく、台湾ではLINEが使われるなど別のチャットサービスが使われることで、ゲーム内チャットの代替を果たしてきました。&lt;/p&gt;
&lt;p&gt;特にHangoutでのチャットはゲームに対するモチベーションの向上に大きく寄与しており、一人だとめげそうでも仲間と一緒に活動を報告しあうことで継続してプレイをする気が増します。&lt;/p&gt;
&lt;p&gt;これらのことから、Ingressは
。&lt;/p&gt;
&lt;h1 id="hangout-to-slack"&gt;Hangout to Slack&lt;/h1&gt;
&lt;p&gt;日本のIngress人口は、iPhone版の登場と同時に爆発的な人口増加をすることとなります&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt; 。2014/12に開催された公式イベントDarsana Tokyoでは5000人を超える参加者が参加したと言われています。&lt;/p&gt;
&lt;p&gt;しかし、プレイヤー人口が増えるとHangoutでのチャットが辛くなるのです。 もともとHangoutはLINEなどと似たような指向のメッセージングアプリのため、グループチャットが100人以上参加できないという制約があります。 従来、Hangoutの人数の上限に達したらどうしてきたかというと、地域を細かく分割して再配分をするという方法で対処してきたのですが、その周期がどんどん短くなってきていました。&lt;/p&gt;
&lt;p&gt;そこで、職場の人たちと使っていたSlackの導入を提案してみました&lt;sup id="fnref:4"&gt;&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref"&gt;4&lt;/a&gt;&lt;/sup&gt; 。&lt;/p&gt;
&lt;p&gt;昨今では
と言われるSlackですが、実はあのTim Brayも、Ingressの地域コミュニティのツールをHangoutからSlackに移行していたようです。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;先ほどのTim Brayの記事にもありますが、Hangoutは以下の様な辛さがありました&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;100人以上のチームを作れない&lt;/li&gt;
&lt;li&gt;エージェント名(ゲーム内の名前)とGoogle+の名前の対応付けが困難&lt;/li&gt;
&lt;li&gt;PCからの利用が辛い&lt;/li&gt;
&lt;li&gt;大人数のチームに複数所属していると、アプリがしょっちゅうクラッシュする&lt;/li&gt;
&lt;li&gt;iOSにはデフォルトで入っておらず、招待の許可を緩めないと招待されたことに気づかない&lt;/li&gt;
&lt;li&gt;参加者をbanできない&lt;/li&gt;
&lt;li&gt;APIを使うのがハードルが高い&lt;/li&gt;
&lt;li&gt;ビデオ通話を誤爆する&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="slackの強み"&gt;Slackの強み&lt;/h1&gt;
&lt;p&gt;SlackはIRCの系統の色が強く、チャットをするためのツールです。なので、SlackではHangoutと比較して以下のようなことができます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;エージェント名を表示名にできる&lt;/li&gt;
&lt;li&gt;ユーザに対するメンション&lt;/li&gt;
&lt;li&gt;メッセージの編集、削除ができる！&lt;/li&gt;
&lt;li&gt;チャンネル毎に自分の未読まで戻りやすい&lt;/li&gt;
&lt;li&gt;通知の制御(HangoutだとチームごとにON/OFFしかできないが、all/mentionのみ/なし、がチャンネル単位で選べる)&lt;/li&gt;
&lt;li&gt;botやIFTTTなどとのインテグレーションが簡単にできる&lt;/li&gt;
&lt;li&gt;検索が便利&lt;/li&gt;
&lt;li&gt;チーム内のチャンネル(部屋)の移動コストが低いので、チャンネルを気軽に作れる&lt;/li&gt;
&lt;li&gt;PC側のアプリ/Webアプリが優秀&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;特にチャンネルの作成/捨てるコストが低いので、皆思い思いのチャンネルを作っています。特に人気なのは飯テロチャンネルで、地元の人達がおすすめのご飯やさん情報や🍶情報が、写真とともに流れてきてとても便利です。&lt;/p&gt;
&lt;p&gt;Slackは無料だと保持・検索できるメッセージ数が1万件まで、インテグレーションの数が5つまで、という制限があります&lt;sup id="fnref:5"&gt;&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref"&gt;5&lt;/a&gt;&lt;/sup&gt; が、普通に使うぶんには特に問題は感じていません。&lt;/p&gt;
&lt;h1 id="非エンジニアの人へ普及するために"&gt;非エンジニアの人へ普及するために&lt;/h1&gt;
&lt;p&gt;私達のようなソフトウェアでご飯を食べているようなエンジニアにとっては、こういった新しいツールはあればほっといてもどんどん使って行きます。 逆に、そうでない人も多く参加するのがIngressの面白いところです。高校生から
まで幅広い層がいたりします。&lt;/p&gt;
&lt;p&gt;そうした人の中には、Hangoutの使い方もよくわからないという人も結構います。また、英語のソフトは全くダメ！という人も多くいます。 そう、Slackはすべて英語なのです。&lt;/p&gt;
&lt;p&gt;PCのブラウザだと丁寧なチュートリアルがあるのでだいぶ楽ですが、モバイルアプリだと写真の設定のために、ブラウザの設定画面開かないといけないなど結構不親切です。&lt;/p&gt;
&lt;p&gt;こうした問題をクリアするために、有志が丁寧なスクリーンショット付きのマニュアルを作り共有することで、敷居を下げる努力をしてくれています。&lt;/p&gt;
&lt;p&gt;余談ですが、変化の激しいWebサービスのマニュアルを更新し続けることはかなりしんどいです。 自分も普段はWebサービスの提供側なので、ドキュメントを追従し続けるのは結構辛いのはわかっていますが、丁寧にマニュアルを作ってくれたコミュニティの仲間には頭が上がりません。&lt;/p&gt;
&lt;p&gt;このドキュメントは、同陣営の他のSlackへも利用してもらえるように横展開しています。&lt;/p&gt;
&lt;h1 id="さらに便利にするための工夫"&gt;さらに便利にするための工夫&lt;/h1&gt;
&lt;h2 id="welocomeメッセージのような定型文bot"&gt;Welocomeメッセージのような定型文bot&lt;/h2&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2015-01-16-fei-enzinianokomiyuniteinislackwodao-ru-sitahua-number-ingress/20150116010955_hu_4637fc41349d84d5.webp 320w, https://chezo.uno/post/2015-01-16-fei-enzinianokomiyuniteinislackwodao-ru-sitahua-number-ingress/20150116010955_hu_61ad8a64e0eb41cc.webp 480w, https://chezo.uno/post/2015-01-16-fei-enzinianokomiyuniteinislackwodao-ru-sitahua-number-ingress/20150116010955_hu_c098b0850ba540a9.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2015-01-16-fei-enzinianokomiyuniteinislackwodao-ru-sitahua-number-ingress/20150116010955_hu_4637fc41349d84d5.webp"
width="760"
height="156"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;slackにはslackbotという、キーワードに対して定型文を返すbotがいるため、新規参加者に対するテンプレなんかをこれで提示するようにしています。 最近では、slackbotは改行した文を出力できないため、Google Driveの特定のドキュメントを取得して、welcomeメッセージを出すbotも出現しています。&lt;/p&gt;
&lt;h2 id="google-driveの共有フォルダ"&gt;Google Driveの共有フォルダ&lt;/h2&gt;
&lt;p&gt;Google Driveのフォルダに対して、Google groupに権限を付与するとそこに参加しているgroup全員が読み書きできるようにしています。 そうすることで、ファイルやディレクトリ単位での権限を人単位でコントロールすることが無くてかなり楽です。&lt;/p&gt;
&lt;p&gt;ちなみに、当初はesa.ioでドキュメント共有をしており評判も上々だったのですが、ゲームのコミュニティではお金を捻出できないため諦めました。&lt;/p&gt;
&lt;h2 id="参加申請処理のための部屋"&gt;参加申請処理のための部屋&lt;/h2&gt;
&lt;p&gt;我々は、参加申請のためのGoogleフォームを用意して、そのメールをIFTTTで特定のprivate groupに通知するようにしています。 こうすることで、特定の人だけが参加申請処理をすることなく負荷分散を図っています。&lt;/p&gt;
&lt;h2 id="気軽にいいねをするために"&gt;気軽にいいねをするために&lt;/h2&gt;
&lt;p&gt;
というのを入れています。&lt;/p&gt;
&lt;iframe src="https://hatenablog.com/embed?url=http%3A%2F%2Fyoshiori.github.io%2Fblog%2F2014%2F07%2F10%2Freleased-scorekeeper%2F" title="気軽なポジティブ・フィードバック好き - yoshiori.github.io" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;a href="http://yoshiori.github.io/blog/2014/07/10/released-scorekeeper/"&gt;気軽なポジティブ・フィードバック好き - yoshiori.github.io&lt;/a&gt;&lt;/iframe&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;chezou++
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;みたいな感じで書くとスコアが加算され、誰かを簡単に褒めることができて便利です。&lt;/p&gt;
&lt;h1 id="ingressコミュニティでの多様性と化学反応"&gt;Ingressコミュニティでの多様性と化学反応&lt;/h1&gt;
&lt;p&gt;普段自分がいるのは会社や勉強会だとRuby界隈の人が多いのですが、Ingressという軸で集まっていると、様々なスキルセットの人が集まってきます。 自宅に24Uのラック設置している人もいたり、普段なかなか会えない感じの面白い人がいます。 言語的にもPHP、Java、Python、JSなどいろんな人達が自分の得意な言語でサクッとbotやウェブアプリケーションを実装しています。&lt;sup id="fnref:6"&gt;&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref"&gt;6&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;趣味のプログラミングは、自分の作りたいもの、やりたい事をいかに見つけるかが大事だと思うのですが、こういうゲームコミュニティでのツールやアプリづくりも直接的なユーザーの顔を想像しながら開発ができるので楽しいです。 また、普段あまり触らない言語でも共同で作業するためにさわってみようかなーという気になるので、新鮮な気持ちで色々作ることが出来ます。&lt;/p&gt;
&lt;h1 id="コミュニティの形成"&gt;コミュニティの形成&lt;/h1&gt;
&lt;p&gt;コミュニティの人数が増えてくるということは、盛り上がる反面、トラブルが起こったりすることも増えるかもしれません。&lt;/p&gt;
&lt;p&gt;ちょうど、Team Geekを読んでいた時に、このHRTの考え方はゲームのコミュニティでも十分生きるなと思っていました。 以下にしてIngressに集中できる環境を作るかが、コミュニティ形成で大事なことになります。仲間内でのつまらないいざこざは、時間とエネルギーの無駄になるので、スムーズなコミュニケーションが出来る場を作れるようになっていきたいです。&lt;/p&gt;
&lt;p&gt;Art of Communityもコミュニティ運営に非常に役に立つと
さんから勧められているので、読んでみようと思っています。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4873116309/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
Team Geek ―Googleのギークたちはいかにしてチームを作るのか
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作者: Brian W. Fitzpatrick,Ben Collins-Sussman,角征典&lt;/li&gt;
&lt;li&gt;出版社/メーカー: オライリージャパン&lt;/li&gt;
&lt;li&gt;発売日: 2013/07/20&lt;/li&gt;
&lt;li&gt;メディア: 単行本（ソフトカバー）&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4873114950/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
アート・オブ・コミュニティ ―「貢献したい気持ち」を繋げて成果を導くには (THEORY/IN/PRACTICE)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作者: Jono Bacon,渋川よしき&lt;/li&gt;
&lt;li&gt;出版社/メーカー: オライリージャパン&lt;/li&gt;
&lt;li&gt;発売日: 2011/05/26&lt;/li&gt;
&lt;li&gt;メディア: 大型本&lt;/li&gt;
&lt;li&gt;購入: 38人 クリック: 1,022回&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="追記"&gt;追記&lt;/h1&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[
]&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;slackについてはよく知ってるので、それよりも非エンジニアの人から見た感想がきになる&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;script src="https://b.st-hatena.com/js/comment-widget.js" charset="utf-8" async&gt;&lt;/script&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
さんからコメントいただいたので、少しメンバーに聞いてみました。ざっくりとした感想というよりは、良い/悪いを聞いてしまったのでもしかすると気になっている所とずれているかもしれません。&lt;/p&gt;
&lt;p&gt;女性の方&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;slackのここが良い→英語だけど、画面を見るだけで大体の機能がわかる。分かりやすい 。&lt;/p&gt;
&lt;p&gt;ここが辛い→スマホからだと@名前と入力し辛い(予測変換で名前が出ないので長い名前だと打ち間違える)、連続して違う発言をすると文章が前後でくっ付いてひとつになって読みにくい とかでしょうか&lt;/p&gt;
&lt;p&gt;チャットはHOのようなセリフのコマ画面？が出る、出ない、というので話しやすさが違うなーとは感じますが、慣れました（笑）&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;(この方は、半角スペースを入れないと補完されないということに気づいていないようでした)&lt;/p&gt;
&lt;p&gt;男性の方&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;slackのここが良い→チャンネル設定や出入りが自由にできる。&lt;/p&gt;
&lt;p&gt;ここが辛い→スマホアプリだとハングアウトの絵文字が使えない&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;男性のWebデザイナー&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;絵文字追加できるのが良い&lt;/p&gt;
&lt;p&gt;発言の削除・編集ができるので事故が減った&lt;/p&gt;
&lt;p&gt;スマホでは絵文字の名前がわからないと呼び出せないのが辛い。&lt;/p&gt;
&lt;p&gt;スマホでは参加チームが多くなった時の切り替えが多少面倒臭い。&lt;/p&gt;
&lt;p&gt;LINEのようなスタンプが無いｗ&lt;/p&gt;
&lt;p&gt;画像投稿の画像を拡大したい時、スマホではワンクッション入るのが面倒。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;男性の方&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;slackはandroidからだと絵文字が小さくて何なのか見えない。あとやっぱ一般的に英語なのがたぶん壁(一番高い)。&lt;/p&gt;
&lt;p&gt;検索できるけど、すぐなくなる&lt;/p&gt;
&lt;p&gt;アイコン画像を拡大したい衝動にこたえてくれない&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;HO=Hangoutです。 結構Hangoutに慣れている人が多く回答してくれているっぽくて比較が多いようですが、英語だけど苦にならないという人と、英語だから辛いという意見が割れているのが興味深いです。 逆に言うと、それ以外の点では複数チーム切り替えとかの難点を除けば受け入れられているという印象です。 我々はMacアプリを前提に考えてしまうのですが、モバイル・アプリのみの人やWindowsの人もいるため、そこら辺もケアしながら進めるのが大事ですね。特にAndroidアプリはiOSに比べて足りない要素が多いので、今後に期待です。&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;プレイスタイルが廃人な人たちもいるけど、そういう意味とは違う&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;例えば
&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:3"&gt;
&lt;p&gt;私自身もiPhoneで始めた口ですが&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:4"&gt;
&lt;p&gt;どうも聞いてる感じだと日本のIngressコミュニティの中でも、最初期にSlackを導入したのかもしれません&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:5"&gt;
&lt;p&gt;2015/01/15現在&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:6"&gt;
&lt;p&gt;個人的にはPHPの人とこんなところで共同作業するとは思っていなかった&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>Docker上にnbviewerを立ててiruby+Nyaplotで描いたグラフを共有できるようにしてみた</title><link>https://chezo.uno/post/2015-01-11-dockershang-ninbviewerwoli-teteiruby-plus-nyaplotdemiao-itagurahuwogong-you-dekiruyounisitemita/</link><pubDate>Sat, 10 Jan 2015 19:19:31 -0800</pubDate><guid>https://chezo.uno/post/2015-01-11-dockershang-ninbviewerwoli-teteiruby-plus-nyaplotdemiao-itagurahuwogong-you-dekiruyounisitemita/</guid><description>&lt;p&gt;昨年末に
でも話題になった、RubyのライブラリMikonとNyaplotで生成したグラフをipython notebookとして社内のGHEでも共有することを目標に、
をlocalのdocker上で立ててみました。&lt;/p&gt;
&lt;p&gt;ちなみに、1/10のyokohama.rbでモクモクした成果です。&lt;/p&gt;
&lt;p&gt;(今回は手元で検証したため、Macでdocker環境を構築しています。GHEでの検証までは行っていません)&lt;/p&gt;
&lt;h1 id="nbviewerとは"&gt;nbviewerとは&lt;/h1&gt;
&lt;p&gt;皆さん、
はご存知でしょうか？&lt;/p&gt;
&lt;p&gt;ipython notebookは以下の特徴を持ちます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;対話的に書いたコードと実行結果が描画されて、それを保存できる&lt;/li&gt;
&lt;li&gt;markdownも書ける&lt;/li&gt;
&lt;li&gt;nbviewerを使えば、notebookが共有できる！&lt;/li&gt;
&lt;li&gt;Python,Ruby,Juliaが対応している&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Rubyの例ですがTokyu Ruby会議で発表したスライドを貼っておきます。 kawasaki.rbではipython notebookで
。&lt;/p&gt;
&lt;iframe src="//www.slideshare.net/slideshow/embed_code/42147157" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen&gt; &lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;
&lt;/strong&gt; from &lt;strong&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;これだけだと魅力がわかりにくいと思うので、実行結果を貼ります。 描画したグラフも共有できるのが大きな魅力だと思います。&lt;/p&gt;
&lt;iframe src="https://nbviewer.ipython.org/github/chezou/iruby-example/blob/master/graph-example.ipynb" width="640" height="455"&gt; &lt;/iframe&gt;
&lt;p&gt;もしかすると、Gunosyの粟飯原さんが
をご覧になった方もいるかもしれません。&lt;/p&gt;
&lt;p&gt;また、Mining the Social Web 2nd Editionが
を用意していたりします。(コードの教育にも向いていると思います)&lt;/p&gt;
&lt;p&gt;この、ブラウザで手軽にipython notebookの結果を見れるようにしているのがnbviewerです。githubで公開されているレポジトリやgistなら特に問題なく静的に再現してくれるのが特徴です。 nbviewerのいいところは、Python, Ruby, Juliaの実行環境がなくてもjsonをレンダーしているだけなのでブラウザで表示できることです。&lt;/p&gt;
&lt;p&gt;便利なnbviewer+ipython notebookですが、社内のGHEに使いたい場合は自分でnbviewerを立てなければなりません。 そこで、今回はnbviewerを手元のMacとboot2dockerで動かしてみます。&lt;/p&gt;
&lt;h1 id="macでdocker"&gt;Macでdocker&lt;/h1&gt;
&lt;p&gt;Macでは
を使ってVirtualBox上にdockerの環境を立てます。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;brew install boot2docker boot2docker init boot2docker up
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="もしboot2docker-initに失敗したら"&gt;もしboot2docker initに失敗したら&lt;/h2&gt;
&lt;p&gt;自分の環境のVirtualBoxは古かったので、途中でこんなエラーがでました。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;error in run: Failed to initialize machine &amp;quot;boot2docker-vm&amp;quot;: exit status 1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;
を見ると、VirtualBoxのバージョンが古いとダメなようなので、VirtualBoxをアップデート後に&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;boot2docker delete boot2docker init
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;で無事起動しました。&lt;/p&gt;
&lt;h1 id="jupyter-notebook-viewer"&gt;Jupyter Notebook Viewer&lt;/h1&gt;
&lt;p&gt;Dokcer上でnbviewerを動かすには、用意されているdocker imageを使えばよいです。&lt;/p&gt;
&lt;p&gt;基本的には公式に従えば大丈夫です。
&lt;/p&gt;
&lt;p&gt;基本的にgistやgithubのレポジトリに置いたipynbを表示するのに使うので、予めgithubでapi tokenを取得しておきましょう。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker pull jupyter/nbviewer docker run -p 8080:8080 jupyter/nbviewer -e 'GITHUB\_API\_TOKEN=YOUR\_API\_TOKEN'
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id="nbviewerを起動する"&gt;nbviewerを起動する&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;open http://$(boot2docker ip 2\&amp;gt;/dev/null):8080/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;これで、あなたのブラウザにdocker上のnbviewerが見れるはずです！&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2015-01-11-dockershang-ninbviewerwoli-teteiruby-plus-nyaplotdemiao-itagurahuwogong-you-dekiruyounisitemita/20150111031411_hu_43d5ca004b1ea69b.webp 320w, https://chezo.uno/post/2015-01-11-dockershang-ninbviewerwoli-teteiruby-plus-nyaplotdemiao-itagurahuwogong-you-dekiruyounisitemita/20150111031411_hu_f36daf609ceb97f.webp 480w, https://chezo.uno/post/2015-01-11-dockershang-ninbviewerwoli-teteiruby-plus-nyaplotdemiao-itagurahuwogong-you-dekiruyounisitemita/20150111031411_hu_2acaf14378df8820.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2015-01-11-dockershang-ninbviewerwoli-teteiruby-plus-nyaplotdemiao-itagurahuwogong-you-dekiruyounisitemita/20150111031411_hu_43d5ca004b1ea69b.webp"
width="760"
height="477"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;以下のURLを入れて試してみました。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2015-01-11-dockershang-ninbviewerwoli-teteiruby-plus-nyaplotdemiao-itagurahuwogong-you-dekiruyounisitemita/20150111031415_hu_22ee9ae0b3f3c839.webp 320w, https://chezo.uno/post/2015-01-11-dockershang-ninbviewerwoli-teteiruby-plus-nyaplotdemiao-itagurahuwogong-you-dekiruyounisitemita/20150111031415_hu_28eb4840990960c7.webp 480w, https://chezo.uno/post/2015-01-11-dockershang-ninbviewerwoli-teteiruby-plus-nyaplotdemiao-itagurahuwogong-you-dekiruyounisitemita/20150111031415_hu_bd24ca894199bda1.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2015-01-11-dockershang-ninbviewerwoli-teteiruby-plus-nyaplotdemiao-itagurahuwogong-you-dekiruyounisitemita/20150111031415_hu_22ee9ae0b3f3c839.webp"
width="760"
height="487"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Nyaplot 3Dのグラフはマウスでグリグリ動かせるので楽しいですね。&lt;/p&gt;
&lt;h1 id="rubyのmikonnyaplotで可視化"&gt;RubyのMikon+Nyaplotで可視化&lt;/h1&gt;
&lt;p&gt;さて、Mikonとd3.jsを使ったiruby上の可視化ライブラリNyaplotを使って可視化してみます。&lt;/p&gt;
&lt;p&gt;MikonはRubyにおけるpandasのような位置づけで、表形式のデータ操作が得意なライブラリです。いわゆる、Rで有名な
がRubyで扱えるようになります。 NyaplotはJuliaでいうところのGadfly的な位置づけで、グラフの描画ができるライブラリです。面白い事例では地図の可視化とかも出来たりします。&lt;/p&gt;
&lt;p&gt;MikonはNMatrixに依存しており、こいつがCBLASなど依存が激しくMacでビルドをするのが大変だったので、こちらも
。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker pull domitry/sciruby-docker docker run -i -p 9999:9999 domitry/sciruby-docker:latest open http://$(boot2docker ip 2\&amp;gt;/dev/null):9999/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;今回は次のgistを可視化してみました。
&lt;/p&gt;
&lt;p&gt;nbviewerで見る場合は
&lt;/p&gt;
&lt;p&gt;こんな感じでipython notebookが無事見れるようになりました。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2015-01-11-dockershang-ninbviewerwoli-teteiruby-plus-nyaplotdemiao-itagurahuwogong-you-dekiruyounisitemita/20150111031419_hu_45151a85370e2bf6.webp 320w, https://chezo.uno/post/2015-01-11-dockershang-ninbviewerwoli-teteiruby-plus-nyaplotdemiao-itagurahuwogong-you-dekiruyounisitemita/20150111031419_hu_9e377a511028b22.webp 480w, https://chezo.uno/post/2015-01-11-dockershang-ninbviewerwoli-teteiruby-plus-nyaplotdemiao-itagurahuwogong-you-dekiruyounisitemita/20150111031419_hu_e37004e02d65df1.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2015-01-11-dockershang-ninbviewerwoli-teteiruby-plus-nyaplotdemiao-itagurahuwogong-you-dekiruyounisitemita/20150111031419_hu_45151a85370e2bf6.webp"
width="760"
height="667"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h1 id="雑感"&gt;雑感&lt;/h1&gt;
&lt;p&gt;今回、GHEでの検証まではしていませんが、概ねGHE上のgistやレポジトリのipython notebookを描画することはできそうな目処が経ちました。&lt;/p&gt;
&lt;p&gt;しかし、MikonとNyaplotを使ったグラフ描画は別途サーバサイドで用意する必要がありそうです。 Nyaplot自体は依存関係は薄いのですが、Mikonを使おうと思うとするとNMatrixのビルドが大変だったりするのでdocker上のiruby notebookを立ちあげなければなりません。 この状況だと、手元にあるcsvなどを食わせようとした時は、dockerで立ち上げたipythonサーバにデータを移して食わせる必要があるなど、社内で普及を促すのにハードルが高い印象を受けました。&lt;/p&gt;</description></item><item><title>2014年を振り返って</title><link>https://chezo.uno/post/2014-12-31-2014nian-wozhen-rifan-tute/</link><pubDate>Wed, 31 Dec 2014 14:23:45 -0800</pubDate><guid>https://chezo.uno/post/2014-12-31-2014nian-wozhen-rifan-tute/</guid><description>&lt;p&gt;後数時間で終わりますが、去年書き忘れていたので書いていきます。&lt;/p&gt;
&lt;h1 id="できた"&gt;できた&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;仕事
&lt;ul&gt;
&lt;li&gt;Railsで最低限仕事で迷惑かけない程度のコードが書けるようになった&lt;/li&gt;
&lt;li&gt;仕事で機械学習の知識活かしたOutput(レコメンデーション)が出来た&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;翻訳
&lt;ul&gt;
&lt;li&gt;翻訳記事だけど、はじめての
&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Jekyllの
に参戦&lt;/li&gt;
&lt;li&gt;Lean Analyticsの
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;コミュニティ
&lt;ul&gt;
&lt;li&gt;Machine Learning Casual Talksをはじめた。第3回も来年やりたい(お声がけはすでにしている)&lt;/li&gt;
&lt;li&gt;kawasaki.rb開催1年続けることができた&lt;/li&gt;
&lt;li&gt;Juliaと出会ってJuliaTokyoをお手伝いし始める。はじめて本を作者様からいただける機会も&lt;/li&gt;
&lt;li&gt;
をそそのかされてはじめて、(今日ついに)完走。協力いただいた皆様に感謝&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;(小さいけど)LTしまくった&lt;/li&gt;
&lt;li&gt;Juliaのpackageを3つくらい作る(gemも&amp;hellip;&lt;/li&gt;
&lt;li&gt;社内勉強会x3を大体完走&lt;/li&gt;
&lt;li&gt;Ingressをはじめてドはまりする
&lt;ul&gt;
&lt;li&gt;そこをフックにslack広めたり&lt;/li&gt;
&lt;li&gt;膝を壊してチャリ通できなくなったり&lt;/li&gt;
&lt;li&gt;
したり&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="やる"&gt;やる&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;
を無事やりとげる&lt;/li&gt;
&lt;li&gt;kawasaki.rbの参加者の皆様のoutputの機会を増やしたい&lt;/li&gt;
&lt;li&gt;Railsの知識を伸ばす&lt;/li&gt;
&lt;li&gt;ElasticsearchとIngressで遊ぶ&lt;/li&gt;
&lt;li&gt;Deep Learningで遊ぶ&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="振り返って"&gt;振り返って&lt;/h1&gt;
&lt;p&gt;全般的に、皆様にご迷惑をおかけすることが多かった今年、来年は調和を保ちつつ技術を伸ばしていけたらと思います。特にRails関連と設計関連をまずは。&lt;/p&gt;
&lt;p&gt;コミュニティ業務ばっかりやっているとたまに不安になるんですが、自分が楽しいことをやる、あわよくば技術で楽しさを生み出す人を増やす、そういうことができればと思っています。&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;はてブUTF-8に対応したからか、wordpressのはてブ数壊れてる&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>社内でLean Analytics読書会を終えました</title><link>https://chezo.uno/post/2014-12-29-she-nei-delean-analyticsdu-shu-hui-wozhong-emasita/</link><pubDate>Sun, 28 Dec 2014 17:47:33 -0800</pubDate><guid>https://chezo.uno/post/2014-12-29-she-nei-delean-analyticsdu-shu-hui-wozhong-emasita/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2014-12-29-she-nei-delean-analyticsdu-shu-hui-wozhong-emasita/20141226161201_hu_9a6296235e17357a.webp 320w, https://chezo.uno/post/2014-12-29-she-nei-delean-analyticsdu-shu-hui-wozhong-emasita/20141226161201_hu_8aa33f1c0fdefc4a.webp 480w, https://chezo.uno/post/2014-12-29-she-nei-delean-analyticsdu-shu-hui-wozhong-emasita/20141226161201_hu_359ed22b8efc77df.webp 570w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2014-12-29-she-nei-delean-analyticsdu-shu-hui-wozhong-emasita/20141226161201_hu_9a6296235e17357a.webp"
width="570"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h1 id="社内でlean-analytics読書会をやった"&gt;社内でLean Analytics読書会をやった&lt;/h1&gt;
&lt;p&gt;今年の4月末に、Lean Analyticsを読もうという話を
氏が社内ブログで言い出したことにより始まり、5月から12月まで毎週1章を読み進めていくペースで読んでいきました。(かつまさん、ありがとうございました！) 英語の本の読書会と言っても、翻訳をしてそれを読み合わせるというよりは、皆が事前に読んできて分からなかったこと、きになったコトを話したり、内容から広がった自分たちのサービス開発の上での経験談を話して盛り上がるという会でした。&lt;/p&gt;
&lt;p&gt;このスタイルで得られることは多く、
だけではなく、社内外の様々な事例に突っ込んで議論できたのがとても良かったです。古参の人の持っている知識ってなかなか新参者には伝わる機会が少ないのですが、いい話がどんどん出てきたのが素晴らしいことでした。&lt;/p&gt;
&lt;h1 id="yokohamarbのlt大会で紹介した"&gt;Yokohama.rbのLT大会で紹介した&lt;/h1&gt;
&lt;p&gt;本の中でも特に印象に残った話を
のLT大会で話してきました。&lt;/p&gt;
&lt;iframe src="//www.slideshare.net/slideshow/embed_code/41289101" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen&gt; &lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;
&lt;/strong&gt; from &lt;strong&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;ここで紹介している話は、15章の&amp;quot;Emphathy&amp;quot;という章で、新規サービスで「顧客に届けるべき価値とは何か」を考える際に、&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;十分に厄介か、 たくさんの人々に関係するか、 既にそれを解決しようとしているか&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;という3つを考えろ、ということでした。特に、この3つ目のポイントが重要で「バラバラの靴下を履いてしまう現象は十分に厄介で多くの人を煩わせているが、それを解決しようとしている人はいるか？」という例が目からうろこでした。&lt;/p&gt;
&lt;h1 id="自分や周りのディレクターの行動が変わった"&gt;自分や周りのディレクターの行動が変わった&lt;/h1&gt;
&lt;p&gt;一緒に仕事をしていたディレクター&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; と話していて変わったよね、と言っているのが「施策を打つときに、サボらず必ず指標を考えそれを追いかけるようになった」ということでした。&lt;/p&gt;
&lt;p&gt;本書では、&amp;ldquo;One Metric That Matters&amp;quot;という言葉が繰り返し出てくるように、指標を一つに絞れということがよく言われます。それは、PV&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt; のような「Vanity Metricsを避けろ」という意味でもあり、「指標はフェーズによって変わる」という意味でもあります。 何故、&amp;ldquo;One Metric That Matters&amp;quot;が大事なのかというのを、様々な会社での豊富な具体例とともに語られるため、施策の仮説を考えてそれを表現する指標は何か？その指標がどうなったときに、どういう行動を取るか？というのを必ず考える癖が身につきました。 指標は次の行動を起こすものでなければ意味が無い、というのはまさにその通りだと実感しています。&lt;/p&gt;
&lt;p&gt;僕自身、機械学習やデータ分析が好きな人なのですが、そうした人にとっても得られるものは多くあると思うのでおすすめです。データは意志を決定するための道具であり、ビジネスはパッションとともに進めていくものである、というのは、ただの分析本には出てこないなぁと改めて思います。&lt;/p&gt;
&lt;h1 id="翻訳レビューも参加した"&gt;翻訳レビューも参加した&lt;/h1&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;
できるところだけでいいですよ&lt;/p&gt;
&lt;p&gt;— 角征典 KADO Masanori (@kdmsnr)
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;script async src="//platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;人生で初めて本の翻訳レビューに参加させていただきました。
さんのように猛烈なレビュー&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt; は出来ていませんが、jekyllのドキュメント翻訳から発展してこのような挑戦が出来たのはとても貴重な経験になりました。イディオムとか回りくどい言い回しとかは、日本語にする時大変なのを改めて学びました&amp;hellip;。&lt;/p&gt;
&lt;p&gt;
ので、是非読むことをおすすめします。&lt;/p&gt;
&lt;iframe src="https://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&amp;amp;bc1=000000&amp;amp;IS2=1&amp;amp;bg1=FFFFFF&amp;amp;fc1=000000&amp;amp;lc1=0000FF&amp;amp;t=chezou-22&amp;amp;o=9&amp;amp;p=8&amp;amp;l=as4&amp;amp;m=amazon&amp;amp;f=ifr&amp;amp;ref=ss_til&amp;amp;asins=B00AG66LTM" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;数字が苦手で本書を読むまで指標を追うのが嫌いだったそうです&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;本文中では一時期2ページに1回くらい、意味のない指標だと否定されている&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:3"&gt;
&lt;p&gt;一時期harupong砲がgmailの通知を爆発させていた&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>Juliaでword countして気づいたこと #JuliaAC</title><link>https://chezo.uno/post/2014-12-24-juliadeword-countsiteqi-duitakoto-number-juliaac/</link><pubDate>Tue, 23 Dec 2014 16:00:00 -0800</pubDate><guid>https://chezo.uno/post/2014-12-24-juliadeword-countsiteqi-duitakoto-number-juliaac/</guid><description>&lt;p&gt;この記事は、
24日目の記事です。 昨日は
でした。&lt;/p&gt;
&lt;p&gt;悲しいお知らせですが、このブログを通じてわかったのは、Python &amp;gt; Ingress &amp;gt;&amp;gt;&amp;gt; Juliaという人気度だということでした。Ingressの話は今回しません。&lt;/p&gt;
&lt;p&gt;当初は、Cで書かれたライブラリをバインディングする方法について書こうと思っていたのですが、r9y9さんによる
が出ていたので、必要なくなったかなと思い、Juliaならではの型の話をしたいと思います。&lt;/p&gt;
&lt;p&gt;このお話は、自分が
の回答をまとめたものです。&lt;/p&gt;
&lt;p&gt;気軽にコミッターから斧が飛んでくるのがいいですね。さすが、Karpinskiさん[^1]&lt;/p&gt;
&lt;h1 id="ruby脳のword-count"&gt;Ruby脳のWord count&lt;/h1&gt;
&lt;p&gt;僕は自然言語処理が好きなので、word countをちょくちょくやります。MapReduce時代以降Word countはHello worldの代わりに急成長していると言えましょう。 Rubyでword countをするなら、Hashを使ってこう書きます&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;hash = Hash.new{|h, k| h[k] = 0 } words.each do |word| hash[word] += 1end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;もし、閾値以下の単語を除去したいならもう一回ループを回して、判定しますが、頻度top N個の単語を取り出したいときはどうしますか？&lt;/p&gt;
&lt;p&gt;top10個の単語を取り出したいときはこう書きます。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;hash.sort\_by{|\_,v| -v}.take(10)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;簡単ですね。&lt;/p&gt;
&lt;h1 id="juliaの世界でのword-count"&gt;Juliaの世界でのWord count&lt;/h1&gt;
&lt;p&gt;では、Juliaでも同様のことをやりたくなった場合どう書きますか？ Dictをsortしたいですよね？&lt;/p&gt;
&lt;p&gt;できないんです&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;julia\&amp;gt; sort( sort(r::UnitRange{T&amp;lt;:real at range.jl:531 sort sort.jl:346 range.jl:534 sort.jl:364&amp;gt;
&amp;lt;p&amp;gt;あれれ？調べていると、過去には&amp;lt;code&amp;gt;sort_by&amp;lt;/code&amp;gt;が出来た時期もあったようなのですが、今は出来ないようです。&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;そこで考えだしたのは、DataFrameを使えばいいんじゃない！って方法&amp;lt;/p&amp;gt;
&amp;lt;pre class=&amp;quot;code&amp;quot; data-lang=&amp;quot;&amp;quot; data-unlink&amp;gt;dict = Dict{String, Int64}(&amp;quot;apple&amp;quot; =&amp;amp;gt; 100, &amp;quot;town&amp;quot; =&amp;amp;gt; 250, &amp;quot;space&amp;quot; =&amp;amp;gt; 24)
df = DataFrame(word = collect(keys(dict)), count = collect(values(dict)))
sort(df, cols = [:count], rev = true)&amp;lt;/pre&amp;gt;
&amp;lt;p&amp;gt;でも、このDataFrameの作り方、&amp;lt;code&amp;gt;convert(DataFrame, dict)&amp;lt;/code&amp;gt;で単純にできる形式と全然違うので不安ですよね。
なので、&amp;lt;a href=&amp;quot;https://groups.google.com/d/topic/julia-users/uIotqx3M12g/discussion&amp;quot;&amp;gt;有識者に聞いてみました&amp;lt;/a&amp;gt;。&amp;lt;/p&amp;gt;
&amp;lt;h1&amp;gt;julia-usersで聞いてみた回答&amp;lt;/h1&amp;gt;
&amp;lt;p&amp;gt;閾値処理をしたいなら、&amp;lt;code&amp;gt;Dict()&amp;lt;/code&amp;gt;作って二回ループ回せばいいし、Top　N個の単語を取ってきたいのなら、&amp;lt;a href=&amp;quot;http://julia.readthedocs.org/en/latest/stdlib/collections/#priorityqueue&amp;quot;&amp;gt;&amp;lt;code&amp;gt;PriorityQueue()&amp;lt;/code&amp;gt;&amp;lt;/a&amp;gt;を使うのがいいよ、との回答でした。&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;後からsortするとo(NlogN)かかるじゃん。それだったら、最適なデータ構造を使えばいいんじゃないの、ということでした。確かに。&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;こんなコードになります。
書き方も処理速度もほとんど代わりませんね。&amp;lt;code&amp;gt;Collection.dequeue!(pq)&amp;lt;/code&amp;gt;して、必要な回数だけ取り出しましょう。&amp;lt;/p&amp;gt;
&amp;lt;pre class=&amp;quot;code&amp;quot; data-lang=&amp;quot;&amp;quot; data-unlink&amp;gt;julia&amp;amp;gt; f = open(&amp;quot;input.txt&amp;quot;)
IOStream(&amp;lt;file input.txt&amp;gt;)
julia&amp;amp;gt; text = readall(f);
julia&amp;amp;gt; function count_word(text::UTF8String)
mecab = Mecab(&amp;quot;-O wakati&amp;quot;)
counts = Dict{UTF8String, Int}()
for word in split(sparse_tostr(mecab, text))
counts[word] = get(counts, word, 0) + 1
end
counts
end
count_word (generic function with 1 method)
julia&amp;amp;gt; @time count_word(text)
elapsed time: 0.953731616 seconds (29676144 bytes allocated, 24.68% gc time)
Dict{UTF8String,Int64} with 13583 entries:
&amp;quot;ウィキ&amp;quot; =&amp;amp;gt; 1
&amp;quot;TAKE&amp;quot; =&amp;amp;gt; 2
&amp;quot;null&amp;quot; =&amp;amp;gt; 4
&amp;quot;変革&amp;quot; =&amp;amp;gt; 5
&amp;quot;クソ&amp;quot; =&amp;amp;gt; 1
&amp;quot;228&amp;quot; =&amp;amp;gt; 3
&amp;quot;迫っ&amp;quot; =&amp;amp;gt; 1
&amp;quot;村山&amp;quot; =&amp;amp;gt; 1
&amp;quot;寺嶋&amp;quot; =&amp;amp;gt; 1
&amp;quot;リビング&amp;quot; =&amp;amp;gt; 1
&amp;quot;国籍&amp;quot; =&amp;amp;gt; 1
&amp;quot;ベーコン&amp;quot; =&amp;amp;gt; 1
&amp;quot;出す&amp;quot; =&amp;amp;gt; 13
&amp;quot;Core&amp;quot; =&amp;amp;gt; 5
&amp;quot;当選&amp;quot; =&amp;amp;gt; 2
&amp;quot;moguno&amp;quot; =&amp;amp;gt; 1
&amp;quot;Brainfuck&amp;quot; =&amp;amp;gt; 1
&amp;quot;積ん&amp;quot; =&amp;amp;gt; 4
&amp;quot;backup&amp;quot; =&amp;amp;gt; 2
&amp;quot;stress&amp;quot; =&amp;amp;gt; 1
&amp;quot;Qw&amp;quot; =&amp;amp;gt; 1
&amp;quot;細かい&amp;quot; =&amp;amp;gt; 3
&amp;quot;従って&amp;quot; =&amp;amp;gt; 1
&amp;quot;括弧&amp;quot; =&amp;amp;gt; 1
&amp;quot;ある程度&amp;quot; =&amp;amp;gt; 1
&amp;quot;法&amp;quot; =&amp;amp;gt; 14
⋮ =&amp;amp;gt; ⋮
julia&amp;amp;gt; function count_word2(text::UTF8String)
mecab = Mecab(&amp;quot;-O wakati&amp;quot;)
counts = Collections.PriorityQueue()
for word in split(sparse_tostr(mecab, text))
counts[word] = get(counts, word, 0) - 1
end
counts
end
count_word2 (generic function with 1 method)
julia&amp;amp;gt; @time count_word2(text)
elapsed time: 0.891081099 seconds (24265472 bytes allocated, 20.83% gc time)
PriorityQueue{Any,Any,ForwardOrdering} with 13583 entries:
&amp;quot;ウィキ&amp;quot; =&amp;amp;gt; -1
&amp;quot;TAKE&amp;quot; =&amp;amp;gt; -2
&amp;quot;null&amp;quot; =&amp;amp;gt; -4
&amp;quot;変革&amp;quot; =&amp;amp;gt; -5
&amp;quot;クソ&amp;quot; =&amp;amp;gt; -1
&amp;quot;228&amp;quot; =&amp;amp;gt; -3
&amp;quot;迫っ&amp;quot; =&amp;amp;gt; -1
&amp;quot;村山&amp;quot; =&amp;amp;gt; -1
&amp;quot;寺嶋&amp;quot; =&amp;amp;gt; -1
&amp;quot;リビング&amp;quot; =&amp;amp;gt; -1
&amp;quot;国籍&amp;quot; =&amp;amp;gt; -1
&amp;quot;ベーコン&amp;quot; =&amp;amp;gt; -1
&amp;quot;出す&amp;quot; =&amp;amp;gt; -13
&amp;quot;Core&amp;quot; =&amp;amp;gt; -5
&amp;quot;当選&amp;quot; =&amp;amp;gt; -2
&amp;quot;moguno&amp;quot; =&amp;amp;gt; -1
&amp;quot;Brainfuck&amp;quot; =&amp;amp;gt; -1
&amp;quot;積ん&amp;quot; =&amp;amp;gt; -4
&amp;quot;backup&amp;quot; =&amp;amp;gt; -2
&amp;quot;stress&amp;quot; =&amp;amp;gt; -1
&amp;quot;Qw&amp;quot; =&amp;amp;gt; -1
&amp;quot;細かい&amp;quot; =&amp;amp;gt; -3
&amp;quot;従って&amp;quot; =&amp;amp;gt; -1
&amp;quot;括弧&amp;quot; =&amp;amp;gt; -1
&amp;quot;ある程度&amp;quot; =&amp;amp;gt; -1
&amp;quot;法&amp;quot; =&amp;amp;gt; -14
⋮ =&amp;amp;gt; ⋮&amp;lt;/file&amp;gt;&amp;lt;/pre&amp;gt;
&amp;lt;p&amp;gt;型と多重dispatchがある分、なんでも同じようにできるわけではないこと、そしてそれをやるのが本当に最適手なのかを考えることができました。
なお、julia-usersは気軽に質問できてどんどん斧が飛んできて楽しいので、みなさんも読むことをおすすめします！&amp;lt;/p&amp;gt;
&amp;lt;p&amp;gt;明日はkimrinさんによるJuliaで楽器を作ろう！です。楽しみですね。&amp;lt;/p&amp;gt;
&amp;lt;div class=&amp;quot;footnote&amp;quot;&amp;gt;
&amp;lt;p class=&amp;quot;footnote&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;#fn-23bc65e3&amp;quot; name=&amp;quot;f-23bc65e3&amp;quot; class=&amp;quot;footnote-number&amp;quot;&amp;gt;*1&amp;lt;/a&amp;gt;&amp;lt;span class=&amp;quot;footnote-delimiter&amp;quot;&amp;gt;:&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;footnote-text&amp;quot;&amp;gt;本人のアイコン、バイキングの帽子をかぶっているのが有名ですよね&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/:real&amp;gt;
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>#ingress でフルタイムのプロエージェントと出会った話</title><link>https://chezo.uno/post/2014-12-15-number-ingress-dehurutaimunopuroezientotochu-hui-tutahua/</link><pubDate>Mon, 15 Dec 2014 07:20:00 -0800</pubDate><guid>https://chezo.uno/post/2014-12-15-number-ingress-dehurutaimunopuroezientotochu-hui-tutahua/</guid><description>&lt;p&gt;この記事は
の15日目の記事です。 昨日は
さんの
でした。&lt;/p&gt;
&lt;h1 id="darsana参加してきたよ"&gt;Darsana参加してきたよ&lt;/h1&gt;
&lt;figure&gt;&lt;img src="https://chezo.uno/post/2014-12-15-number-ingress-dehurutaimunopuroezientotochu-hui-tutahua/20141214223041.jpg"&gt;&lt;figcaption&gt;
&lt;h4&gt;頒布会戦利品の皆さん。にゃんぐれすかわいい&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Darsana参加された皆さん、お疲れ様でした！ ResistanceのゆるふわA10&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; なので負けて悔しい気持ちもありましたが、初めての公式イベントに参加できてとても楽しかったです。&lt;/p&gt;
&lt;p&gt;特に最終戦はotsuneさんと戦うことができたので(そして人数的にもイーブンの中でポータルを死守できました！)、ぎりぎりの白熱した戦いを繰り広げることが出来てとてもよかったです。&lt;/p&gt;
&lt;p&gt;現場では本州を囲む緑の巨大CFに囲まれたものの、「我々は局地戦を淡々と行うしかないんだ」とチームで話しながら、ポータルを死守し運良く4戦全勝できました。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2014-12-15-number-ingress-dehurutaimunopuroezientotochu-hui-tutahua/20141215123101_hu_7b30314647a4be32.webp 320w, https://chezo.uno/post/2014-12-15-number-ingress-dehurutaimunopuroezientotochu-hui-tutahua/20141215123101_hu_56e8aca8815e119f.webp 428w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2014-12-15-number-ingress-dehurutaimunopuroezientotochu-hui-tutahua/20141215123101_hu_7b30314647a4be32.webp"
width="428"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;(写真はbungaさんにご提供いただきました)&lt;/p&gt;
&lt;p&gt;終了後にその裏側では熱い攻防が繰り広げられていたのを後から知り、さらに胸が熱くなっています。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2014-12-15-number-ingress-dehurutaimunopuroezientotochu-hui-tutahua/20141215122554_hu_b0b6de0b787c074.webp 320w, https://chezo.uno/post/2014-12-15-number-ingress-dehurutaimunopuroezientotochu-hui-tutahua/20141215122554_hu_f559f560dfefc3f1.webp 336w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2014-12-15-number-ingress-dehurutaimunopuroezientotochu-hui-tutahua/20141215122554_hu_b0b6de0b787c074.webp"
width="336"
height="480"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;(写真は_かなこさんにご提供いただきました)&lt;/p&gt;
&lt;p&gt;八丈島-台湾間、北海道-韓国間での緑のリンク、妨害のための九州-中国間のCFなど、両者の思惑が飛び交っています。そして、敵ながら本州を囲むCFが1回目の戦いの途中でできたのは天晴とも思いました。 また、そのCFが崩れたのも最後の戦いの終了2分前という、熱い戦いとしか言いようがありません。吹雪の中の襟裳まで行ったamacatさんの話は読み返しても胸にこみ上げるものがあります。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h1 id="コミュニティの話は表に出づらい"&gt;コミュニティの話は表に出づらい&lt;/h1&gt;
&lt;p&gt;Ingressはプレイ=活動領域が駄々漏れになるという特性上、BlogやTwitterやFacebookでその活動を報告するのは避けられる傾向にあります。(FBにクロスファクションのコミュニティもありますが、読む専門です&amp;hellip;)&lt;/p&gt;
&lt;p&gt;しかし、本来ゲーム内に用意されているチャットであるCOMMは、全体チャットによく誤爆する、iOS版では東京だとすぐに固まることから、ほとんど使われていません。そのため、大きな地域ごとに存在するGoogle+のコミュニティとHangoutなどのチャットアプリケーションが活用されています。(ちなみに、台湾ではLINEが活用されているとか)&lt;/p&gt;
&lt;p&gt;今回のDarsanaの情報共有にもGoogle+のコミュニティが活用され、様々な活動が展開されていました。 また、我々のチームではHOの代わりにSlackを用いることで、Google Documentやpostへのリンク機能を活用して、情報へリーチしやすい状況を作って共有していました。 (ちなみに、HOはポジション的にはLINE的なメッセージングアプリの位置づけのためか、グループチャットとして100人までしか参加できないという悩みがあり、Slack&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt; の方にシフトしつつあります)&lt;/p&gt;
&lt;h1 id="コミュニティってだるくない"&gt;コミュニティってだるくない？&lt;/h1&gt;
&lt;p&gt;世の中にはソロプレーヤーで活動されている人も多いと思います。 ですが、ジョンハンケ氏の「外に出て、人と交流を」という設計思想上、一人でプレイするには壁にぶつかると思っています&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt; 。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Niantic Labsの創設者で、かつてGoogle Earthを開発したジョン・ハンケ氏（※本誌インタビュー記事、5月掲載）は、ユーザーに外出を促すことがコンセプトとしている。具体的には「世界が舞台」「動いて遊ぶ」「新しい視点で街を見る」「現実世界で友情を育む」という4つの要素で設計されているのだという。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;iframe src="https://hatenablog.com/embed?url=http%3A%2F%2Fk-tai.impress.co.jp%2Fdocs%2Fnews%2F20141117_676258.html" title="「Ingressで痩せる」は本当だった、ローソンともコラボ開始 - ケータイ Watch" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;a href="http://k-tai.impress.co.jp/docs/news/20141117_676258.html"&gt;「Ingressで痩せる」は本当だった、ローソンともコラボ開始 - ケータイ Watch&lt;/a&gt;&lt;/iframe&gt;
&lt;p&gt;レベル7ポータルまでは近所に3人エージェントがいればできますが、レベル8は8人いないとできないです。プレーヤー密度が高まったとはいえ、自然発生的にP8に到達するのはちょっと大変だし、レベル8ができると壊しにくる敵も圧倒的に増えます&lt;sup id="fnref:4"&gt;&lt;a href="#fn:4" class="footnote-ref" role="doc-noteref"&gt;4&lt;/a&gt;&lt;/sup&gt; 。&lt;/p&gt;
&lt;p&gt;そこで、地域のコミュニティではFlash Farming&lt;sup id="fnref:5"&gt;&lt;a href="#fn:5" class="footnote-ref" role="doc-noteref"&gt;5&lt;/a&gt;&lt;/sup&gt; を呼びかけて行ったりします。こうしたファーミングも地域コミュニティに呼びかけて、気ままに集まった人でやる、みたいなことが多く開催されます。&lt;/p&gt;
&lt;p&gt;自分のいる地域のコミュニティは割と緩いつながり&lt;sup id="fnref:6"&gt;&lt;a href="#fn:6" class="footnote-ref" role="doc-noteref"&gt;6&lt;/a&gt;&lt;/sup&gt; で、オンゲのチームチャット&lt;sup id="fnref:7"&gt;&lt;a href="#fn:7" class="footnote-ref" role="doc-noteref"&gt;7&lt;/a&gt;&lt;/sup&gt; のような位置づけです。「どこどこ、P8リーチですねー」とか「今日は帰りに敵のファームよってきますー」「俺も俺も」とかわいわいやりながら盛り上がっています。&lt;/p&gt;
&lt;p&gt;特にいいなーと思うのが、「どこどこのラーメンが旨い！」と飯テロ展開したり、「どこどこで飲んでる」とか「ここのドーナツは美味しい！」「今日はどこどこでお祭りですねー」など、長く住んでる地元民なら知っているけど別の地域から引っ越してきた人にはなかなか知りづらい地元情報がいっぱい知れて最高です。&lt;/p&gt;
&lt;h1 id="プロのフルタイムエージェントとの出会い"&gt;プロのフルタイムエージェントとの出会い&lt;/h1&gt;
&lt;p&gt;今年の夏の暑い日々、地元のコミュニティでは朝から晩まで活動しているエージェントの話題で持ちきりでした。我々の中では「絶対に爺ちゃんエージェントだ」「サイボーグなのでは？」と話をしていたのですが、「今日は自分のガーディアンが壊されたー！」「うひゃー、今日はうちだー」などと毎日阿鼻叫喚でした。 一番すごかったのが、猛暑日の朝6時から夕方5時までずっと活動し続けていた日があり、流石にCOMMから「熱射病には気をつけてー」等の声援をこちら陣営からも送ったりしていました。&lt;/p&gt;
&lt;p&gt;その翌日、出勤前の時間に自分の地元のオーナーポータルを攻めている攻撃通知が来たので、文字通り朝ごはんもそっちのけでリアキャプ&lt;sup id="fnref:8"&gt;&lt;a href="#fn:8" class="footnote-ref" role="doc-noteref"&gt;8&lt;/a&gt;&lt;/sup&gt; しにいきました。(当時の僕はまだまだひよっこだったので、攻撃通知を受けてはドキドキしたりムキーッとなっていました)。すると現れたのは、白髪のおじいちゃんがママチャリにまたがっているではありませんか。前日の一日プレイしていた時はまだ徒歩だったけど、今日リアル課金をして自転車をゲットしたので遠征しに来た、とのこと。話してみるととても気さくなおじいさんだったので、そこから仲良くなって何度か飲みに行かせていただいたりしました。&lt;/p&gt;
&lt;p&gt;なんでも、「定年退職後暇だから家でずっとネットをしている毎日だったのが、Ingressをはじめてから毎日外で活動することになって、女房も喜んでいる」というではありませんか。これが、Ingressによって人生変わった人なのかー！と驚いたものの、「お互い碁敵みたいなものですよね。敵がいるから自分も楽しませてもらえている」という広い心に当時小物だった僕はいたく感銘をうけたのでした&lt;sup id="fnref:9"&gt;&lt;a href="#fn:9" class="footnote-ref" role="doc-noteref"&gt;9&lt;/a&gt;&lt;/sup&gt; 。 本人の、「プロエージェントになったが、毎日が充実している」という楽しく語る姿が、とても印象深く焼き付いています。(ちなみに、その方は自分がゲームバランスを崩してしまう可能性があるのを理解した上で、実績稼ぎをすすめていらっしゃいました)&lt;/p&gt;
&lt;h1 id="さいごに"&gt;さいごに&lt;/h1&gt;
&lt;p&gt;Ingressやってると、あれな人と絡まれたりすることもありますが、こういう新しい出会いが生まれるのは他ではない魅力なので、是非みなさんも楽しんでください&lt;/p&gt;
&lt;p&gt;明日は
さんの「Ingressガチ勢への道」です。&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;膝に矢を受けてしばらく活動休止していた&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;余談ですが、我々のコミュニティでは結構年上の建設系のおっちゃんもSlackを使いこなしています&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:3"&gt;
&lt;p&gt;実際、レベル8になって一人でやるのがきつくなったという仲間が結構います&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:4"&gt;
&lt;p&gt;うちの近くの駅ではすぐ近くに敵が密集している地帯なので、1日と持たない日々が続いています&amp;#160;&lt;a href="#fnref:4" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:5"&gt;
&lt;p&gt;レベル8以上のエージェントが8人以上集まってレベル8ポータルを作ること&amp;#160;&lt;a href="#fnref:5" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:6"&gt;
&lt;p&gt;地域によっては厳しいところもあるという噂も聞きますが&amp;hellip;&amp;#160;&lt;a href="#fnref:6" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:7"&gt;
&lt;p&gt;といいつつちゃんとMMOやったことがない&amp;#160;&lt;a href="#fnref:7" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:8"&gt;
&lt;p&gt;リアルキャプチャー。エージェントにリアルで会うこと&amp;#160;&lt;a href="#fnref:8" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:9"&gt;
&lt;p&gt;その後攻撃通知を切った&amp;#160;&lt;a href="#fnref:9" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>#JapanR で話題だった「データサイエンティスト養成読本R活用編(通称"Julia入門本")」を読みました #JuliaAC</title><link>https://chezo.uno/post/2014-12-13-number-japanr-dehua-ti-datuta-detasaienteisutoyang-cheng-du-ben-rhuo-yong-bian-tong-cheng-juliaru-men-ben-wodu-mimasita-number-juliaac/</link><pubDate>Fri, 12 Dec 2014 16:02:00 -0800</pubDate><guid>https://chezo.uno/post/2014-12-13-number-japanr-dehua-ti-datuta-detasaienteisutoyang-cheng-du-ben-rhuo-yong-bian-tong-cheng-juliaru-men-ben-wodu-mimasita-number-juliaac/</guid><description>&lt;p&gt;この記事は
の12日目の記事です。&lt;/p&gt;
&lt;p&gt;昨日12/12に発売された、データサイエンティスト養成読本 R活用編をいただきましたので、読ませていただきました。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2014-12-13-number-japanr-dehua-ti-datuta-detasaienteisutoyang-cheng-du-ben-rhuo-yong-bian-tong-cheng-juliaru-men-ben-wodu-mimasita-number-juliaac/20141212232744_hu_6e5c70b0eb0fa783.webp 320w, https://chezo.uno/post/2014-12-13-number-japanr-dehua-ti-datuta-detasaienteisutoyang-cheng-du-ben-rhuo-yong-bian-tong-cheng-juliaru-men-ben-wodu-mimasita-number-juliaac/20141212232744_hu_299fc6185b82d8e4.webp 480w, https://chezo.uno/post/2014-12-13-number-japanr-dehua-ti-datuta-detasaienteisutoyang-cheng-du-ben-rhuo-yong-bian-tong-cheng-juliaru-men-ben-wodu-mimasita-number-juliaac/20141212232744_hu_d04b69de9da67c7.webp 570w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2014-12-13-number-japanr-dehua-ti-datuta-detasaienteisutoyang-cheng-du-ben-rhuo-yong-bian-tong-cheng-juliaru-men-ben-wodu-mimasita-number-juliaac/20141212232744_hu_6e5c70b0eb0fa783.webp"
width="570"
height="760"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;シリーズ第一冊目の「データサイエンティスト養成読本」と比較するとよりRに特化した内容になっています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;里さん、酒巻さんによる心構え的な話や基礎となる統計知識でざっと外観したあとで、&lt;/li&gt;
&lt;li&gt;市川さんのRでのモダンな集計方法&lt;/li&gt;
&lt;li&gt;福島さんの時系列分析の基礎&lt;/li&gt;
&lt;li&gt;安倍さんによる.NET FrameworkからRを使う話&lt;/li&gt;
&lt;li&gt;和田さんによるH2Oやparallelの話&lt;/li&gt;
&lt;li&gt;
さん、西薗さんによるJuliaの話&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;が展開されています。&lt;/p&gt;
&lt;iframe src="https://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&amp;amp;bc1=000000&amp;amp;IS2=1&amp;amp;bg1=FFFFFF&amp;amp;fc1=000000&amp;amp;lc1=0000FF&amp;amp;t=chezou-22&amp;amp;o=9&amp;amp;p=8&amp;amp;l=as4&amp;amp;m=amazon&amp;amp;f=ifr&amp;amp;ref=ss_til&amp;amp;asins=4774170577" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;iframe src="https://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&amp;amp;bc1=000000&amp;amp;IS2=1&amp;amp;bg1=FFFFFF&amp;amp;fc1=000000&amp;amp;lc1=0000FF&amp;amp;t=chezou-22&amp;amp;o=9&amp;amp;p=8&amp;amp;l=as4&amp;amp;m=amazon&amp;amp;f=ifr&amp;amp;ref=ss_til&amp;amp;asins=4774158968" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;
&lt;p&gt;表紙を見ていただくとわかりますが、「Julia入門」の文字がでかでかと掲げられています。凄い。 日本の商業誌ではJuliaについて書かれた本は、おそらくはじめてだろうとのことです&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; 。&lt;/p&gt;
&lt;p&gt;話としては、Juliaの出来た歴史的な経緯と基礎的な使い方が記されています。Juliaってなんだろう？という人には外観をしる上で取っ付き易い文章になっていると思います。特に本文中にでてくるJohn Myles White&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt; やStefan Karpinskiなど、コアなコミッターの情報がちりばめられているのはJuliaというググらビリティの低い名前から情報を収集する重要な緒となると思います。&lt;/p&gt;
&lt;p&gt;ここで興味をもった人は、
の記事を色々読まれると良いのではないでしょうか。&lt;/p&gt;
&lt;p&gt;Julia以外で特に興味深かったのは、市川さんによるdplyrやtidyr, pipeRの話です。特に、dplyrのSQLっぽい集計処理やpipeRでのメソッドチェーンっぽい処理を見ていると、「それ、Ruby(Active Record)でできるんやで」と一周回ってきた感覚になりました&lt;sup id="fnref:3"&gt;&lt;a href="#fn:3" class="footnote-ref" role="doc-noteref"&gt;3&lt;/a&gt;&lt;/sup&gt; 。&lt;/p&gt;
&lt;p&gt;本書は割りと濃い話が多いので、Rの入門書を読んだけど、もっとモダンな書き方をしたい！応用したい！という人にオススメです。また、Rの人たちが使い始めているJuliaってどんな言語だろう？と興味が湧いた方にもオススメです。&lt;/p&gt;
&lt;div class="footnotes" role="doc-endnotes"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;薄い本は既に出ています
&amp;#160;&lt;a href="#fnref:1" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;入門機械学習やバンディットアルゴリズム入門の著者としても知られる&amp;#160;&lt;a href="#fnref:2" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:3"&gt;
&lt;p&gt;もちろん、Rで処理できるけど速度が速いことが売りですが&amp;#160;&lt;a href="#fnref:3" class="footnote-backref" role="doc-backlink"&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description></item><item><title>Juliaのパッケージ公開はREPLからできる #JuliaAC #julialang</title><link>https://chezo.uno/post/2014-12-11-julianopatukezigong-kai-hareplkaradekiru-number-juliaac-number-julialang/</link><pubDate>Wed, 10 Dec 2014 16:00:00 -0800</pubDate><guid>https://chezo.uno/post/2014-12-11-julianopatukezigong-kai-hareplkaradekiru-number-juliaac-number-julialang/</guid><description>&lt;p&gt;この記事は、
の11日目の記事です。 10日目は夜道先生の
でした。&lt;/p&gt;
&lt;p&gt;Juliaのパッケージを作っても、野良パッケージを作るだけでは多くの人に使ってもらえません。 RでいうCRAN、Rubyでいうgemのように、Juliaでは
というエコシステムでパッケージが管理されています。 パッケージはすべてgithub上ですべてホスティングされています。(だから、先日の
みたいなのに巻き込まれると何も出来ません&amp;hellip;) METADATA.jlもPull Requestベースで管理されているのですが、中身について議論されることはあまりなく、基本的に1日程度でどんどん取り込まれます。(CRANは厳正な審査がいるそうですね！)&lt;/p&gt;
&lt;p&gt;また、パッケージをMETADATA.jlに登録すると
。ちなみに、デイリーでstableとnightlyバージョンでテストがこけると
とかがあります。&lt;/p&gt;
&lt;p&gt;さて、パッケージの作り方は
さんの下記のJuliaTokyo #1のスライドが詳しいです。&lt;/p&gt;
&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/36649709" 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&gt; &lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;
&lt;/strong&gt; from &lt;strong&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;今日は、そこで検証されていなかったPkg.publish()についてご紹介したいと思います。 そもそも、この発表の段階ではGithubの
のですが、
。&lt;/p&gt;
&lt;script src="https://gist.github.com/c578aed2d97ed2634b5b.js"&gt; &lt;/script&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Pkg.update()&lt;/code&gt;して(この場合は更新なので)&lt;code&gt;Pkg.tag(&amp;quot;PackageName&amp;quot;)&lt;/code&gt;して、&lt;code&gt;Pkg.publish()&lt;/code&gt;するだけです。 初回はパスワードの入力とアクセストークンの入力が求められるので、
REPLに入力をしましょう。&lt;/p&gt;
&lt;p&gt;すると、自分のMETADATA.jlがbranch切られてpushされて、ブラウザが開いてPull Requestが作られます。(自分が試した時はChromeがちょうどクラッシュしたので、手でPR作りなおしたのでもしかするとMETADATA.jlのページが開くだけだったかもしれません)&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2014-12-11-julianopatukezigong-kai-hareplkaradekiru-number-juliaac-number-julialang/20141207213426_hu_12143bdac5f5d6a8.webp 320w, https://chezo.uno/post/2014-12-11-julianopatukezigong-kai-hareplkaradekiru-number-juliaac-number-julialang/20141207213426_hu_fe57c5e8d375c9f2.webp 480w, https://chezo.uno/post/2014-12-11-julianopatukezigong-kai-hareplkaradekiru-number-juliaac-number-julialang/20141207213426_hu_571500039e50a11a.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2014-12-11-julianopatukezigong-kai-hareplkaradekiru-number-juliaac-number-julialang/20141207213426_hu_12143bdac5f5d6a8.webp"
width="760"
height="496"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2014-12-11-julianopatukezigong-kai-hareplkaradekiru-number-juliaac-number-julialang/20141207213437_hu_c4e7aa5c3013bdc0.webp 320w, https://chezo.uno/post/2014-12-11-julianopatukezigong-kai-hareplkaradekiru-number-juliaac-number-julialang/20141207213437_hu_a9934208dd1ae33.webp 480w, https://chezo.uno/post/2014-12-11-julianopatukezigong-kai-hareplkaradekiru-number-juliaac-number-julialang/20141207213437_hu_6dfba4cf66682c5f.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2014-12-11-julianopatukezigong-kai-hareplkaradekiru-number-juliaac-number-julialang/20141207213437_hu_c4e7aa5c3013bdc0.webp"
width="760"
height="471"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;最高便利！&lt;/p&gt;
&lt;p&gt;明日はbicycle1885さんの「PythonistaのためのJulia100問100答」です。&lt;/p&gt;</description></item><item><title>Japan.Rで"MeCab.jlつくってみた"を発表してきた #JuliaAC #JapanR</title><link>https://chezo.uno/post/2014-12-06-japan-dot-rde-mecab-dot-jltukututemita-wofa-biao-sitekita-number-juliaac-number-japanr/</link><pubDate>Sat, 06 Dec 2014 10:18:20 -0800</pubDate><guid>https://chezo.uno/post/2014-12-06-japan-dot-rde-mecab-dot-jltukututemita-wofa-biao-sitekita-number-juliaac-number-japanr/</guid><description>&lt;p&gt;何故か、Facebookで
さんと
の話をしてたら、
さんに補足されてしまったので、LT発表してきました。&lt;/p&gt;
&lt;iframe src="//www.slideshare.net/slideshow/embed_code/42416256" width="476" height="400" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"&gt;&lt;/iframe&gt;
&lt;p&gt;
の紹介と、R,Ruby,Juliaでのベンチマークについて話しました。&lt;/p&gt;
&lt;p&gt;ベンチマーク結果を見ると、gcを切ったらRにはなんとかかっています。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2014-12-06-japan-dot-rde-mecab-dot-jltukututemita-wofa-biao-sitekita-number-juliaac-number-japanr/20141206160009_hu_1974a380d40ca6d9.webp 320w, https://chezo.uno/post/2014-12-06-japan-dot-rde-mecab-dot-jltukututemita-wofa-biao-sitekita-number-juliaac-number-japanr/20141206160009_hu_c51f3b1c7e24b9e9.webp 480w, https://chezo.uno/post/2014-12-06-japan-dot-rde-mecab-dot-jltukututemita-wofa-biao-sitekita-number-juliaac-number-japanr/20141206160009_hu_e6f1bf598440f9e2.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2014-12-06-japan-dot-rde-mecab-dot-jltukututemita-wofa-biao-sitekita-number-juliaac-number-japanr/20141206160009_hu_1974a380d40ca6d9.webp"
width="760"
height="370"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;当日の
はこれです。 ベンチマークに使用したコードはこちら
&lt;/p&gt;
&lt;p&gt;各言語のversionはこんな感じです。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ ruby -v ruby
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;2.1.0p0 &lt;span class="o"&gt;(&lt;/span&gt;2013-12-25 revision 44422&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;x86_64-darwin13.0&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ julia --version
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;julia version 0.4.0-dev+1752
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ r --version
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;R version 3.1.2 &lt;span class="o"&gt;(&lt;/span&gt;2014-10-31&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-- &lt;span class="s2"&gt;&amp;#34;Pumpkin Helmet&amp;#34;&lt;/span&gt; Copyright &lt;span class="o"&gt;(&lt;/span&gt;C&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="m"&gt;2014&lt;/span&gt; The R Foundation &lt;span class="k"&gt;for&lt;/span&gt; Statistical Computing Platform: x86_64-apple-darwin13.4.0 &lt;span class="o"&gt;(&lt;/span&gt;64-bit&lt;span class="o"&gt;)&lt;/span&gt; R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under the terms of the GNU General Public License versions &lt;span class="m"&gt;2&lt;/span&gt; or 3. For more information about these matters see http://www.gnu.org/licenses/.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;やる前はRに対して圧勝！とかならないかなぁとか思っていたのですが、そもそもMeCabをバインディングしてるだけじゃん、と気づいた時には甘かった。 敵は、Rではなかったのです。Cだったのです&amp;hellip;。&lt;/p&gt;
&lt;p&gt;共有ライブラリを配布して、それをRから呼べるようにしているだけとは恐れ入りました。 RMeCabは、まさか頻度カウントをするための関数まであるとは思ってもみなかったのですが、基本的に遅くなる処理はCにまかせてしまうというのは戦略的には合理的ですね。&lt;/p&gt;
&lt;h2 id="おまけ"&gt;おまけ&lt;/h2&gt;
&lt;p&gt;会場ではきちんと言えなかったのですが、Juliaのバインディングをする上でのPros/Consはこんな感じです&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pros
&lt;ul&gt;
&lt;li&gt;Cを書くことなくCのバインディングができる&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cons
&lt;ul&gt;
&lt;li&gt;C++は現状(特にMacからは)辛い&lt;/li&gt;
&lt;li&gt;gc!&lt;/li&gt;
&lt;li&gt;文字列処理が遅いかも？(要検証)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Rubyに対して遅いのは、ちょっと検証してみます。&lt;/p&gt;
&lt;p&gt;特に「Cを書くことなく」という点は素晴らしく、 MeCabのnodeの構造体に対応するtypeを作れば、それでcastしてくれてJuliaから扱えるようになります。&lt;/p&gt;
&lt;p&gt;
からCのコードを抜粋&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;struct mecab\_node\_t { struct mecab\_node\_t \*prev; struct mecab\_node\_t \*next; struct mecab\_node\_t \*enext; struct mecab\_node\_t \*bnext; struct mecab\_path\_t \*rpath; struct mecab\_path\_t \*lpath; const char \*surface; const char \*feature; unsigned int id; unsigned short length; unsigned short rlength; unsigned short rcAttr; unsigned short lcAttr; unsigned short posid; unsigned char char\_type; unsigned char stat; unsigned char isbest; float alpha; float beta; float prob; short wcost; long cost; };
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;対応する
&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;type MecabRawNode prev::Ptr{MecabRawNode} next::Ptr{MecabRawNode} enext::Ptr{MecabRawNode} bnext::Ptr{MecabRawNode} rpath::Ptr{Void} lpath::Ptr{Void} surface::Ptr{Uint8} feature::Ptr{Uint8} id::Cint length::Cushort rlength::Cushort rcAttr::Cushort lcAttr::Cushort posid::Cushort char\_type::Cuchar stat::Cuchar isbest::Cuchar alpha::Cfloat beta::Cfloat prob::Cfloat wcost::Cshort cost::Clong end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;mecab_node_path_t&lt;/code&gt;は使っていないので捨てています。&lt;/p&gt;
&lt;p&gt;Cの場合、headerに構造体を先に宣言すれば、お互いが依存する構造体を記述できますが、Juliaの場合はそれができないため&lt;code&gt;Ptr{Void}&lt;/code&gt;で受けています。&lt;/p&gt;</description></item><item><title>Julia環境構築 2014 ver. #julialang</title><link>https://chezo.uno/post/2014-12-03-juliahuan-jing-gou-zhu-2014-ver-number-julialang/</link><pubDate>Tue, 02 Dec 2014 16:05:00 -0800</pubDate><guid>https://chezo.uno/post/2014-12-03-juliahuan-jing-gou-zhu-2014-ver-number-julialang/</guid><description>&lt;p&gt;
3日目の記事です。&lt;/p&gt;
&lt;p&gt;1日目、2日目の記事を読んで、とりあえず試してみよう！と思った人のためのお話です。&lt;/p&gt;
&lt;p&gt;Macに移って久しいのでWindows, Linuxの事情は薄くなりますがご勘弁を。&lt;/p&gt;
&lt;h1 id="事前知識"&gt;事前知識&lt;/h1&gt;
&lt;p&gt;Juliaはまだまだ鋭意開発中の言語なので、変化が激しいです。 割とStableを使ってる人が少ないかもしれません。なので、Stableの導入の仕方とNightly buildsの入れ方を書いておきます。&lt;/p&gt;
&lt;p&gt;自分はv0.4(Nightly builds)を使ってます。 少なくとも、2014年には0.2系以前を試す必要は無いと思います。&lt;/p&gt;
&lt;h1 id="入れるもの"&gt;入れるもの&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Julia&lt;/li&gt;
&lt;li&gt;anaconda&lt;/li&gt;
&lt;li&gt;IJulia&lt;/li&gt;
&lt;li&gt;LightTable(IDEが欲しければ)&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="julia"&gt;Julia&lt;/h1&gt;
&lt;h2 id="windows"&gt;Windows&lt;/h2&gt;
&lt;p&gt;
するのが一番手軽です。&lt;/p&gt;
&lt;p&gt;StableもNightlyもこれでいいでしょう。&lt;/p&gt;
&lt;h2 id="mac"&gt;Mac&lt;/h2&gt;
&lt;h3 id="お手軽に試すには"&gt;お手軽に試すには&lt;/h3&gt;
&lt;p&gt;
するのが一番手軽です。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/Applications/Julia-0.X.X*.app/Contents/Resources/julia/bin/julia&lt;/code&gt; に&lt;code&gt;~/bin/&lt;/code&gt;以下にシンボリックリンクを貼るなどして、PATHを通しておくとよいでしょう。&lt;/p&gt;
&lt;h3 id="homebrew"&gt;Homebrew&lt;/h3&gt;
&lt;p&gt;
からcloneしてビルドするのも良いですが、
から入れるのが楽です。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ brew update $ brew tap staticfloat/julia $ brew install julia
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Nightlyを入れるには&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ brew install julia --HEAD
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;でOKです。&lt;/p&gt;
&lt;p&gt;gccとかを更新した時は、
と良いでしょう。&lt;/p&gt;
&lt;h2 id="ubuntu"&gt;Ubuntu&lt;/h2&gt;
&lt;h3 id="stable"&gt;Stable&lt;/h3&gt;
&lt;p&gt;PPAを使ってaptで取得できるようにするのが楽です。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ sudo add-apt-repository ppa:staticfloat/juliareleases $ sudo add-apt-repository ppa:staticfloat/julia-deps $ sudo apt-get update $ sudo apt-get install julia
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;14.10からは普通に&lt;code&gt;apt-get install julia&lt;/code&gt;で入るようです&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;
Julia は Ubuntu 14.10 で普通に apt-get できるし、いずれ追加するつもりですよ&lt;/p&gt;
&lt;p&gt;— Yusuke Endoh (@mametter)
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;script async src="//platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;h3 id="nightly"&gt;Nightly&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;$ sudo apt-add-repository ppa:staticfloat/julianightlies $ sudo apt-add-repository ppa:staticfloat/julia-deps $ sudo apt-get update $ sudo apt-get install julia
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="rhelcentos系"&gt;RHEL/CentOS系&lt;/h2&gt;
&lt;p&gt;RHEL系はEPEL使えば行けるそうです&lt;/p&gt;
&lt;h1 id="ijuliaanaconda"&gt;IJulia/anaconda&lt;/h1&gt;
&lt;p&gt;IJuliaはIPythonをベースにしたブラウザ上で動くJuliaの対話環境です。ガッツリパフォーマンスチューニングしたい人には向かないですが、グラフ書いたり分析したい人には適しています。 また、LightTableなどのエディターで実行結果を表示する時にも必要になるので入れておくのが良いでしょう。&lt;/p&gt;
&lt;p&gt;IPythonの環境を入れるのがだるいので、Pythonの環境がまだないよ/こだわりないよって人は、anacondaを使うと良いでしょう。 MacでもシステムPythonだとIPythonのバージョンが古いとかなんとか色々はまるので、anacondaにしておくのが良いでしょう。&lt;/p&gt;
&lt;p&gt;少し前のですが下記のサイトやIJulia本家の記述が参考になりますが、こちらにも簡単にまとめておきます。&lt;/p&gt;
&lt;iframe src="https://hatenablog.com/embed?url=http%3A%2F%2Fd.hatena.ne.jp%2Fisobe1978%2F20131128%2F1385646377" title="IPython(Anaconda)とIJuliaが凄すぎる件 - アドファイブ日記" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;a href="http://d.hatena.ne.jp/isobe1978/20131128/1385646377"&gt;IPython(Anaconda)とIJuliaが凄すぎる件 - アドファイブ日記&lt;/a&gt;&lt;/iframe&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;iframe src="https://hatenablog.com/embed?url=https%3A%2F%2Fgithub.com%2FJuliaLang%2FIJulia.jl" title="JuliaLang/IJulia.jl" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;a href="https://github.com/JuliaLang/IJulia.jl"&gt;JuliaLang/IJulia.jl&lt;/a&gt;&lt;/iframe&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;
して入れる&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;IJuliaを入れる&lt;/p&gt;
&lt;p&gt;Pkg.add(&amp;ldquo;IJulia&amp;rdquo;)&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;anacondaが入っていればこれで大丈夫なはずです。後は下記でIJuliaを起動後、適当なノートブックを作って試しましょう。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ ipython notebook --profile julia
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;便利なショートカットはこちら&lt;/p&gt;
&lt;iframe src="https://hatenablog.com/embed?url=http%3A%2F%2Fd.hatena.ne.jp%2Fakamegane%2F20120409%231333983569" title="ipython 0.12 の notebook" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;a href="http://d.hatena.ne.jp/akamegane/20120409#1333983569"&gt;ipython 0.12 の notebook&lt;/a&gt;&lt;/iframe&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h1 id="lighttable-optional"&gt;LightTable (optional)&lt;/h1&gt;
&lt;p&gt;emacsやvimでjuliaのプラグインを入れるのも良いと思いますし、IDE的なものが欲しいよという人はLightTableを使うといいです。 補完もできて、Cmd+Enterで実行結果も確認できます。&lt;/p&gt;
&lt;p&gt;
もあるようですが使ったことがありません。&lt;/p&gt;
&lt;iframe src="https://hatenablog.com/embed?url=http%3A%2F%2Fqiita.com%2Fchezou%2Fitems%2F5070bde5dc6647e55af3" title="Lightable - LightTable + JewelでJuliaの環境を作る - Qiita" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"&gt;&lt;a href="http://qiita.com/chezou/items/5070bde5dc6647e55af3"&gt;Lightable - LightTable + JewelでJuliaの環境を作る - Qiita&lt;/a&gt;&lt;/iframe&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h2 id="ちなみに"&gt;ちなみに&lt;/h2&gt;
&lt;p&gt;JuliaのREPLは実はかなり強力で、対話的に開発したいだけならREPLだけで良いという人もいます。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;すごい大事な話を忘れていた。これがJuliaのREPLの補完力です
&lt;/p&gt;
&lt;p&gt;— chezou (@chezou)
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;script async src="//platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;juliaのREPL凄い便利。タブを押すとこういう奴らがいることがわかるが、何が凄いかって &lt;code&gt;∛ 8&lt;/code&gt;で2.0って返ってくる所
&lt;/p&gt;
&lt;p&gt;— chezou (@chezou)
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;script async src="//platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;僕自身は、なんだかんだでREPL+SublimeTextで書くことが多いです。&lt;/p&gt;
&lt;p&gt;明日は再びbicycle1885さんです。&lt;/p&gt;</description></item><item><title>wordpress.comからはてなブログにお引っ越ししました</title><link>https://chezo.uno/post/2014-12-01-wordpress-dot-comkarahatenaburogunioyin-tuyue-sisimasita/</link><pubDate>Sun, 30 Nov 2014 16:28:46 -0800</pubDate><guid>https://chezo.uno/post/2014-12-01-wordpress-dot-comkarahatenaburogunioyin-tuyue-sisimasita/</guid><description>&lt;p&gt;Markdownで書くのが辛くてwordpress.comからお引っ越ししました。 期待していたJuliaのsyntax highlihgtが無くて切ないです。&lt;/p&gt;
&lt;p&gt;Tokyuのあれとか書こうと思っていたのですが、irubyの良さについては真面目に書こうと思います。&lt;/p&gt;
&lt;p&gt;基本的に参考にしたのはこのサイトです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;まさか、syntax highlightを移行するためにはてなダイアリーを経由しないといけないとか、はてなダイアリーの作成場所が巧妙に小さく分かりにくくされていたりとか、はてダ作ると緑スターもらえたりとか辛かったです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;wordpress.comからエクスポート&lt;/li&gt;
&lt;li&gt;MT形式に変換&lt;/li&gt;
&lt;li&gt;syntax highlightをsuper pre記法に置換(エディタで色々なパターン見つけて置換)&lt;/li&gt;
&lt;li&gt;はてダにimport&lt;/li&gt;
&lt;li&gt;はてなブログに移行&lt;/li&gt;
&lt;li&gt;slideshareとかツイートの独自記法を見つけて悲しくなる(←今ここ)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;本当は6も一括置換すればよかったんですが、3からループするのはもういやだなぁと諦めました&amp;hellip;。 Juliaのsyntax highlightが欲しければQiitaに書くか、Gist貼ればいいんですね！&lt;/p&gt;</description></item><item><title>RubyKaigi行ってきました &amp;amp; RubyHirobaで「神奈川Ruby会議01」告知LTしてきました #rubykaigi #rubyhiroba #kana01</title><link>https://chezo.uno/post/2014-09-21-rubykaigixing-tutekimasita-and-rubyhirobade-shen-nai-chuan-rubyhui-yi-01-gao-zhi-ltsitekimasita-number-rubykaigi-number-rubyhiroba-number-kana01/</link><pubDate>Sun, 21 Sep 2014 15:07:11 -0700</pubDate><guid>https://chezo.uno/post/2014-09-21-rubykaigixing-tutekimasita-and-rubyhirobade-shen-nai-chuan-rubyhui-yi-01-gao-zhi-ltsitekimasita-number-rubykaigi-number-rubyhiroba-number-kana01/</guid><description>&lt;p&gt;いっぱい面白い発表があったけど、諸般の事情により完結に&lt;/p&gt;
&lt;h1 id="rubykaigi"&gt;RubyKaigi&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&amp;ldquo;Inside RubyMotion for Android&amp;quot;がやばかった。まさか、REPLを使ってAndroidのviewを動的に変更しているデモを見られるとは&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;@tmm1氏の&amp;quot;Ruby 2.1 in Production&amp;quot;がとにかく&amp;quot;Profile! Profile! Profile!&amp;ldquo;ということで、Ruby2.1に上げるまでに徹底的にプロファイルツールを作成して遅いところを潰していく姿勢に会場とともにため息ばかりついた&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;須藤さんの&amp;quot;Three Ruby usages - High-level interface, Glue and Embedding - Inside Droonga&amp;quot;を聞いていると、GlueとしてのRubyをSWIG以外の方法でも触るべきだと感じた。JuliaはCしか叩けないけど、割りと楽なんだよな&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;amaで@gogo_tanakaさんの質問「数値計算にもRubyが盛り上がらないんですか？」の回答を聴くと、感覚が少しずれているなーと感じた。多分、ユーザがやりたいのは数値計算をして仕事をしたいのであって、数値計算ライブラリを作りたいわけではないという点に尽きるかなと。数式知らなくてもSVDしたい、みたいな&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;会期中に意識高まって、Juliaのpackageを2つリリースメール流した
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ADAGrad.jlも実装していたけどDictとArrayどちらを使うべきかわからないので保留&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ingressのagent各位ともっと交流すればよかった&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="rubyhiroba"&gt;RubyHiroba&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;2015/1/17に開催する神奈川Ruby会議01の宣伝をしてきました&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;公式サイトは
です →
になりました&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Jekyll in another Jekyll辛かったけど、会期中に解決できてよかった&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;iframe src="//www.slideshare.net/slideshow/embed_code/key/FB5cOKqxtDfcLH" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen&gt; &lt;/iframe&gt; &lt;div style="margin-bottom:5px"&gt; &lt;strong&gt; &lt;a href="//www.slideshare.net/chezou/introduction-to-kanagawa-ruby" title="Introduction to Kanagawa Ruby Kaigi01 #kana01" target="_blank"&gt;Introduction to Kanagawa Ruby Kaigi01 #kana01&lt;/a&gt; &lt;/strong&gt; from &lt;strong&gt;&lt;a href="//www.slideshare.net/chezou" target="_blank"&gt;Aki Ariga&lt;/a&gt;&lt;/strong&gt; &lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;iruby notebookの紹介は東急できちんと準備してやりなおそうと思います&lt;/li&gt;
&lt;li&gt;
にコミュニティ紹介の記事を書いて投稿するとよいと@muryoimplさんに言われました&lt;/li&gt;
&lt;li&gt;@beroberoさんの発表の質疑で、「何故数値計算にPythonなどではなくRubyを選んだんですか？」という質問が出てきたのを見て、なるほどこういう切り口もあるのかと思った。ちなみに、berobero氏曰くJuliaはSciRubyよりマシくらいな位置づけとのこと&lt;/li&gt;
&lt;li&gt;Railsガイドを翻訳している
さんとお話出来てよかった。
の宣伝もしてきましたよ&lt;/li&gt;
&lt;li&gt;悲しみのMagsafe2忘れ&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>MeCabのJuliaバインディングMeCab.jlを作りました</title><link>https://chezo.uno/post/2014-09-15-mecabnojuliabaindeingumecab-dot-jlwozuo-rimasita/</link><pubDate>Mon, 15 Sep 2014 05:09:52 -0700</pubDate><guid>https://chezo.uno/post/2014-09-15-mecabnojuliabaindeingumecab-dot-jlwozuo-rimasita/</guid><description>&lt;p&gt;Juliaから日本語形態素解析器として最も有名な
を使える
を作りました。&lt;/p&gt;
&lt;p&gt;まだ、METADATA.jlに
のですが、きっと明日には使えるようになっていると思います。&lt;br&gt;
[2014/09/15 23:33追記] マージされました！&lt;/p&gt;
&lt;h2 id="how-to-use"&gt;How to use&lt;/h2&gt;
&lt;p&gt;簡単な使い方は&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Pkg.add(&amp;quot;MeCab&amp;quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;を一度していただければ、こんな感じでアクセスできます&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;using MeCab mecab = Mecab() results = parse(mecab, &amp;quot;すももももももももものうち&amp;quot;) for result in results println(result.surface, &amp;quot;:&amp;quot;, result.feature) end
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="juliaでcのコードをbindingするには"&gt;JuliaでCのコードをbindingするには&lt;/h2&gt;
&lt;p&gt;基本的には、公式マニュアルを読めばいいです。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;とかだけ書くと大分辛いのですが、ポイントは&lt;code&gt;ccall&lt;/code&gt;を使えば良いということです。&lt;/p&gt;
&lt;p&gt;例えば、以下の様なCのコードがあったとします。(マニュアルより引用)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;int main(int argc, char \*\*argv);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;すると、Julia側のコードはこう書けばよいのです。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;argv = [&amp;quot;a.out&amp;quot;, &amp;quot;arg1&amp;quot;, &amp;quot;arg2&amp;quot;] ccall(:main, Int32, (Int32, Ptr{Ptr{Uint8}}), length(argv), argv)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;問題は、ポインタが帰ってくる場合どうすればいいのかです。&lt;br&gt;
これは、意外と簡単で第二引数を&lt;code&gt;Ptr{Void}&lt;/code&gt;で受けてあげれば良いです。&lt;/p&gt;
&lt;p&gt;返り値が構造体なんかの場合は、対応する&lt;code&gt;immutable&lt;/code&gt;をJuliaで作ってあげて、&lt;code&gt;unsafe_load&lt;/code&gt;すれば良さそうです。&lt;/p&gt;
&lt;p&gt;なお、関数ポインタも受けれるとか。&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;ただ未確認ですが、構造体のメンバに構造体がいる場合はどうやればいいのかわかりませんでした。&lt;br&gt;
(なので、今回は&lt;code&gt;mecab_node_t&lt;/code&gt;は諦めた)&lt;/p&gt;
&lt;h2 id="コンストラクタとデストラクタ"&gt;コンストラクタとデストラクタ&lt;/h2&gt;
&lt;p&gt;MeCabのtaggerの様にに、Cで確保したポインタを保持しておく場合、コンストラクタで作りデストラクタで解放するのが良いようです。&lt;/p&gt;
&lt;p&gt;bicycle1885さんのこの記事を参考に、実装してみました。&lt;br&gt;
&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;type Mecab ptr::Ptr{Void} function Mecab(option::String = &amp;quot;&amp;quot;) argv = split(option) if(length(argv) == 0) argv = [&amp;quot;&amp;quot;] end ptr = ccall( (:mecab\_new, &amp;quot;libmecab&amp;quot;), Ptr{Void}, (Cint, Ptr{Ptr{Uint8}}), length(argv), argv ) if ptr == C\_NULL error(&amp;quot;failed to create tagger&amp;quot;) end smart\_p = new(ptr) finalizer(smart\_p, obj -\&amp;gt; ccall((:mecab\_destroy, &amp;quot;libmecab&amp;quot;), Void, (Ptr{Void},), obj.ptr)) smart\_p end end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;ポイントは&lt;code&gt;finalizer&lt;/code&gt;を実装すると、それがデストラクタとして働くということです。&lt;/p&gt;
&lt;h2 id="cはクラスとかnamespaceとかは"&gt;C++は？クラスとかnamespaceとかは？&lt;/h2&gt;
&lt;p&gt;どうも扱えないようです。&lt;br&gt;
色々と調べたのですが、特にnamespace周りは鬼門のようです。&lt;/p&gt;
&lt;p&gt;なので、&lt;code&gt;extern C&lt;/code&gt;をしながらwrapperを一枚書くのが良さそうですね。&lt;/p&gt;
&lt;h2 id="最後に"&gt;最後に&lt;/h2&gt;
&lt;p&gt;思ったより簡単にバインディングができました。&lt;br&gt;
多分、Kytea.jlも書けそう。&lt;/p&gt;
&lt;p&gt;この内容を
でLTしてこようと思います。&lt;/p&gt;</description></item><item><title>データ分析への向き合い方~Machine Learning Casual Talks #2を開催しました #MLCT</title><link>https://chezo.uno/post/2014-08-29-detafen-xi-henoxiang-kihe-ifang-machine-learning-casual-talks-number-2wokai-cui-simasita-number-mlct/</link><pubDate>Fri, 29 Aug 2014 15:07:00 -0700</pubDate><guid>https://chezo.uno/post/2014-08-29-detafen-xi-henoxiang-kihe-ifang-machine-learning-casual-talks-number-2wokai-cui-simasita-number-mlct/</guid><description>&lt;p&gt;先週火曜日に
を開催しました。&lt;br&gt;
発表は、グノシー関さん、PFI比戸さん(
)、
さん、カメリオから柴田さん、
さんに発表頂きました。&lt;br&gt;
発表していただいた皆さん、Yahoo!Japanの
さんはじめお手伝いいただいた皆さん、本当にありがとうございました！&lt;/p&gt;
&lt;p&gt;togetterのまとめ(
)&lt;/p&gt;
&lt;p&gt;[2014/08/30追記]&lt;br&gt;
Gunosy関さんのスライドが落ちていたので追加しました。&lt;/p&gt;
&lt;h1 id="tldr"&gt;tl;dr&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;仮説なきデータ分析はやめよう&lt;/li&gt;
&lt;li&gt;施策の価値を人手で検証して、必要に応じて機械学習を使おう&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="詳細"&gt;詳細&lt;/h2&gt;
&lt;p&gt;今回は、
さんが「機械学習とKPI」というテーマを所望されていたので、それで各スピーカーにお話いただきました。&lt;br&gt;
お互い示し合わせていなかったのに、Lean StartupのMVPの話を中心に話を組み立てていたのが非常に興味深かったです。&lt;br&gt;
特に、グノシーの創業者の一人関さんが「B to Cサービスの現場から考える機械学習活用」という発表をされたのですが、&lt;/p&gt;
&lt;p&gt;普段からクックパッド社内でも考える内容に非常にマッチしていて(機械学習をやるやらないは別にして)、データを活かす上での心づもりとして有益な情報でした。&lt;/p&gt;
&lt;iframe allowfullscreen="true" allowtransparency="true" frameborder="0" height="596" id="talk_frame_115621" mozallowfullscreen="true" src="//speakerdeck.com/player/e0dba2400f2b0132e46c5af3d0e731c5" style="border:0; padding:0; margin:0; background:transparent;" webkitallowfullscreen="true" width="710"&gt;&lt;/iframe&gt;
&lt;p&gt;ポイントとしては以下の三点です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;機械学習の精度と、ユーザー価値は別物である&lt;/li&gt;
&lt;li&gt;まずは施策の価値を人手で作って(MPV)、検証後機械学習を適用する&lt;/li&gt;
&lt;li&gt;仮説がなければKPIを追いかけても意味が無い&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;もう一つ、PFIの比戸さんの発表も、データを扱う人なら必見の内容です。&lt;/p&gt;
&lt;p&gt;ビール大好きな人のコメントが的を射ています。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;このページ、機械学習に限らずデータほげほげ系であるあるすぎて、ウッってなるなｗ
&lt;/p&gt;
&lt;p&gt;— tagomoris (@tagomoris)
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;script async src="//platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/38372284" 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&gt; &lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;
&lt;/strong&gt; from &lt;strong&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;
&lt;/strong&gt; from &lt;strong&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="lt"&gt;LT&lt;/h2&gt;
&lt;h3 id="motivic_-さん素人がdeep-learningと他の機械学習の性能を比較してみた"&gt;@motivic_ さん「素人がDEEP LEARNINGと他の機械学習の性能を比較してみた」&lt;/h3&gt;
&lt;iframe src="https://www.slideshare.net/slideshow/embed_code/38373205" 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&gt; &lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;
&lt;/strong&gt; from &lt;strong&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;どう見ても素人詐欺です、本当にありがとうございました&lt;/p&gt;
&lt;h3 id="samurai01t-さんカメリオの記事の本文抽出"&gt;@samurai01T さん「カメリオの記事の本文抽出」&lt;/h3&gt;
&lt;p&gt;内容もさることながら、初心者向けの機械学習おすすめ本の提示がよかったです。
は読みやすくていい本ですね。&lt;/p&gt;
&lt;p&gt;本文抽出といえば、
さんのExtractContent(
,
)を使っていた記憶が蘇りました。&lt;/p&gt;
&lt;h3 id="akira-shibataさんカメリオ精度向上に使った学習アプローチ"&gt;Akira Shibataさん「カメリオ精度向上に使った学習アプローチ」&lt;/h3&gt;
&lt;p&gt;最適化手法は古典的な方法を使っているそうなのですが、特徴的なのがクラウドワークスを使ってラベルを収集していること。&lt;br&gt;
USだとAmazon Mechanical Turkを使うのが一般的に行われているのですが、日本でマイクロタスクを出して機械学習の正解データを作っているというのは感慨深いものを感じました。&lt;/p&gt;
&lt;h2 id="まとめ"&gt;まとめ&lt;/h2&gt;
&lt;p&gt;グノシー関さんの「数値は神である」、PFI比戸さんの「機械学習は苦しい」という話に表されるように、機械学習を「つかう」という点にフォーカスした会でしたが、機械学習をしない人にとっても、どうデータと向きあえばいいのか、というエッセンスが凝縮されていました。&lt;br&gt;
僕自身も聞いていて&amp;quot;Lean Analytics&amp;quot;にあった、「行動に移せない指標は意味が無い」という話を具体的にした話を聞けて、局所最適解に陥らないデータ活用について考えさせられました。&lt;/p&gt;</description></item><item><title>#JuliaTokyo 01で「Julia100本ノック」を発表してきました</title><link>https://chezo.uno/post/2014-07-05-number-juliatokyo-01de-julia100ben-notuku-wofa-biao-sitekimasita/</link><pubDate>Sat, 05 Jul 2014 15:06:54 -0700</pubDate><guid>https://chezo.uno/post/2014-07-05-number-juliatokyo-01de-julia100ben-notuku-wofa-biao-sitekimasita/</guid><description>&lt;p&gt;
で発表してきました。&lt;br&gt;
取りまとめをしてくださった
さんには感謝です。&lt;/p&gt;
&lt;p&gt;事の発端は、
を読んだ
と
で「Julia勉強会やりましょう！」といったことでした。&lt;br&gt;
そこで、
とコンタクトをとり、始まりました。&lt;/p&gt;
&lt;p&gt;まさか、本家のJuliaConの半分の40人近くの参加者が集う場になりました！(Julia歴24時間以内の人も多かったですが&amp;hellip;)&lt;br&gt;
togetterは
&lt;/p&gt;
&lt;p&gt;先日公開した、
の発表をしてきました。
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;日本でおそらく一番Juliaにコミットしている
さんと意気投合したら、いつの間にかやることが決まっていたJuliaTokyoですが、貴重な日本語の資料が集まったいい機会でした。&lt;/p&gt;
&lt;p&gt;また、
さんにはJuliaConの様子を世界でおそらく一番最初に報告してもらったり、Feature Engineer vs Machine Learnerなんて話も飛び交って非常に面白い場でした。&lt;/p&gt;
&lt;p&gt;パフォチューするのに読んでおくべきページは
です&lt;/p&gt;
&lt;p&gt;パッケージの作り方とか、C++のバインディングどうしたらいいの&amp;hellip;な話とかが聞けて個人的には大満足でした。&lt;br&gt;
また、IDEどうしたらいいんだよ！問題は非常に白熱をして、Julia Studioはオワコン説、IJulia最高！いやいや
素晴らしいだろ。グローバル変数書いたら負けだからIJuliaとかどうなの、REPLの補完最高では？みたいな熱い戦いが繰り広げられました。&lt;/p&gt;
&lt;p&gt;さて、第二回は？という話が出ていましたが、きっと発表者ドリブンだと思いますが、おそらくフェーズとしてはカンファレンススタイルよりもくもくする会を定期的に開催するのが良さそうですねーという話をしていました。&lt;/p&gt;
&lt;p&gt;みなさん、Scikit-learnをpure julia移植すればワンチャンありますよ&lt;/p&gt;</description></item><item><title>Julia100本ノック</title><link>https://chezo.uno/post/2014-06-21-julia100ben-notuku/</link><pubDate>Sat, 21 Jun 2014 15:06:49 -0700</pubDate><guid>https://chezo.uno/post/2014-06-21-julia100ben-notuku/</guid><description>&lt;p&gt;
に引き続き、
という、面白いnumpyの練習問題があったのでそれのJulia版を作成しました。&lt;br&gt;
実際には46個しかないのと、numpyの便利関数がなくて挫折したものとかいくつかありますが、pythonistaな方々はオリジナルと比較してJuliaの世界に来ていただければ楽しいのではないかと思います。&lt;/p&gt;
&lt;p&gt;この話で得たものをまとめて、
で発表してこようと思います。&lt;br&gt;
コードは最後にgistのを貼るとして、発表するための雑感をメモしておきます。&lt;/p&gt;
&lt;h2 id="調べるべき所"&gt;調べるべき所&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
で検索&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;関連パッケージにないかどうかを調べる(from google)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;特に
などの基本的なパッケージは調べると良い&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;githubでissueを調べる&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Matlabではどう書くかを調べて、その関数名を調べる&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Numpyでどう書くかを調べてMatlabに変換する&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;他言語のドキュメント(英語)がわかると、特定の処理を検索するためのワードが分かって良い&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="numpy-matlabとの比較"&gt;numpy, matlabとの比較&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;matlab, numpyは歴史があるため充実した便利機能が沢山あることを実感&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Matlabはおろか、Pythonよりストイックな感じ&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「Matlabである○○はありませんか？」「No!それ高速に処理できないだろ！」&lt;/li&gt;
&lt;li&gt;&amp;ldquo;removed pascal(matlabであった関数)&amp;rdquo;&lt;/li&gt;
&lt;li&gt;「これあると便利だと思うんだけど」「IMHO 一つのことを複数のやり方でやれるのはどうかと思う」&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;たまに、独自の関数名をつけてきて辛い&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;argmax&lt;/code&gt;ならわかるのに&lt;code&gt;indmax&lt;/code&gt;ってなんだよ(2014/06/22追記:&lt;code&gt;argmax&lt;/code&gt;にrenameされそうな
です)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="code"&gt;code&lt;/h2&gt;
&lt;p&gt;[2014/06/22追記]&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;レポジトリを作りました。最新のものはこちらをどうぞ
&lt;/li&gt;
&lt;li&gt;
を見えるようにしました。nbview便利すぎる&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[2014/06/24追記]&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
しました。結構array comprehension使えという話が多く、vectorizeしない方がいいんだよ！というツッコミが新鮮です&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>Machine Learning Casual Talks を開催しました #MLCT</title><link>https://chezo.uno/post/2014-06-07-machine-learning-casual-talks-wokai-cui-simasita-number-mlct/</link><pubDate>Sat, 07 Jun 2014 05:06:04 -0700</pubDate><guid>https://chezo.uno/post/2014-06-07-machine-learning-casual-talks-wokai-cui-simasita-number-mlct/</guid><description>&lt;p&gt;昨日6/6(金)に、クックパッドで
を開催しました。&lt;br&gt;
はじめてこの規模の勉強会を開催したので、色々とどたばたしてしまいましたが、発表・参加・準備等協力していただいた皆様ありがとうございました！&lt;/p&gt;
&lt;p&gt;募集開始して30分もしないうちに枠が埋まり、一時は100人を超える応募をしていただき注目されている分野であることを改めて認識しました。当日も天候も悪い中40名近くの方に集まっていただき、そして一言も&amp;quot;カジュアル&amp;quot;の定義をしていなかったのですが、意図していた定義どおりの活発な議論ができて良かったです。&lt;br&gt;
特に、「ハイパーパラメーターの説明を一言もせずに進んでいく会なのか&amp;hellip;」というコメントに対して、海野さんが「libsvmのCについて説明したのはかなり分かりやすくしたつもりだった」という返答が象徴的でした。&lt;br&gt;
(なお、カジュアルの定義はcon_mameさんのこちらがわかりやすいです。)&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;発表者の立ち位置も、機械学習のシステムを社外に提供する立場、機械学習のライブラリを作る立場、自社サービスで機械学習を含めたシステムを作る立場と、三者バランスよく様々な話に展開して良かったです。&lt;/p&gt;
&lt;p&gt;個人的には、Jubatusのバグの歴史を聞かせていただけたことが、とても価値があったなと思いました。&lt;br&gt;
次回の開催も、PFI方面やGunosy方面から発表したいという話が来ていますので、発表者が揃い次第案内できればと思っています。&lt;/p&gt;
&lt;h1 id="発表資料"&gt;発表資料&lt;/h1&gt;
&lt;h2 id="chezou-オープニングトーク"&gt;chezou 「オープニングトーク」&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h2 id="komiya_atsushi-機械学習のテスト自動化コトハジメ"&gt;
「機械学習のテスト自動化コトハジメ」&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h2 id="unnonouno-jubatusにおける機械学習のテスト"&gt;
「Jubatusにおける機械学習のテスト」&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h2 id="muraokaz-qluto-パーソナライズニュースを支えるml業務のまわしかたyahoo-japan"&gt;
,
「パーソナライズニュースを支えるML業務のまわしかた@Yahoo! JAPAN」&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h1 id="lt"&gt;LT&lt;/h1&gt;
&lt;h2 id="yamakatu-pythonでカジュアルにディープラーニング"&gt;
「pythonでカジュアルにディープラーニング」&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h2 id="gunosy-関さん-グノシーを支える機械学習業務プロセス"&gt;Gunosy 関さん 「グノシーを支える機械学習業務プロセス」&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h2 id="showyouscikit-learn入門とお願い"&gt;
「scikit-learn入門とお願い」&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h2 id="cookpad-原島さん-レシピの自動分類"&gt;Cookpad 原島さん 「レシピの自動分類」&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h1 id="see-also"&gt;See also&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="追記"&gt;追記&lt;/h1&gt;
&lt;p&gt;当日最も衝撃的だった情報&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>Julia vs Python: ビットコインオプションのモンテカルロシミュレーション</title><link>https://chezo.uno/post/2014-05-06-julia-vs-python-bitutokoinopusiyonnomontekarurosimiyuresiyon/</link><pubDate>Tue, 06 May 2014 15:06:37 -0700</pubDate><guid>https://chezo.uno/post/2014-05-06-julia-vs-python-bitutokoinopusiyonnomontekarurosimiyuresiyon/</guid><description>&lt;p&gt;Justin Huang(
)さんのJuliaとPythonの比較記事(原題：
)が非常に面白かったので、翻訳してみました。&lt;/p&gt;
&lt;p&gt;Juliaは科学計算・数値計算向けの言語として高速さを売りにしている言語で、Rからの移行を進める人たちも増えているようです。&lt;/p&gt;
&lt;p&gt;以前訳した
という記事を読んでいた時に、そういえば、Juliaって言語があったな、と思って調べていました。(
しましたし、
で出てくるベンチマークも印象に残っています)&lt;/p&gt;
&lt;p&gt;今回のJustinさんの指摘では、普通のプログラマーにとってPythonよりもJuliaの方が、特定の高速化を意識せずにコードを書けるため、プロトタイプに向いているのでは、という点が興味深い視点でした。&lt;/p&gt;
&lt;p&gt;なお、元の文章とコードの権利はJustin氏に(いくつかのPythonのコードはDr. Hilpischに)帰属します。&lt;br&gt;
翻訳を快諾していただいたJustin氏に感謝します。&lt;/p&gt;
&lt;p&gt;なお、翻訳の間違い等ありましたら、chezouまでご指摘ください。&lt;/p&gt;
&lt;p&gt;[2014/05/07 15:30追記]&lt;br&gt;
で vectorizeしないで4倍速くなるコードが紹介されています。&lt;/p&gt;
&lt;p&gt;jwmerrill 氏曰く、&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;In general, carefully written devectorized Julia will be faster than equivalent vectorized code because it is possible to avoid allocating containers at intermediate stages of the computation. This is surprising for people coming from e.g. Matlab, R, or Numpy, because vectorized code is often faster in those environments.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;ということなので、Juliaは驚くべきことに、vectorizeしない方が高速になるようです。やばい&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;私は最近、HackerSchoolに参加した時にStefan Karpinskiに聞いた
を紹介した。&lt;br&gt;
Juliaはとても高速で高性能な科学計算言語をターゲットとしており、その速度はCのネイティブコードに近づきつつある。&lt;br&gt;
Python quants in NYCに参加した後、
が金融分析におけるPythonの処理速度についてのプレゼンテーションを聞いた時に、JuliaとPython/numpy stackを比較することを決めた。&lt;/p&gt;
&lt;p&gt;これはJuliaとPythonの対決ではなく、むしろ同じ問題を2つの言語で解いて比較をする練習である。&lt;br&gt;
ipython/ijuliaのコードを添付したので、よかったら試して欲しい。&lt;/p&gt;
&lt;h1 id="monty-python-bitcoinとは"&gt;Monty Python Bitcoinとは&lt;/h1&gt;
&lt;p&gt;もしかすると、的はずれなことを言うかも知れないが、やろうとしていることを簡単に説明してみる。&lt;br&gt;
基本的に、古典的なオプション価格問題のモンテカルロシミュレーションをJuliaとPythonの両方で解き、2つの言語で取られているアプローチを比較する。&lt;/p&gt;
&lt;h2 id="モンテカルロ法"&gt;モンテカルロ法&lt;/h2&gt;
&lt;p&gt;モンテカルロ・シミュレーションは、確率的なテクニックである。&lt;br&gt;
ランダムな確率分布を使いサンプリングを繰り返すことで、複雑なシステムをシミュレートする。典型的には精度のために極端に大きな数をサンプリングする。&lt;/p&gt;
&lt;p&gt;シンプルで概念的な例としては、カジノでクラップ(私がお金を捨てるのに好む方法だ 訳注:
)を繰り返しプレイし結果を記録して、あるベットに対する特定のオッズを見つけることが挙げられる。&lt;/p&gt;
&lt;h2 id="ビットコイン-オプション"&gt;ビットコイン オプション&lt;/h2&gt;
&lt;p&gt;私がビットコインオプションと言う時は、ヨーロッパのコールオプション形式の理論的なビットコインのストック・オプションを意味する。なぜなら、ビットコインに関するものはすべて興味深い(し、もっとクリックを稼げる)&lt;/p&gt;
&lt;h2 id="幾何ブラウン運動"&gt;幾何ブラウン運動&lt;/h2&gt;
&lt;p&gt;株価はランダムウォークに従い、予測できないという金融理論がある。&lt;br&gt;
この仮説に従い、モンテカルロシミュレーションによりビットコインのヨーロッパコール・オプションの評価したい。ビットコインの価格変動をランダムウォークでシミュレートする。(今回は、ランダムな連続値をシミュレートする架空の手法として幾何ブラウン運動を考える)&lt;/p&gt;
&lt;h2 id="株価モデル"&gt;株価モデル&lt;/h2&gt;
&lt;p&gt;ビットコインの価格が
とマルコフ過程に従うと仮定する。&lt;/p&gt;
&lt;p&gt;関連するパラメータ:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;S0&lt;/code&gt;&lt;/strong&gt; : 開始価格。ビットコインの現在の価値として扱う&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;r&lt;/code&gt;&lt;/strong&gt; : 期待されるリターン、または成長率の平均。リスク中立な決済(例:米国債)で参照される&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;sigma&lt;/code&gt;&lt;/strong&gt; : ボラティリティのパーセンテージ。 このケースで私は後述するbitstampの年刊の計算に基づく&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;z&lt;/code&gt;&lt;/strong&gt; : ブラウン運動、つまり平均0の正規分布からランダムなサンプル&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;r&lt;/code&gt;&lt;/strong&gt; と &lt;strong&gt;&lt;code&gt;sigma&lt;/code&gt;&lt;/strong&gt; は年度ベースで計測している。&lt;/p&gt;
&lt;p&gt;これらのパラメータが与えられた時、ビットコインの株価をモデル化するために確率微分法を使う。&lt;/p&gt;
&lt;p&gt;$latex dS\_t = r S\_t\,dt + \sigma S\_t\,dZ\_t$&lt;/p&gt;
&lt;p&gt;このモデルに従い、 確立過程 &lt;code&gt;St&lt;/code&gt; を幾何ブラウン運動として定義できる。&lt;br&gt;
いくつかの微積分とStに自然対数の導関数の後、Sをtで離散化した式に到達する:&lt;/p&gt;
&lt;p&gt;$latex S\_t = S\_{t-\Delta t}e^{\left((r-\frac{\sigma^2}{2})\Delta t+\sigma \sqrt{\Delta t}z\_t )\right)}$&lt;/p&gt;
&lt;h2 id="ビットコインのボラティリティを算出する"&gt;ビットコインのボラティリティを算出する&lt;/h2&gt;
&lt;p&gt;ビットコインに対する一般的な論点はボラティリティである。&lt;br&gt;
今日ビットコインを買うことのリスクは、明日には半分の価値になっているかもしれないことだ。&lt;br&gt;
&lt;code&gt;r&lt;/code&gt;に対する案を出すためには、ビットコインのボラティリティを計算する必要がある。&lt;br&gt;
Bitstampで交換されたビットコインの(分単位でリサンプリングした)価格変動の対数に対する標準偏差を利用した。2013/03/01以降の年率を算出した。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import pandas as pdimport numpy as np# read in bitstamp USD trade data with columns time, price, volumebitstamp = pd.read\_csv(&amp;quot;bitstampUSD.csv&amp;quot; , names=[&amp;amp;#039;time', 'price', 'volume'], index\_col=0)bitstamp.index = pd.to\_datetime((bitstamp.index.values[^1] e9).astype(int))# resample the csv data to minutely data for volume and pricevolume = bitstamp.volume.resample(&amp;amp;#039;1min', how='sum')value = bitstamp.prod(axis=1).resample(&amp;amp;#039;1min', how='sum')# obtain the volume weighted average pricevwap = value / volume# pad data with repeating values# then grab a years worth of data starting from 01 March 2013bitstamp\_pad = vwap.fillna(method=&amp;amp;#039;pad', limit=10)bitstamp\_year = bitstamp\_pad.ix[&amp;amp;#039;2013-03-01':'2014-03-01']# calculate the return and volatilityreturns = np.log(bitstamp\_year / bitstamp\_year.shift(1)) returns.std()\*np.sqrt(returns.size) \* 100## output: 260.70492740919627
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;残念ながら、Juliaのツールには時系列データに対するものが現状では全くない。&lt;br&gt;
と呼ばれる素晴らしいパッケージがあり、データフレームの処理と変換を行ってくれる。 例:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;using DataFrames bitstamp = readtable(&amp;quot;bitstampUSD.csv&amp;quot;, colnames = [&amp;quot;time&amp;quot;, &amp;quot;price&amp;quot;, &amp;quot;amount&amp;quot;])
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;残念ながら、これが生のJuliaコードで時間周期に対する&lt;code&gt;fillna&lt;/code&gt;や&lt;code&gt;resample&lt;/code&gt;のような関数を書かずにできる最大限のことである。&lt;/p&gt;
&lt;p&gt;また、DataFrames.jlはpandasのパッケージよりCSVの読み込みは遅いし、インデキシングもサポートされていない。&lt;/p&gt;
&lt;h2 id="pythonでのモンテカルロシミュレーション"&gt;Pythonでのモンテカルロシミュレーション&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;これ以降のほとんどのPythonコードはDr. Hilpischのもので彼にクレジットがあることを注意して欲しい。&lt;br&gt;
(
)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;ここで、_sigma_と他のパラメータをPythonで書かれた単純なモンテカルロシミュレーションを実行することで得られる。&lt;br&gt;
ここでのコードでは基本的に、上述した数式で表されるビットコインの価格が取りうる経路の数&lt;code&gt;I&lt;/code&gt;を生成している。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Simulating Geometric Brownian Motion with Python#import mathfrom random import gauss# ParametersS0 = 600; # current bitcoin pricer = 0.02; # risk neutral payoff, assumed 2% for this exercise, in reality probably less.sigma = 2; # extremely high sigma due to spike in bitcoin prices late last yearT = 1.0; # 1 Time cycleM = 100; # 100 stepsdt = T / M # dt# Simulating I paths with M time stepsdef genS\_py(I): # initialize array to hold all of our paths S = [] # for each path i to Ifor i in range(I): path = [] # for each step t to M + 1for t in range(M + 1): if t == 0: # append S0, our starting value to the front of the path path.append(S0) else: # take a random normally distributed number z (mean = 0, std = 1)# and append it to our current path z = gauss(0.0, 1.0) St = path[t - 1] \* math.exp((r - 0.5 \* sigma \*\* 2) \* dt + sigma \* math.sqrt(dt) \* z) path.append(St) S.append(path) return S
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;これは、基本的なPython的な経路を作る方法である。10万経路をシミュレーションして、時間を計測するとこうなる:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;I = 100000%time S = genS\_py(I)# CPU times: user 40.8 s, sys: 887 ms, total: 41.7 s# Wall time: 42.1 s
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;くだらないミスがないか確認するために、matplotlibで簡単なグラフを描く。&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://chezo.uno/post/2014-05-06-julia-vs-python-bitutokoinopusiyonnomontekarurosimiyuresiyon/bitcoin_plot.png"&gt;&lt;figcaption&gt;
&lt;h4&gt;bitcoin_plot&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;もし、ビットコインの価値が凄い大きさになっていたり0になっていたら、間違いなく調べ直すべきだ。&lt;/p&gt;
&lt;h2 id="juliaでのモンテカルロシミュレーション"&gt;Juliaでのモンテカルロシミュレーション&lt;/h2&gt;
&lt;p&gt;今度は、Juliaでやってみよう&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# # Simulating Geometric Brownian Motion with Julia # # Parameters const S0 = 600; # current bitcoin price const r = 0.02; # risk neutral payoff, assumed 2% for this exercise, in reality probably less. const sigma = 2; # extremely high sigma due to spike in bitcoin prices late last year const T = 1.0; # 1 Time cycle const M = 100; # 100 steps const dt = T / M # dt # Simulating I paths with M time steps function genS\_jl(i::Int64) S = {} for i in 1:i path = Float32[] for t in 1:(M + 1) if t == 1 push!(path, S0) else z = randn() st = path[t - 1] \* exp((r - 0.5 \* ^(sigma,2)) \* dt + sigma \* sqrt(dt) \* z) push!(path, st) end end push!(S,path) end return S end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Juliaの文法はいくつかの注意すべき点を除いてほとんど同じだ:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;arrayのindexは1始まりである。Pythonは0始まりなのに対して&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;randn()&lt;/code&gt;は平均0、標準偏差1の正規分布からランダムな数を生成する組み込み関数である。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Juliaの &lt;code&gt;^()&lt;/code&gt; vs Pythonの &lt;code&gt;**&lt;/code&gt; や &lt;code&gt;push!()&lt;/code&gt; vs &lt;code&gt;.append()&lt;/code&gt;などの関数&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;グローバル変数に対する定数宣言(10x倍速くなる)&lt;/p&gt;
&lt;p&gt;I = 100000 @elapsed S = genS_jl(I) # 2.243841008&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;しかしながら、Juliaで書かれた全く同じコードが20倍も速いのだ！ これは、Juliaが勝ったことを意味するのだろうか？ このアルゴリズムの一実装に対する速度の面においては、Yesだ。しかし、実際にはそうではない。 これは、後述するようにもっとも効率的なモンテカルロシミュレーションのモデル化手法ではない。&lt;/p&gt;
&lt;h2 id="ビットコインのコールオプションの評価"&gt;ビットコインのコールオプションの評価&lt;/h2&gt;
&lt;p&gt;さて、演習の一部としてビットコインの価格に対して、理論的なヨーロッパのコール・オプションの評価をしたい。&lt;br&gt;
満期になると、コール・オプションの価値は次式で表すことができる。&lt;/p&gt;
&lt;p&gt;$latex max((S\_t - K), 0) $&lt;/p&gt;
&lt;p&gt;ここで、Kはオプションの行使価格とする&lt;/p&gt;
&lt;p&gt;オプションの行使価格を K = $1000 とすると、どちらの言語でも単純に計算できる&lt;/p&gt;
&lt;h3 id="python"&gt;python&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;K = 1000.0C0 = math.exp(-r \* T) \* sum([max(path[-1] - K, 0) for path in S]) / Iround(C0, 3)# 361.203
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="julia"&gt;julia&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;K = 1000.0 C0 = exp(-r \* T) \* sum([max(path[end] - K, 0) for path in S]) / I round(C0, 3) # 374.496
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;注意：これらの2つの計算における値は、試行回数を増やすと361に収束する。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;ここでは、arrayの最後の要素にアクセスする方法(&lt;code&gt;[end]&lt;/code&gt; vs &lt;code&gt;[-1]&lt;/code&gt;)以外、言語による違いはほとんど無い。&lt;/p&gt;
&lt;h2 id="ベクトル化した数式の処理"&gt;ベクトル化した数式の処理&lt;/h2&gt;
&lt;p&gt;しかしながら、ベクトル計算をすることでより高速に処理をすることができる。&lt;br&gt;
ベクトル化のテクニックを使うことで、乗算を1つの要素を何回もループで回すのではなくベクトルに対し一度で処理ができる。&lt;br&gt;
これは、コンパイラやハードウェアによる最適化の恩恵を受けやすく、かなり処理時間が速くなる。&lt;/p&gt;
&lt;p&gt;PythonではNumPyというパッケージを使ってベクトル化できる。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import numpy as npdef genS\_np(I): S = S0 \* np.exp(np.cumsum((r - 0.5 \* sigma \*\* 2) \* dt + sigma \* np.sqrt(dt) \* np.random.standard\_normal((M + 1, I)), axis=0)) S[0] = S0 return S %time S = genS\_np(I)# CPU times: user 1.07 s, sys: 147 ms, total: 1.22 s# Wall time: 1.38 s
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;おお、ベクトル化した計算で桁違いに処理が速くなった！ 先ほどと似た方法で、オプションの理論値を$1000の行使価格として計算ができる。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;C0 = math.exp(-r \* T) \* np.sum(np.maximum(S[-1] - K, 0)) / Iround(C0, 3)# 367.457
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;まったく同じベクトル化がJuliaでもできる。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;function genS\_jlvec(I) S = S0 \* exp(cumsum((r - 0.5 \* ^(sigma, 2)) \* dt + sigma \* sqrt(dt) \* randn((M + 1, I)), 1)) S[1,1:end] = S0 return S end @elapsed S = genS\_jlvec(I) # 1.430265529
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;JuliaのメリットとしてはNumPyのようなライブラリーが不要だということだ。 我々は素のJuliaを使っている。 驚くべきことに、Juliaのナイーブなloopでの実装は、ベクトル化された実装と同程度に速い！ これは、アルゴリズムの単純なプロトタイピングに非常に向いていることを示す。 ある種の計算でナイーブな実装を駆逐することで猛烈な高速化を期待する、Pythonが提案できない価値のある論点である。&lt;/p&gt;
&lt;p&gt;最後に、Juliaでオプションの値を計算する文法はほとんど同じである:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;K = 1000.0 C0 = exp(-r \* T) \* sum(max(S[end, 1:end] - K, 0)) / I round(C0, 3) # 359.783
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="結論"&gt;結論&lt;/h2&gt;
&lt;p&gt;Python Loops: &lt;strong&gt;42.1 s&lt;/strong&gt;&lt;br&gt;
Julia Loops: &lt;strong&gt;2.24 s&lt;/strong&gt;&lt;br&gt;
Python Vectorized: &lt;strong&gt;1.38 s&lt;/strong&gt;&lt;br&gt;
Julia Vectorized: &lt;strong&gt;1.43 s&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;Juliaは、科学/数値計算にとってとても大きなポテンシャルを持っているように思える。&lt;br&gt;
ナイーブなループを使った、ビットコインの価格のモンテカルロの経路シミュレーションはPythonよりもかなり速く、ベクトル化して最適化された計算と同じオーダーの速度だった。&lt;br&gt;
つまり、今回の分析での重要な知見だと考えている：&lt;br&gt;
Juliaは計算的に困難な問題を効率的に解くにあたって、ベクトル化された処理を必要としない。&lt;/p&gt;
&lt;p&gt;Juliaはベクトルや行列の計算にNumPyのような外部ライブラリを必要としない。&lt;br&gt;
他の化学計算言語が険しい学習曲線であるのとは異なり、Juliaは普通のプログラマーにとって極めて読みやすくなる。&lt;br&gt;
処理速度は前述のとおり明確に速い。&lt;/p&gt;
&lt;p&gt;残念ながら、DataFrames.jlなどJuliaのデータ分析のためのツールは、Pythonのpandasと比較して性能面、機能面ともに成熟してるとも安定しているとも言いがたい。&lt;br&gt;
Juliaのコミュニティは若く成長している。&lt;br&gt;
だから、様々な人々が言語に対して貢献することで、私はこれらの点で多くの改善や成長がなされることを期待している。しかし、それまでは私はPythonとpandasの行く末を見ていく。&lt;/p&gt;
&lt;p&gt;すべてを考慮した上で、メインストリームとして採用されることを約束はできないが、私はJuliaを試すことをおすすめする。&lt;br&gt;
私としてはJuliaのコミュニティに貢献したいと強く思っている。&lt;/p&gt;
&lt;h2 id="files"&gt;Files&lt;/h2&gt;
&lt;p&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;h2 id="thanks"&gt;Thanks&lt;/h2&gt;
&lt;p&gt;Dr. Yves J. Hilpisch (inspiration)&lt;br&gt;
Neeraj Wahi (options pricing)&lt;br&gt;
James J. Porter (Julia)&lt;/p&gt;</description></item><item><title>kawasaki.rb #011 を開催しました #kwskrb</title><link>https://chezo.uno/post/2014-04-26-kawasaki-dot-rb-number-011-wokai-cui-simasita-number-kwskrb/</link><pubDate>Sat, 26 Apr 2014 15:06:31 -0700</pubDate><guid>https://chezo.uno/post/2014-04-26-kawasaki-dot-rb-number-011-wokai-cui-simasita-number-kwskrb/</guid><description>&lt;p&gt;4/23に
を開催しました。&lt;br&gt;
次回で1年になるのかと思うと、感慨深いです。&lt;br&gt;
なお、kawasaki.rbは毎月第4水曜の19:30-開催しています。(最終週だと思われていたのでご説明)&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h1 id="パーフェクトruby読書会"&gt;パーフェクトRuby読書会&lt;/h1&gt;
&lt;p&gt;2-9 例外 〜 2-12 組込みの変数/定数までを読みました。&lt;/p&gt;
&lt;p&gt;組込み変数の、&lt;code&gt;$-F&lt;/code&gt;はワンライナーの&lt;code&gt;-F&lt;/code&gt;と互換だよねー、といった話や、RailsとMySQLで&lt;code&gt;precision&lt;/code&gt;を使おうとしたら予約語でハマったという話が出ました。&lt;/p&gt;
&lt;p&gt;次回は、ついに3章に突入です。&lt;/p&gt;
&lt;h1 id="angularjssinatraでturbolinks-snowcrush-さん"&gt;AngularJS+SinatraでTurbolinks:
さん&lt;/h1&gt;
&lt;iframe src="//www.slideshare.net/slideshow/embed_code/key/4x7qUwiCK5o84T" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen&gt; &lt;/iframe&gt; &lt;div style="margin-bottom:5px"&gt; &lt;strong&gt; &lt;a href="//www.slideshare.net/minoritokuda/angular-jssinatraturbolinks" title="Angular jsとsinatraでturbolinks" target="_blank"&gt;Angular jsとsinatraでturbolinks&lt;/a&gt; &lt;/strong&gt; from &lt;strong&gt;&lt;a href="//www.slideshare.net/minoritokuda" target="_blank"&gt;Minori Tokuda&lt;/a&gt;&lt;/strong&gt; &lt;/div&gt;
&lt;p&gt;@snowcrush さんのblogは、AngularJS + Sinatraで構成されているそうですが、&lt;br&gt;
google botsはJSで動的に生成されたページにindexを貼ってくれないので、&lt;br&gt;
なんとかして拾えるようにしましたという話。&lt;br&gt;
&amp;ldquo;これってTurbolinksじゃん！Railsで良いじゃん！&amp;ldquo;という結論には、笑ってしまいました。&lt;/p&gt;</description></item><item><title>TokyuRuby会議07でLTしてきました #tqrk07</title><link>https://chezo.uno/post/2014-04-03-tokyurubyhui-yi-07deltsitekimasita-number-tqrk07/</link><pubDate>Thu, 03 Apr 2014 15:06:26 -0700</pubDate><guid>https://chezo.uno/post/2014-04-03-tokyurubyhui-yi-07deltsitekimasita-number-tqrk07/</guid><description>&lt;p&gt;無限プレモルが出るという危険な楽しいイベント、
で
の
にドラの音を付けたよ！という話をしました。&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
こんな感じでご家庭でもドラの音を楽しみながらLTできます！&lt;/p&gt;
&lt;iframe src="//www.slideshare.net/slideshow/embed_code/key/KjmDwsdbPmj7Lk" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen&gt; &lt;/iframe&gt; &lt;div style="margin-bottom:5px"&gt; &lt;strong&gt; &lt;a href="//www.slideshare.net/chezou/gong-anyware" title="Gong anyware" target="_blank"&gt;Gong anyware&lt;/a&gt; &lt;/strong&gt; from &lt;strong&gt;&lt;a href="//www.slideshare.net/chezou" target="_blank"&gt;Aki Ariga&lt;/a&gt;&lt;/strong&gt; &lt;/div&gt;
&lt;p&gt;本当はデモをするつもりだったのですが、いい感じに出来上がっていたので肝心の音を鳴らすことができませんでした。せっかく、iPhone, iPad, Androidで動作確認をして会場で準備までしてたのに！&lt;/p&gt;
&lt;p&gt;あと、同僚に教えてもらった大事な情報として、フリーの音素材を探すのには
がいいよ！ということをお知らせしそびれたのが悔やまれます。&lt;/p&gt;
&lt;p&gt;大抵、Webで音を鳴らす場合再圧縮したり切ったり貼ったりすることが多いので、加工をできる音素材が必要なのですが、&lt;br&gt;
自作のものでない場合、ライセンス的にどうなのか不安になると思います。&lt;/p&gt;
&lt;p&gt;そんな時、CC0ライセンスの音素材を探せるfreesoundはめっちゃ助かりました。&lt;/p&gt;
&lt;p&gt;ちなみに、持ち込み飯はキッシュを作りました(レシピはそのうち投稿します）。ラップにつつまずホールで持っていけばよかった。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;切る前はこんな感じでした&lt;/p&gt;
&lt;h3 id="青梗菜とベーコンのキッシュ"&gt;青梗菜とベーコンのキッシュ&lt;/h3&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="https://scontent-b-sea.xx.fbcdn.net/hphotos-ash4/t1.0-9/1506854_674061255989609_24797444_n.jpg" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id="ツナと長ネギの味噌キッシュ"&gt;ツナと長ネギの味噌キッシュ&lt;/h3&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="https://fbcdn-sphotos-f-a.akamaihd.net/hphotos-ak-ash4/t1.0-9/10170927_674072462655155_1082293256_n.jpg" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;なお、飯王の写真を見せた所、妻から次回飯王を目指せとの指令が下りました。&lt;/p&gt;</description></item><item><title>kawasaki.rb #010 を開催しました #kwskrb</title><link>https://chezo.uno/post/2014-03-30-kawawaki-dot-rb-number-010-wokai-cui-simasita-number-kwskrb/</link><pubDate>Sun, 30 Mar 2014 15:06:20 -0700</pubDate><guid>https://chezo.uno/post/2014-03-30-kawawaki-dot-rb-number-010-wokai-cui-simasita-number-kwskrb/</guid><description>&lt;p&gt;kawasaki.rbもいよいよ10回目を開催してきました。&lt;br&gt;
まさかの1日二回LTという展開でしたが、無事に話すことが出来て良かったです。&lt;/p&gt;
&lt;p&gt;togetterは
&lt;/p&gt;
&lt;h2 id="パーフェクトruby読書会"&gt;パーフェクトRuby読書会&lt;/h2&gt;
&lt;p&gt;2-7-7 Regexp, 2-7-8 %記法の括弧, 2-7-9 手続きオブジェクト(Proc), 2-8 様々な代入式まで読みました。&lt;/p&gt;
&lt;h2 id="はじめて翻訳記事を書いたら300ブクマ超えた話-chezou"&gt;はじめて翻訳記事を書いたら300ブクマ超えた話 (chezou)&lt;/h2&gt;
&lt;p&gt;
を翻訳した時に思ったことを書きました。&lt;/p&gt;
&lt;iframe src="//www.slideshare.net/slideshow/embed_code/key/bQD8lAbyLDM2WL" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen&gt; &lt;/iframe&gt; &lt;div style="margin-bottom:5px"&gt; &lt;strong&gt; &lt;a href="//www.slideshare.net/chezou/rails-32784327" title="はじめて翻訳記事を書いたら300ブクマ超えた話" target="_blank"&gt;はじめて翻訳記事を書いたら300ブクマ超えた話&lt;/a&gt; &lt;/strong&gt; from &lt;strong&gt;&lt;a href="https://www.slideshare.net/chezou" target="_blank"&gt;Aki Ariga&lt;/a&gt;&lt;/strong&gt; &lt;/div&gt;
&lt;h2 id="jekyll-ドキュメントの日本語翻訳レポジトリを作った話kk_さん"&gt;Jekyll ドキュメントの日本語翻訳レポジトリを作った話(
さん)&lt;/h2&gt;
&lt;p&gt;@kk_Atakaさんによる、Jekyllのドキュメントの翻訳の話。&lt;br&gt;
ご本人のブログの記事をもとにお話していただきました。&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;特に、本家のリポジトリが英語しか想定しておらず、「言語ごとの翻訳を本体に入れるつもりはない」と言われているため、&lt;br&gt;
本家との差分をどう管理していけば良いのか、という話を議論しました。&lt;br&gt;
懇親会で、
さんの
を使って本体の更新を反映させやすくできると良いですねーと盛り上がりました。&lt;/p&gt;
&lt;h2 id="railsのhelperでnamed-capture使ったらハマった話-chezou"&gt;Railsのhelperでnamed capture使ったらハマった話 (chezou)&lt;/h2&gt;
&lt;p&gt;当日人気のない話でしたが、ActiveSupport::SafeBufferはRegexp.last_matchがそのままだと取れないので気をつけよう、という話でした。&lt;/p&gt;
&lt;iframe src="//www.slideshare.net/slideshow/embed_code/key/LcsZkYnrInT2wl" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen&gt; &lt;/iframe&gt; &lt;div style="margin-bottom:5px"&gt; &lt;strong&gt; &lt;a href="//www.slideshare.net/chezou/namd-capture-with" title="gsub with ActiveSupport::SafeBuffer" target="_blank"&gt;gsub with ActiveSupport::SafeBuffer&lt;/a&gt; &lt;/strong&gt; from &lt;strong&gt;&lt;a href="https://www.slideshare.net/chezou" target="_blank"&gt;Aki Ariga&lt;/a&gt;&lt;/strong&gt; &lt;/div&gt;
&lt;p&gt;次回は、4/23(水)に開催予定です。&lt;br&gt;
申し込みは下記からおねがいします。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>4ステップでDoorkeeperにコメント欄を追加する方法</title><link>https://chezo.uno/post/2014-03-23-4sutetupudedoorkeepernikomentolan-wozhui-jia-surufang-fa/</link><pubDate>Sun, 23 Mar 2014 15:06:15 -0700</pubDate><guid>https://chezo.uno/post/2014-03-23-4sutetupudedoorkeepernikomentolan-wozhui-jia-surufang-fa/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="画像"
srcset="https://chezo.uno/post/2014-03-23-4sutetupudedoorkeepernikomentolan-wozhui-jia-surufang-fa/e382b9e382afe383aae383bce383b3e382b7e383a7e38383e38388-2014-03-23-22-22-17_hu_9f5409f55e7595ba.webp 320w, https://chezo.uno/post/2014-03-23-4sutetupudedoorkeepernikomentolan-wozhui-jia-surufang-fa/e382b9e382afe383aae383bce383b3e382b7e383a7e38383e38388-2014-03-23-22-22-17_hu_f1529dafd50e20f.webp 480w, https://chezo.uno/post/2014-03-23-4sutetupudedoorkeepernikomentolan-wozhui-jia-surufang-fa/e382b9e382afe383aae383bce383b3e382b7e383a7e38383e38388-2014-03-23-22-22-17_hu_a79d6637f710f315.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2014-03-23-4sutetupudedoorkeepernikomentolan-wozhui-jia-surufang-fa/e382b9e382afe383aae383bce383b3e382b7e383a7e38383e38388-2014-03-23-22-22-17_hu_9f5409f55e7595ba.webp"
width="760"
height="689"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Doorkeeperはコミュニティなどのイベントを行うのに便利ですよね。&lt;br&gt;
そんなDoorkeeperですが、他のzusaarなどのサイトと比較してコメント欄がデフォルトでついていないので、&lt;br&gt;
Disqusと連携してコメント欄を追加する方法を書きます。&lt;/p&gt;
&lt;p&gt;僕がやった時は日本語で情報が見つからなかったのですが、&lt;br&gt;
@yumu19ですらはまっていたので、結構挫折している人がいるのかも&amp;hellip;、と思いブログに書くことにします。&lt;/p&gt;
&lt;h1 id="1-disqusのアカウントをとる"&gt;1. Disqusのアカウントをとる&lt;/h1&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;アカウントの取り方はメモを取っていないのですが、多分普通にメール認証すれば良いはず&amp;hellip;。&lt;/p&gt;
&lt;h1 id="2-add-disqus-to-your-siteをクリック"&gt;2. &amp;ldquo;Add Disqus to Your Site&amp;quot;をクリック&lt;/h1&gt;
&lt;p&gt;ログインした後のtop右下の&amp;quot;Add Disqus to Your Site&amp;quot;をクリックする&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://chezo.uno/post/2014-03-23-4sutetupudedoorkeepernikomentolan-wozhui-jia-surufang-fa/e382b9e382afe383aae383bce383b3e382b7e383a7e38383e38388-2014-03-23-22-18-30.png"&gt;
&lt;/figure&gt;
&lt;h1 id="3-必要な情報を埋めていく"&gt;3. 必要な情報を埋めていく&lt;/h1&gt;
&lt;p&gt;&amp;ldquo;Site name&amp;quot;はdescriptionなので適当に決めればOK。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Choose your unique Disqus URL&amp;quot;で入力する情報が、後のDoorkeeperで入力する情報。&lt;br&gt;
&amp;ldquo;Category&amp;quot;も適宜入力すればOK&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Finish registration&amp;quot;を押せば、完了。&lt;/p&gt;
&lt;p&gt;その後に出てくるscriptの生成画面はdoorkeeperには関係ないので、気にしなくて良い。&lt;/p&gt;
&lt;p&gt;[&lt;figure&gt;&lt;img src="e382b9e382afe383aae383bce383b3e382b7e383a7e38383e38388-2014-03-23-22-00-36.png%29]%28e382b9e382afe383aae383bce383b3e382b7e383a7e38383e38388-2014-03-23-22-00-36.png"&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h1 id="4-doorkeeperのコミュニティ管理画面の連携機能を開く"&gt;4. Doorkeeperのコミュニティ管理画面の&amp;quot;連携機能&amp;quot;を開く&lt;/h1&gt;
&lt;p&gt;&amp;ldquo;Disqus shortname&amp;quot;に、さっき作ったDisqus URLの&lt;code&gt;.disqus.com&lt;/code&gt;の前の文字列を入れる。&lt;br&gt;
今回の例だと&amp;quot;kawasakirbtest&amp;quot;を入れて保存する&lt;/p&gt;
&lt;p&gt;[&lt;figure&gt;&lt;img src="e382b9e382afe383aae383bce383b3e382b7e383a7e38383e38388-2014-03-23-22-04-25.png%29]%28e382b9e382afe383aae383bce383b3e382b7e383a7e38383e38388-2014-03-23-22-04-25.png"&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;これで、冒頭のようなコメント欄がイベントページの下部にできます！&lt;/p&gt;</description></item><item><title>kawasaki.rb #009を開催しました #kwskrb</title><link>https://chezo.uno/post/2014-03-01-kawasaki-dot-rb-number-009wokai-cui-simasita-number-kwskrb/</link><pubDate>Sat, 01 Mar 2014 04:03:51 -0800</pubDate><guid>https://chezo.uno/post/2014-03-01-kawasaki-dot-rb-number-009wokai-cui-simasita-number-kwskrb/</guid><description>&lt;p&gt;去る2/26(水)に
を開催しました。&lt;/p&gt;
&lt;p&gt;togetterのまとめはこちらです。&lt;br&gt;
&lt;/p&gt;
&lt;h2 id="パーフェクトruby読書会"&gt;パーフェクトRuby読書会&lt;/h2&gt;
&lt;p&gt;2-7-4 配列, 2-7-5 ハッシュ, 2-7-6 範囲(Range)をやりました。&lt;/p&gt;
&lt;p&gt;Hashでは、自分で作ったクラスをHashのkeyに用いる場合はどうすればいいのか、という話がでました。&lt;br&gt;
自作クラスに&lt;code&gt;hash&lt;/code&gt;メソッドと&lt;code&gt;eql?(other)&lt;/code&gt;メソッドを定義すれば、&lt;br&gt;
自作クラスでも同値性判定が行われるという確認をしました。&lt;br&gt;
(やっててよかった、レシピブック&amp;amp;yokohama.rb&amp;hellip;)&lt;/p&gt;
&lt;p&gt;コードで書くと、こういう感じですね。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;class Fooattr\_reader :a, :bdef initialize(a, b) @a, @b = a, b enddef hash@a%10 + @b%7enddef eql?(obj) @a == obj.a &amp;amp;&amp;amp; @b == obj.b endendf1 = Foo.new(1, 2) f2 = Foo.new(1, 2) f1.eql?(f2) # =\&amp;gt; trueh = {} h[f1] = &amp;quot;foo&amp;quot;h[f2] # =\&amp;gt; &amp;quot;foo&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Rangeでは、&lt;code&gt;(1..-1)&lt;/code&gt;のような負の数までのRangeってなんであるんだろう？という話をしました。&lt;br&gt;
使用するケースとしては、Arrayにアクセスするとき&lt;code&gt;ary[1..-1]&lt;/code&gt;というのを渡すよねー、という話になりました。&lt;/p&gt;
&lt;h2 id="lt"&gt;LT&lt;/h2&gt;
&lt;h3 id="bestgemsorg-ぺけみさおさん"&gt;BestGems.org (ぺけみさおさん)&lt;/h3&gt;
&lt;p&gt;LTは
さんによる
と、
さんによるpandasの紹介(資料公開されたら追記します)が発表されました。&lt;/p&gt;
&lt;p&gt;ぺけみさおさんの、BestGems.orgはRubyGems.orgを毎日クローリングして、&lt;br&gt;
DL数の変化を見ているというシンプルながら価値のありそうなアプローチでランキングを作られていました。&lt;br&gt;
実際にランキング作って分析するのって、楽しいですよね。&lt;/p&gt;
&lt;p&gt;ランキングを分析していると
というgemの人気が上がっているとのことでした。&lt;/p&gt;
&lt;h3 id="pandas紹介するよaflc_jpさん"&gt;pandas紹介するよ(aflc_jpさん)&lt;/h3&gt;
&lt;p&gt;aflc_jpさんのpandasの紹介は、Pythonのデータ分析によく使われるライブラリである&lt;br&gt;
の基本と使い方のexampleを紹介してもらいました。&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;説明を聞くと、pandasはRでよく使われているDataFrameを扱えるようにしているところが特徴のようで、&lt;br&gt;
SQL likeにgroupbyして集計をしやすくなっているという話でした。&lt;br&gt;
例としてはオリンピックのメダルのデータを使って、日本が歴代メダル数を稼いだ種目などを表にしていました。&lt;br&gt;
Excelに出力することもできるので、分析はpandasでreportingはexcelで、という使い分けができるようです。&lt;/p&gt;
&lt;p&gt;改めて実感したのは、IPython notebookは便利だなーということ。&lt;br&gt;
IJuliaで便利さは実感していたのですが、Rubyの実行もブラウザベースでやれるようになるそうなので、&lt;br&gt;
kawasaki.rbのパーフェクトRuby読み会でもIPythonベースにしようかなー。&lt;/p&gt;
&lt;p&gt;次回は、3/26(水)に開催予定です&lt;/p&gt;</description></item><item><title>「はじめてのパターン認識」読書会に参加しました #はじパタ</title><link>https://chezo.uno/post/2014-02-23-hazimetenopatanren-shi-du-shu-hui-nican-jia-simasita-number-hazipata/</link><pubDate>Sun, 23 Feb 2014 14:06:04 -0800</pubDate><guid>https://chezo.uno/post/2014-02-23-hazimetenopatanren-shi-du-shu-hui-nican-jia-simasita-number-hazipata/</guid><description>&lt;p&gt;先日開催された
に
さんに誘われるままに参加してきました。&lt;/p&gt;
&lt;p&gt;部分空間法の話の続きとカーネル主成分分析分析のお話が中心でした。&lt;br&gt;
この本、タイトルはやさしそうな雰囲気を出していながら、普通に数式をきちんと書いてくれている本で、わりときちんと読まないと読み落とす感じがたまりません。&lt;br&gt;
でも、こうやってわりと網羅的に書いてくれる本って一昔前にはなかったので、自分の中の情報を整理する意味でも良いかなーと思いました。&lt;/p&gt;
&lt;p&gt;また、「Juliaを使った機械学習」という釣り気味のタイトルでLTしてきました。&lt;/p&gt;
&lt;iframe src="//www.slideshare.net/slideshow/embed_code/key/id5bCJ0TGlgji6" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen&gt; &lt;/iframe&gt; &lt;div style="margin-bottom:5px"&gt; &lt;strong&gt; &lt;a href="//www.slideshare.net/chezou/hajipata-julia" title="Juliaを使った機械学習" target="_blank"&gt;Juliaを使った機械学習&lt;/a&gt; &lt;/strong&gt; from &lt;strong&gt;&lt;a href="//www.slideshare.net/chezou" target="_blank"&gt;Aki Ariga&lt;/a&gt;&lt;/strong&gt; &lt;/div&gt;
&lt;p&gt;実際には、
使うとおしゃれなグラフが書けますよーというレベルでしかなかったのですが、D3.jsなんかとも親和性高い描画エンジンなのでよければ使ってみると楽しいですよ。&lt;/p&gt;</description></item><item><title>kawasaki.rb #008 を開催しました #kwskrb</title><link>https://chezo.uno/post/2014-01-24-kawasaki-dot-rb-number-008-wokai-cui-simasita-number-kwskrb/</link><pubDate>Fri, 24 Jan 2014 14:05:59 -0800</pubDate><guid>https://chezo.uno/post/2014-01-24-kawasaki-dot-rb-number-008-wokai-cui-simasita-number-kwskrb/</guid><description>&lt;p&gt;2014/1/22にkawasaki.rbの第8回ミートアップを開催しました。&lt;/p&gt;
&lt;p&gt;togetterはこちら&lt;br&gt;
&lt;/p&gt;
&lt;h2 id="パーフェクトruby"&gt;パーフェクトRuby&lt;/h2&gt;
&lt;p&gt;パーフェクトRubyは、2.7.3シンボルまでやりました。&lt;br&gt;
ヒアドキュメントの様々なテクニックを学ぶことが出来ました。&lt;/p&gt;
&lt;p&gt;ヒアドキュメントに、第2引数渡せたり、&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;バッククオートでくくると、ヒアドキュメントの実行結果が帰ってくるとか。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;あと、&lt;code&gt;===&lt;/code&gt;は&lt;code&gt;case...when&lt;/code&gt;のためだけのもの、という感じだそうで、&lt;code&gt;=~&lt;/code&gt;や&lt;code&gt;!~&lt;/code&gt;のような左辺と右辺の対称性がないからハマるという話でした。 when節には、lamdaを渡せるのは初めて知りました。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;いつ使うんだろう。。。&lt;/p&gt;
&lt;h2 id="chezou-なぜ科学計算にはpythonか"&gt;chezou &amp;ldquo;なぜ科学計算にはPythonか？&amp;rdquo;&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;本当は、はじめてはてブでホッテントリ入りした、的な話をしながら、技術的な話の翻訳についての悩みなどアレコレを話そうと思ったのですが(実際、そっちのほうが資料は多くなった)、会場からの希望でこちらの話をしました。&lt;br&gt;
さんの
という話にも通ずるところがあるのですが、技術的な話の翻訳って日本人同士で協力し合うことができないかなー、とか思ったりします。&lt;br&gt;
なので、この話も来月以降に翻訳の話はしたいと思います。&lt;/p&gt;
&lt;p&gt;なんで、Rubyではダメなのか？という話やら、GPU屋さんはPythonの方が人気だねとか、昔「京でRを動かしたいんですが」とかいう話が&amp;hellip;、4,5年前に科学計算がRubyの3番目位の注力事項になっていたのがmrubyに流れてしまった、など様々な話題が展開されました。&lt;/p&gt;
&lt;p&gt;個人的には、一番重要なのはNumPy,Scipyのレイヤーをどうやって作り続けていくかということと、統計や機械学習のデファクトなgemができるといいのかなー、と思いました。&lt;/p&gt;
&lt;p&gt;あと、Numpyのベンチマークを探していたら
&lt;sup id="fnref-1716-bench"&gt;&lt;a href="#fn-1716-bench" rel="footnote"&gt;1&lt;/a&gt;&lt;/sup&gt;に行き着いたのですが、実はGoが結構速いということに驚きました。(GoってOpenBLAS使えないですよね？)&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2014-01-24-kawasaki-dot-rb-number-008-wokai-cui-simasita-number-kwskrb/e382b9e382afe383aae383bce383b3e382b7e383a7e38383e38388-2014-01-25-0-57-51_hu_1330de05ac35e43b.webp 320w, https://chezo.uno/post/2014-01-24-kawasaki-dot-rb-number-008-wokai-cui-simasita-number-kwskrb/e382b9e382afe383aae383bce383b3e382b7e383a7e38383e38388-2014-01-25-0-57-51_hu_bef42079a0a8878.webp 480w, https://chezo.uno/post/2014-01-24-kawasaki-dot-rb-number-008-wokai-cui-simasita-number-kwskrb/e382b9e382afe383aae383bce383b3e382b7e383a7e38383e38388-2014-01-25-0-57-51_hu_be6c87e33e63a42f.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2014-01-24-kawasaki-dot-rb-number-008-wokai-cui-simasita-number-kwskrb/e382b9e382afe383aae383bce383b3e382b7e383a7e38383e38388-2014-01-25-0-57-51_hu_1330de05ac35e43b.webp"
width="760"
height="581"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;br&gt;
より引用&lt;/p&gt;
&lt;p&gt;もしかすると、並行処理とも相性のいいGoでの科学計算ライブラリが充実する日が来るかもしれません。&lt;/p&gt;
&lt;p&gt;Rubyのコミュニティなのに、Pythonの話をしていて、、、と思うのですが、次回はPythonistaな方の立場からお話を聞こうと思います。&lt;/p&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;「シングルスレッドでのベンチマークは、科学計算ではあまり価値がない」と
さんの言葉↩&lt;/p&gt;</description></item><item><title>kawasaki.rb #007 を開催しました #kwskrb</title><link>https://chezo.uno/post/2014-01-24-kawasaki-dot-rb-number-007-wokai-cui-simasita-number-kwskrb/</link><pubDate>Fri, 24 Jan 2014 14:05:53 -0800</pubDate><guid>https://chezo.uno/post/2014-01-24-kawasaki-dot-rb-number-007-wokai-cui-simasita-number-kwskrb/</guid><description>&lt;p&gt;2013/12/18にkawasaki.rbの第7回を開催しました。&lt;br&gt;
この会から、(同じミューザ川崎内ですが)NTT-ATさんに会場をお借りするようになりました。&lt;/p&gt;
&lt;p&gt;第6回で、居酒屋LTをやることを挫折したので、毎月会議室でミートアップを行うようになりました。&lt;/p&gt;
&lt;p&gt;togetterのまとめはこちら&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;パーフェクトRubyは、2.6のモジュールまでやりました。&lt;/p&gt;
&lt;h2 id="chezou-active-modelとnaive-bayesを仲良くするbaby_faceを使ってみた"&gt;chezou &amp;ldquo;Active ModelとNaive Bayesを仲良くする baby_faceを使ってみた&amp;rdquo;&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
というGemを使ったサンプルアプリとして
を作りました。&lt;br&gt;
BabyFaceはActiveModelなどとナイーブベイズ分類器とをつなぎ合わせることができる便利なGemです。&lt;br&gt;
なんてことはない、投稿したテキストが、DQかモンハンかSkyrimかを判定するだけの簡単なアプリです。&lt;br&gt;
最初はHerokuに上げておこうと思ったのですが、無料で使うにはDBのレコード数の制限が厳しいとかあったので、localで動かしたものでデモをしました。&lt;/p&gt;
&lt;p&gt;ポイントとしては、学習が&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;def self.create\_with\_train(text, category) e = Entry.create(comment: text) method = &amp;quot;train\_#{category}&amp;quot;.intern e.baby\_face.send(method) enddef self.open\_and\_create(file, category) line = 0 open(file) do |f| while l = f.gets next if l.nil? || l.chomp!.empty? break if line == 10000 line += 1 create\_with\_train(l, category) endendend
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;これくらいで簡単にかけることと、日本語の分かち書きには
を使いました。これならmecab&amp;amp;bindingのインストールとか要らない！便利！とか思っていたら、今どきはhomebrewでサクッとはいるんですね。。。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;def segment(text) @tagger ||= TinySegmenter.new @tagger.segment(text, ignore\_punctuation: true)end
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="suginoyさんの自分のほしいものをどんどんつくろうよという話"&gt;
さんの&amp;quot;自分のほしいものをどんどんつくろうよ&amp;quot;という話&lt;/h2&gt;
&lt;p&gt;いつもblogにはお世話になっている、suginoyさんの、Railsだと簡単にWebアプリケーション書けるんだから、自分のほしいものを皆どんどんつくろうよ、というお話。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rubyのカンファレンスサイトをscrapingしてきて、podcastにしちゃえ&lt;/li&gt;
&lt;li&gt;
をゴニョゴニョしている&lt;/li&gt;
&lt;li&gt;suicaの使用履歴とかをRailsで管理できるようにしてます&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;などなど、いい話でした。&lt;/p&gt;
&lt;p&gt;懇親会では、Kanagawa Ruby会議やりたいですなー、とか盛り上がりました。&lt;/p&gt;</description></item><item><title>kawasaki.rb #006 を開催しました #kwskrb</title><link>https://chezo.uno/post/2014-01-24-kawasaki-dot-rb-number-006-wokai-cui-simasita-number-kwskrb/</link><pubDate>Fri, 24 Jan 2014 14:05:48 -0800</pubDate><guid>https://chezo.uno/post/2014-01-24-kawasaki-dot-rb-number-006-wokai-cui-simasita-number-kwskrb/</guid><description>&lt;p&gt;去る2013/11/27にkawasaki.rbの第6回を開催しました。&lt;br&gt;
togetterは
&lt;/p&gt;
&lt;h2 id="kon_yuさんのappiumを使ったiosandroid受け入れテスト"&gt;
さんの&amp;quot;Appiumを使ったiOS(Android)受け入れテスト&amp;quot;&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;テスト自動化フレームワークである
を使うことで、Rspecを書いてiOSの検査ができます。更に、スクリーンショットを自動で撮ることで、デザインのレイアウト崩れなどの検査をしやすくすることができます。&lt;/p&gt;
&lt;p&gt;実際に動いている動画を見ると、なるほど！と思うので、こちらを見ると良いと思います。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;h2 id="chezouのrubyと機械学習"&gt;chezouの&amp;quot;Rubyと機械学習&amp;quot;&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;タイトルは大分大きく出ていますが、最近訳した
の興味のベースになっている話でも有ります。
なぜ、PythonではRubyに比べて、科学計算が活発に行われているか？という点に対して、NumPyやSciPyといった数値計算のライブラリが活発に利用されているから、Railsで機械学習を扱えるライブラリがあまりないから、という話をしました。&lt;/p&gt;
&lt;p&gt;余談ですが、会場に使ったお店は、予約の段階でプロジェクターを使えると聞いていたのですが、当日現地に行ったら、「持参したプロジェクターを使えます」という話にすり替わっていました。。。&lt;/p&gt;</description></item><item><title>Kawasaki.rb #005を開催しました #kwskrb</title><link>https://chezo.uno/post/2014-01-24-kawasaki-dot-rb-number-005wokai-cui-simasita-number-kwskrb/</link><pubDate>Fri, 24 Jan 2014 14:05:31 -0800</pubDate><guid>https://chezo.uno/post/2014-01-24-kawasaki-dot-rb-number-005wokai-cui-simasita-number-kwskrb/</guid><description>&lt;p&gt;大分たってしまいましたが、2013/10/23にKawasaki.rb #005を行いました。&lt;/p&gt;
&lt;p&gt;
さんによる
の話をしていただきました。&lt;br&gt;
quine-relayとは50言語&lt;sup id="fnref-1648-lang"&gt;&lt;a href="#fn-1648-lang" rel="footnote"&gt;1&lt;/a&gt;&lt;/sup&gt;が次々に次の言語を生成し、一周してRubyに戻ってくるというコードであります。&lt;/p&gt;
&lt;p&gt;togetterによるまとめはこちらになります。&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;肝心のスライドは、諸般の事情[^problem]により公開できなさそう、ということですが、&lt;br&gt;
Quineの解説は以下の資料が詳しいです。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;iframe src="//www.slideshare.net/slideshow/embed_code/key/HSa6r0tKylPW2z" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen&gt; &lt;/iframe&gt; &lt;div style="margin-bottom:5px"&gt; &lt;strong&gt; &lt;a href="//www.slideshare.net/mametter/ruby-2012" title="Ruby を用いた超絶技巧プログラミング（夏のプログラミングシンポジウム 2012）" target="_blank"&gt;Ruby を用いた超絶技巧プログラミング（夏のプログラミングシンポジウム 2012）&lt;/a&gt; &lt;/strong&gt; from &lt;strong&gt;&lt;a href="//www.slideshare.net/mametter" target="_blank"&gt;mametter&lt;/a&gt;&lt;/strong&gt; &lt;/div&gt;
&lt;p&gt;ポイントとしては、&amp;ldquo;いかに次の言語の文字列をprintするか&amp;quot;というところが大きいようです。&lt;br&gt;
特に、エスケープが増えてしまうと、様々な言語の制限(主に文字数制限)に引っかかってしまい実行できなくなるという問題があるようで、takesakoさんの
やら文字列圧縮などを使い工夫することで、それらをうまく回避しているとのことです。&lt;/p&gt;
&lt;p&gt;また、内部では
で次の言語でのprint文を書けば、順番に生成するようになっているので、言語を増やしたいとかいう人はpull-requestを送るといいと思います。(D言語とかJSXとか、TypeScriptとか&amp;hellip;)&lt;br&gt;
なお、言語の選定基準はDebianのapt-getで導入できる言語、というのを想定していたとのことです。(が、MacではhomebrewがClojureのサポートを打ち切った等の問題が有り、VMでやるのが良さそうです。)&lt;/p&gt;
&lt;p&gt;なお、quine-relayは経済効果をも生み出していたようで（！）、Quoraだかredditだかで「quine-relayの解説したらお礼にお金を払うよ！」と言っていた人に解説をした人がいくばくかのお金をもらっていたそうです。&lt;br&gt;
(もちろん、mameさんにはなんのお金も渡っていないですよ)&lt;/p&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;有名なBrainfuckやWhitespaceに始まり、果てはVerilogとかINTERCALとか！&lt;br&gt;
[^problem] : 様々な
が含まれるため ↩&lt;/p&gt;</description></item><item><title>科学計算における均質化、あるいはなぜPythonが着実に他言語のシェアを奪っているか</title><link>https://chezo.uno/post/2014-01-18-ke-xue-ji-suan-niokerujun-zhi-hua-aruihanazepythongazhao-shi-nita-yan-yu-nosieawoduo-tuteiruka/</link><pubDate>Fri, 17 Jan 2014 18:01:18 -0800</pubDate><guid>https://chezo.uno/post/2014-01-18-ke-xue-ji-suan-niokerujun-zhi-hua-aruihanazepythongazhao-shi-nita-yan-yu-nosieawoduo-tuteiruka/</guid><description>&lt;p&gt;最近、何故科学計算でPythonがほぼ一人勝ちなのか気になっていたのですが、
氏による、
という記事が、その答えに近づける鍵なのかもしれないと思い、試訳をしてみました。&lt;br&gt;
彼は心理学とニューロイメージングを専門とする研究者であり、元々Rを中心に様々な言語を利用していたのですが、最近ではPythonばかり使うようになってきたとのことです。&lt;/p&gt;
&lt;p&gt;(更なる議論としては、
も興味深いです。)&lt;/p&gt;
&lt;p&gt;訳すこと自体が初めてで拙い訳だとは思いますが、間違い等がありましたらコメント等で指摘ください。&lt;br&gt;
翻訳の公開を快諾していただいたYARKONI氏、翻訳のアドバイスをいただいたmrkn氏に感謝します。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;ここ2年で、私の科学計算のツールボックスが着実に均質化している。&lt;br&gt;
2010,2011年くらいは、私のツールボックスは以下のものを使っていた。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ruby: テキスト処理や雑多なscripting&lt;/li&gt;
&lt;li&gt;Ruby on Rails/JavaScript: Web開発&lt;/li&gt;
&lt;li&gt;Python/Numpy(たまにMATLAB): 数値計算&lt;/li&gt;
&lt;li&gt;MATLAB: ニューロイメージング&lt;sup id="fnref-1674-neuroimaging"&gt;&lt;a href="#fn-1674-neuroimaging" rel="footnote"&gt;1&lt;/a&gt;&lt;/sup&gt;データの解析&lt;/li&gt;
&lt;li&gt;R: 統計的分析&lt;/li&gt;
&lt;li&gt;R: プロット、可視化&lt;/li&gt;
&lt;li&gt;それ以外のもののために、他の言語/環境の開拓&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;2013年には、こうなっている&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python: テキスト処理や雑多なscripting&lt;/li&gt;
&lt;li&gt;Ruby on Rails/JavaScript: Web開発。DjangoやFlask(Pythonのフレームワーク)もたまに使う&lt;/li&gt;
&lt;li&gt;Python (Numpy/SciPy): 数値計算&lt;/li&gt;
&lt;li&gt;Python (Neurosynth, NiPyなど): ニューロイメージングデータの解析&lt;/li&gt;
&lt;li&gt;Python (Numpy/SciPy/pandas/statsmodels): 統計的分析&lt;/li&gt;
&lt;li&gt;Python (MatPlotLib): プロット、可視化(Webベースの可視化にはJavaScriptのd3.jsを使う)&lt;/li&gt;
&lt;li&gt;Python (scikit-learn): 機械学習&lt;/li&gt;
&lt;li&gt;他言語の開拓は顕著に減った&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;もうお分かりだろう。&lt;/p&gt;
&lt;p&gt;私が使うツールの均質化(Pythonification?)が進むことで、定期的に最近のPythonのエコシステムの驚くべき成長について考えるようになった。数年前までは、多くの時間を髪をかきむしりPythonがもっとRライクなら良かったのにと祈ることに費やさない限り、Pythonでは本当の統計を扱うことはできなかった。(そしてそれは、
を考えていることを告白するに等しい)&lt;br&gt;
ニューロイメージングデータはSPM(MATLABベース)やFSLなどの様々なパッケージで解析されるが、完全な機能を持って、フリーで、オープンソースなPythonの代替になるものはなかった。機械学習や、自然言語処理、Webアプリーケーションの開発のためのパッケージは出現し始めたばかりだった。&lt;/p&gt;
&lt;p&gt;今日では、科学計算のあらゆる方面のためのツールがPythonならすぐに手に入る。そしてますます多くの事例で、競合の美味しいところを奪っている。&lt;/p&gt;
&lt;p&gt;Rを例にとって考えてみよう。Rが手軽にそのまま使えるというメリットは、大量のメモリを必要とするデータセットに対しては適応できない弱点として認識されていた(もちろん、あなたが時間を投資するなら
ことができることは知っているが、多くの科学者は時間がない)。しかし、Rが大規模データに首を締められる方法や言語としての間抜けさを嫌っている人たちでさえも、しばしば迅速で重大なデータ処理が求められた時にRに戻らざるを得なかった。頑張ってPythonや他の高級言語にピボットや集約、整形、粉々にするためのコードを書くことはできたが、それをしようと思ったか？Rの
のような美しいパッケージは、他言語では実装に何時間もかかる処理を、2,3行のコードで実現できる。否定的な側面としては、学習曲線がそれぞれのパッケージの比較的複雑なAPIを学習するのに密接に関わる(例えばggplot2は信じられないほど表現力が高いが、学び直すのに毎回3ヶ月はかかる)。そして、Rの全般的なぎこちなさについて取り組まなければならない。しかし、概して明らかにその価値はあった。&lt;/p&gt;
&lt;p&gt;現在に戻って考えよう。先週、誰かが2,3年前私がRで書いたシミュレーションコードについて聞いてきた。私は、それらについて調べるためにR Studioを叩いたが、R Studioをとても長い時間使っていないように思えた(実際には6ヶ月にみたない期間だと思うが)。NumPy/SciPyとMatPlotLib, pandas, statsmodelsの組み合わせはRを効果的に置き換え、そのことにすら気づいていなかった。あるときから、&amp;ldquo;本当の&amp;quot;データ分析が必要なときに、Pythonから逃げRを使うことをやめた。その代わり、pandasとstatsmodelsに自分のコードを移行することを始めた。そしてそれと同様のことが、機械学習(scikit-learn),自然言語処理(nltk),ドキュメントパース(BeautifiulSoup)、そして多くの他のPython以外で処理していたことで起こった。&lt;/p&gt;
&lt;p&gt;開発や分析のすべてを一つの言語で行うことには、結局かなりの利点がある。第1には、1つの言語であらゆることができるようになると、Rubyは内包表記の代わりにブロックを使う、Pythonではarrayのサイズを取得するのにlen(array)をarray.lengthの代わりに使うなど、認知的な
がなくなる。認知的なオーバーヘッドを最小限にして問題を解けばよくなる。もちろん、違うプロジェクトの異なる言語間でのインターフェースについて心配する必要もなくなる。Pythonでテキストをパースして、そして最終的に求める内部フォーマットにし、RやMATLABに他の分析をさせるために異なるフォーマットでディスクに書き出すことほどいらいらすることはない&lt;sup id="fnref-1674-footnote1"&gt;&lt;a href="#fn-1674-footnote1" rel="footnote"&gt;2&lt;/a&gt;&lt;/sup&gt;。さらに、これらの類のことは重大なことではない。PythonからCSVやJSONを長時間かけて書き出して、Rに読み込むことはなくなる。しかし、それは納得がいく。統合的な開発はより複雑さを増す。なぜなら、益々多くのコードがディスクの中のあちこちに散らばるからだ(少なくともあなたが私の整理整頓能力と同じならば)。&lt;br&gt;
これでは、インターフェースのためのつまらないラッパーを書くという「データ分析(笑)」で日が暮れてしまう。本来データをどう変換し、扱うべきかを考える代わりに。&lt;br&gt;
つまり、あなたの美しい分析のためのコードが、醜いopen(), read()といったI/Oコールにまみれてしまうのだ！これらのオーバーヘッドすべてが、単一言語で書けば瞬く間に消える。&lt;/p&gt;
&lt;p&gt;便利さは別としても、もう一点付け加えると、Pythonの科学計算のエコシステムではすさまじい量のPythonベースのツールが存在する。これらは、現段階でクラス最高のスコープ、使いやすさ、(Cバインディングの美徳であるところの)パフォーマンスを実現している。scikit-learnより使いやすい機械学習パッケージは想像できない。scikit-learnは、幅広いアルゴリズムが実装されており、
、
。同様に、pandasに移行してからRのデータ操作の機能を恋しくなったことはない。実際に、Rでは知らなかった新しいトリックをpandasで見つけ出している(それについてはいつか書こうと思う)。pandasが
ことを考えても、Rや他のツールに戻る理由がどんどん減っている。&lt;/p&gt;
&lt;p&gt;気をつけて欲しいのが、私は他言語で行ってきたこと &lt;em&gt;すべてを&lt;/em&gt; Pythonで実装しろと言っているわけではない。それはもちろん正しくない。例えば、いくつものRにあるような統計的なパッケージの代替になるものがない(lme4のPythonで使えるものがあれば、私に教えて欲しい)。信号処理の分野では、多くの人々がPythonで替えの効かないMATLABのツールボックスやパッケージとべったりだと思う。シビアな性能を求められる人や、とてもとても巨大なデータセットに対して取り組んでいる人にとっても、低級なコンパイル言語における非常に最適化されたコードの代替にはならない。従って、言うまでもなく私の言っていることがすべての人に適用されるわけではない。しかし、多くの科学者には受け入れられると睨んでいる。&lt;/p&gt;
&lt;p&gt;個人的には、私のやることの90-95%がPythonで快適にこなせる所まで来ている。どの言語を新規プロジェクトで使用するかを決定するときに、「学びたい/使用に耐えられる中でのベストなツールは何か？」から「本当にPythonでやる方法はないのか？」と考えるようになってきている。時にはマイナス面があるということは否定しないけれど、概してこの考え方は良いことである。例えば、ほとんどのデータ分析をRで行っていた時代だったら、いろんな統計的なパッケージについて何をしているかを調べるためにこねくり回していたと思う。そんなことはもうしたくない。目的のない統計的な探求より、Rの知識をリフレッシュする苦痛に耐えるほうがマシだ。逆に、ただ単純に言語的な純粋さを保つために、他の言語より好きではなくても結局Pythonのパッケージに行き着く場合もある。例えば、RailsのORMであるActiveRecordは、明らかにPythonのSQLAlchemyより好きだ。でも、同一のアプリケーションでPythonとRubyのコードを混ぜることは許しがたい。明らかにコストはかかる。しかし、それはかなり小さいコストであり、個人的には、Pythonをほとんど全てに使うことで気にならなくなる。同じ経験をしてきた研究者を多く知っているし、これを提案することは不公平であるとは思わないが、今となってはPythonは多くのドメインにおける科学計算でデファクトとなりつつある。もしこれを読んでいるあなたがPythonに触れたことがなければ、今はじめるしかない！&lt;/p&gt;
&lt;p&gt;追記:&lt;br&gt;
この記事を書き始めてから書き終わるまでに(2週間くらいだろう)、2つのPythonベースのデータ可視化のパッケージを新しく見つけた。&lt;br&gt;
Michael Waskomの
(複雑な図をとても高度に抽象化してggplot2のように美しく書くことができる)と、Continuum Analyticsの
(これはwebベースの可視化&lt;sup id="fnref-1674-footnote2"&gt;&lt;a href="#fn-1674-footnote2" rel="footnote"&gt;3&lt;/a&gt;&lt;/sup&gt;を大きく変える可能性を持っている)である。Pythonのエコシステムのスピードを考えると、自分の考えを分析コードに直接してくれるPythonパッケージを使う時が来ることも夢ではないかもしれない。&lt;/p&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;訳注:
↩&lt;br&gt;
2.&lt;br&gt;
PythonとR等の間に、オブジェクトを内部的にやりとりできる様々なインターフェースがあることは知っている。私の経験上、これらは断然ポジティブではないし、常に複数の言語をまたぐために余計なコードを書く手間は依然として残っている。 ↩&lt;br&gt;
3.&lt;br&gt;
そう、あなたが聞いたことは間違っていない。Pythonを使ってwebベースの可視化をするのだ。Bokehは静的なJavaScriptとJSONをPythonから生成する。あなたはネイティブなJSコードを書くこと無く、魅惑的な図をウェブページでユーザに見せることができるのだ。 ↩&lt;/p&gt;</description></item><item><title>語感やリズムが楽しいハッとする絵本3冊</title><link>https://chezo.uno/post/2013-12-08-yu-gan-yarizumugale-siihatutosuruhui-ben-3ce/</link><pubDate>Sun, 08 Dec 2013 14:05:36 -0800</pubDate><guid>https://chezo.uno/post/2013-12-08-yu-gan-yarizumugale-siihatutosuruhui-ben-3ce/</guid><description>&lt;p&gt;この記事は
に参加しています。&lt;/p&gt;
&lt;p&gt;まさか、パーフェクトRubyの感想を書く前に、まさかの読み聞かせアドベントカレンダーに参加することになりました。&lt;/p&gt;
&lt;p&gt;我が家には3才児ともうすぐ半年になる二人の娘がいます。 特に上の子は(娘にとっての)祖父母から、
というサービスで毎月絵本が届くので、 数々の絵本を読んでもらうのが大好きです。&lt;/p&gt;
&lt;p&gt;ブッククラブは、絵本の専門店の店員さんが、年齢に合わせた絵本を選定して送ってきてくれるもので、定番どころだけではなく自分ではなかなか手を出さないような絵本も届けてくれます。&lt;/p&gt;
&lt;p&gt;そんな中で、我が家に届いた印象深い3冊の絵本を紹介したいと思います。&lt;/p&gt;
&lt;h3 id="だからこぶたちゃん"&gt;だからこぶたちゃん&lt;/h3&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4031290101/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
だから、こぶたちゃん (こぶたの赤ちゃんシリーズ)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;posted with
at 13.12.06&lt;/p&gt;
&lt;p&gt;北山 葉子&lt;br&gt;
偕成社&lt;br&gt;
売り上げランキング: 429,943&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;おとうさんはぶた、おかあさんもぶた。だからぼくはこぶたちゃん。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
にもあるように、0才児〜でも読めるシンプルな絵本。リズムがとても軽快で、聞いている子供を飽きさせません。&lt;/p&gt;
&lt;p&gt;でも、引用したように、こぶたちゃんがこぶたちゃんであるという意味について書いているのは、ちょっぴり哲学的。「おおきくなるまでこぶたちゃん」という締めもトートロジーっぽいですが、小難しい言葉をこねくり回さないで、こぶたちゃんはこぶたちゃんなんだよ、ということを教えてくれます。&lt;/p&gt;
&lt;p&gt;大きくなった娘は、「ぶーぶー」と合いの手を入れてくれるようになりました。&lt;/p&gt;
&lt;h3 id="ころころころ"&gt;ころころころ&lt;/h3&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4834001113/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
ころ ころ ころ (福音館の幼児絵本)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;posted with
at 13.12.06&lt;/p&gt;
&lt;p&gt;元永 定正&lt;br&gt;
福音館書店&lt;br&gt;
売り上げランキング: 22,901&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;元永さんの作品は、谷川俊太郎との作品である「もこもこもこ」も有名ですが、こちらの「ころころころ」を紹介したいと思います。(
)&lt;/p&gt;
&lt;p&gt;この作品は、色玉がかいだんみちやでこぼこみちを転がっていく様が描かれている作品で、とても鮮やかな色が子供に楽しく映るようです。&lt;/p&gt;
&lt;p&gt;ともすると単調な内容ですが、バラエティ豊かな色彩感につられて、大人も「ころころころ」の表現の仕方を「でこぼこ感を出すにはどうしたら？」などと工夫したくなります。そうしていくうちに、日本語のアクセント表現の豊かさに気付かされました。&lt;/p&gt;
&lt;p&gt;絵本を読んでいると思うのですが、読み手がどうやって子供を楽しませるか工夫の仕方は十人十色で、世界観の広がり方が違うのが素敵ですよね。妻と私とで読み方が全く違ったのに驚いた作品でも有ります。&lt;/p&gt;
&lt;h3 id="たぬきのじどうしゃ"&gt;たぬきのじどうしゃ&lt;/h3&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4032400903/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
たぬきのじどうしゃ (はじめてよむ絵本)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;posted with
at 13.12.06&lt;/p&gt;
&lt;p&gt;長 新太&lt;br&gt;
偕成社&lt;br&gt;
売り上げランキング: 271,955&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;衝撃的な絵本といえば、長新太の作品は群を抜くでしょう。この作品を読んだとき、五味太郎もかわいいものだな、と夫婦で大笑いしてしまいました。(
)&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;「かいぶつが でたのです。たすけてちょうだい。」&lt;br&gt;
さかなに たのまれた たぬきの おじさんは、こわごわ、かわの ほうへ いってみました。&lt;br&gt;
すると、かわの なかから かいぶつが でてきました。&lt;br&gt;
さあ、たぬきの おじさんは どうずるでしょう？&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;この絵本が届いて、娘に読もうと帯に書かれているこの文言を読んだ時、「？？？」と頭が一瞬真っ白になり、次に「そんなバカな」と思い読み始めるわけです。&lt;/p&gt;
&lt;p&gt;帯は嘘をついていませんでした。&lt;br&gt;
内容は意味がさっぱりわからない(突っ込みどころ満載の)超展開なので、是非一読していただきたいのですが、「ぽんぽんぶうぶうぽんぶうぶう」「げろげろげー」などオノマトペが多彩で、子供もリズム良く語感を楽しんでくれています。&lt;/p&gt;
&lt;p&gt;こうしてみると、語感やリズムが楽しい本は、日本語の読むことを通じた表現の可能性を広げてくれて、子供についつい読んでしまいたくなりますね。&lt;/p&gt;</description></item><item><title>Kawasaki.rb #004を開催しました #kwskrb</title><link>https://chezo.uno/post/2013-10-06-kawasaki-dot-rb-number-004wokai-cui-simasita-number-kwskrb/</link><pubDate>Sun, 06 Oct 2013 05:10:10 -0700</pubDate><guid>https://chezo.uno/post/2013-10-06-kawasaki-dot-rb-number-004wokai-cui-simasita-number-kwskrb/</guid><description>&lt;p&gt;9/25(水)にKawsaki.rbの第4回ミートアップを行いました。&lt;br&gt;
今回は偶数回なので、居酒屋LTの回でした。&lt;/p&gt;
&lt;p&gt;例によって、鍋をつつきながらパーフェクトRubyを読みました。&lt;br&gt;
パーフェクトRubyは「2-1-3 トップレベル」まで行きました。&lt;/p&gt;
&lt;h2 id="lt1-sinatra-hijackerと-rack-hijacking-apiの紹介-minori-tokudaさん"&gt;LT1: Sinatra Hijackerと （Rack Hijacking API）の紹介 (Minori Tokudaさん)&lt;/h2&gt;
&lt;p&gt;LT1本目は、Tokudaさん(
)による
のご紹介。&lt;/p&gt;
&lt;iframe src="//www.slideshare.net/slideshow/embed_code/key/BSA3YyJloFxpdA" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen&gt; &lt;/iframe&gt; &lt;div style="margin-bottom:5px"&gt; &lt;strong&gt; &lt;a href="//www.slideshare.net/minoritokuda/sinatra-hijacker" title="Sinatra hijacker" target="_blank"&gt;Sinatra hijacker&lt;/a&gt; &lt;/strong&gt; from &lt;strong&gt;&lt;a href="//www.slideshare.net/minoritokuda" target="_blank"&gt;Minori Tokuda&lt;/a&gt;&lt;/strong&gt; &lt;/div&gt;
&lt;p&gt;Rack Hijacking APIを使って、ソケットを横取りしてSinatraでWebsocketの通信をしよう！というライブラリです。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-rb" data-lang="rb"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;sinatra/hijacker&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;YourApp&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;Sinatra&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Base&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;register&lt;/span&gt; &lt;span class="no"&gt;Sinatra&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Hijacker&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;websocket&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;/ws&amp;#39;&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;onopen&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;send_data&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;hello&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;こんなかんじで、シンプルにwebsocketの通信ができるようになります。お手軽ですね。&lt;/p&gt;
&lt;h2 id="lt2-リアルタイム形態素解析-morph-websocket-chezou"&gt;LT2: リアルタイム形態素解析 morph-websocket (@chezou)&lt;/h2&gt;
&lt;iframe src="//www.slideshare.net/slideshow/embed_code/key/mUUmC2lBKEjKIP" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen&gt; &lt;/iframe&gt; &lt;div style="margin-bottom:5px"&gt; &lt;strong&gt; &lt;a href="//www.slideshare.net/chezou/morphwebsocket" title="リアルタイム形態素解析 morph-websocket / kawasaki.rb #004" target="_blank"&gt;リアルタイム形態素解析 morph-websocket / kawasaki.rb #004&lt;/a&gt; &lt;/strong&gt; from &lt;strong&gt;&lt;a href="//www.slideshare.net/chezou" target="_blank"&gt;Aki Ariga&lt;/a&gt;&lt;/strong&gt; &lt;/div&gt;
&lt;p&gt;LT2本目は、自分の
のご紹介とデモでした。websocketつながりということで紹介させていただきました。&lt;/p&gt;
&lt;p&gt;形態素解析器Kyteaをバインディングしてwebsocket使って叩けるようにしましたよ、というお話です。&lt;br&gt;
KyteaじゃなくてMeCabでもできるんですけど、作ったときはなぜかRubyバインディングがうまく呼べなかったのでKyteaだけにしたという感じでした。&lt;/p&gt;
&lt;h2 id="次回は"&gt;次回は&lt;/h2&gt;
&lt;p&gt;ついに、mameさんによる
の解説をしていただけることになりました！&lt;br&gt;
募集は
で近日開始する予定です。&lt;br&gt;
10/23(水)はミューザ川崎 音楽工房に集合だ！&lt;/p&gt;</description></item><item><title>Kawasaki.rb #003を開催しました #kwskrb</title><link>https://chezo.uno/post/2013-10-06-kawasaki-dot-rb-number-003wokai-cui-simasita-number-kwskrb/</link><pubDate>Sun, 06 Oct 2013 04:10:03 -0700</pubDate><guid>https://chezo.uno/post/2013-10-06-kawasaki-dot-rb-number-003wokai-cui-simasita-number-kwskrb/</guid><description>&lt;p&gt;大分遅くなりましたが、去る8/28(水)にKawasaki.rbの第3回ミートアップを開催しました。&lt;/p&gt;
&lt;p&gt;この回では、新しい試みとして
の読書会を行いました。&lt;br&gt;
本が販売されてから間もなかったのですが、会場いらっしゃった方の15名くらいが本を持っているというすごい状況になりました。&lt;/p&gt;
&lt;p&gt;また、2本のプレゼンも非常に盛り上がりました。&lt;/p&gt;
&lt;p&gt;
さんにまとめていただいたtogetterは
。&lt;/p&gt;
&lt;h2 id="パーフェクトruby読書会"&gt;パーフェクトRuby読書会&lt;/h2&gt;
&lt;h2&gt;&lt;/h2&gt;
&lt;p&gt;まずは1章から突っ込みながら読んでいくことに。&lt;br&gt;
途中でサンプルクラス中でputsメソッドをpustとtypoした時に、「pustメソッドを定義すれば行ける！」という展開があるなど非常にRubyらしさを満喫できました。&lt;br&gt;
やはり前々から聞いていましたが、Rubyの全くの初心者向けというよりも、多少触っているけど色々知りたい！という人が読者層なんだなーという事を再確認しました。&lt;/p&gt;
&lt;h2&gt;&lt;/h2&gt;
&lt;h2 id="gotokenさんによるnumruのお話"&gt;@gotokenさんによるNumRuのお話&lt;/h2&gt;
&lt;p&gt;LLで数値計算といえば、PythonのNumPyが有名ですが、それを参考に作られたNumRuというRubyのライブラリがあります。&lt;br&gt;
これは、FORTRANを裏で扱うことでRubyでも数値計算が高速に処理できるというもの(だと理解しています)。&lt;/p&gt;
&lt;p&gt;NumRuが一番分かりやすく詳細に書かれているのは、
でしょう。&lt;br&gt;
Pythonのmatplotlibみたいに色々描画をすることもできるようです。&lt;/p&gt;
&lt;p&gt;ただ、NumRuという名前があまり浸透していないのは、おそらく「
」の名前空間としてNumRuという名前を用いているだけというのが大きいのかなー、というのと、地球惑星シミュレーションの人たちがメインで使っているので汎用的に使えるのかがあまりわからないところと、FORTRAN系のインストールが結構骨だというところでしょうか。。。&lt;/p&gt;
&lt;p&gt;特に、FORTRAN周りのインストールはNumPy,SciPyあたりでも結構ハマるのですが、NumRuのHomebrewのFormulaをごとけんさんが作ろうとされたようですが、当日には間に合わず&amp;hellip;。期待しております。&lt;/p&gt;
&lt;p&gt;GSLとかもあるんですけど、このへんはNumPy,SciPyなどとの比較を行ったり、エコシステムが回るようになっていくと、Rubyで数値計算をするという話が増えるんじゃないかなー、と思っています。&lt;/p&gt;
&lt;h2 id="kishimaさんによるmrubyとwebrubyのお話"&gt;@kishimaさんによるmrubyとwebrubyのお話&lt;/h2&gt;
&lt;p&gt;
さんによる、mrubyとwebrubyのお話をしていただきました。&lt;br&gt;
お忙しい中発表していただき感謝です。&lt;/p&gt;
&lt;p&gt;内容は、mrubyの紹介とwebrubyの説明、TokyuRuby会議で使った抽選アプリのデモを見せていただきました。&lt;/p&gt;
&lt;p&gt;(2013/10/30 スライドを追加しました！)&lt;/p&gt;
&lt;iframe src="//www.slideshare.net/slideshow/embed_code/key/5tRaZhfuS37pio" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen&gt; &lt;/iframe&gt; &lt;div style="margin-bottom:5px"&gt; &lt;strong&gt; &lt;a href="//www.slideshare.net/kishima7/mruby-kishima" title="Introduction of mruby &amp;amp; Webruby script example" target="_blank"&gt;Introduction of mruby &amp;amp; Webruby script example&lt;/a&gt; &lt;/strong&gt; from &lt;strong&gt;&lt;a href="//www.slideshare.net/kishima7" target="_blank"&gt;kishima7&lt;/a&gt;&lt;/strong&gt; &lt;/div&gt;
&lt;p&gt;
の説明は、
がわかりやすいですが、Emscriptenを使ってブラウザ上でmrubyを動かそうというものです。&lt;br&gt;
LLVM,clangを経由してではありますが、JSとmrubyがつながるなんて胸が熱くなりますね。&lt;/p&gt;
&lt;p&gt;デモは、webrubyとenchant.jsを使ったものになります。Tokyuの時のデモが以下のツイートで紹介されていたのでお試しください:)&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>LLまつりに参加しました</title><link>https://chezo.uno/post/2013-08-25-llmaturinican-jia-simasita/</link><pubDate>Sun, 25 Aug 2013 15:05:14 -0700</pubDate><guid>https://chezo.uno/post/2013-08-25-llmaturinican-jia-simasita/</guid><description>&lt;p&gt;年に一度の軽量言語のイベント、LLまつりに行ってきました。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;過去にも、LL Planet,Decadeと参加してきましたが、今年は初めてのマルチトラックになりました。&lt;/p&gt;
&lt;p&gt;Ruby Kaigiもそうだったのですが、複数トラックあるのは良し悪しあるなぁというのが正直なところでした。&lt;br&gt;
狭い方の会場が埋まってしまったりとか、裏番組が盛り上がっているのがTwitterで流れてくるとしまった！と思ったりとか(笑)&lt;/p&gt;
&lt;p&gt;参加したのは、以下の3つのセッションを聞きました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;午前のプレゼンテーショントラック&lt;/li&gt;
&lt;li&gt;とびだせ！LL〜リアル世界をプログラミングする〜&lt;/li&gt;
&lt;li&gt;Infrastructure as LL
個人的に印象に残ったのは、
の勉強会アンチパターンとInfrastructure as LLでした。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="勉強会アンチパターン"&gt;勉強会アンチパターン&lt;/h2&gt;
&lt;p&gt;内容は下記のサイトに詳しいですが、勉強会を主催・発表していく上でどうやったら継続的に開催できるか、というのがテーマ。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;アンチパターンに入るのがラスト3分とか、色々突っ込みどころは大きかったですが、&lt;br&gt;
個人的には、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;勉強会勉強会というメタな勉強会(というかカンファレンス？)がある&lt;/li&gt;
&lt;li&gt;「月に300以上のIT勉強会が開催している。その成功・失敗を共有できたらいいのでは」&lt;/li&gt;
&lt;li&gt;いかに価値を創造するか？
という点に共感、というか考えさせられました。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;「開催/発表/参加コストよりメリットのほうが上回らないと続かない」という指摘もごもっともで、&lt;br&gt;
いかにコストを下げるか/メリットを上げるかを考えていくのは大事だなーと。&lt;/p&gt;
&lt;p&gt;ちょうど、
を始めたこともあり、継続的に続けていけたらと思います。&lt;/p&gt;
&lt;h2 id="infrastructure-as-ll"&gt;Infrastructure as LL&lt;/h2&gt;
&lt;p&gt;伊藤直也(
)さんと、ペパボの黒田(
)さん、クックパッドの成田(
)さんによる、Chefやpuppetなどを中心としたDevOpsの話。&lt;/p&gt;
&lt;p&gt;特に印象に残ったのは、伊藤直也さんの&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;「昔、10台くらいのサーバにdeployをしてくれる人がいたが、typoとか繰り返すと怒られるのが嫌でdeployしづらくなった」&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;という経験から、DevOpsの流れを求めていたという話がある中で、&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;「今は、逆にInfra側が(流行に乗って)Chefとかを導入することが目的になって、Devとの距離ができているのではないか？原点を見失ってはいけない」&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;という指摘が、本質は何か？ということを考え続けて進めていくのが大事だと、改めて気付かされました。&lt;br&gt;
誰が何を求めているのか？嬉しくなるのか？ということですよね。&lt;/p&gt;
&lt;p&gt;結局、その流れで考えると、開発者にとってはHerokuのようなPaaS的なインフラを意識しないでデプロイできる環境がが求められていて、@sora_hさんがその環境を作っているなど、世の中としても方向に向かっているようです。&lt;/p&gt;
&lt;p&gt;ちなみに、「入門Chef Solo」は5000部売れていて、おそらく日本で一番売れてる技術書の電子書籍では？とのことでした。&lt;/p&gt;
&lt;h2 id="まとめ"&gt;まとめ&lt;/h2&gt;
&lt;p&gt;今年は、チュートリアルセッションやプレゼンテーショントラックなど多様なセッションがあり、例年よりも偏らずに幅広い話が聞けて楽しめました。&lt;/p&gt;</description></item><item><title>The Idea of Northの楽譜を買った</title><link>https://chezo.uno/post/2013-08-23-the-idea-of-northnole-pu-womai-tuta/</link><pubDate>Fri, 23 Aug 2013 15:05:09 -0700</pubDate><guid>https://chezo.uno/post/2013-08-23-the-idea-of-northnole-pu-womai-tuta/</guid><description>&lt;p&gt;オーストラリアのアカペラグループ、The Idea of Northの楽譜を少し前に購入しました。&lt;br&gt;
混声4人のアカペラグループで、オリジナルやアレンジなどいい曲を書いています。&lt;br&gt;
何より、SATB4人だと集めやすい。&lt;/p&gt;
&lt;p&gt;こんな感じの曲を歌います。これはIsn&amp;rsquo;t She lovely?のアカペラアレンジ。&lt;br&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/onHTTy0Gp9k?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;少し手間はかかりますが、
からクレジットカード(Paypal)を使いネットで決済ができてPDFで送ってもらえるので、Rajatonの時に比べるとだいぶ楽です。&lt;/p&gt;
&lt;p&gt;簡単に方法を書いていきます。&lt;/p&gt;
&lt;h2 id="メールする"&gt;メールする&lt;/h2&gt;
&lt;p&gt;最初にして最大で、そして最後の難関。&lt;br&gt;
にメールします。&lt;/p&gt;
&lt;p&gt;例えばこんな感じ。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;d like to purchase following scores in PDF format.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;楽譜A&lt;/li&gt;
&lt;li&gt;楽譜B&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;How much do they cost?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;すると、メンバーのNaomiさんが返信してくれます。&lt;br&gt;
最初、事務スタッフ的な人が返信してくれるんだろうと思って5営業日返信なかった時に、「早くしてくれよ、円が安くなってるんだから」とか言ったのは平謝りするしかありません。&lt;/p&gt;
&lt;p&gt;で、だいたいこういうことを言われます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;4人分のライセンスからしか売れないよ&lt;/li&gt;
&lt;li&gt;4人ライセンス35豪ドルだよ&lt;/li&gt;
&lt;li&gt;法に触れるから、4コピー以上しないでよ！絶対ね！
ちなみに、追加ライセンスを買う場合は5豪ドルで買えます。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="paypalで支払う"&gt;Paypalで支払う&lt;/h2&gt;
&lt;p&gt;ちゃんと行くと、Paypalの請求がメールアドレス宛てに来ます。&lt;/p&gt;
&lt;p&gt;で、そこで支払いをしてください。Paypalアカウントを持ってると大分楽でしょう。&lt;br&gt;
なくても、きっとクレジットカードがあれば支払えると思います。&lt;/p&gt;
&lt;h2 id="メールで楽譜が送られてくる"&gt;メールで楽譜が送られてくる&lt;/h2&gt;
&lt;p&gt;支払いが確認されると、メールでNaomiさんからPDFが届きます。&lt;br&gt;
Paypalのおかげで楽ちん！&lt;/p&gt;
&lt;p&gt;この間たったの2週間&lt;/p&gt;
&lt;h2 id="注意事項"&gt;注意事項&lt;/h2&gt;
&lt;p&gt;英語でのやりとりなので、多少面倒なところがあります。&lt;br&gt;
後、相手はツアーとか忙しい人なので、返信までが通常のお店の感覚でいては辛いです。&lt;/p&gt;
&lt;p&gt;ちなみに、一度PDFを持っていると後はライセンスの購入だけなので、一瞬でかたが付きます。&lt;/p&gt;
&lt;p&gt;もし、楽譜がほしいけど相談したい！という方がいらっしゃれば、コメントいただければと思います。&lt;/p&gt;</description></item><item><title>Kawasaki.rb #002 開催しました #kwskrb</title><link>https://chezo.uno/post/2013-08-03-kawasaki-dot-rb-number-002-kai-cui-simasita-number-kwskrb/</link><pubDate>Fri, 02 Aug 2013 23:08:43 -0700</pubDate><guid>https://chezo.uno/post/2013-08-03-kawasaki-dot-rb-number-002-kai-cui-simasita-number-kwskrb/</guid><description>&lt;p&gt;ちょっと時間がたってしまいましたが、川崎地域でRuby関連の技術者が集まるKawasaki.rbの
を、去る7/24に行いました。&lt;/p&gt;
&lt;p&gt;今回は偶数回なので飲み回だったのですが、
というお店で実施しました。焼肉LTの実現！&lt;/p&gt;
&lt;p&gt;実は店のプロジェクターを使えるのは持ち込みDVDだけ、という罠があったのですが、なんとかプロジェクター持ち込みでスクリーンだけは使わせてもらえました。&lt;/p&gt;
&lt;p&gt;二人に焼肉LTをしてもらいました！焼肉LTの様子はこんなかんじでした。&lt;/p&gt;
&lt;blockquote class="twitter-tweet"&gt;&lt;p lang="ja" dir="ltr"&gt;焼肉LTとは &lt;a href="https://twitter.com/hashtag/kwskrb?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#kwskrb&lt;/a&gt; &lt;a href="http://t.co/mOJcRJhI5E"&gt;pic.twitter.com/mOJcRJhI5E&lt;/a&gt;&lt;/p&gt;&amp;mdash; Kentaro Goto / ごとけん (@gotoken) &lt;a href="https://twitter.com/gotoken/status/360018779784237056?ref_src=twsrc%5Etfw"&gt;July 24, 2013&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;h2 id="yumu19さんcapistrano紹介"&gt;
さん「Capistrano紹介」&lt;/h2&gt;
&lt;p&gt;ブログ記事も書いていただきました！ありがとう！&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;Capistranoの基本的な部分を紹介していただきました。&lt;br&gt;
レシピを用意すれば、後からdeployする人はあまり意識しなくていいんですよね。&lt;/p&gt;
&lt;p&gt;スライドはこちら&lt;/p&gt;
&lt;iframe src="//www.slideshare.net/slideshow/embed_code/key/pDYE31FqFWqMeW" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen&gt; &lt;/iframe&gt; &lt;div style="margin-bottom:5px"&gt; &lt;strong&gt; &lt;a href="//www.slideshare.net/TsubasaYumura/capistrano-at" title="Capistrano紹介 at kawasaki.rb #002 #kwskrb" target="_blank"&gt;Capistrano紹介 at kawasaki.rb #002 #kwskrb&lt;/a&gt; &lt;/strong&gt; from &lt;strong&gt;&lt;a href="//www.slideshare.net/TsubasaYumura" target="_blank"&gt;Tsubasa Yumura&lt;/a&gt;&lt;/strong&gt; &lt;/div&gt;
&lt;h2 id="aflc_jp-さんgroongaの紹介の話"&gt;
さんgroongaの紹介の話&lt;/h2&gt;
&lt;p&gt;資料は
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;groongaとは？&lt;/li&gt;
&lt;li&gt;ruby bindingのrroongaの話&lt;/li&gt;
&lt;li&gt;ニコニコ動画のコメントを検索できるようにしてみた
個人的には、groongaが鳥山明な名前にしか見えなくなったこと、おそらくニコニコ動画最古の&amp;quot;Ruby&amp;quot;という文字列がレッツゴー陰陽師に埋まっていたという事実が驚きでした。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="今後やりたいこと"&gt;今後やりたいこと&lt;/h2&gt;
&lt;p&gt;毎回のtalk以外にもやりたいことを色々と募集したいと思っています。&lt;/p&gt;
&lt;p&gt;Ruby初心者のために
を毎回30分ずつくらい読むのはよさそうだなーという話をしていました。&lt;br&gt;
むしろ今なら
ですかねー。標準添付ライブラリの解説も付いていることだし。&lt;/p&gt;
&lt;p&gt;というわけで、こちらにコメント頂いてもいいんですが、良ければ
からご意見をくださいませ。&lt;/p&gt;
&lt;h2 id="次回予告"&gt;次回予告&lt;/h2&gt;
&lt;p&gt;次回は、8/28でミューザ川崎 音楽工房 会議室2でお会いしましょう！&lt;br&gt;
さんによるmrubyのお話が予定されています。&lt;/p&gt;
&lt;p&gt;発表者も募集中です！
か
あたりにご連絡ください！&lt;/p&gt;</description></item><item><title>Kawasaki.rb #001 第1回ミートアップを開催しました #kwskrb</title><link>https://chezo.uno/post/2013-06-29-kawasaki-dot-rb-number-001-di-1hui-mitoatupuwokai-cui-simasita-number-kwskrb/</link><pubDate>Fri, 28 Jun 2013 21:06:14 -0700</pubDate><guid>https://chezo.uno/post/2013-06-29-kawasaki-dot-rb-number-001-di-1hui-mitoatupuwokai-cui-simasita-number-kwskrb/</guid><description>&lt;p&gt;6/26にKawasaki.rbの第1回ミートアップを開催しました。&lt;/p&gt;
&lt;h2 id="kawasakirb-001"&gt;
&lt;/h2&gt;
&lt;h2&gt;&lt;/h2&gt;
&lt;p&gt;ありそうで以外となかった、川崎でのRubyの勉強会です。&lt;br&gt;
初心者からコアな人までざっくばらんに話が出来ればと思って始めました。&lt;br&gt;
Doorkeeperの参加者を見ていただくとわかるのですが、予想以上に豪華な顔ぶれでhomeなはずなのに、ドキドキが止まりませんでした。(参加者の2割近くコミッターとか！！！)&lt;/p&gt;
&lt;p&gt;当日、NKT77さんとたるいさん(
)にトークをしてもらいました。&lt;/p&gt;
&lt;p&gt;@kishimaさんによるtogetterまとめは
。&lt;/p&gt;
&lt;h2 id="01-nkt77さん-hadoop-with-ruby-僕がpythonを選んだ理由"&gt;01. NKT77さん 「Hadoop with Ruby-僕がPythonを選んだ理由」&lt;/h2&gt;
&lt;p&gt;このタイトル自体は僕が付けた釣り仮題なのですが、内容としてはRubyをHadoop Streamingで使うときにHashが遅いという事例の紹介でした。(
恐縮したのはここだけの話)&lt;/p&gt;
&lt;iframe src="//www.slideshare.net/slideshow/embed_code/key/qNf9UAatermiB5" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen&gt; &lt;/iframe&gt; &lt;div style="margin-bottom:5px"&gt; &lt;strong&gt; &lt;a href="//www.slideshare.net/nkt77/20130626-kawasakirb-nkt-23692953" title="20130626 kawasaki.rb NKT77" target="_blank"&gt;20130626 kawasaki.rb NKT77&lt;/a&gt; &lt;/strong&gt; from &lt;strong&gt;&lt;a href="//www.slideshare.net/nkt77" target="_blank"&gt;nkt77&lt;/a&gt;&lt;/strong&gt; &lt;/div&gt;
&lt;p&gt;(2013/07/04 資料を追加しました)&lt;/p&gt;
&lt;p&gt;ざっくりまとめると&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hadoop streamingでRubyを使うときに、Stringで100万程度のkeyのHashを作ると結構遅い&lt;/li&gt;
&lt;li&gt;HashのLookupも非線形に速度が増えている&lt;/li&gt;
&lt;li&gt;Pythonにしたら10倍速くなった(AWSのEMR料金も10分の1に！)
という内容です。しかし、AWSのおかげで処理時間=お金に換算できる世界になったのが、改めてインパクトが大きいですね&amp;hellip;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;なお、HashがPythonと比較して遅い原因としては、&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;GC&lt;/li&gt;
&lt;li&gt;Hash関数がsiphashなため&lt;/li&gt;
&lt;li&gt;rehashの際の閾値がRubyの方が保守的
といった理由が考えられるとのことでした。(間違いがあればご指摘ください)&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="02-たるいさんtaru-メモリアロケーションからみた拡張ライブラリに大切なこと"&gt;02. たるいさん(@taru) 「メモリアロケーションからみた拡張ライブラリに大切なこと」&lt;/h2&gt;
&lt;iframe src="//www.slideshare.net/slideshow/embed_code/key/1rv0A73MvVSEjR" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen&gt; &lt;/iframe&gt; &lt;div style="margin-bottom:5px"&gt; &lt;strong&gt; &lt;a href="//www.slideshare.net/tarui/ss-23517958" title="メモリアロケーションからみた拡張ライブラリに大切なこと" target="_blank"&gt;メモリアロケーションからみた拡張ライブラリに大切なこと&lt;/a&gt; &lt;/strong&gt; from &lt;strong&gt;&lt;a href="//www.slideshare.net/tarui" target="_blank"&gt;Masaya TARUI&lt;/a&gt;&lt;/strong&gt; &lt;/div&gt;
&lt;p&gt;資料を見ていただければ内容はわかると思います。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;初めての拡張ライブラリの作り方&lt;/li&gt;
&lt;li&gt;ArrayがGCされないようにRB_GC_GUARD()しましょう&lt;/li&gt;
&lt;li&gt;GC.stress = trueすると、GC強制的に走らせて再現しにくいバグを潰せる&lt;/li&gt;
&lt;li&gt;NKT77さんが報告していたGCのせいでHashが遅いのはtrunkでは改善しました！(凄い！)
最後の、Hashの速度向上については田中哲さんも確認されたようです。&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote class="twitter-tweet"&gt;&lt;p lang="ja" dir="ltr"&gt;kawasaki.rb #001 であった、GC のせいで Hash が遅いが trunk は問題ないというのを追試してみた。たしかにそんなそういう感じになっている。 &lt;a href="http://t.co/mrtKNViEsq"&gt;pic.twitter.com/mrtKNViEsq&lt;/a&gt;&lt;/p&gt;&amp;mdash; Tanaka Akira (@tanaka_akr) &lt;a href="https://twitter.com/tanaka_akr/status/350600581003485184?ref_src=twsrc%5Etfw"&gt;June 28, 2013&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;当日は散々、「Rubyの集まりじゃないのかよ！」とか「Pythonを宣伝する場所かよ！」とか突っ込まれていましたが、これで皆さん安心してHadoop StreamingでRubyを使ってもらえますね。&lt;/p&gt;
&lt;p&gt;今後は、初心者にやさしいネタも考えつつ進めて行きたいと思います。（いらないのかな？)&lt;/p&gt;
&lt;p&gt;次回は、7/24(水)に居酒屋LT(というか焼肉LT)をやりますので、準備ができましたら有る方はメーリングリストとDoorkeeperで告知しますので、興味があれば登録していただければと思います。&lt;/p&gt;</description></item><item><title>MacのiTunesでAirPlayが繋がらない時にやるべき1つのこと</title><link>https://chezo.uno/post/2013-04-14-macnoitunesdeairplaygaxi-garanaishi-niyarubeki1tunokoto/</link><pubDate>Sun, 14 Apr 2013 03:04:52 -0700</pubDate><guid>https://chezo.uno/post/2013-04-14-macnoitunesdeairplaygaxi-garanaishi-niyarubeki1tunokoto/</guid><description>&lt;p&gt;先日、WindowsマシンをAirPlayサーバにする
が、
その後
など各所でAirPlayサーバが盛り上がっています。&lt;/p&gt;
&lt;p&gt;しかし、実際に使っていると、iPhoneからは飛ばせるのにMacのiTunesからだとAirPlayサーバにつながらない事態が頻発しました。(AppleTVでも同様でした)&lt;/p&gt;
&lt;p&gt;調べてみたところ、どうやらMacのIPv6をオフにすれば良いとのこと。&lt;/p&gt;
&lt;p&gt;Macのターミナルをたちあげて&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;networksetup -setv6off Wi-Fi&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;と入力するだけ。&lt;/p&gt;
&lt;p&gt;どうやら、AirPlayサーバがIPv4でlistenしているのに、Clientがv6で話かけていることが原因のようです。&lt;/p&gt;
&lt;p&gt;でも、この先IPv6オフにしていていいんだろうか。。。&lt;/p&gt;
&lt;p&gt;参考URL：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>WindowsでAirPlayを使うならShairport4w</title><link>https://chezo.uno/post/2013-01-09-windowsdeairplaywoshi-unarashairport4w/</link><pubDate>Wed, 09 Jan 2013 03:01:45 -0800</pubDate><guid>https://chezo.uno/post/2013-01-09-windowsdeairplaywoshi-unarashairport4w/</guid><description>&lt;p&gt;シェアウェアでは
とかもあるけど、ServerがWindowsで良いのならSharport4wがおすすめ。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;AirPlayはiOSやMacなどのデバイスから、Serverへ向かって音や映像を飛ばす規格です。そのうち、SHarport4wは音声だけを受け取るようにできる、AirplayサーバをWindowsに立てることができます。&lt;br&gt;
我が家では、
を手に入れてしまったのでこれを活用しない手はないと思いNetbookもどきにDACを接続し楽しんでいます。&lt;/p&gt;
&lt;p&gt;AppleTvでは、複数のデバイスからAirplayを実行すると後から前の命令を奪うことができるのですが、Sharport4wは後の命令はエラーが出てしまいます。まぁ、古い再生を停止すれば良いのでそんなに問題が出ることはないと思います。&lt;/p&gt;
&lt;p&gt;これで、Google Chromeのリモートデスクトップとかを頑張って使っていた生活からおさらばできそう。&lt;/p&gt;</description></item><item><title>あかぺら村のキリックさんがblogを再開されました！ - A Cappella - Best ofが素敵！</title><link>https://chezo.uno/post/2013-01-09-akaperacun-nokiritukusangablogwozai-kai-saremasita-a-cappella-best-ofgasu-di/</link><pubDate>Wed, 09 Jan 2013 03:01:16 -0800</pubDate><guid>https://chezo.uno/post/2013-01-09-akaperacun-nokiritukusangablogwozai-kai-saremasita-a-cappella-best-ofgasu-di/</guid><description>&lt;p&gt;素敵なアカペラCDを通販されていたあかぺら村のキリックさんが、この度blogを解説されたようです！&lt;/p&gt;
&lt;p&gt;その中で、素敵なCDを紹介されていたので、こちらでも紹介したいと思います。&lt;/p&gt;
&lt;p&gt;amazon.co.jpのリンクは
！&lt;/p&gt;
&lt;p&gt;ドイツのアカペラを中心とした&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;です！&lt;/p&gt;
&lt;p&gt;なかなか素敵な曲が多かったので、ご紹介します。&lt;/p&gt;
&lt;p&gt;視聴できないものも、(
なら全部視聴できます！)&lt;/p&gt;
&lt;p&gt;[CD 1]&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
(
)&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
[CD 2]&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;いやぁ、The Kings&amp;rsquo; SingerはContempolalyの中でも輝いていますねー。すごいなー。&lt;/p&gt;</description></item><item><title>Autopagerize-rubyのMechanize版を作った</title><link>https://chezo.uno/post/2013-01-09-autopagerize-rubynomechanizeban-wozuo-tuta/</link><pubDate>Wed, 09 Jan 2013 03:01:09 -0800</pubDate><guid>https://chezo.uno/post/2013-01-09-autopagerize-rubynomechanizeban-wozuo-tuta/</guid><description>&lt;p&gt;
にも書いたけど、Ruby向けAutopagerizeをMechanize対応してみた。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;特徴はMechanizeのrobots.allowをそのまま流用できること。&lt;br&gt;
それ以外は正直httpclientの方が早いと思います。&lt;/p&gt;
&lt;p&gt;いまいちよくわからないのが、forkした場合のgemspecの扱いとpull requestすべきか否か。&lt;br&gt;
オリジナルとは違うhttpのclientしてるからそのままでいいか。&lt;/p&gt;</description></item><item><title>11/28にThe Real Groupのニューアルバムが出る！</title><link>https://chezo.uno/post/2012-11-17-11-slash-28nithe-real-groupnoniyuarubamugachu-ru/</link><pubDate>Sat, 17 Nov 2012 01:11:17 -0800</pubDate><guid>https://chezo.uno/post/2012-11-17-11-slash-28nithe-real-groupnoniyuarubamugachu-ru/</guid><description>&lt;p&gt;2012/11/28にThe Real Groupのニューアルバム、
がでるようです。&lt;/p&gt;
&lt;p&gt;The Real Christmasに続きクリスマスアルバム第二弾ですね。楽しみです。&lt;/p&gt;
&lt;p&gt;しかし、本人達がFacebookで自分たちの演奏動画を投稿する時代なんですね。&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/ivmpX8G7XXc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>パワーポイントに色づけしたソースコードを簡単に貼る方法</title><link>https://chezo.uno/post/2012-11-12-pawapointonise-dukesitasosukodowojian-dan-nitie-rufang-fa/</link><pubDate>Mon, 12 Nov 2012 01:11:33 -0800</pubDate><guid>https://chezo.uno/post/2012-11-12-pawapointonise-dukesitasosukodowojian-dan-nitie-rufang-fa/</guid><description>&lt;p&gt;パワーポイントに色づけしたコードを貼るのって、皆どうやってるのか不思議に思っていたのですが、どれもちょっと面倒だなという感じでした。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GNU Source-highlightを使う方法：
&lt;/li&gt;
&lt;li&gt;SCiTEを使う方法：
&lt;/li&gt;
&lt;li&gt;Visual Studioを使う方法など:
色々ある中で、その本質が「HTML等の形式でクリップボードに保持して、パワーポイントに貼り付ける」、ということに気づいたので、試しにGithubにGistで書いてみたら見事成功しました。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;手順は至って簡単、&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;色づけしたいコードを
で作成(ものによってはPrivateにしておく）&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gistからコピーして、パワーポイントで「形式を選択して貼り付け」で「HTML形式」で貼る&lt;/strong&gt;
2．は最近のPPTだと、貼った後に横に出現するアイコンから、「元の書式を保持する」を選ぶともっと楽かもしれません。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;これは便利だ！&lt;/p&gt;</description></item><item><title>Websocketを使ってリアルタイムに形態素解析をするmorph-websocketを作ってみた</title><link>https://chezo.uno/post/2012-11-10-websocketwoshi-tuteriarutaimunixing-tai-su-jie-xi-wosurumorph-websocketwozuo-tutemita/</link><pubDate>Fri, 09 Nov 2012 20:11:51 -0800</pubDate><guid>https://chezo.uno/post/2012-11-10-websocketwoshi-tuteriarutaimunixing-tai-su-jie-xi-wosurumorph-websocketwozuo-tutemita/</guid><description>&lt;p&gt;
morph-websocket画面&lt;/p&gt;
&lt;p&gt;WebSocketを使ってリアルタイムに形態素解析結果を出力する、morph-websocketを作りました。&lt;/p&gt;
&lt;p&gt;テキストボックスに入力すると、リアルタイムで形態素解析結果が出力されます。&lt;/p&gt;
&lt;p&gt;ソースコードは、いつものようにgithubに置きました。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;思いついたので、勢いで作りました。今まで、バッチ的にまとめて処理をしていたものに対して、リアルタイムで解析結果が変われば、何か見える世界が変わるかなーと思ったのですが、そんなに変わりませんでした。変わったのは寝る時間だけか。&lt;/p&gt;
&lt;p&gt;最初はMeCabを使おうと思ったのですが、0.994のrubyバインディングがCreateModelできない現象にぶち当たって諦めました。なので、
とRuby使ってます。&lt;/p&gt;
&lt;p&gt;あ、ついでにMykyteaがKyTea 0.4.2に対応しました。&lt;/p&gt;
&lt;p&gt;参考URL:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Ola Gjeiloの"Sunrise Mass"がゲーム音楽みたいで格好いい</title><link>https://chezo.uno/post/2012-11-01-ola-gjeilono-sunrise-mass-gagemuyin-le-mitaidege-hao-ii/</link><pubDate>Thu, 01 Nov 2012 02:11:53 -0700</pubDate><guid>https://chezo.uno/post/2012-11-01-ola-gjeilono-sunrise-mass-gagemuyin-le-mitaidege-hao-ii/</guid><description>&lt;p&gt;
で
さんのキャロルが特集されていました。&lt;/p&gt;
&lt;p&gt;Ola Gjeiloさんの名前は良く聞くものの、曲は聴いたことがなかったので調べてみたところ、&lt;br&gt;
キャロルより格好いい&amp;quot;Sunrise Mass&amp;quot;を見つけて大興奮していました。&lt;br&gt;
Steve DobrogoszとEric Whitacreを混ぜた感じというイメージです。&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/Tcj2549Ih_A?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;特に3曲目のCityが大好きです。&lt;br&gt;
結構、弦が格好いい曲かなーと思ったら、キャロルは素敵なアレンジです。なかなか歌い甲斐がありそうです。&lt;/p&gt;
&lt;p&gt;ライブ録音が
されているようでしたので、思わず購入してしまいました。&lt;/p&gt;
&lt;p&gt;Coventry Carol&lt;br&gt;
[soundcloud url=&amp;quot;
&amp;quot; iframe=&amp;ldquo;true&amp;rdquo; /]&lt;/p&gt;
&lt;p&gt;The First Noel&lt;br&gt;
[soundcloud url=&amp;quot;
&amp;quot; iframe=&amp;ldquo;true&amp;rdquo; /]&lt;/p&gt;
&lt;p&gt;楽譜はPanamusicaさんで買えるようです。&lt;br&gt;
これは人気が出るわけだなー。&lt;/p&gt;</description></item><item><title>Amazonの1GB/1円ストレージGlacierをコマンドラインで使うglacier-cmdの使い方</title><link>https://chezo.uno/post/2012-10-31-amazonno1gb-slash-1yuan-sutoreziglacierwokomandoraindeshi-uglacier-cmdnoshi-ifang/</link><pubDate>Wed, 31 Oct 2012 05:10:45 -0700</pubDate><guid>https://chezo.uno/post/2012-10-31-amazonno1gb-slash-1yuan-sutoreziglacierwokomandoraindeshi-uglacier-cmdnoshi-ifang/</guid><description>&lt;p&gt;大分前に発表されました、Amazonの
というサービスをLinuxサーバから使用したいと思い、Javaでわざわざ書くのも面倒だと思い色々探していたところ、glacier-cmdというツールが良い感じだったのでご紹介します。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;ちなみに、Windowsなら
などのGUIソフトが楽です。&lt;/p&gt;
&lt;h2 id="glacierの特徴"&gt;Glacierの特徴&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Glacierは1GB/1円でデータが無制限に保管できる&lt;/li&gt;
&lt;li&gt;Upload以外の作業は4時間待たされる&lt;/li&gt;
&lt;li&gt;Download時の転送料は普通にかかる(＝そこまで安くない)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;安いのには理由があります。Upload以外の作業は、大体Jobを実行してから4時間待たされるのです。&lt;br&gt;
たとえば、Downloadする前に、このファイルを落としたいんだけど、とJob投げて、準備ができたらダウンロード、という流れです。&lt;br&gt;
また、最新のファイルリストを取得するにも4時間待たされます。(なので、大体のクライアントがファイルリストをローカルでキャッシュしています)&lt;/p&gt;
&lt;p&gt;後、Download時の転送料金は相対的に高く感じます。10TBを保管するのにはus-eastのリージョンで、月$100(約8千円)なのに対し、同量をDownloadした場合$1,228(約10万円)かかります。&lt;br&gt;
詳細は下記を参照ください。
&lt;/p&gt;
&lt;p&gt;削除自体は無料なので、通常のデータを置くのには適さず、二度と見ないかもしれないけど念のためとっておきたいといった類のデータの保管に向いています。Amazon自身もあまり取り出さないことを想定しているようです。&lt;/p&gt;
&lt;p&gt;まぁ、テープドライブを使って自前で管理するよりは楽できるかな、という感じなのでしょうか。&lt;/p&gt;
&lt;h2 id="glacier-cmdの利用前に用意するもの"&gt;glacier-cmdの利用前に用意するもの&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;AWSのAccess Key&lt;/li&gt;
&lt;li&gt;AWSのSecret Key&lt;/li&gt;
&lt;li&gt;Amazon SimpleDBのドメイン名(後述)
そもそも、AWSのアカウントは持ってることを前提にします。そうすると、きっとAccess KeyとSecret Keyも持っていると思います。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="simpledbとその利用目的"&gt;SimpleDBとその利用目的&lt;/h2&gt;
&lt;p&gt;SimpleDBとは、Amazonが提供するHTTPで利用可能な簡単なDBです。&lt;/p&gt;
&lt;p&gt;Glacierはファイルダウンロードや削除時にはハッシュのようなアーカイブIDで操作をし、&lt;br&gt;
それらの情報を記憶するためにglacier-cmdはSimpleDBを利用しています。&lt;/p&gt;
&lt;p&gt;SimpleDBはSQLのTableの概念に相当するdomainというものがあります。&lt;br&gt;
例えばこれを、ユーザごとに作成することで、各自のファイルのリストを管理します。&lt;/p&gt;
&lt;h2 id="simpledbのdomainの作成方法"&gt;SimpleDBのdomainの作成方法&lt;/h2&gt;
&lt;p&gt;私自身は、RubyからSimpleDBを扱える
というgemでdomainを作成したのですが、&lt;br&gt;
既存のツールで何とかしたい場合は、ブラウザベースのものを使うのが簡単かと思います。&lt;/p&gt;
&lt;p&gt;なお、right_awsの利用には下記を参考にさせていただきました。&lt;br&gt;
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;下記ツールを解凍し、index.htmlを開く(Chromeでは動作できず。Firefoxは動作確認済み)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;ol start="2"&gt;
&lt;li&gt;
&lt;pre&gt;&lt;code&gt;Explore APIからCreateDomainを選択し、Domain Nameにmy-glacier-dbなど適当な名前を入れて、Invoke Requestをクリックする
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;参考：
&lt;/p&gt;
&lt;h2 id="glacier-cmdのインストール"&gt;glacier-cmdのインストール&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt; $ mkdir ~/env $ cd ~/env $ virtualenv glacier $ source ~/env/glacier/bin/activate (glacier)$ git clone https://github.com/uskudnik/amazon-glacier-cmd-interface.git (glacier)$ cd amazon-glacier-cmd-interface (glacier)$ python setup.py install
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;今回はvirtualenvを使っているのですが、globalな場所にインストールしたい場合は、適当な場所にインストールするのが良いでしょう。&lt;br&gt;
基本的に、次回以降glacier-cmdを利用する際は source ~/env/glacier/bin/activateをしましょう。&lt;/p&gt;
&lt;h2 id="glacier-cmdの初期設定"&gt;glacier-cmdの初期設定&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;~/.glacier-cmdに設定を書き込む&lt;br&gt;
例)&lt;/p&gt;
&lt;p&gt;[aws] access_key=AWSアクセスキーを書く secret_key=AWSシークレットキーを書く [glacier] region=us-east-1 bookkeeping=True bookkeeping-domain-name=作成したSimpleDBのdomain名を書く logfile=~/.glacier-cmd.log loglevel=INFO output=print&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;pre&gt;&lt;code&gt;Glacierのvaultと呼ばれるデータの保管場所を作成する
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;$ glacier-cmd mkvault Test&lt;/p&gt;
&lt;ol start="3"&gt;
&lt;li&gt;
&lt;pre&gt;&lt;code&gt;vaultの作成結果を確認する
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;$ glacier-cmd lsvault&lt;/p&gt;
&lt;p&gt;以上でGlacierの使用準備は完了です。&lt;/p&gt;
&lt;h2 id="利用するコマンド群"&gt;利用するコマンド群&lt;/h2&gt;
&lt;p&gt;後は必要に応じて以下のコマンドを利用してください。&lt;/p&gt;
&lt;p&gt;下記のコマンドを利用時は毎回&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ source ~/env/glacier/bin/activate
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;を実行してください。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;データをuploadする。(upload時に発行されるアーカイブIDが今後の利用に重要)&lt;/p&gt;
&lt;p&gt;$ glacier-cmd upload Test /path/somefile –description “Test data”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ファイルリストを取得する(ためのjobを発行する。実際に取得するには4時間後、再度実行する)&lt;/p&gt;
&lt;p&gt;$ glacier-cmd inventory Test&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;SimpleDBに格納されたファイルリストを取得する&lt;/p&gt;
&lt;p&gt;$ glacier-cmd search Test&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;データをダウンロードする&lt;/p&gt;
&lt;p&gt;$ glacier-cmd getarchive Test アーカイブID&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;…4時間後&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ glacier-cmd download Test アーカイブID –o outfilename
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;データを消去する&lt;/p&gt;
&lt;p&gt;$ glacier-cmd rmarchive Test アーカイブID&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Jobの実行状況を調べる&lt;/p&gt;
&lt;p&gt;$ glacier-cmd listjobs&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ちなみに、searchコマンドはglacier-cmdが利用しているSimpleDBにファイルリストをキャッシュしているものを取得するだけです。なので、FastGlacierなど別のツールでUpload,Downloadした際には齟齬がでてしまいます。&lt;br&gt;
その場合は、inventoryコマンドを2度4時間程度の間隔を空けて行うと反映されると思います。&lt;/p&gt;
&lt;p&gt;結構面倒ですが、とにかくいつ使うか分からないデータや、手元の外付けHDDにとりあえず保管してあるけど一応冗長性を持たせたい、とかいう用途には良いでしょう。&lt;/p&gt;</description></item><item><title>東京ゲームショーで売っていたのSymphonic Fantasies Tokyo のCDがネットで買える！</title><link>https://chezo.uno/post/2012-10-05-dong-jing-gemusiyodemai-tuteitanosymphonic-fantasies-tokyo-nocdganetutodemai-eru/</link><pubDate>Fri, 05 Oct 2012 02:10:55 -0700</pubDate><guid>https://chezo.uno/post/2012-10-05-dong-jing-gemusiyodemai-tuteitanosymphonic-fantasies-tokyo-nocdganetutodemai-eru/</guid><description>&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;Source: via
on
&lt;/p&gt;
&lt;p&gt;最近お世話になりっぱなしの、
で知ったのですが、東京ゲームショーでSymphonic Fantasies TokyoのCDが販売されていたようです。&lt;/p&gt;
&lt;p&gt;正直、本家のWDRの演奏よりも東京混声合唱団のクオリティが高く、素晴らしい演奏でした。ドイツ版をゴミ箱に捨ててでも日本版のCDが欲しかったのです(ドイツ版もクオリティは高いですよ、ええ)&lt;/p&gt;
&lt;p&gt;しかし、終わってしまったゲームショーを悔やんでもしかたありません。&lt;/p&gt;
&lt;p&gt;ところが、symphonic fantasiesのオフィシャルに飛んでみると、なにやらSymphonic Fantasies Tokyoという怪しいリンクが。&lt;/p&gt;
&lt;p&gt;クリックしてみると、売っているではありませんか！&lt;/p&gt;
&lt;p&gt;
というお店で普通に売っていました。支払いは、クレジットカードまたはPaypalで支払えるので比較的簡単に買えます。でも、届くまでには2週間以上かかるんじゃないでしょうか。まだ来ていません。&lt;/p&gt;
&lt;p&gt;これで買いそびれた人も、素晴らしい日本の演奏を堪能できますね！&lt;/p&gt;
&lt;p&gt;一応、イベント会場限定ということなので、まだ買うチャンスはあるようですが、ネットで買った方が早いと言う人はオススメです。&lt;/p&gt;
&lt;p&gt;参考URL:&lt;br&gt;
&lt;/p&gt;</description></item><item><title>Finlandの伝統的な楽器カンテレをモダンに演奏するIda Elina</title><link>https://chezo.uno/post/2012-10-04-finlandnochuan-tong-de-nale-qi-kanterewomodanniyan-zou-suruida-elina/</link><pubDate>Thu, 04 Oct 2012 02:10:52 -0700</pubDate><guid>https://chezo.uno/post/2012-10-04-finlandnochuan-tong-de-nale-qi-kanterewomodanniyan-zou-suruida-elina/</guid><description>&lt;p&gt;Finland大使館の後援の元行われた、モダンカンテレ奏者Ida Elinaのライブ。&lt;/p&gt;
&lt;p&gt;前の記事でも少し紹介しましたが、カンテレというギターを寝かしたような伝統楽器を、押尾コータローのようにリズミカルに演奏するIda Elinaさんの曲が素敵です！&lt;/p&gt;
&lt;p&gt;シベリウス音楽院在学中に北海道教育大学に留学していたようです。札幌での演奏は多かったようなのですが、今回は東京にも来てくれました。&lt;br&gt;
しかし、札幌とフィンランドは気候的にまだ近いのかな？&lt;/p&gt;
&lt;p&gt;Ida Elina-Good News&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/XIpMxtf0nwI?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;彼女の曲は、フィンランドぽい暗さや重々しさよりもすがすがしさを感じさせます。&lt;br&gt;
これで25歳とはこの先が楽しみであります。&lt;/p&gt;
&lt;p&gt;Ida Elina - Unelmien Keikka&lt;br&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/5N8ITa8omt4?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;Ida Elina - How sweet is the love&lt;br&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/qajPRaTKAjg?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;個人的には初期に作ったというFinland語の曲も、言葉の響きが暖かくて好きです。&lt;/p&gt;</description></item><item><title>Distant Worlds music from FINAL FANTASY THE CELEBRATIONのチケット応募開始！</title><link>https://chezo.uno/post/2012-10-03-distant-worlds-music-from-final-fantasy-the-celebrationnotiketutoying-mu-kai-shi/</link><pubDate>Tue, 02 Oct 2012 19:10:54 -0700</pubDate><guid>https://chezo.uno/post/2012-10-03-distant-worlds-music-from-final-fantasy-the-celebrationnotiketutoying-mu-kai-shi/</guid><description>&lt;p&gt;
さんで知ったのですが、FINAL FANTASYのオフィシャルな演奏会のチケット応募が始まったようです。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;公式サイトは
。&lt;/p&gt;
&lt;p&gt;応募受付期間が、10/1（月）から10/14（日）と短めですので予約はお早めに。&lt;/p&gt;
&lt;p&gt;日程は、下記の通りです。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;・2012年12月26日(水)　18:00開場/19:00開演　　会場：東京国際フォーラム ホールA(東京)&lt;br&gt;
・2012年12月29日(土)　17:30開場/18:00開演　　会場：グランキューブ大阪(大阪)&lt;br&gt;
・2012年12月31日(月)　17:00開場/18:00開演　　会場：東京国際フォーラム ホールA(東京)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;いや、この日程は厳しいなー。&lt;/p&gt;
&lt;p&gt;参考URL:&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>想像もしなかった場外戦〜iPhone 5とAndroidの対決がこんなところまで！！ #TEAMiPhone と #TeamDROID の戦い</title><link>https://chezo.uno/post/2012-10-02-xiang-xiang-mosinakatutachang-wai-zhan-iphone-5toandroidnodui-jue-gakonnatokoromade-number-teamiphone-to-number-teamdroid-nozhan-i/</link><pubDate>Tue, 02 Oct 2012 15:03:48 -0700</pubDate><guid>https://chezo.uno/post/2012-10-02-xiang-xiang-mosinakatutachang-wai-zhan-iphone-5toandroidnodui-jue-gakonnatokoromade-number-teamiphone-to-number-teamdroid-nozhan-i/</guid><description>&lt;p&gt;一度は聞いたことがあるiPhoneの着信音のあの音から、こんな曲ができるなんて！&lt;/p&gt;
&lt;p&gt;このブログでもたびたび紹介している多重録音アカペラのPeter Hollensが新作を発表していました。&lt;br&gt;
タイトルはなんと、&amp;ldquo;iPhone vs Droid&amp;rdquo;！あのお馴染みの(?)着信音のメロディに歌詞をつけてR&amp;amp;Bシンガーの
と対決しています。&lt;/p&gt;
&lt;p&gt;Peter Hollens のiPhone versionはこちら。&lt;br&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/xnI9h3ELwjc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;J RiceのDroid versionはこちら。&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/d9jQYYX0LI0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;なんでも、お互いYouTubeのチャンネルの登録対決をしているようです（笑）。&lt;/p&gt;
&lt;p&gt;そして、まさかの
と、Google play、で買えるようになるまでの
が用意されているようです（笑）&lt;/p&gt;
&lt;p&gt;歌詞もYouTubeで見れるのですが、相変わらずのApple信者とそれをDisるDroidファンという構図になっています。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;It just works&lt;br&gt;
it doesn&amp;rsquo;t matter what the specs are&lt;br&gt;
iphone 5&lt;br&gt;
might even trade my wife for&lt;/p&gt;
&lt;p&gt;（ちゃんと動いてる。iPhone 5のスペックなんて問題じゃないんだ。妻と交換したって良い）&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;とか、「妻と交換しても良い」とか、良くできた信者ですね（笑）&lt;/p&gt;
&lt;p&gt;それに対する、Droid派の反論が笑えます。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;You just dropped a thousand bucks at the apple store&lt;br&gt;
And bought a thinner version of the iphone 4&lt;/p&gt;
&lt;p&gt;(Apple storeで数千ドルも不意にした。そして、iPhone 4の薄いバージョンを買ったんだ）&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;「薄いバージョン」とか！（笑）Droid派の反論は続きます。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;no navigation&lt;br&gt;
no public transportation&lt;br&gt;
no steve to fix it&lt;br&gt;
you&amp;rsquo;ll never find youre way back home&lt;/p&gt;
&lt;p&gt;(ナビもない、交通機関もない、直すSteveもいない。家に帰ることだってできやしない)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;時事ネタを取り込んでくるとはやりますね。&lt;/p&gt;
&lt;p&gt;まさか、a capplla界にまでこの対決が繰り広げられるとは！！&lt;/p&gt;
&lt;p&gt;●当ブログのPeter Hollensの記事はこちら&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>harmonia ensembleが新しいCD"翼-WINGS-"を9/29に発売</title><link>https://chezo.uno/post/2012-09-28-harmonia-ensemblegaxin-siicd-yi-wings-wo9-slash-29nifa-mai/</link><pubDate>Fri, 28 Sep 2012 02:09:36 -0700</pubDate><guid>https://chezo.uno/post/2012-09-28-harmonia-ensemblegaxin-siicd-yi-wings-wo9-slash-29nifa-mai/</guid><description>&lt;p&gt;合唱楽譜でお馴染みの
が、
で紹介していたので知ったのですが、元World Youth Choirのメンバーなどで構成される合唱団
がニューアルバム&amp;quot;翼 -WINGS-&amp;ldquo;を明日9/29に発売するようです。&lt;/p&gt;
&lt;p&gt;コンクールの全国大会の演奏や、定期演奏会の演奏などが詰まっているようです。&lt;br&gt;
前作も素晴らしい出来だっただけに、今作も期待であります。一度生で聴いてみたいなー。&lt;/p&gt;
&lt;p&gt;プロモーション用のYouTubeの楽曲は相澤直人さんの宿題が用意されているようです。&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/4300ypcH_rI?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;前作の&amp;rdquo;
&amp;ldquo;のぜんぶ（相澤直人作曲）も素敵でした。&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/WLVXJbtigXY?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;販売元のブレインのサイトは
。&lt;br&gt;
合唱楽譜と一緒に買いたい方は、Panamusicaさんの
へどうぞ。&lt;/p&gt;
&lt;p&gt;収録曲は以下の通りです。&lt;/p&gt;
&lt;p&gt;宿題 / 相澤直人&lt;br&gt;
追分節考 / 柴田南雄&lt;br&gt;
鳥籠 / 高橋悠治&lt;br&gt;
島へ / 武満徹&lt;br&gt;
○と△の歌 / 武満徹&lt;br&gt;
翼 / 武満徹&lt;br&gt;
死んだ男の残したものは / 武満徹&lt;br&gt;
小さな空 / 武満徹&lt;br&gt;
明日は晴れカナ、曇りカナ / 武満徹&lt;br&gt;
ソーラン節 /北海道民謡（三善晃）&lt;br&gt;
花 / 喜納晶吉（信長貴富）&lt;br&gt;
Io mi son giovinetta / C.Monteverdi&lt;br&gt;
Jesu,meine Freude / J.S.Bach&lt;br&gt;
Es ist nun nichts Verdammliches an denen /J.S.Bach&lt;br&gt;
Ihr aber seit nicht fleischlich / J.S.bach&lt;br&gt;
Weicht,ihr Trauergeister / J.S.Bach&lt;br&gt;
Virga Jesse / A.Bruckner&lt;br&gt;
Tristis est anima mea / F.Poulenc&lt;br&gt;
Christus est natus / D.Mocnik&lt;br&gt;
Ne cakaj na maj / B.Lesjak&lt;br&gt;
Heal the world / M.Jackson(C.Borela)&lt;/p&gt;</description></item><item><title>SINGSとDobrogoszが再び共演</title><link>https://chezo.uno/post/2012-09-25-singstodobrogoszgazai-bigong-yan/</link><pubDate>Tue, 25 Sep 2012 15:03:37 -0700</pubDate><guid>https://chezo.uno/post/2012-09-25-singstodobrogoszgazai-bigong-yan/</guid><description>&lt;p&gt;スウェーデンのJazz Pianistであり作曲家でもあるSteve Dobrogosz氏と、素敵な実力派合唱集団SINGSが日本で再び共演することが決まったようです。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;日時：2012年10月20日(土)&lt;br&gt;
会場：日本基督教団 東京山手教会&lt;br&gt;
開場：17：30 開演：18：00&lt;br&gt;
チケット：全席自由 2000円&lt;/p&gt;
&lt;p&gt;個人的には、Lord I&amp;rsquo;m Freeの演奏がまた聴けるのかと思うとワクワクします。&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/5lXbMbvqD-U?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>生演奏への期待と価値</title><link>https://chezo.uno/post/2012-09-24-sheng-yan-zou-henoqi-dai-tojia-zhi/</link><pubDate>Mon, 24 Sep 2012 15:03:32 -0700</pubDate><guid>https://chezo.uno/post/2012-09-24-sheng-yan-zou-henoqi-dai-tojia-zhi/</guid><description>&lt;p&gt;[gallery]&lt;/p&gt;
&lt;p&gt;ここ最近、意図せずライブや演奏会に連続で参加させていただいており、非常に優秀な音楽消費者をしています。&lt;/p&gt;
&lt;p&gt;それぞれの演奏(といっても一個はシンポジウムだが)の感想を書こうとも思っていたのだが、それよりも「生演奏で聞けて嬉しかった」「生で聴いたのにガッカリだった」という現象に出くわして、何故両極端なことを思ったのだろうと考えていたので、ここに少し書いてみようと思います。&lt;/p&gt;
&lt;h3 id="生演奏で聞けて嬉しかったライブ達"&gt;生演奏で聞けて嬉しかったライブ達&lt;/h3&gt;
&lt;p&gt;最近、2つのライブに出会いました。一つ目は、クロノトリガー/クロスなどの作曲でお馴染みの光田康典氏のシンポジウムが9/13に行われました。(詳細なレポートは
が詳しいので是非お読みください。)&lt;/p&gt;
&lt;p&gt;そこでは、
と呼ばれる尺八の神永大輔氏を中心とした、ヴァイオリン、ベース、ドラム、キーボードという異色の編成のバンドのライブ演奏が披露されました。特に、神永氏はクロノクロスの「時の傷痕」を聴いて光田氏の曲に惚れ込み、そのメロディから尺八を始めることを志されたそうです。(実際に原曲も尺八だったとは後から気づいたそうです)&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/H9u7Bd6uD-Q?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;神永氏もそうですが、ベースの岩田氏も光田氏の大ファンとのことで、演奏者が大興奮しておりました(笑)確かに、作曲者の前で演奏する機会って中々ないですもんね。&lt;br&gt;
シンポジウム自体無料で開催されたのですが、とても愛のある演奏で幸せな空間でした。特に自分の好きな時の傷痕が聴けたのはとても良いアレンジで鳥肌物でした。小さなスタジオが一体になったのを思い出します。&lt;/p&gt;
&lt;p&gt;もう一つ、素敵なライブを聴いてきました。&lt;br&gt;
フィンランドの伝統的な楽器カンテレを、モダンに演奏するIda Elinaさんのライブでした。&lt;br&gt;
Unelmien Keikkaという素敵な曲を紹介します。&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/5N8ITa8omt4?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;そもそも、カンテレという楽器を知ったのが3日前だったのですが、ふらっと行ってきました。（YouTubeを見て良さそうだなとは思っていました)彼女は札幌に留学生として音楽を学びに3年前日本に来たそうで、そこで出会った方々や体験を通じて演奏活動を続けることを決意されたんだとか。&lt;/p&gt;
&lt;p&gt;彼女の演奏する曲は、明るくきらびやかな和音を中心に使っており、とても聴いていて元気になります。(こんなことを言っては失礼かもしれませんが、フィンランドの音楽って割と重々しい曲が多いイメージなんですよね。好きなんですけど)たとえば、Good Newsという曲なんかがそういうイメージになります。&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/XIpMxtf0nwI?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;ライブのお値段も良心的で軽食という名の軽いビュッフェ付きで2000円でしたので、お釣りが帰ってくるんじゃないかという勢いでした。特に、「さくら」や「あかとんぼ」のカンテレアレンジを織り交ぜた、日本人への配慮がとても嬉しく、小さな箱でしたが純粋に楽しめました。&lt;/p&gt;
&lt;h3 id="期待していたpress-start-2012"&gt;期待していたPress Start 2012&lt;/h3&gt;
&lt;p&gt;
は、FFの植松伸夫氏やスマブラの桜井政博氏、指揮者の竹本泰蔵氏らが企画をしている「ゲーム音楽の紅白」(桜井氏談)です。過去に2回ほど聴きに行ったのですが、特に2010年の公演が素晴らしく鮮明に記憶に残っています。&lt;br&gt;
今年はSkyrimのOpening Themeやゼルダの伝説 スカイウォードソードの曲を演奏するなど期待をしていました。Skyrimの曲はPeter Hollensというドヤ顔で有名(
の村長談)な多重録音アカペラーとヴァイオリンのLindsey Stirlingとの演奏が格好いいです。1人の声と1本のヴァイオリンで、、、というくだりにはつっこまずにいられませんが。&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/BSLPH9d-jsI?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;東京フィルの安定した演奏で、竹本泰蔵氏の熱い指揮による素晴らしい演奏がBunkamuraオーチャードホールにて行われました。&lt;br&gt;
ですが、大好きなSkyrimを聴いてズコーッとなってしまいました。&lt;/p&gt;
&lt;p&gt;Press Startというのは席の当たり外れがものすごく大きいんですね。Bunkamuraオーチャードホールには初めて行ったのですが、2階席のサイドバルコニーではない端っこの席になりました。で、2009年の「エースコンバット・ゼロ ザ・ベルカン・ウォーのギターが全く聞こえなかった」という記憶が蘇りました。&lt;/p&gt;
&lt;p&gt;悪い予感はやはりあたりました。PAさんはおそらく1階席の中央後ろに居たためでしょう、2階席の端っこでは音のバランスがよろしくありません。弦の音が団子になって左のスピーカーからのみ聞こえてくる。しかも、高音のみが飛んでくる位置だったため、刺さる刺さる。 &lt;strong&gt;「何故、コンサートホールへ来て、スピーカーの定位を気にしたり特性を気にしなけりゃならないんだ」&lt;/strong&gt; というのが率直な感想です。基本的にスピーカー越しに音を聞かせるようなバランスだったため、せっかくの繊細なオケの楽しさが台無しでした。倍音もほとんど感じられないし。&lt;/p&gt;
&lt;p&gt;後、どうしてオケ判の合唱って適当なんだろうと思うくらい、合唱が残念でした。10人ほどの編成でマイクを使ってフルオケに対して演奏というのが無謀だと思うのです。しかも、マイクに乗らない発声だったのか、Skyrimの迫力もアンプで増幅しました感が……。&lt;br&gt;
リトルジャックオーケストラとChor Crystal Manaの演奏はアンプラグドだったこともあるでしょうが、非常によいバランスで感銘を受けたのです。だからこそ、ゲーム音楽のオフィシャルの集大成であるPress Startには期待していましたが、裏切られてしまいました。(しかしながら、東混のSymphonic Fantasiesは別格でしたね)&lt;/p&gt;
&lt;p&gt;PAって凄い大事ですね。(オーケストラの演奏会にPAがいるかはよく分かりませんが)ちなみに、ソロの歌物は良く聞こえましたよ。&lt;/p&gt;
&lt;h3 id="何が違ったのか"&gt;何が違ったのか？&lt;/h3&gt;
&lt;p&gt;漠然とではありますが、箱の大きさに比例してチケット料金と期待が大きくなってしまうのだろうなー、と思っています。&lt;/p&gt;
&lt;p&gt;集客力のある大きな箱では、それに見合った企画やゲストと、それに見合ったお値段が設定されます。それ自体は自然な事だと思うのですが、エンターテイメントとしてのライブが目指す方向が音楽以外の所に軸足を置いてしまったら、少なくとも自分が求めるライブではないのだろうと思います。&lt;/p&gt;
&lt;p&gt;後、お値段に見合ったトータルなクオリティを無意識のうちに求めてしまうのでしょう。&lt;br&gt;
プロのケーキ職人と素人の違いは、作る側の状況によらず安定した味を保てること、と聞きます。指揮者が良ければいい、編曲者が良ければいい、オケが良ければいい、それでもまだ足りない時があるんだなと思い知らされました。&lt;/p&gt;
&lt;p&gt;つまり、Press Startはプレオーダーでチケット買えないと地雷踏む可能性があって、怖くていけないということですね。。。&lt;/p&gt;
&lt;p&gt;後は、Ida Elinaさんは少し違うかもしれませんが、ゲーム音楽にとっては演奏者の曲に対する愛も大きいと思います。そこは、プロオケだとどうしても薄れてしまいがちですしね……。&lt;/p&gt;
&lt;p&gt;個人的には、Press Startという企画自体は大好きだし、ゲーム音楽を引っ張っていただきたいと思っているのです。ゲーム業界が少し元気がない状況ですが、ゲーム音楽がもっともっと広がってくれると嬉しいと思います。&lt;br&gt;
自分にできることは何もないのかなぁ。&lt;/p&gt;</description></item><item><title>pficommonのpfi::text::jsonでシリアライズ/ デシリアライズしてみた</title><link>https://chezo.uno/post/2012-02-12-pficommonnopfi-text-jsondesiriaraizu-slash-desiriaraizusitemita/</link><pubDate>Sun, 12 Feb 2012 04:02:30 -0800</pubDate><guid>https://chezo.uno/post/2012-02-12-pficommonnopfi-text-jsondesiriaraizu-slash-desiriaraizusitemita/</guid><description>&lt;p&gt;
のjsonライブラリを試してみました。&lt;br&gt;
pficommonのjsonライブラリはboostみたいにjsonと自分で作ったクラスのオブジェクトとのシリアライズ/デシリアライズができるのがとても魅力です。&lt;br&gt;
その一方で、結構
には書いてないことが色々あったので、メモしておきます。&lt;/p&gt;
&lt;p&gt;いつものようにコードはgithubにあります。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;今回のポイントは以下の通りです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;wafの使い方&lt;/li&gt;
&lt;li&gt;基本的なアクセスの仕方&lt;/li&gt;
&lt;li&gt;stringとjsonの相互変換&lt;/li&gt;
&lt;li&gt;オブジェクトとのシリアライズ/デシリアライズ&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="1wafの使い方"&gt;1.wafの使い方&lt;/h3&gt;
&lt;p&gt;wafはmakeの代わりのビルドシステムで、pythonでビルドします。詳細な使い方は
を参考にしてください。&lt;br&gt;
基本的には、wscriptと呼ばれるMakefileのような物をソースコードがあるディレクトリにそれぞれ書きます。&lt;br&gt;
この際、各ディレクトリに置かれたwscriptが再帰的に呼ばれるので、モジュール毎にディレクトリを切り分けている場合は、そのモジュールの必要なライブラリなどを書いておくべきです。&lt;/p&gt;
&lt;p&gt;例としてsrcディレクトリにあるwscriptをのせます。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;def build(bld): bld.program( source = 'json-test.cpp', target = 'json-test', includes = '. ../include', lib = 'pficommon\_text pficommon\_data', use = 'JSON TEST' )
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;見れば分かると思いますが、sourceにソースとなるファイル、targetにビルドした後の実行ファイル名、includesにヘッダーファイルの場所を書きます。libにはライブラリ名を列挙します。このとき、複数の場合はスペースで区切ればOKです。&lt;/p&gt;
&lt;p&gt;で、できたらこんな感じでビルドします。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;./waf configure ./waf
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="2基本的なアクセスの仕方"&gt;2.基本的なアクセスの仕方&lt;/h3&gt;
&lt;p&gt;良くあるmapみたいなアクセスをしていって最後にjson_castをします。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cout \&amp;lt;\&amp;lt; json\_cast(js[&amp;quot;user&amp;quot;][&amp;quot;id&amp;quot;]) \&amp;lt;\&amp;lt; endl;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="3stringとjsonの相互変換"&gt;3.stringとjsonの相互変換&lt;/h3&gt;
&lt;p&gt;基本的にはstringstreamを経由します。&lt;/p&gt;
&lt;p&gt;実際にはこんな感じでします。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#include \&amp;lt;pficommon/text/json.h\&amp;gt; #include \&amp;lt;sstream\&amp;gt;using namespace pfi::text::json;using namespace std;namespace util{ json string\_to\_json(string str){ json js; stringstream ss(str); ss \&amp;gt;\&amp;gt; js; return js; } string json\_to\_string(json js){ stringstream oss; oss \&amp;lt;\&amp;lt; js; return oss.str(); } }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;こんな感じで使います。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;json js = util::string\_to\_json(&amp;quot;{\&amp;quot;foo\&amp;quot;:true, \&amp;quot;bar\&amp;quot;: \&amp;quot;buzz\&amp;quot;}&amp;quot;); string str = util::json\_to\_string(js);
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="4オブジェクトとのシリアライズデシリアライズ"&gt;4.オブジェクトとのシリアライズ/デシリアライズ&lt;/h3&gt;
&lt;p&gt;ドキュメントにもありますが、自分で作ったクラスのjsonへのシリアライズをしたい場合は、シリアライズしたい変数をMEMBERマクロで登録しておきます。&lt;br&gt;
boostのような感じですね。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;class SouvenirDef {public: pfi::data::optional\&amp;lt;std::string\&amp;gt; name; pfi::data::optional\&amp;lt;int\&amp;gt; price; pfi::data::optional\&amp;lt;bool\&amp;gt; famous; pfi::data::optional\&amp;lt;bool\&amp;gt; funny; template \&amp;lt;class Archive\&amp;gt; void serialize(Archive &amp;amp;ar){ ar &amp;amp; MEMBER(price) &amp;amp; MEMBER(famous) &amp;amp; MEMBER(name) &amp;amp; MEMBER(funny); } };
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;シリアライズしたいときは、to_jsonを、デシリアライズをしたい時はvia_json_with_defaultを使うと良いでしょう(json_castでやると不足したkeyがあるとbad_castになってしまうので)。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;stringstream ss(&amp;quot;{\&amp;quot;name\&amp;quot;:null,\&amp;quot;famouse\&amp;quot;:true}&amp;quot;); Souvenir sv2; ss \&amp;gt;\&amp;gt; via\_json\_with\_default(sv2); cout \&amp;lt;\&amp;lt; to\_json(sv2) \&amp;lt;\&amp;lt; endl;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;いくつか注意点・ポイントです。この辺、知っておくと無駄にハマらないかと思います。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;基本的な型はpfi::data::optionalを使う。使わないとnullをシリアライズできない。シリアライズしたい型はpfi::data::optional&lt;t&gt;を使う。&lt;del datetime="2014-11-22T22:03:25+09:00"&gt;デシリアライズしたい場合は使わない。&lt;/del&gt;&lt;/t&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;配列を表したい時はvector, ハッシュを表したい時はmapを使う。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;pairとmap&lt;int int&gt;は使えない。&lt;/int&gt;
特に1点目ですが、サンプルコードのSouvenirクラスを見てください。&lt;/p&gt;
&lt;p&gt;class Souvenir { public: std::string name; int price; pfi::data::optional&amp;lt;int&amp;gt; max_price; bool famous; bool funny; template &amp;lt;class Archive&amp;gt; void serialize(Archive &amp;amp;ar){ ar &amp;amp; MEMBER(price) &amp;amp; MEMBER(famous) &amp;amp; MEMBER(name) &amp;amp; MEMBER(funny) &amp;amp; MEMBER(max_price); } };&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;このmax_priceのようにpfi::data::optionalとすると、変数に値が入っていない場合にto_jsonでシリアライズするとnullになってくれるのですが、以下のように直接クラスの値を参照しようとすると、値の有無が0/1で取得できる形になってしまいます。&lt;/p&gt;
&lt;p&gt;[20120320追記]&lt;/p&gt;
&lt;p&gt;optionalで宣言した型を取得する場合は、ポインタのように*演算子でアクセスするようです。&lt;br&gt;
が参考になるそうです。@eiichiroi さんありがとうございます！&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;
pficommonのoptionalの件(jsonと、メンバにoptionalを持つユーザ定義型の相互変換)についてですが、optionalも(デ)シリアライズできるようになっていました。optionalな変数へのアクセス方法を少し変えて貰えれば大丈夫だと思います&lt;/p&gt;
&lt;p&gt;— Eiichiro Iwata (@eiichiroi)
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;script async src="//platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;
ドキュメントに書かれていなくて申し訳ないのですが、optionalはポインタのようなものです。値を取り出すときには、*(sv2.max_price)のような感じで取り出す必要があります。ポインタと違う点はoptional間で値を共有しない(コピーする)ところです&lt;/p&gt;
&lt;p&gt;— Eiichiro Iwata (@eiichiroi)
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;script async src="//platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;pre&gt;&lt;code&gt;&amp;gt; [@chezou](https://twitter.com/chezou) 正確な挙動についてはsrc/data/optional.hを、使い方の雰囲気についてはboost optionalでググるとなんとなく分かるかと思います。もし何かうまくいかない点や分からないところがあったら、また教えてください
&amp;gt;
&amp;gt; — Eiichiro Iwata (@eiichiroi) [2012, 2月 28](https://twitter.com/eiichiroi/status/174541460249645057)
&amp;lt;script async src=&amp;quot;//platform.twitter.com/widgets.js&amp;quot; charset=&amp;quot;utf-8&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
stringstream ss(&amp;quot;{\&amp;quot;name\&amp;quot;:null,\&amp;quot;famous\&amp;quot;:true,\&amp;quot;max\_price\&amp;quot;:1200}&amp;quot;); Souvenir sv2; ss \&amp;gt;\&amp;gt; via\_json\_with\_default(sv2); //max\_priceは型をpfi::data::optional\&amp;lt;int\&amp;gt;にしているため、1/0の値で格納される//アクセスは\*(max\_price)でアクセス cout \&amp;lt;\&amp;lt; &amp;quot;name:&amp;quot; \&amp;lt;\&amp;lt; sv2.name \&amp;lt;\&amp;lt; &amp;quot; price:&amp;quot; \&amp;lt;\&amp;lt; sv2.price \&amp;lt;\&amp;lt; &amp;quot; max\_price:&amp;quot; \&amp;lt;\&amp;lt; \&amp;lt;strong\&amp;gt;\*(sv2.max\_price)\&amp;lt;/strong\&amp;gt; \&amp;lt;\&amp;lt; &amp;quot; famous:&amp;quot; \&amp;lt;\&amp;lt; (sv2.famous ? &amp;quot;true&amp;quot; : &amp;quot;false&amp;quot;) \&amp;lt;\&amp;lt; &amp;quot; funny:&amp;quot; \&amp;lt;\&amp;lt; (sv2.funny ? &amp;quot;true&amp;quot; : &amp;quot;false&amp;quot;) \&amp;lt;\&amp;lt; endl; //max\_priceをjsonにする場合は問題ない cout \&amp;lt;\&amp;lt; to\_json(sv2) \&amp;lt;\&amp;lt; endl;
このため、 **jsonを入力としてデシリアライズしたい場合はpfi::data::optionalを利用しない変数を、シリアライズしてjsonに出力したい場合はpfi::data::optionalを利用した変数にしないといけません。**
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;きちんと*演算子でアクセスすることで、入出力対象な形で利用できます！&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;それでは、pficommonで楽しいJSONライフを！&lt;/p&gt;</description></item><item><title>Mercurialと親和性の高いリポジトリブラウザRhodeCodeをインストールしてみた</title><link>https://chezo.uno/post/2012-01-07-mercurialtoqin-he-xing-nogao-iripozitoriburauzarhodecodewoinsutorusitemita/</link><pubDate>Sat, 07 Jan 2012 01:01:19 -0800</pubDate><guid>https://chezo.uno/post/2012-01-07-mercurialtoqin-he-xing-nogao-iripozitoriburauzarhodecodewoinsutorusitemita/</guid><description>&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;Mercurialと連動するブラウザベースのリポジトリ管理システム、
を導入したのでその際のメモを書き残します。&lt;br&gt;
一言で言うと、githubみたいなものを社内などで運用したいというニーズに応えるものです。&lt;br&gt;
gitlabとかも試してみましたが、ドツボにはまったので結局RhodeCodeに落ち着きました。&lt;/p&gt;
&lt;p&gt;デモは
&lt;/p&gt;
&lt;h3 id="rhodecodeの特徴"&gt;RhodeCodeの特徴&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;ブラウザ上でリポジトリを作成できる(これ重要)&lt;/li&gt;
&lt;li&gt;diffやコミットログがブラウザ上で見られる&lt;/li&gt;
&lt;li&gt;ブランチも可視化してくれる&lt;/li&gt;
&lt;li&gt;プロジェクトをグループでまとめることもできる&lt;/li&gt;
&lt;li&gt;意外と導入、運用は簡単だった&lt;/li&gt;
&lt;li&gt;そのうちgitにも対応する予定らしい&lt;/li&gt;
&lt;li&gt;あまり日本語で情報が少ないかも&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;/h3&gt;
&lt;h3 id="rhodecodeのインストール"&gt;Rhodecodeのインストール&lt;/h3&gt;
&lt;p&gt;基本的にオフィシャルに従う方針で行きました。&lt;br&gt;
ただし、virtualenvを使った方が環境を汚さないと思うので、そうすることにしました。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
ユーザは、適当にadduserで作ってください。&lt;br&gt;
今回はhgというユーザを作りました。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;adduser --system --home /home/hg/ --group --shell /bin/bash hg sudo mkdir /var/www/rhodecode-venv sudo chown hg:hg /var/www/rhodecode-venv virtualenv --no-site-packages /var/www/rhodecode-venv # hgが一般権限で利用できるようにする必要がある source /var/www/rhodecode-venv/bin/activate sudo mkdir /var/www/rhodecode sudo chown hg:hg /var/www/rhodecode cd /var/www/rhodecode pip install rhodecode
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id="rabbitmqの導入"&gt;RabbitMqの導入&lt;/h4&gt;
&lt;p&gt;一応入れました(結局使ってないかも？)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get install rabbitmq-server
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id="rhodecodeの設定"&gt;Rhodecodeの設定&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;cd /var/www/rhodecode paster make-config RhodeCode production.ini paster setup-app production.ini
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;途中で、リポジトリの場所、adminユーザの名前、パスワード、メールアドレスが求められる&lt;br&gt;
実行する&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;paster serve production.ini
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id="問題点"&gt;問題点&lt;/h4&gt;
&lt;p&gt;・UnicodeDecodeErrorが出る&lt;br&gt;
hgユーザの言語設定を下記で解決。&lt;br&gt;
日本語ja_JP.UTF-8にしてMercurialをインストールすると、どうやらRhodeCodeがこける模様。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;export LC\_ALL=C
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;rhodecode-init.shを作成。&lt;/p&gt;
&lt;p&gt;./rhodecode-init.sh&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#!/bin/bash export LC\_ALL=C source /var/www/rhodecode-venv/bin/activate cd /var/www/rhodecode paster serve production.ini
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id="実行方法"&gt;実行方法&lt;/h4&gt;
&lt;p&gt;とりあえず、起動時にrhodecode-init.shを実行することで運用しています。&lt;br&gt;
本格的に動かすならinit.dなどに書いた方がいいかも。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo -u hg ./rhodecode-init.sh
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>2012年の抱負</title><link>https://chezo.uno/post/2012-01-01-2012nian-nobao-fu/</link><pubDate>Sun, 01 Jan 2012 04:01:58 -0800</pubDate><guid>https://chezo.uno/post/2012-01-01-2012nian-nobao-fu/</guid><description>&lt;p&gt;あけましておめでとうございます。&lt;/p&gt;
&lt;p&gt;昨年は妻と子どもと共に楽しい一年を過ごしました。&lt;/p&gt;
&lt;p&gt;パパ業一年目は、自覚を育てるとともに、自分以外の人を中心に生活を回すということを定常的に行うという、今までの人生になかった経験を積んできました。&lt;/p&gt;
&lt;p&gt;エンジニアとしても、Webアプリ動画あったーの公開や、KyTeaのラッパーMyKyteaの公開など、ちょっとしたものではありますが作ったものを公開するということが出来ました。&lt;/p&gt;
&lt;p&gt;さらに、普段はアクセスの貧弱なblogではありますが、iMessageやiPhone for Everybody、MeCab の記事が未だにアクセスいただいているように、調べても見つからなかったこと、自分で試した解決した事に価値を見出してもらえるということがわかりました。&lt;/p&gt;
&lt;p&gt;そんなわけで今年はこんな一年にするぞ、という思いを述べて行こうとおもいます。&lt;/p&gt;
&lt;h3 id="基本方針家族との時間を取りながら自分のスキルも磨いていく"&gt;基本方針:家族との時間を取りながら、自分のスキルも磨いていく&lt;/h3&gt;
&lt;p&gt;昨年は、兎に角はじめてのことばかりだったので、子どものことだけを考えてきた一年だったとおもいます。今は少しずつ余裕とは呼べませんが、隙間が作れるようになってきたので、自身のスキルを磨いて行こうとおもいます。&lt;/p&gt;
&lt;p&gt;具体的には以下の通りです。(意気込み順)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rubyistと言えるくらいRubyと仲良くなる(メタプログラミングRubyを読むことから)&lt;/li&gt;
&lt;li&gt;アルゴリズムを実装しながら学ぶ(良書を探すところから)&lt;/li&gt;
&lt;li&gt;勉強会に参加して社外のエンジニアと繋がる(TokyoNLP、さくテキ、RubyKaigi系あたり？)&lt;/li&gt;
&lt;li&gt;MyKyTeaをPythonで学習から解析まで一通りできるようにする(引数対応、学習対応)&lt;/li&gt;
&lt;li&gt;TOEIC800点超え&lt;/li&gt;
&lt;li&gt;@acappella_event のリツイート精度向上方針の検討(カテゴリ分類に落とす？合唱用語解析モデル作る？)&lt;/li&gt;
&lt;li&gt;C++を学ぶ(Effective C++を読む)&lt;/li&gt;
&lt;li&gt;HerokuでWebアプリを作る(動画あったーの作り直し？)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;家のことや趣味でやりたい事としてはこんなことを考えてます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;規則正しい早起き生活の定着&lt;/li&gt;
&lt;li&gt;育児の負荷分散&lt;/li&gt;
&lt;li&gt;フィンランド語を学んでFBのRajatonのWallが読めるようになる&lt;/li&gt;
&lt;li&gt;アカペラで新曲一曲以上歌って録音する(定期的に歌うことを定着させる)&lt;/li&gt;
&lt;li&gt;Rajatonの曲を合唱の世界に広める&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;粒度がバラバラで幾分抽象度も高いものも含まれますが、無理なく取り組んで行きたいと思います。&lt;br&gt;
どうぞ今年もよろしくお願いいたします。&lt;/p&gt;</description></item><item><title>2011 in review</title><link>https://chezo.uno/post/2012-01-01-2011-in-review/</link><pubDate>Sat, 31 Dec 2011 18:01:47 -0800</pubDate><guid>https://chezo.uno/post/2012-01-01-2011-in-review/</guid><description>&lt;p&gt;あけましておめでとうございます。&lt;br&gt;
去年のブログの統計を出してくれるんですね。&lt;/p&gt;
&lt;p&gt;今年も自分で気になったことをまとめていきたいと思います。&lt;/p&gt;
&lt;p&gt;WordPress.com 統計チームは、2011年のあなたのブログの年間まとめレポートを用意しました。&lt;/p&gt;
&lt;p&gt;概要はこちらです。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;シドニーオペラハウスのコンサートホールには2,700人が入場できます。2011にこのブログは約 &lt;strong&gt;53,000&lt;/strong&gt; 回表示されました。シドニーオペラハウスのコンサートに置き換えると、満員のイベント約20回分になります&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;レポートをすべて見るにはクリックしてください。&lt;/p&gt;</description></item><item><title>伊藤恵司・名島啓太両氏の選んだ『学生合唱のための「スチューデント・ソングブック」』が熱い！</title><link>https://chezo.uno/post/2011-12-25-yi-teng-hui-si-ming-dao-qi-tai-liang-shi-noxuan-nda-xue-sheng-he-chang-notameno-sutiyudentosongubutuku-gare-i/</link><pubDate>Sun, 25 Dec 2011 04:12:03 -0800</pubDate><guid>https://chezo.uno/post/2011-12-25-yi-teng-hui-si-ming-dao-qi-tai-liang-shi-noxuan-nda-xue-sheng-he-chang-notameno-sutiyudentosongubutuku-gare-i/</guid><description>&lt;p&gt;結構良い仕事をしている、合唱楽譜販売店
の
ですが、その良質なコンテンツとは裏腹に中々Webに情報が流れていないのが玉に瑕だったりします。&lt;/p&gt;
&lt;p&gt;そんな中で、パナムジカで全ての大学生のための愛唱曲集として紹介されていた
が素敵なのでご紹介いたします。&lt;/p&gt;
&lt;p&gt;選曲はなにコラなどでおなじみの伊藤恵司氏とJCDAの理事でもある名島啓太氏の両名。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;この曲集には、ルネサンスからロマン派までの外国曲、日本の合唱曲のスタンダードナンバー、新しい日本の合唱曲など、今の大学生に歌って欲しい26曲が収録されています。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;とありますが、&lt;/p&gt;
&lt;p&gt;実際曲目を見ると納得のArcadelt,Byrd,Victoria,Bachといった鉄板どころから、国内では三善、木下、松下、信長、千原各氏、さらには最近注目の相澤直人氏、北川昇氏といったラインナップ。男声の斎太郎節、女声のコチャールSalve Reginaと幅広く歌い継がれて欲しい曲が集まっています。&lt;/p&gt;
&lt;p&gt;収録曲の詳細は以下の通り。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;収録曲&lt;br&gt;
【世界の合唱曲】&lt;br&gt;
Innsbruck, ich muss dich lassen (Isaac) / Matona mia cara (Lassus) /&lt;br&gt;
Now is the month of Maying (Morley) / Ave Maria (Arcadelt) /&lt;br&gt;
Ave Maria (Victoria) / Ave verum corpus (Byrd) /&lt;br&gt;
Dir, dir,Jehova, will ich singen (J.S.Bach) /&lt;br&gt;
Ach, arme Welt (Brahms) / Locus iste (Bruckner) /&lt;br&gt;
Abschied vom Walde (Mendelssohn)&lt;br&gt;
【日本の合唱曲】&lt;br&gt;
遙かな友に (磯部俶) / 七里浜 (團伊玖磨) /&lt;br&gt;
木とともに人とともに (三善晃) / 卒業 (新実徳英) /&lt;br&gt;
夢みたものは… (木下牧子) / 鴎 (木下牧子) /&lt;br&gt;
たったいま (松下耕) / ほほえみ (信長貴富) /&lt;br&gt;
なみだ (北川昇) / ここから始まる (北川昇) /&lt;br&gt;
宿題 (相澤直人) / アヴェ・ヴェルム・コルプス (千原英喜)&lt;br&gt;
【男声合唱曲】&lt;br&gt;
斎太郎節 (竹花秀昭編曲) / 見上げてごらん夜の星を (秦実編曲)&lt;br&gt;
【女声合唱曲】&lt;br&gt;
Salve Regina (Kocsar) / ほたるこい (小倉朗)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;パナムジカさんの&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;各団の新しい「愛唱曲集」としてのみでなく、合同演奏など横のつながりを広げることにもきっと活躍するに違いないこの「スチューデント・ソングブック」。&lt;br&gt;
大学生のみならず、昔学生だった(!?)一般の合唱団にもどうぞ！&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;という言葉に込められていますが、昔学生だった人としても欲しい一冊であります。合同演奏や親睦会で気軽に歌える曲が増えると楽しいですよね。&lt;br&gt;
後は、パナムジカのサイトに一曲一曲のパーマリンクが付けば問題なしなんだけどなぁ。。。&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;全ての大学生のための愛唱曲集&lt;/p&gt;</description></item><item><title>正規表現ライブラリre2の簡単な使い方まとめ</title><link>https://chezo.uno/post/2011-11-26-zheng-gui-biao-xian-raiburarire2nojian-dan-nashi-ifang-matome/</link><pubDate>Sat, 26 Nov 2011 14:02:56 -0800</pubDate><guid>https://chezo.uno/post/2011-11-26-zheng-gui-biao-xian-raiburarire2nojian-dan-nashi-ifang-matome/</guid><description>&lt;p&gt;先日、
Google製正規表現エンジン
。&lt;/p&gt;
&lt;p&gt;シンプルな使い方は、前の記事を見ていただければ分かると思うのですが、色々やってみようと思った時に、意外と独特の癖があってやりたいことをやるのに少し手間取ったので、メモがてらまとめておきます。&lt;br&gt;
本家の
は思ったよりあっさりしていて、基本的には
を見るのが良いのですが、それもいまいちわかりにくいところがあったので、
を見ながら試したことを書きます。詳細が知りたい人はテストコード見た方が早いかもしれません。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;[2011/11/28追記]&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Windows Visual Studio向けのforkがでたようです。これでVisual Studio使いの人も安心ですね！&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;
&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;[2011/12/03追記]&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;re2winは日本語の文字列をマッチングさせようとしても、Invalid UTF-8とエラーがでてしまいます。&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;どうやら内部で文字列がUTF-8であることを期待しているようです。文字コード変換をしないといけません。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;gistにも
を置きました。&lt;/p&gt;
&lt;h3 id="お品書き"&gt;お品書き&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;FullMatch:文全体にマッチするかを判定&lt;/li&gt;
&lt;li&gt;PartialMatch:文の一部分にマッチするかを判定&lt;/li&gt;
&lt;li&gt;PartialMatchN:特に部分マッチした文字列を取得したい時に&lt;/li&gt;
&lt;li&gt;FindAndConsume:部分マッチする文字列を繰り返し取得したい時に&lt;/li&gt;
&lt;li&gt;Replace:パターンにマッチする最初の文字列を一置換&lt;/li&gt;
&lt;li&gt;GlobalReplace:パターンにマッチする全ての文字列を置換&lt;/li&gt;
&lt;li&gt;Extract:マッチする文字列を抽出して利用したい時に&lt;/li&gt;
&lt;li&gt;サンプルコード&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="0はじめに"&gt;0.はじめに&lt;/h3&gt;
&lt;p&gt;re2を扱う上で知っておいた方が良さそうなポイントです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;後方参照に対応していない&lt;/li&gt;
&lt;li&gt;Unicode文字列にも対応している&lt;/li&gt;
&lt;li&gt;対応している(していない)シンタックスは
後方参照については以下のように書いてありました。&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;RE2 supports submatch extraction, but not backreferences.&lt;/p&gt;
&lt;p&gt;If you absolutely need backreferences and generalized assertions, then RE2 is not for you, but you might be interested in
, Google Chrome&amp;rsquo;s regular expression engine.&lt;br&gt;
( from
)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;ここで言う後方参照とは、&amp;quot;(.n)\1&amp;quot;というパターンで&amp;quot;anan&amp;quot;という文字列にマッチさせるというように、マッチした文字列を使ってパターンを作りたいという場合の事だと思います。単にgroupにマッチする文字列を抽出するだけならば可能です。&lt;br&gt;
また、どういうシンタックスが使えるかは確認しておくと良いと思います。&lt;/p&gt;
&lt;h3 id="1fullmatch文全体にマッチするかを判定boostregex_match"&gt;1.FullMatch:文全体にマッチするかを判定(boost::regex_match)&lt;/h3&gt;
&lt;p&gt;FullMatchという関数で、あるパターンが一文全体にマッチするかを判定します。&lt;br&gt;
マッチすればtrueを返し、groupを作っていれば引数として用意したstringやintにそのグループに該当する値を返します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;あぶらかたぶら&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;re2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;StringPiece&lt;/span&gt; &lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;re2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;RE2&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;(.ら).(.ぶ)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;re2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;RE2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;FullMatch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;s:&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34; t:&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Not match.&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;re2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;RE2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;FullMatch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;.(.ら).(.ぶ).&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;s:&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34; t:&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Not match.&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;出力結果は以下のようになります。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Not match. s:ぶら t:たぶ
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="2partialmatch文の一部分にマッチするかを判定boostregex_search"&gt;2.PartialMatch:文の一部分にマッチするかを判定(boost::regex_search)&lt;/h3&gt;
&lt;p&gt;先ほどは、一つの文字列全体を考慮したパターンを考えましたが、今回は部分文字列で一致すればOKという関数です。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;あぶらかたぶら&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;re2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;StringPiece&lt;/span&gt; &lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;re2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;RE2&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;(.ら).(.ぶ)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;re2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;RE2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;PartialMatch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;s:&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34; t:&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;出力結果は以下のようになります。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;s:ぶら t:たぶ
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="3partialmatchn特に部分マッチした文字列を取得したい時に"&gt;3.PartialMatchN:特に部分マッチした文字列を取得したい時に&lt;/h3&gt;
&lt;p&gt;今までのやり方だとマッチしたかを判定することに重きを置いていて、取得した文字列を後から利用したい時には必要な数だけ変数を用意しなければならず、統一的に扱いづらいという問題があります。&lt;/p&gt;
&lt;p&gt;そこで、任意の数のgroupを取得したい場合には、PartialMatchNを使います。&lt;br&gt;
(なお、全文一致の場合はFullMatchNになります。以降の関数にもXXXXNという物が存在することが多いようです)&lt;/p&gt;
&lt;p&gt;このやり方は
さんに教えていただいた方法です。
も参考にしてください。(教えていただきありがとうございます！)&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;abcadca&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;re2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;RE2&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;((a.)(..))&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;re2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;StringPiece&lt;/span&gt; &lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;groupSize&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;NumberOfCapturingGroups&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;vector&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;re2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;RE2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Arg&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;groupSize&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;vector&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;re2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;RE2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Arg&lt;/span&gt;&lt;span class="o"&gt;*&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;groupSize&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;vector&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;re2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;StringPiece&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;groupSize&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;groupSize&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;re2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;RE2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;PartialMatchN&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]),&lt;/span&gt; &lt;span class="n"&gt;groupSize&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;groupSize&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;groupSize&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;出力結果&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;3 abca ab ca
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="4findandconsume部分マッチする文字列を繰り返し取得したい時にboostregex_regex相当"&gt;4.FindAndConsume:部分マッチする文字列を繰り返し取得したい時に(boost::regex_regex相当？)&lt;/h3&gt;
&lt;p&gt;パターンにマッチしている文字列が何回出てくるか分からない場合に、この関数を利用するといいと思います。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;あぶらかたぶら&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;RE2&lt;/span&gt; &lt;span class="nf"&gt;re&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;(.ぶ)&amp;#34;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;re2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;StringPiece&lt;/span&gt; &lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;while&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;re2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;RE2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;FindAndConsume&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;){&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;出力結果&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;あぶ たぶ
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="5replaceパターンにマッチする最初の文字列を一置換boostregex_replace"&gt;5.Replace:パターンにマッチする最初の文字列を一置換(boost::regex_replace)&lt;/h3&gt;
&lt;p&gt;パターンに一致した文字列のうち、最初に出てきた文字列のみを置換する場合、Replaceを使います。&lt;br&gt;
全てのマッチする文字列を置換したい場合は、GlobalReplaceを使います。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;PerlRubyPython&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;re2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;RE2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;P&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;D&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;出力結果&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DerlRubyPython
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="6globalreplaceパターンにマッチする全ての文字列を置換"&gt;6.GlobalReplace:パターンにマッチする全ての文字列を置換&lt;/h3&gt;
&lt;p&gt;Replaceの全ての文字列を置換する場合です。&lt;br&gt;
ただし、文字列&amp;quot;banana&amp;quot;に対するパターン&amp;quot;ana&amp;quot;のようにオーバーラップする場合は対応しません。&lt;br&gt;
この場合は、一回のみマッチするようです。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;PerlRubyPython&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;re2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;RE2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;GlobalReplace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;P&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;D&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;出力結果&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;DerlRubyDython
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="7extractマッチする文字列を抽出して利用したい時に"&gt;7.Extract:マッチする文字列を抽出して利用したい時に&lt;/h3&gt;
&lt;p&gt;Replaceはどちらかというと、入力された文字列の一部を変える時が多いと思いますが、&lt;br&gt;
Extractはマッチしたgroupを抽出して、新たに文字列を生成したい場合に使える関数です。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;RE2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Extract&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;foo@bar.com&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;(.*)@([^.]*)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;In domain &lt;/span&gt;&lt;span class="se"&gt;\&amp;#34;\\&lt;/span&gt;&lt;span class="s"&gt;2&lt;/span&gt;&lt;span class="se"&gt;\&amp;#34;&lt;/span&gt;&lt;span class="s"&gt;, user &lt;/span&gt;&lt;span class="se"&gt;\&amp;#34;\\&lt;/span&gt;&lt;span class="s"&gt;1&lt;/span&gt;&lt;span class="se"&gt;\&amp;#34;&lt;/span&gt;&lt;span class="s"&gt; is exist!&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;出力結果&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;In domain &amp;quot;bar&amp;quot;, user &amp;quot;foo&amp;quot; is exist!
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="サンプルコード"&gt;サンプルコード&lt;/h3&gt;
&lt;p&gt;上記全部の例を含んだサンプルコードはこんな形になります。
にも同じ物があります。&lt;/p&gt;
&lt;p&gt;コンパイルはこんな感じ。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;g++ -Wall re2testbasic.cpp -o re2all.out -lre2 -lpthread
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ソースは以下。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;string&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;re2/re2.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;vector&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="k"&gt;namespace&lt;/span&gt; &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;test_fullmatch&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;あぶらかたぶら&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;re2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;StringPiece&lt;/span&gt; &lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;re2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;RE2&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;(.ら).(.ぶ)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;re2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;RE2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;FullMatch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;s:&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34; t:&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Not match.&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;re2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;RE2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;FullMatch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;.(.ら).(.ぶ).&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;s:&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34; t:&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Not match.&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;test_partialmatch&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;あぶらかたぶら&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;re2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;StringPiece&lt;/span&gt; &lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;re2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;RE2&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;(.ら).(.ぶ)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;re2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;RE2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;PartialMatch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;s:&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34; t:&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;test_partialmatchn&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;abcadca&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;re2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;RE2&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;((a.)(..))&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;re2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;StringPiece&lt;/span&gt; &lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;groupSize&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;NumberOfCapturingGroups&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;vector&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;re2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;RE2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Arg&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;groupSize&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;vector&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;re2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;RE2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Arg&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;*&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;groupSize&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;vector&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;re2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;StringPiece&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;groupSize&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;groupSize&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;re2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;RE2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;PartialMatchN&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]),&lt;/span&gt; &lt;span class="n"&gt;groupSize&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;groupSize&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;groupSize&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;test_findandconsume&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;あぶらかたぶら&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;RE2&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;(.ぶ)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;re2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;StringPiece&lt;/span&gt; &lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;while&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;re2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;RE2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;FindAndConsume&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;){&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;test_replace&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;PerlRubyPython&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;re2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;RE2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;P&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;D&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;test_globalreplace&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;PerlRubyPython&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;re2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;RE2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;GlobalReplace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;P&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;D&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;test_extract&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;RE2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Extract&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;foo@bar.com&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;(.\*)@([^.]\*)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;In domain &lt;/span&gt;&lt;span class="se"&gt;\&amp;#34;\\&lt;/span&gt;&lt;span class="s"&gt;2&lt;/span&gt;&lt;span class="se"&gt;\&amp;#34;&lt;/span&gt;&lt;span class="s"&gt;, user &lt;/span&gt;&lt;span class="se"&gt;\&amp;#34;\\&lt;/span&gt;&lt;span class="s"&gt;1&lt;/span&gt;&lt;span class="se"&gt;\&amp;#34;&lt;/span&gt;&lt;span class="s"&gt; is exist!&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;argc&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;test FullMatch&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;test_fullmatch&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;test PartialMatch&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;test_partialmatch&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;test PartialMatchN&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;test_partialmatchn&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;test FindAndConsume&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;test_findandconsume&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;test Replace&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;test_replace&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;test GlobalReplace&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;test_globalreplace&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;test Extract&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;test_extract&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;出力結果&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;test FullMatch
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Not match.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;s:ぶら t:たぶ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;test PartialMatch
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;s:ぶら t:たぶ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;test PartialMatchN
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;3 abca ab ca
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;test FindAndConsume
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;あぶ たぶ
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;test Replace
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;DerlRubyPython
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;test GlobalReplace DerlRubyDython
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;test Extract
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="おわりに"&gt;おわりに&lt;/h3&gt;
&lt;p&gt;駆け足で説明したので、分かりにくい点や間違いがあるかと思います。&lt;br&gt;
その際には
までご指摘いただければと思います。&lt;/p&gt;
&lt;p&gt;後方参照さえ必要なければ、boostから乗り換えられるんじゃないかなーと思っています。&lt;/p&gt;
&lt;p&gt;enjoy!&lt;/p&gt;</description></item><item><title>Google製の正規表現エンジンRe2を日本語で試してみた</title><link>https://chezo.uno/post/2011-11-25-googlezhi-nozheng-gui-biao-xian-enzinre2wori-ben-yu-deshi-sitemita/</link><pubDate>Fri, 25 Nov 2011 14:02:51 -0800</pubDate><guid>https://chezo.uno/post/2011-11-25-googlezhi-nozheng-gui-biao-xian-enzinre2wori-ben-yu-deshi-sitemita/</guid><description>&lt;p&gt;C++で正規表現を使う時、boost::regexを使うことが多いと思っていたのですが、何故か1.46.1以降(といっても1.48.0しか試していませんが)、regex_search,regex_matchがNullPointerExceptionぽく落ちるので、解決方法を探していました。&lt;/p&gt;
&lt;p&gt;そこで、試してみたのが
です。&lt;br&gt;
インストールは簡単です。Mercurialが必要ですが、Ubuntuではaptで簡単に入ります。(ちなみに、Ubuntu11.04で試しました)&lt;/p&gt;
&lt;p&gt;[2011/11/28追記]&lt;br&gt;
もう少しだけ
を書きました！&lt;/p&gt;
&lt;p&gt;まず、入っていなければMercurialのインストールです。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt-get install mercurial
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;で、適当な所にre2をcloneして、インストールです。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hg clone https://re2.googlecode.com/hg re2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; re2
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;make &lt;span class="nb"&gt;test&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo make install
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;make &lt;span class="nb"&gt;test&lt;/span&gt; install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;で、試してみたコードが以下のものになります。&lt;/p&gt;
&lt;script src="https://gist.github.com/chezou/1393431.js"&gt;&lt;/script&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;string&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;re2/re2.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;cassert&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="k"&gt;namespace&lt;/span&gt; &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;argc&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;あぶらかたぶら&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;RE2&lt;/span&gt; &lt;span class="n"&gt;re1&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;(.ら).(.ぶ)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;assert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;re1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ok&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;RE2&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;PartialMatch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;re1&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;s:&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34; t:&amp;#34;&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;出力結果はこうなりました。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;s:ぶら t:たぶ
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;勿論、部分マッチだけでなく、FullMatchやReplaceもできます。&lt;br&gt;
ただ、可変数マッチしたものを全部取り出すのはやり方わからないんですよねー。&lt;br&gt;
マッチした物をeachで取り出す的なことがしたいんですが。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;[2011/11/26追記]&lt;/strong&gt;&lt;br&gt;
PartialMatchNを利用すれば解決できると、
に教えていただきました！&lt;br&gt;
ただ、結構トリッキーなので、下記記事中のサンプルコードを見るのが早いと思います。ありがとうございます！&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;exampleは
にたくさんあるので参考にしてください。&lt;/p&gt;
&lt;p&gt;とりあえず、正規表現だけ欲しければre2を使ってみるのもよいかもしれません。&lt;/p&gt;
&lt;p&gt;参考URL:
&lt;br&gt;
&lt;/p&gt;</description></item><item><title>iMessageをiPadとiPhoneで使い分ける方法</title><link>https://chezo.uno/post/2011-10-15-imessagewoipadtoiphonedeshi-ifen-kerufang-fa/</link><pubDate>Sat, 15 Oct 2011 05:10:14 -0700</pubDate><guid>https://chezo.uno/post/2011-10-15-imessagewoipadtoiphonedeshi-ifen-kerufang-fa/</guid><description>&lt;p&gt;iMessageを複数のデバイスで同一Apple IDで使う場合に、どちらか一方に送る方法を検討したらわかりました。&lt;/p&gt;
&lt;p&gt;元々は、家にいる妻が使うiPadと外に出ている自分のiPhoneと切り替える方法が欲しくて考えました。でも、Apple IDのアカウントが同一だと両方の端末にメッセージが届いてしまうわけです。これがiCloudだ！（違）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;20111016追記&lt;/strong&gt;&lt;br&gt;
iCloudを同一AppleIDで夫婦で使い分ける方法がmacjさんから紹介されてしました。合わせてどうぞ。&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;で、本題です。&lt;/p&gt;
&lt;p&gt;iMessageにメッセージ着信用のアドレスを複数設定する機能があります。設定の仕方は下記サイトなどを参考にしてください。&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;で、話は簡単。複数の端末それぞれに別々のアドレスを設定するだけです。&lt;/p&gt;
&lt;p&gt;例えばiPadとiPhoneがあり、Apple IDに登録したメールアドレスがAAA@gmailだとします。で、iPad用に設定したいアドレスBBB@gmailと、iPhone用に使いたいアドレスCCC@softbankだとします。&lt;/p&gt;
&lt;p&gt;メッセージ着信用アドレスは下記のようになっているとします。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;iPad: AAA@gmail, BBB@gmail&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;iPhone: AAA@gmail, CCC@softbank, +81XXXXXXX(電話番号）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;AAA@gmailに送信&lt;br&gt;
→iPadとiPhone両方に届く&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;BBB@gmailに送信&lt;br&gt;
→iPadに届く&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;CCC@softbankに送信&lt;br&gt;
→iPhoneに届く&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;+81XXXXXXXに送信&lt;br&gt;
→iPhoneに届く
こんな感じです。&lt;br&gt;
わかりましたか？&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ちなみに、AAA@gmailに送る場合に注意ですが、iMessageはToがわからないので（ちなみに、fromも結構怪しいです）、送る方はどれに送っているかわかりますが、送られる方はAAA@gmailに送られているのか、別のアドレスなのかわかりません。&lt;br&gt;
なので、自分宛か複数宛か判別できないで面倒なことになる可能性があるかもしれませんので、ご注意ください。&lt;/p&gt;
&lt;p&gt;それでは、楽しいiMessageライフを！&lt;/p&gt;</description></item><item><title>久しぶりに合唱楽譜を買った</title><link>https://chezo.uno/post/2011-10-09-jiu-siburinihe-chang-le-pu-womai-tuta/</link><pubDate>Sun, 09 Oct 2011 15:02:40 -0700</pubDate><guid>https://chezo.uno/post/2011-10-09-jiu-siburinihe-chang-le-pu-womai-tuta/</guid><description>&lt;p&gt;最後に購入したのは、
だなぁと思いながら、ふっとpanamusicaから新刊案内が来たので久しぶりに購入することにしました。&lt;/p&gt;
&lt;p&gt;今回購入したのはこちら。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;br&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/KZAdjx7Gg4M?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;br&gt;
さんによる作曲の曲集です。harmonia ensembleが歌う「ぜんぶ」が素敵だったので購入しました。&lt;br&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;br&gt;
ボブ・チルコットとデイヴィッド・ブラックウェル編纂のキャロル集。トラディショナルな曲を新しい作曲家が編曲しているという感じのようです。&lt;/li&gt;
&lt;li&gt;
&lt;br&gt;
以来歌いたかった、Lord I&amp;rsquo;m freeなどの曲が入っている楽譜です。歌いたい！&lt;br&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/5lXbMbvqD-U?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
どれも楽しみですねー。&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>cJumanのインストールをちょっと簡単にするcJuman-installer</title><link>https://chezo.uno/post/2011-10-01-cjumannoinsutoruwotiyotutojian-dan-nisurucjuman-installer/</link><pubDate>Sat, 01 Oct 2011 15:02:34 -0700</pubDate><guid>https://chezo.uno/post/2011-10-01-cjumannoinsutoruwotiyotutojian-dan-nisurucjuman-installer/</guid><description>&lt;p&gt;cJumanという
さんの作成された、形態素解析器Jumanをpythonから使うためのSWIGで作られたラッパーがあります。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;「入門自然言語処理」でも紹介されているのですが、インストールが少し面倒でした。&lt;/p&gt;
&lt;p&gt;特にこの辺。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&amp;gt;|bash|&lt;br&gt;
gcc -c cJuman_wrap.c -fPIC -I/usr/include/python2.4&lt;br&gt;
gcc -shared *.o -o _cJuman.so&lt;br&gt;
sudo install -m 644 _cJuman.so cJuman.py /usr/lib/python2.4/site-packages/&lt;br&gt;
|&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>ドイツでFONICのプリペイドSIMを使って光ポータブルを試してみた</title><link>https://chezo.uno/post/2011-09-25-doitudefonicnopuripeidosimwoshi-tuteguang-potaburuwoshi-sitemita/</link><pubDate>Sun, 25 Sep 2011 01:09:29 -0700</pubDate><guid>https://chezo.uno/post/2011-09-25-doitudefonicnopuripeidosimwoshi-tuteguang-potaburuwoshi-sitemita/</guid><description>&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;ドイツで光ポータブルを使って、FONICのプリペイドSIMを使ってみました。&lt;/p&gt;
&lt;p&gt;ソフトバンクやdocomoの海外パケット定額は2000〜3000円/dayとお高め、MIFIも980円/day〜ともう一声という風に感じていたため、現地でプリペイドSIMを購入してみることに。&lt;/p&gt;
&lt;p&gt;事前にtwitterやブログなどで先人達の情報を仕入れて臨みました。&lt;br&gt;
参考URLはこちら&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
今回は、kaufhofというドイツ版ジャスコに入っている家電量販店、Saturn（ざとぅーんという発音なんですね）にて購入しました。現地で住んでいる人に、この辺りで英語が通じる携帯屋はないか？と聞いたら教えてもらいました。&lt;br&gt;
デュッセルドルフは英語が通じない所が多い気がします。あと、車がないと店に行けないので、旅行がてらの調達は結構厳しいです。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;余談ですが、ドイツは思った以上に英語が通じませんでした。&lt;br&gt;
更にSIMやらAPN周りの専門用語を分かっている人が必要なので、なかなか大変です。&lt;/p&gt;
&lt;h3 id="必要なもの"&gt;必要なもの&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;光ポータブル（SIMフリー版）&lt;/li&gt;
&lt;li&gt;SMSが使えるSIMフリー携帯&lt;/li&gt;
&lt;li&gt;インターネット回線&lt;/li&gt;
&lt;li&gt;iPhoneやiPadなど使いたいWifi機器&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="1プリペイドsimを購入する"&gt;1.プリペイドSIMを購入する&lt;/h3&gt;
&lt;p&gt;今回選んだSaturnですが、なかなか曲者でした。&lt;br&gt;
事前情報では「O2やVodafoneはアクティベーションとチャージにはドイツ語必須なので、公式店舗で購入してアクティベーションとチャージをやってもらうように」とあったのですが、その事実に気付いたのは、購入後でした。&lt;br&gt;
APNについての情報は事前に気にしていたのですが、アクティベーションとチャージには意識が回っていませんでした。&lt;/p&gt;
&lt;p&gt;「データ定額で3G使えるプリペイドSIMはないか？SMS使える携帯ないから、他の手段でアクティベーションできるものが良い」と聞いたところ、オススメされたのがFONICのプリペイドSIM。&lt;br&gt;
9ユーロで10ユーロ分のチャージが含まれており、定額もtagflatという日単位の定額で2.5ユーロ/day, 一ヶ月25ユーロ/monthとお得です。回線はO2のMVNOということで、APNを聞いてみたところ、O2のものでいけることが分かりました。&lt;br&gt;
肝心のアクティベーションも、「インターネットでできるよ！」と言うので、信じて購入しました。途中でt-Mobileの方がアクティベーションの不安がないという記憶を思い出し、店員に在庫はないか？と聞いてみたら、「在庫切れだ」ということ。ここで諦めてしまいました。（これが全ての敗因！ドイツは諦めたらそこで試合終了です）&lt;/p&gt;
&lt;h3 id="2アクティベーションチャージ"&gt;2.アクティベーション、チャージ&lt;/h3&gt;
&lt;p&gt;電話かインターネット(
)でチャージということでしたが、電話は恐らくドイツ語。そんなん無理だ！と思い、滞在先でPCをお借りしてWebでのアクティベーションを試みました。&lt;br&gt;
でも、全部ドイツ語！英語がひとかけらもなく、心が折れそうでした。&lt;/p&gt;
&lt;p&gt;
を調べ当てて、参考にFONICのユーザー登録とアクティベーションしました。&lt;br&gt;
チャージもWebで行いました。&lt;br&gt;
最初、FONICのサイトのユーザー登録とアクティベーションが同義だと思い、チャージ出来ずにかなりハマりました。&lt;/p&gt;
&lt;p&gt;ここまで、SMSレスで行けました。&lt;/p&gt;
&lt;h3 id="3データ定額オプションtages-flatの設定"&gt;3.データ定額オプション(tages-flat)の設定&lt;/h3&gt;
&lt;p&gt;結論から言うと、これは完了しませんでした。&lt;/p&gt;
&lt;p&gt;やり方は、FONIC(あるいはO2)のSIMが使える携帯電話からSMSで、&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;START TAGESFLAT&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;と送れば良いそうです。&lt;br&gt;
良いそうです、というのは、お借りしていたSAMSUNGの携帯電話では全て大文字で入力する方法がわからず（！）、諦めて最初の一文字だけ大文字でやったのですが、無理でした。&lt;/p&gt;
&lt;p&gt;ちなみに、USBスティックタイプの通信モジュールだと、デフォルトでtages-flatになっているようです。これも後から知りました。&lt;/p&gt;
&lt;p&gt;従量課金であっという間にチャージが尽きてしまいました。&lt;/p&gt;
&lt;h3 id="通信の繋がりやすさ"&gt;通信の繋がりやすさ&lt;/h3&gt;
&lt;p&gt;O2は都市部に強いという話は聞いていましたが、郊外の滞在先ではちょっとつらかったです。夜間にシャッターが降りると、ほとんど通信できなかったです。それでも従量制ではチャージが削れていくんですよね…。&lt;/p&gt;
&lt;h3 id="まとめと教訓"&gt;まとめと教訓&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;SMS使えるSIMフリー携帯必須。&lt;/li&gt;
&lt;li&gt;契約はキャリア公式店舗で最後まで面倒みてもらうこと。&lt;/li&gt;
&lt;li&gt;コストが多少かかっても良いなら、
の方が楽(\1280/day)&lt;/li&gt;
&lt;li&gt;英語でやり取り出来るのは &lt;strong&gt;すごい楽&lt;/strong&gt; 。英語勉強するの大事！&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>KyTeaを他言語で使うラッパー+αまとめ</title><link>https://chezo.uno/post/2011-09-23-kyteawota-yan-yu-deshi-uratupa-plus-amatome/</link><pubDate>Thu, 22 Sep 2011 22:09:10 -0700</pubDate><guid>https://chezo.uno/post/2011-09-23-kyteawota-yan-yu-deshi-uratupa-plus-amatome/</guid><description>&lt;p&gt;
さんの作られたKyTeaを他言語で利用できるラッパーですが、&lt;br&gt;
拙作のMykytea意外にも色々とあるようなのでまとめておきます。&lt;/p&gt;
&lt;p&gt;KyTeaって何？って人は
やこちらの
がわかりやすいですが、&lt;br&gt;
一言で言うと形態素解析や読みの推定を行ってくれるものです。&lt;br&gt;
MeCabと違って読みの推定をまじめにやってくれるようです。&lt;/p&gt;
&lt;h3 id="ruby"&gt;Ruby&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
(@chezou作)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="python"&gt;Python&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
(@chezou作)&lt;/li&gt;
&lt;li&gt;
(
さん作。
)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="perl"&gt;Perl&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
(
さん作)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="番外編"&gt;番外編&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;sinatra :
&lt;/li&gt;
&lt;li&gt;NLTK :
&lt;/li&gt;
&lt;li&gt;
(
さん)&lt;/li&gt;
&lt;li&gt;
(
さん)&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>NLTKからKyTeaでコーパスを読み込むJPKyteaTokenizer作りました</title><link>https://chezo.uno/post/2011-09-14-nltkkarakyteadekopasuwodu-miip-mujpkyteatokenizerzuo-rimasita/</link><pubDate>Wed, 14 Sep 2011 15:02:18 -0700</pubDate><guid>https://chezo.uno/post/2011-09-14-nltkkarakyteadekopasuwodu-miip-mujpkyteatokenizerzuo-rimasita/</guid><description>&lt;p&gt;KyteaをPythonから使うMykytea-pythonを使って、NLTKラッパーを書いてみました。&lt;/p&gt;
&lt;h2 id="nltkって"&gt;NLTKって？&lt;/h2&gt;
&lt;p&gt;
といえば、オライリーでも「
」という日本語の書籍が出ているくらいメジャーなPythonの自然言語処理用ライブラリです。ちなみに、日本語の処理の12章は
。&lt;br&gt;
手っ取り早くエッセンスを掴みたい場合は、nokunoさんの以下の記事がよくまとまっていると思います。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;入門自然言語処理自体は、言語系の人でも自然言語処理に取り組めるように、具体的な事例ベースで書いてあるので、取っつきやすいです。初めて自然言語処理を学ぶ人にも、形態素解析からナイーブベイズや最大エントロピー法といった機械学習の話とそれらを体験できるライブラリの使い方があり、コーパスに対して実際にどう処理されるかを感じることが出来ます。また、Pythonの入門書としても具体例ベースなので、ジェネレータやリスト内包表現などがわかりやすいと思いました。&lt;/p&gt;
&lt;h2 id="jpkyteatokenizerって"&gt;JPKyteaTokenizerって？&lt;/h2&gt;
&lt;p&gt;さて、KyTeaは入門自然言語処理の12章でも名前は紹介されているのですが、Pythonから使えるわけではなかったためか、名前の紹介にとどまっています。&lt;/p&gt;
&lt;p&gt;そこで、Mykytea-pythonを使ってnltkでコーパスを読み込むJPKyteaTokenizerを作りました。&lt;/p&gt;
&lt;p&gt;ソースはいつも通りgithubにあります。&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;あらかじめ
と
をインストールしてください。&lt;br&gt;
使い方は、test_kyteatokenizer.pyを見ればだいたいわかるとは思いますが、青空文庫の
をdata/ginga.txtに保存してTokeizeしています。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#!/usr/bin/env python# -\*- coding: utf-8 -\*-from nltk\_jp import \*from nltk.corpus.reader import \*from nltk.corpus.reader.util import \*import kyteatokenizer jp\_sent\_tokenizer = nltk.RegexpTokenizer(u'[^ 「」！？。]\*[！？。]') reader = PlaintextCorpusReader(&amp;quot;data/&amp;quot;,r&amp;quot;ginga.txt&amp;quot;, encoding = 'utf-8', para\_block\_reader = read\_line\_block, sent\_tokenizer = jp\_sent\_tokenizer, word\_tokenizer = kyteatokenizer.JPKyteaTokenizer())print ' '.join(reader.words()[20:80])
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;実行すると、こんな感じになります。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ python test\_kyteatokenizer.py ふう に 川 だ と 云 （ い ） わ れ たり 、 乳 の 流れ た あと だ と 云 わ れ たり し て い た この ぼんやり と 白 い もの が ほんとう は 何 か ご 承知 で す か 。 」 先生 は 、 黒板 に 吊 （ つる ） し た 大きな 黒 い
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;本当は、tagged_words()で品詞とれたり読みもとれたり出来るようにすると嬉しいんだろうけれど。。。&lt;/p&gt;
&lt;h3 id="蛇足入門-自然言語処理の誤植"&gt;(蛇足)入門 自然言語処理の誤植&lt;/h3&gt;
&lt;p&gt;Amazonで買ったのに、第1刷を手に入れることが出来たのですが、
の正誤表に無い誤植がちらほらあるんですね。まだ、全部は目を通していないのですが、気がついたものだけ書いていきます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;P.88 3.1.4 RSSフィードの処理、1つめのソースコード13行目 nltk.html_clean → nltk.clean_html&lt;/li&gt;
&lt;li&gt;P.89 3.1.5 ローカルファイルの読み込み 4つめのソースコード1行目 f 7= open → f = open&lt;/li&gt;
&lt;li&gt;P.224 5.5.7 性能の限界 ソースコード 4行目 nltk.ConfusionMatrix(gold, test) → nltk.ConfusionMatrix(gold_tags, test_tags)&lt;/li&gt;
&lt;li&gt;P.228 5.7.3 意味的な手がかり 6行目 「verjaardag」というドイツ語 → 「verjaardag」というオランダ語&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Jコミの漫画ビューアはiPadでも読める</title><link>https://chezo.uno/post/2011-07-20-jkominoman-hua-biyuahaipaddemodu-meru/</link><pubDate>Wed, 20 Jul 2011 04:07:24 -0700</pubDate><guid>https://chezo.uno/post/2011-07-20-jkominoman-hua-biyuahaipaddemodu-meru/</guid><description>&lt;p&gt;以前、大々的にラブひながPDFで読めると話題になった絶版漫画公開サイト、
。&lt;br&gt;
その後、特に追いかけていなかったのですが、
ホイホイ呼ばれて久しぶりに行ってみました。&lt;/p&gt;
&lt;p&gt;PDFでは動的な広告が入れられないということから、基本オンラインビューアーで見て人気のあるものはPDFになるというモデルになったとかで、iPadで見られないかなーと思っていたら、意外や意外。すんなり読めました。速度は、まぁこれくらいならギリギリ許容範囲かなという程度。&lt;/p&gt;
&lt;p&gt;で、肝心のラインナップですが大分増えていました。結構気になる作品も増えていたので並べてみます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
八神健の作品が他[
,
]にもあるので、今度読んでみたいと思います。密・リターンズ！は連載当時マレーシア人の美大生と何故かメールで語り合ったなぁ、と懐かしい思い出がよみがえってきます。&lt;br&gt;
しかし、ギャグ王系はJコミで展開するのも良さそうですね。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;肝心のサラダデイズは、妻に「進●ゼミの漫画みたい」と言われてちょっと凹みました。いやぁ、今見ると構造は似たり寄ったりなのだけど、如何にしてパターン増やすかで苦労したんだろうなーと、一話読み切りものの苦労を感じてしまいます。&lt;/p&gt;</description></item><item><title>アカペラを聞きながら英語を勉強できる！？Podcast- Mouth off</title><link>https://chezo.uno/post/2011-07-19-akaperawowen-kinagaraying-yu-womian-qiang-dekiru-podcast-mouth-off/</link><pubDate>Tue, 19 Jul 2011 04:07:50 -0700</pubDate><guid>https://chezo.uno/post/2011-07-19-akaperawowen-kinagaraying-yu-womian-qiang-dekiru-podcast-mouth-off/</guid><description>&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;タイトルは釣りです（笑）&lt;/p&gt;
&lt;p&gt;皆さんは、コンテンポラリーなアカペラの曲をどうやって知っていますか？&lt;br&gt;
サークルの先輩？友人に曲を紹介してもらう？&lt;br&gt;
いいですねー。&lt;br&gt;
ただ、なかなかリアルで頻繁に会えるアカペラーがいない人にとっては、ネットでの情報収集って重要ですよね。&lt;/p&gt;
&lt;p&gt;でも、YouTubeの海からお気に入りの曲を探すのは大変！&lt;/p&gt;
&lt;p&gt;そこで、コンテンポラリーアカペラのPodcast、
の出番です。&lt;br&gt;
このPodcastは様々なジャンルのアカペラを、毎週三十分1時間程度の番組で多く紹介してくれるのが魅力です。一曲当たりの時間は短いですが、逆に言うと好みではない曲はさらりと流せるので聞き疲しにくいと思います。好きな曲は曲名を追っかければいいですしね。&lt;/p&gt;
&lt;p&gt;英語のPodcastなので、英語の勉強にもなるかも！？（笑）オススメの番組です。しかし、日本でも
なんかでPodcastやらないかなー。&lt;/p&gt;
&lt;p&gt;URL&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>sinatraでKyTeaをブラウザから試すkytea-sinatra作ってみた</title><link>https://chezo.uno/post/2011-07-18-sinatradekyteawoburauzakarashi-sukytea-sinatrazuo-tutemita/</link><pubDate>Mon, 18 Jul 2011 15:02:01 -0700</pubDate><guid>https://chezo.uno/post/2011-07-18-sinatradekyteawoburauzakarashi-sukytea-sinatrazuo-tutemita/</guid><description>&lt;p&gt;先日のエントリで書いたとおり
を使って、試しにブラウザから解析結果をみられるkytea-sinatraを作りました。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2011-07-18-sinatradekyteawoburauzakarashi-sukytea-sinatrazuo-tutemita/screenshot_hu_458a8be65abd223b.webp 320w, https://chezo.uno/post/2011-07-18-sinatradekyteawoburauzakarashi-sukytea-sinatrazuo-tutemita/screenshot_hu_6126b01cb2744fa6.webp 480w, https://chezo.uno/post/2011-07-18-sinatradekyteawoburauzakarashi-sukytea-sinatrazuo-tutemita/screenshot_hu_c55304501f28fbac.webp 702w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2011-07-18-sinatradekyteawoburauzakarashi-sukytea-sinatrazuo-tutemita/screenshot_hu_458a8be65abd223b.webp"
width="702"
height="612"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;といっても、sinatraとhamlを使ってちょっと出力結果を見られるようにしたのシンプルなものです。&lt;br&gt;
イメージとしては、このような形でブラウザから簡単に解析結果が利用できると何か面白いことができないかなーと思っています。&lt;br&gt;
本当はどっかのサーバで動かして、jsonとかで気軽に解析結果を取得できるとかになればいいんですけどね。&lt;/p&gt;
&lt;p&gt;ソースはgithubにあります。
&lt;/p&gt;
&lt;p&gt;KyTeaとMykytea-rubyをインストールした後、Mykytea.soをkytea-sinatraと同一のディレクトリに入れてから実行してください。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;gem install sinatra haml bundler
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# (または、 gem install bundler; bundle install)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ruby kytea\_sinatra.rb
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;で、ブラウザで&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;を開けばOK。&lt;br&gt;
なお、mecab-rubyも入っている場合は、下記のスクリプトを実行することで出力結果が比較できます。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;ruby kytea_sinatra_mecab.rb&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;出力結果は冒頭の感じです。&lt;/p&gt;
&lt;p&gt;＃しかし、API修正されたその日のうちに
、それで十分じゃんとか思ったのはここだけの話。&lt;br&gt;
＃全部叩けるようにするか、MeCabで言うところのparseToString, parseToNodeに絞ってアクセスできるようにしたかの違いだとは思う。&lt;br&gt;
＃@seikichiさんの.iの方がキレイだと思います。&lt;/p&gt;
&lt;p&gt;参考URL&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>KyTea:京都テキスト解析ツールキット をRuby, Pythonから使えるMykyteaを作ってみた</title><link>https://chezo.uno/post/2011-07-15-kytea-jing-du-tekisutojie-xi-turukituto-woruby-pythonkarashi-erumykyteawozuo-tutemita/</link><pubDate>Fri, 15 Jul 2011 05:07:29 -0700</pubDate><guid>https://chezo.uno/post/2011-07-15-kytea-jing-du-tekisutojie-xi-turukituto-woruby-pythonkarashi-erumykyteawozuo-tutemita/</guid><description>&lt;p&gt;&lt;strong&gt;[2011/07/23追記]&lt;br&gt;
SWIGで生成したmykytea_wrap.cxxをgithubに追加したので、SWIGのインストールは必要なくなりました。それに伴い実行すべき事が当初と変わっています。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;KyTeaという
さんが作られた、テキストの形態素解析や読み付与ができるツールがあります。&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
処理のイメージですが、少し前のバージョンの物ですが
さんの
がわかりやすいと思います。&lt;/p&gt;
&lt;p&gt;これをRubyやPythonなどのLLで使えることができれば、Webアプリとかでも使えるようになって嬉しいのでは、と思いラッパーを書いてみました。&lt;br&gt;
Ubuntu 11.04, KyTea v0.3.1, SWIG 2.0.1 Ruby 1.8.7, 1.9.2, Python 2.7.1にて動作を確認しています。&lt;br&gt;
KyTeaと同じApache Licence 2.0でお使いください。&lt;/p&gt;
&lt;p&gt;Ruby向け：
&lt;br&gt;
Python向け：
&lt;/p&gt;
&lt;h1&gt;&lt;/h1&gt;
&lt;p&gt;Mykyteaの使い方&lt;/p&gt;
&lt;h2 id="kyteaをダウンロードインストール"&gt;kyteaをダウンロード＆インストール&lt;/h2&gt;
&lt;p&gt;
を参考にダウンロード＆インストール&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wget http://www.phontron.com/kytea/download/kytea-0.3.1.tar.gz tar -xzf kytea-X.X.X.tar.gz cd kytea-X.X.X ./configure make sudo make install kytea --help
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;うちの場合、「libkytea.so.0が見つからない」といわれたので、LD_LIBRARY_PATHを/usr/local/libに通しました。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;export LD\_LIBRARY\_PATH=$LD\_LIBRARY\_PATH:/usr/local/lib
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;[2011/07/17追記]&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo ldconfig
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;こうすれば良いだけだったんですね。。。参考URL：
&lt;/p&gt;
&lt;h2 id="swigをインストール"&gt;SWIGをインストール&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;[2011/07/23追記]&lt;br&gt;
SWIGで生成したmykytea_wrap.cxxをgithubに追加したので、SWIGのインストールは必要なくなりました。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;SWIGは、異なる言語へラッパーを作るのをサポートしてくれるソフトです。今回はこれを使ってラッパーを作成しました。&lt;br&gt;
SWIGを使えば、javaやperlなどの他の言語のラッパーも作れるはずです。&lt;/p&gt;
&lt;p&gt;今回は、SWIGのバージョン1.x系列ではRuby1.9.2向けのラッパーが作れなかったため、2.x系列をインストールします。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get install swig2.0
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="githubからmykyteaをダウンロード"&gt;githubからMykyteaをダウンロード&lt;/h2&gt;
&lt;p&gt;git cloneでソースを入手します。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git clone git://github.com/chezou/Mykytea-ruby.git
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;もしくは、githubからブラウザでDownloadしてください。python版はrubyをpythonに読み替えてください。&lt;/p&gt;
&lt;h2 id="mykyteaの共有ライブラリを作成する"&gt;Mykyteaの共有ライブラリを作成する&lt;/h2&gt;
&lt;p&gt;ダウンロードしたソースに対して、共有ライブラリを作成します&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;[2011/07/23追記]&lt;br&gt;
SWIGで生成したmykytea_wrap.cxxをgithubに追加したので、SWIGの実行は必要なくなりました。もしmakeに失敗したら、最初に下記を実行してください。&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;swig2.0 -c++ -ruby -I/usr/local/include mykytea.i
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;(pythonの場合は下記)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;swig2.0 -c++ -python -I/usr/local/include mykytea.i
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Rubyの場合&lt;/p&gt;
&lt;p&gt;ruby extconf.rb make&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Pythonの場合
&lt;strong&gt;[2011/07/23追記]&lt;br&gt;
setup.pyを追加しましたので、pytonの場合は以下を実行してください&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;python setup.py&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;下記はmake方法です。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;swig -c++ -python mykytea.i g++ -c mykytea\_wrap.cxx -I/usr/include/python2.7 g++ -c mykytea.cpp g++ -shared mykytea.o mykytea\_wrap.o -o \_Mykytea.so -lkytea
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;-I/usr/include/python2.7&lt;/strong&gt; の部分は適宜バージョンなどによって場所を読み替えてください。&lt;br&gt;
(ちなみに、python版に入っているなんちゃってMakefileはpython2.7でしか通りませんorz&lt;br&gt;
autoconfの使い方が分からない…)&lt;/p&gt;
&lt;h2 id="動作を確認する"&gt;動作を確認する&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Rubyの場合&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;ruby mykytea_test.rb&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Pythonの場合&lt;/p&gt;
&lt;p&gt;python mykytea_test.py&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;でテストプログラムを実行してください。&lt;br&gt;
下記のような実行結果が得られるはずです。(注釈はでません)&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;#分かち書きの結果を出力&lt;br&gt;
今日&lt;br&gt;
は&lt;br&gt;
い&lt;br&gt;
い&lt;br&gt;
天気&lt;br&gt;
で&lt;br&gt;
す&lt;br&gt;
。&lt;/p&gt;
&lt;p&gt;#タグ付き結果を文字列で出力&lt;br&gt;
今日/名詞/きょう は/助詞/は い/形容詞/い い/語尾/い 天気/名詞/てんき で/助動詞/で す/語尾/す 。/補助記号/。&lt;/p&gt;
&lt;p&gt;#表層及び1位のタグとスコアを出力&lt;br&gt;
今日 /名詞/3.2847062802112355 /きょう/1.3268831168939792&lt;br&gt;
は /助詞/3.924858405365926 /は/100.0&lt;br&gt;
い /形容詞/2.591390241156937 /い/100.0&lt;br&gt;
い /語尾/2.155161693042765 /い/100.0&lt;br&gt;
天気 /名詞/4.7486561215119565 /てんき/100.0&lt;br&gt;
で /助動詞/2.8068949386999753 /で/100.0&lt;br&gt;
す /語尾/2.7237397162868087 /す/100.0&lt;br&gt;
。 /補助記号/3.3392877514055774 /。/100.0&lt;/p&gt;
&lt;p&gt;#表層と、全てのタグとそのスコアを出力&lt;br&gt;
今日 /名詞/3.2847062802112355 /言いよどみ/0.0 /代名詞/-0.12999710377780294 /きょう/1.3268831168939792 /こんにち/0.0&lt;br&gt;
は /助詞/3.924858405365926 /言いよどみ/-3.6483403104137224e-17 /代名詞/-0.23536067702781097 /は/100.0&lt;br&gt;
い /形容詞/2.591390241156937 /動詞/0.0 /言いよどみ/-0.00428323670492603 /い/100.0&lt;br&gt;
い /語尾/2.155161693042765 /言いよどみ/-3.946495907847236e-17 /web誤脱/-0.23382596743536913 /い/100.0&lt;br&gt;
天気 /名詞/4.7486561215119565 /言いよどみ/-9.215718466126788e-18 /web誤脱/-0.18273736539912366 /てんき/100.0&lt;br&gt;
で /助動詞/2.8068949386999753 /言いよどみ/-1.5937771935536915e-17 /動詞/-0.21163142806550297 /で/100.0&lt;br&gt;
す /語尾/2.7237397162868087 /言いよどみ/-1.4690939437178585e-17 /代名詞/-0.36184293534455636 /す/100.0&lt;br&gt;
。 /補助記号/3.3392877514055774 /言いよどみ/1.9136168344369153e-17 /代名詞/-0.268961070659961 /。/100.0&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;使い方の詳細についても、サンプルプログラムを見れば大体分かると思います。&lt;/p&gt;
&lt;h2 id="タグの取得について"&gt;タグの取得について&lt;/h2&gt;
&lt;p&gt;KyTeaで取得したタグですが、次のような構造体に格納しています。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;struct Tags{ string surface; vector\&amp;lt; vector\&amp;lt; pair\&amp;lt;string, double\&amp;gt; \&amp;gt; \&amp;gt; tags; };
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;これに対し、getAllTags()でタグを取得するとこうなります。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;今日 /名詞/3.2847062802112355 /言いよどみ/0.0 /代名詞/-0.12999710377780294 /きょう/1.3268831168939792 /こんにち/0.0&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;で、上記の出力に対するタグはjsonで書くとこんな感じになってます。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{ surface : 今日, tags : [[[名詞 , 3.2847062802112355], [言いよどみ , 0.0], [代名詞 , -0.12999710377780294] ], [[きょう , 1.3268831168939792], [こんにち , 0.0] ]]}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;tagsの部分ですが、タグとスコアのペアの系列が二つあります。一つ目の系列が品詞で二つ目の系列が読みです。(v 0.3.1ではこの順番のようです)&lt;/p&gt;
&lt;p&gt;これは、KyTeaのタグが特に形態素だとか読みだとか特定のラベルを取得しているのではないため、バージョンやモデルやconfigによっては別のラベルになり得るということが考えられます。&lt;/p&gt;
&lt;h2 id="まとめ"&gt;まとめ&lt;/h2&gt;
&lt;p&gt;KyTeaのRuby,PythonラッパーMykyteaを作りました。結局は、KyTeaにラッパーコードを書いて、SWIGで共有ライブラリを作っただけです。&lt;/p&gt;
&lt;p&gt;内部のコードはあまりスマートではありませんが、とりあえず出してしまいました。&lt;br&gt;
コメントなどありましたら、当ブログまたは
までご連絡ください。&lt;/p&gt;
&lt;p&gt;今後の予定としては、sinatraで簡単なWebアプリとの連携をさらっと書いてみたいです。&lt;br&gt;
&lt;strong&gt;【2011/07/20追記】
&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="参考url"&gt;参考URL&lt;/h2&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>Rajatonの楽譜を日本から買う方法 - Sulasol or あかぺら村のCD屋さん?</title><link>https://chezo.uno/post/2011-07-02-rajatonnole-pu-wori-ben-karamai-ufang-fa-sulasol-or-akaperacun-nocdwu-san/</link><pubDate>Sat, 02 Jul 2011 15:01:50 -0700</pubDate><guid>https://chezo.uno/post/2011-07-02-rajatonnole-pu-wori-ben-karamai-ufang-fa-sulasol-or-akaperacun-nocdwu-san/</guid><description>&lt;p&gt;当ブログでも何度か紹介しているフィンランドのヴォーカルアンサンブル Rajatonの楽譜を購入しました。購入したのは、Nouse lauluni等の曲です。この曲は良い曲ですよ！詩は一部カレワラからとられているようです。&lt;/p&gt;
&lt;p&gt;録音が良くないですが、Rajaton自信が歌ってる動画はこちら。&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/LRGey5Kz89o?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;アマチュアのガチャピン動画はこちら。HDで見ると音質は良いですよ。&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/jiwgTHfa9x0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;彼らの歌う曲(特にMia Makaroffの曲)はアカペラを歌う人たちだけでなく、日本の合唱人たちも楽しめるのではないかと日々思っているわけです。&lt;br&gt;
(松原千振先生も、Rajatonのことを賞賛されているようですし、演奏もされているようです)&lt;/p&gt;
&lt;p&gt;しかしながら、日本から楽譜を購入する手段があまり知られていないため、中々敷居が高いのではないかと思っています。Panamusicaでも取り扱ってないみたいなんですよね。&lt;br&gt;
そこで、日本からRajatonの楽譜を入手する方法をご紹介します。&lt;/p&gt;
&lt;h2 id="1-楽譜の出版元sulasolから購入する"&gt;1. 楽譜の出版元SULASOLから購入する&lt;/h2&gt;
&lt;p&gt;
の
もしくはメール(
)で購入が可能です。(英語でのやりとりとクレジットカードが必須なので、それらが無理な方は2のあかぺら村のCD屋さんがおすすめです)&lt;br&gt;
僕自身はメールで聞きましたが、フォームの方が確実でしょう。メールを適当な書き方をしたらSpam認定をされて4日くらい待たされました。(その後は割とスムーズにいき、2日くらいでやりとりが終わり、1週間後くらいには届きました)。&lt;/p&gt;
&lt;p&gt;流れとしては、&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;フォームでオーダー依頼orメールでオーダー依頼&lt;/li&gt;
&lt;li&gt;確認のメールが来て、クレジットカードの番号と裏の確認番号をメールで二回に分けるかFaxで連絡する(僕はFaxにしました。光電話だと安いんですよね)&lt;/li&gt;
&lt;li&gt;確認のメールを受け取ったら、わくわくしながら待つ
Rajatonの楽曲はおよそ
にあります。&lt;br&gt;
引用すると、&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Mäntyjärvi, Jaakko: Tórramat do nóebaengil (Evening Hymn) (S644)&lt;br&gt;
Rissanen, Säde: Jabberwocky (S654)&lt;br&gt;
Gustafsson, Kaj-Erik: Varhaiskesä (S781)&lt;br&gt;
Chydenius, Kaj: Stabat Mater (S919)&lt;br&gt;
Kostiainen, Pekka: Salus infirmorum (S938)&lt;br&gt;
Kostiainen, Pekka: Sancta Maria, Vas Spirituale (S939)&lt;br&gt;
Makaroff, Mia: Butterfly (S971)&lt;br&gt;
Makaroff, Mia: Were You There (S1038)&lt;br&gt;
Makaroff, Mia: Mitä kaikatat kivonen (S1039)&lt;br&gt;
Makaroff, Mia: Armottoman osa (S1040)&lt;br&gt;
Makaroff, Mia: You can&amp;rsquo;t stop me! (S1041)&lt;br&gt;
Makaroff, Mia: Lintu lauleli lehdossa (S1074)&lt;br&gt;
Makaroff, Mia: Kaikki maat te riemuitkaatte (S1189)&lt;br&gt;
Chydenius, Jussi - Wuorela, Essi: Kaipaava (S1217)&lt;br&gt;
Chydenius, Jussi - Wuorela, Essi: Kaipaava SSAA (S1217B)&lt;br&gt;
Sippola, Laura: A Poison Tree (S1225)&lt;br&gt;
Sarmanto, Heikki - Chydenius, Jussi: Un-Wishing Well (S1415)&lt;br&gt;
Chydenius, Jussi: Läksin minä kesäyönä käymään (S1448)&lt;br&gt;
Sariola, Soila: Nouse lauluni (S1452)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;およそというのは、購入できる楽譜の全リストと価格は
には先ほどのRajatonのページに無い曲も一部あります(PakkanenとかはExcelにしかありませんでした)。&lt;/p&gt;
&lt;p&gt;なお、残念ながらDobbin&amp;rsquo;s Flowery Valeは作曲者が「もう二度と出版したくない」と思っているらしく、絶版のようです。(Sulasolの担当者からメールで聞きました。)&lt;/p&gt;
&lt;h2 id="2-あかぺら村のcd屋さんから購入する"&gt;2. あかぺら村のCD屋さんから購入する&lt;/h2&gt;
&lt;p&gt;国内でなかなか手に入らないアカペラのCDを販売してくださっている、
というサイトがあります。こちらは、
という世界の様々なアカペラを紹介するサイトのキリックさんが販売をされています。多少手数料がかかってしまいますが、日本語で郵便振込で購入できるのが嬉しいところです。&lt;/p&gt;
&lt;p&gt;僕も何度かCDの購入にお世話になったことがあるのですが、その際にRajatonの楽譜も扱ってくださいとお願いをしたのがきっかけで、楽譜をおいていただいています。&lt;/p&gt;
&lt;p&gt;英語が苦手でSulasolの公式はちょっと、とかクレジットカードはちょっと、という方には良いのではないでしょうか？&lt;/p&gt;
&lt;p&gt;もちろん、これ以外の楽譜サイトはあるかと思いますが、特別調べていなかったりします。情報がありましたら、お知らせください。&lt;/p&gt;
&lt;p&gt;日本でますますRajatonが演奏されますように！&lt;/p&gt;</description></item><item><title>あの人がツイートした動画を連続再生サービス「動画あったー」をはじめました</title><link>https://chezo.uno/post/2011-05-01-anoren-gatuitositadong-hua-wolian-sok-zai-sheng-sabisu-dong-hua-atuta-wohazimemasita/</link><pubDate>Sun, 01 May 2011 15:01:45 -0700</pubDate><guid>https://chezo.uno/post/2011-05-01-anoren-gatuitositadong-hua-wolian-sok-zai-sheng-sabisu-dong-hua-atuta-wohazimemasita/</guid><description>&lt;p&gt;
&lt;/p&gt;
&lt;h2 id="あの人っていつも面白い動画をつぶやいてるんだよねー"&gt;「あの人っていつも面白い動画をつぶやいてるんだよねー」&lt;/h2&gt;
&lt;p&gt;そう思うことありませんか？&lt;/p&gt;
&lt;p&gt;「検索キーワードでわざわざ探すのは面倒だけど、あの人のツイートしてる動画が見たい」&lt;/p&gt;
&lt;p&gt;「仕事してる時にツイートされた動画ってキャッチしづらいけど、帰ってからまとめてみたい」&lt;/p&gt;
&lt;p&gt;そんな人のための、ツイート動画連続再生サービス「動画あったー」をはじめました。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;動画あったー&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;h2 id="使い方"&gt;使い方&lt;/h2&gt;
&lt;p&gt;見たい人の &lt;strong&gt;ツイッターIDを入れて検索するだけ。&lt;/strong&gt;&lt;br&gt;
そうすると、その人がツイートした動画が自動で連続再生されます。&lt;/p&gt;
&lt;p&gt;たとえば、@YouTubeJapan のツイートしている動画を見たい場合は、
のような検索結果になります。
&lt;/p&gt;
&lt;p&gt;ただし、現在Firefoxでは上手く動かないです。。。ごめんなさい。&lt;br&gt;
Google ChromeとSafariがおすすめです。IEも8なら一応動かないことはないかも、って感じです。&lt;/p&gt;
&lt;p&gt;後、 &lt;strong&gt;1時間に15回くらいしか検索ができません&lt;/strong&gt; 。API制限があるので、使いすぎには気をつけてください！&lt;/p&gt;
&lt;p&gt;まだまだ問題点もあるかと思いますが、試しに使ってみてください。&lt;/p&gt;
&lt;p&gt;気になることは
または公式Twitterアカウント
までお願いします！&lt;/p&gt;</description></item><item><title>iPhone for everybodyの2年縛りを解除したらパケット定額フラットにしかならなかった</title><link>https://chezo.uno/post/2011-05-01-iphone-for-everybodyno2nian-fu-riwojie-chu-sitarapaketutoding-e-huratutonisikanaranakatuta/</link><pubDate>Sun, 01 May 2011 04:05:24 -0700</pubDate><guid>https://chezo.uno/post/2011-05-01-iphone-for-everybodyno2nian-fu-riwojie-chu-sitarapaketutoding-e-huratutonisikanaranakatuta/</guid><description>&lt;p&gt;一言で言うと、iPhone for everybodyを使ってパケット定額フル(
)で契約したら、パケット定額forスマートフォンに変更できなかったという話です。&lt;br&gt;
現在、パケット定額forスマートフォンやパケット定額フルで契約されている方は対象外かと思われます。&lt;/p&gt;
&lt;h2 id="二段階定額のままiphone3gの2年縛りを外せるか"&gt;二段階定額のままiPhone3Gの2年縛りを外せるか&lt;/h2&gt;
&lt;p&gt;自分は2009年5月にiPhone3Gを契約したのですが、最近のソフトバンク網のつながりの悪さを考えて、2年縛りを外すことを計画していました。&lt;/p&gt;
&lt;p&gt;その時、参考にした記事の一つがこのtogetter。&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;この記事では、二段階定額制の
について、こう言及されています。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;自分としては、WiMAXなどと組み合わせることも検討していたので、パケット定額forスマートフォンは重要な選択肢の一つでした。&lt;/p&gt;
&lt;p&gt;サポートセンターに電話をしてプラン変更の前に「パケットし放題フラットとパケットし放題forスマートフォンは自由に切り替え可能ですか？」と質問をさせていただいたところ、最初はできると聞いたのですが、その数分後に折り返し電話がかかってきました。&lt;/p&gt;
&lt;p&gt;「現在、パケットし放題forスマートフォンへ移行出来るのは、2011年11月11日以前にiPhoneをご契約されて、かつ契約時にパケットし放題フラットしか選択できない時期のお客様のみです」との連絡でした。&lt;/p&gt;
&lt;p&gt;どうも話を聞いてみると、パケットし放題forスマートフォンへ変更できる人というのは、 &lt;strong&gt;パケットし放題フラットしか選べなかった人への救済措置&lt;/strong&gt; だ、という事なのです。&lt;/p&gt;
&lt;h2 id="選べる選択肢は"&gt;選べる選択肢は&lt;/h2&gt;
&lt;p&gt;なので、自分のようにパケット定額フルとiPhone for everybodyで契約した人は、&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;現状の二年縛りを更新することで二段階定額を選ぶ&lt;/li&gt;
&lt;li&gt;パケットし放題フラットに変更をして二年縛りを外す
という選択肢を選ばなければならないようです。選択肢がほぼありませんね。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;なお、現行の
と
は二年縛りの付いた新しいホワイトプランでないと、契約ができないようです。&lt;/p&gt;
&lt;p&gt;先日のソフトバンクWi-Fiスポットの件といい、なかなかソフトバンク側に不利な事はどんどん変えられていきますね。&lt;/p&gt;</description></item><item><title>iPad2とともに無料Wi-Fiスポットをゲットする二つの方法</title><link>https://chezo.uno/post/2011-04-30-ipad2totomoniwu-liao-wi-fisupotutowogetutosuruer-tunofang-fa/</link><pubDate>Fri, 29 Apr 2011 23:04:06 -0700</pubDate><guid>https://chezo.uno/post/2011-04-30-ipad2totomoniwu-liao-wi-fisupotutowogetutosuruer-tunofang-fa/</guid><description>&lt;h2 id="13gモデルを買いましょう"&gt;1.3Gモデルを買いましょう。&lt;/h2&gt;
&lt;p&gt;自動的にソフトバンクWi-Fiスポット(i)が二年間無料で付いてきます。&lt;/p&gt;
&lt;h2 id="2applestoreかソフトバンクショップでwi-fiモデルを買いましょう"&gt;2.AppleStoreかソフトバンクショップでWi-Fiモデルを買いましょう&lt;/h2&gt;
&lt;p&gt;iPad2Wi-Fiモデルは、決められた店舗（AppleStoreとソフトバンクショップと &lt;strong&gt;一部量販店&lt;/strong&gt; ）でしか、ソフトバンクWi-Fiスポット(2year)はつきません。&lt;br&gt;
&lt;strong&gt;&amp;ldquo;一部量販店&amp;rdquo;&lt;/strong&gt; というのがくせ者です。少なくとも &lt;strong&gt;ビックカメラ、ヨドバシは対象外&lt;/strong&gt; のようです。(ヤマダ電機も？)&lt;/p&gt;
&lt;p&gt;厄介なことにiPadの時ははついていたらしいヨドバシカメラも、今回は &lt;strong&gt;&amp;ldquo;一部量販店&amp;rdquo;&lt;/strong&gt; の定義から外れているそうです。ビックカメラは以前からやっていないと店員さんに教えていただきました。&lt;/p&gt;
&lt;p&gt;ビックカメラやヨドバシカメラなどの量販店で登録のやり方を書いた紙を渡されても、対象外ですので気をつけてください。&lt;br&gt;
情報がきちんと行き渡っていないんでしょうね。&lt;/p&gt;
&lt;p&gt;以上、当たり前の情報かもしれませんが、自分のように「iPad2はどこでもソフトバンクWi-Fiスポットがついてくる」と勘違いしてしまう人のためにまとめました。
に教えていただくまで気づきませんでした。ありがとうございます！&lt;/p&gt;
&lt;h2 id="参考url"&gt;参考URL&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
#ちなみに、3つ目のtogetterは自分でまとめたのですが、煽りたいと言うよりは自分のような誤解で無駄なエネルギーを使うことが減るようにと思いまとめました。&lt;br&gt;
#無論、適切な説明をSB、 &lt;strong&gt;一部以外の&lt;/strong&gt; 量販店はすべきと思いますけど。&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>エリック・ウィテカー氏、予定通り来日！</title><link>https://chezo.uno/post/2011-04-09-eritukuuitekashi-yu-ding-tong-rilai-ri/</link><pubDate>Sat, 09 Apr 2011 15:01:28 -0700</pubDate><guid>https://chezo.uno/post/2011-04-09-eritukuuitekashi-yu-ding-tong-rilai-ri/</guid><description>&lt;p&gt;合唱指揮者であり作曲家でもある、
さんによると、
ことエリック・ウィテカー氏の、
への来日が予定通り行われることが明らかになりました。(@hanagoroさんありがとうございます！)&lt;br&gt;
しかも、&lt;strong&gt;福島での講習会も(福島の方々が希望されるなら)行きたい&lt;/strong&gt;とのこと！&lt;br&gt;
素晴らしい！&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>これで君もウィテカーになれる！？「誰でもウィテカー」はじめました #darewite</title><link>https://chezo.uno/post/2011-04-09-koredejun-mouitekaninareru-shui-demouiteka-hazimemasita-number-darewite/</link><pubDate>Sat, 09 Apr 2011 15:01:23 -0700</pubDate><guid>https://chezo.uno/post/2011-04-09-koredejun-mouitekaninareru-shui-demouiteka-hazimemasita-number-darewite/</guid><description>&lt;p&gt;20110409追記：Whitacre氏が改めて
そうです！
！&lt;/p&gt;
&lt;p&gt;最近、日本の演奏会でもよく演奏される人気の合唱作曲家、
。先日公開された、Virtual Choir 2.0でもおなじみですね。&lt;/p&gt;
&lt;p&gt;そんなEric Whitacreになりきれる、「誰でもウィテカー」という何の役にも立たないTwitterサービスを始めました。&lt;br&gt;
使い方は簡単。&lt;br&gt;
にアクセスしてツイートするだけ。そうすると、Whitacreの口癖である&amp;quot;Woo hoo!&amp;ldquo;というノリノリワードをツイートできます。さらに、クライアント名が「誰でもウィテカー」になります。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;使用例：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;明日は給料日だぜ Woo hoo!&lt;/li&gt;
&lt;li&gt;今度のTED Talksに呼ばれちゃったぜ Woo hoo!&lt;/li&gt;
&lt;li&gt;うちの娘が可愛すぎてやばい Woo hoo!&lt;/li&gt;
&lt;li&gt;クリスマスは彼女と過ごすぜ。画面から出てきてくれないけどな Woo hoo!&lt;/li&gt;
&lt;li&gt;「誰ウィテ」でツイートしてたら、ドンドン合唱曲のイメージがわいてきて作曲しまくりだぜ Woo hoo!
え、本当に口癖かって？ほらね。使ってるでしょ&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;え？Virtual Choir 2.0を知らないって？この動画を早く見るんだ！&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/6WhWDCw3Mng?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2&gt;&lt;/h2&gt;
&lt;p&gt;本当に口癖か調べてみた今回、「誰でもウィテカー」を作るにあたって、「最近、よくウィテカーは&amp;quot;Woo hoo!&amp;ldquo;って連呼してるよな。ReplyもWoo hoo!だけのとかあるし」という直感からウィテカーになりきるには&amp;quot;Woo hoo!&amp;ldquo;といえば良い！ということになりました(笑)&lt;/p&gt;
&lt;p&gt;本当にWhitacreの口癖が&amp;quot;Woo hoo!&amp;ldquo;か調べてみました。&lt;/p&gt;
&lt;p&gt;今回は、Pythonとnltkを使って最近200ツイートを調べてみました。すると、驚くことにbi-gram(2語)の頻度を見てみると&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Woo hoo! 10&lt;br&gt;
Virtual Choir 9&lt;br&gt;
of the 6&lt;br&gt;
to the 6&lt;br&gt;
Choir 2.0 5&lt;br&gt;
one of 5&lt;br&gt;
with the 5&lt;br&gt;
I could 4&lt;br&gt;
and I 4&lt;br&gt;
at the 4&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;なんと言うことでしょう、&amp;ldquo;Virtual Choir&amp;quot;よりも&amp;quot;Woo hoo!&amp;ldquo;の方が頻度が高いではありませんか！&lt;/p&gt;
&lt;p&gt;ちなみに、uni-gram(1語)を見てみると、&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;the 61&lt;br&gt;
I 46&lt;br&gt;
&amp;ldquo;;-)&amp;rdquo; 42&lt;br&gt;
you 29&lt;br&gt;
a 28&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;第3位に&amp;rdquo;;-)&amp;ldquo;という顔文字が(絵文字に変換されてしまうため&amp;quot;&amp;ldquo;でくくっています)。この顔文字も使えば大丈夫。特に、適当なReplyをしたいときに&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;@XXXXXX &amp;ldquo;;-)&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;を使えば完璧です。&lt;/p&gt;
&lt;p&gt;ちなみに、tri-gram(3語)の頻度を見ると、安心の結果が出ています。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;Virtual Choir 2.0 5&lt;br&gt;
tell you how 4&lt;br&gt;
Wish I could 3&lt;br&gt;
the Virtual Choir 3&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="まとめ"&gt;まとめ&lt;/h2&gt;
&lt;p&gt;WhitacreになりきれるWebサービス、「誰でもウィテカー」を始めました。&lt;br&gt;
ウィテカーになりきるには、&amp;ldquo;Woo hoo!&amp;ldquo;と&amp;rdquo;;-)&amp;ldquo;を使えばOK！&lt;/p&gt;
&lt;h2 id="参考url"&gt;参考URL&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
(Twitter@Anywhereの参考にさせていただきました)&lt;/li&gt;
&lt;li&gt;
&lt;br&gt;
(Twitter@Anywhereの参考にさせていただきました)&lt;/li&gt;
&lt;li&gt;
&lt;br&gt;
(NLTKの参考にさせていただきました)&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Peter Hollensの"Firework"一人アカペラが格好いい</title><link>https://chezo.uno/post/2011-04-08-peter-hollensno-firework-ren-akaperagage-hao-ii/</link><pubDate>Fri, 08 Apr 2011 04:04:30 -0700</pubDate><guid>https://chezo.uno/post/2011-04-08-peter-hollensno-firework-ren-akaperagage-hao-ii/</guid><description>&lt;p&gt;
で知ったのですが、Peter Hollensという人の一人アカペラアレンジがカッコいいです。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;オレゴン大学で音楽の学位 (Vocal Performance コース) を取得し、現在、m-pact や The House Jacks の CD を手がけたことで知られるサンフランシスコ大手のアカペラレコードレーベル &amp;ldquo;A Cappella Records (ACR):
)&amp;rdquo; のディストリビュータとして活躍しています。そのアレンジの才と歌唱力は折り紙付き！&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;とのことで、その実力をご覧ください。&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/0VQG92nsOKI?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;原曲はKaty PerryのFireworkです。こちらがその原曲。&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/QGJuMBdaqIw?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;個人的には、Peter Hollensのアレンジの方が好きです。いや、この調を選ぶセンスは良いなぁと思いますよ。&lt;br&gt;
イントロのonononoみたいなところが耳に残って離れませんねー。&lt;/p&gt;
&lt;p&gt;
では、日本のための祈りの曲も！&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/DfVVa_X1a5A?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h1 id="katy-perry"&gt;
&lt;/h1&gt;</description></item><item><title>それでもTake6は来日する</title><link>https://chezo.uno/post/2011-04-07-soredemotake6halai-ri-suru/</link><pubDate>Thu, 07 Apr 2011 15:01:11 -0700</pubDate><guid>https://chezo.uno/post/2011-04-07-soredemotake6halai-ri-suru/</guid><description>&lt;p&gt;【20110531追記】[オフィシャルサイトによると、Take6の来日は2012年2月に延期されたようです。&lt;/p&gt;
&lt;p&gt;期待させてしまった方はすみません。](
)&lt;/p&gt;
&lt;p&gt;先に断っておくと、推測混じりのお話です。&lt;/p&gt;
&lt;p&gt;以前、
でも来日すると紹介したアカペラグループTake6ですが、多分来日するみたいです。&lt;/p&gt;
&lt;p&gt;FacebookのTake6のページに
があります。&lt;/p&gt;
&lt;p&gt;日本の被災者のために祈りを込めて歌ってくれています。&lt;/p&gt;
&lt;p&gt;その冒頭で、&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;「地震、津波、原子力に苦しむ日本の友人達に」&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;と言うあたたかい言葉があります。&lt;/p&gt;
&lt;p&gt;また、その一方で4/7現在Take6のサイトにて、
が公開されています。一部引用します。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;At this point, we are not sure of the best way to help, but we will offer&lt;/p&gt;
&lt;p&gt;our prayers to God on your behalf. He knows all and sees all.&lt;/p&gt;
&lt;p&gt;We are looking forward to seeing you soon in Tokyo.&lt;/p&gt;
&lt;p&gt;現時点でどうしたらあなた達の役に立つことができるか、まだわからないのですが、&lt;/p&gt;
&lt;p&gt;あなた達のために神に祈っております。神様はすべてご覧になっています。&lt;/p&gt;
&lt;p&gt;日本でお目にかかれる日を待ち焦がれております。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;勿論、この先どうなるかは分かりませんが、きっとTake6はこういう状況の中でも敢えて来日してくれるという希望が湧きました。&lt;/p&gt;
&lt;p&gt;まだまだ、
のようですので、5/30,31に是非コンサートを楽しみたいものです。&lt;/p&gt;</description></item><item><title>ガチャピン sings Rajaton？</title><link>https://chezo.uno/post/2011-04-06-gatiyapin-sings-rajaton/</link><pubDate>Wed, 06 Apr 2011 15:01:06 -0700</pubDate><guid>https://chezo.uno/post/2011-04-06-gatiyapin-sings-rajaton/</guid><description>&lt;p&gt;きっかけは、君のラジオがリニューアルしている様子がはてブのホットエントリ入りしたところから。&lt;br&gt;
あの手のYouTubeの検索マッシュアップではRajatonを検索するようにしているのですが(本人達の演奏が少なくノイジーなのです)、今回も見事にアマチュアやら関係ない動画がざっくざっく引っかかりました。&lt;/p&gt;
&lt;p&gt;ところが、そんな中でアマチュアなんだけど中々良い演奏をしている動画が見つかったのです。&lt;br&gt;
それが、こちら。&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/jiwgTHfa9x0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;
というガチャピン人がRob McLarenさんとコラボしている動画です。Rajatonオフィシャルでちょろっと聞けるだけのこの名曲ですが、YouTubeにこのクオリティでアップロードしたのは快挙だと思います。&lt;/p&gt;
&lt;p&gt;で、この動画のメロディーを歌っているのがメゾソプラノ(真ん中上)なんですが、こいつがくせ者です。というかガチャピンです。最終的には
になります。お腹痛い。&lt;/p&gt;
&lt;p&gt;でね、このガチャピン、亀にもなるんですよ。&lt;/p&gt;
&lt;p&gt;&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/1_THLLhDvv0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;br&gt;
懐かしのタートルズです。&lt;/p&gt;
&lt;p&gt;そのほかにも、ドッカンドッカンかめはめ波うったり、ポケモン歌ったりしてます。この二曲は英語版の曲自体が格好いいのでそういう意味でも聞いてみてください。&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/i6joFkTjZyQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/rRKr7Zk8T04?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;YouTubeのチャンネルは
。&lt;br&gt;
ちなみに、
ではMP3がダウンロードできます。&lt;/p&gt;</description></item><item><title>Eric WhitacreのTEDでの講演が公開</title><link>https://chezo.uno/post/2011-04-06-eric-whitacrenoteddenojiang-yan-gagong-kai/</link><pubDate>Wed, 06 Apr 2011 15:00:59 -0700</pubDate><guid>https://chezo.uno/post/2011-04-06-eric-whitacrenoteddenojiang-yan-gagong-kai/</guid><description>&lt;p&gt;当ブログでも
Eric Whitacre氏のVirtual Choir。YouTubeを通じて合唱しようぜという企画です。2月頃にWhitacre氏がVirtual Choir2.0に関して
する、という話が挙がっていたのですが、ついに
ようです。&lt;/p&gt;
&lt;p&gt;
.&lt;/p&gt;
&lt;p&gt;まだ、日本語の字幕は出ていませんが、基本的に動画を使ったわかりやすい説明をしているので、英語があまり分からなくても何となく楽しめるものとなっています。&lt;br&gt;
内容としては、今までのVirtual Choirの取り組みの説明と、今回のSleepの動画の作成過程と、その内のいくつかの歌い手の動画の紹介。(9才の少年からおじいさんまで参加しているとか！)&lt;br&gt;
最終的なSleepの演奏動画も12分頃から2分ほど見られますので、そちらが気になる方はどうぞ。&lt;/p&gt;
&lt;p&gt;ちなみに、Downloadもさせてくれるみたいです。&lt;/p&gt;
&lt;p&gt;JCDA合唱の祭典2011〜第12回北とぴあ合唱フェスティバルへの
はどうなるのかまだ分かりませんが、是非来ていただきたい物です！&lt;/p&gt;
&lt;p&gt;知らなかったけど、
があったんですね、、、&lt;/p&gt;
&lt;p&gt;
、という話を
のですが、こちらもうまくいくといいなー。&lt;/p&gt;</description></item><item><title>Googleカレンダーの場所情報をGoogleマップに表示する方法</title><link>https://chezo.uno/post/2011-03-04-googlekarendanochang-suo-qing-bao-wogooglematupunibiao-shi-surufang-fa/</link><pubDate>Fri, 04 Mar 2011 14:00:54 -0800</pubDate><guid>https://chezo.uno/post/2011-03-04-googlekarendanochang-suo-qing-bao-wogooglematupunibiao-shi-surufang-fa/</guid><description>&lt;p&gt;
に登録していると、ふとイベント情報の開催地を地図上に表示したくなりました。&lt;/p&gt;
&lt;p&gt;探してみると、
があってYahoo!pipesを使ってやった人がいるようです。(日本語の紹介記事は
)&lt;/p&gt;
&lt;p&gt;どうやるかというと、Google CalendarのXMLのアドレス(カレンダー設定のところにあるURL)を
につっこみます。&lt;br&gt;
More Optionsで得られるKMLデータのURLをGoogleマップのクエリに投げるとできあがりです。&lt;/p&gt;
&lt;p&gt;
になります。&lt;/p&gt;
&lt;p&gt;ただ、Googleマップに表示はしているものの、Googleカレンダーの場所情報から地図情報に変換しているのは米Yahoo!の仕事なためか、精度がよろしくありません。&lt;/p&gt;
&lt;p&gt;頑張って、GoogleカレンダーとマップのAPIを使って処理するしかないのでしょうか。。。&lt;/p&gt;</description></item><item><title>DropboxがHTML公開を簡単にする- @acappella_event関連まとめサイト作成してみた</title><link>https://chezo.uno/post/2011-03-03-dropboxgahtmlgong-kai-wojian-dan-nisuru-at-acappella-eventguan-lian-matomesaitozuo-cheng-sitemita/</link><pubDate>Thu, 03 Mar 2011 14:00:49 -0800</pubDate><guid>https://chezo.uno/post/2011-03-03-dropboxgahtmlgong-kai-wojian-dan-nisuru-at-acappella-eventguan-lian-matomesaitozuo-cheng-sitemita/</guid><description>&lt;h2 id="何を作ったか"&gt;何を作ったか？&lt;/h2&gt;
&lt;p&gt;@acappella_eventがつぶやいているアカペラ/合唱カレンダーを見やすくはっつけるサイトがほしかったんです。&lt;br&gt;
あと、Pana Musicaの新刊botがつぶやいている新刊情報も見やすくしたかったんです。&lt;/p&gt;
&lt;p&gt;で、ここにできたものがあります。&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;[2011/12/10追記]&lt;br&gt;
現在はこちらに移行しております。(ほとんど同じ物ですが)&lt;br&gt;
&lt;/p&gt;
&lt;h2 id="なぜdropboxか"&gt;なぜ、Dropboxか？&lt;/h2&gt;
&lt;p&gt;Wordpress.comはiframeやscriptが使えないという安心設計になっているため、google calendarやtwitterのTLウィジェットを貼り付けることができませんでした。&lt;/p&gt;
&lt;p&gt;で、それらを見るためのサイトをGoogle App Engine上においてみようかとも思ったのですが、マシンを移行したこともあり面倒だなぁと思っていました。&lt;/p&gt;
&lt;p&gt;そんな折に、
を見つけたわけです。簡単に言うと、HTMLをDropboxのPublicフォルダに置くと、公開できるというもの。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;レンタルサーバも要らなければ、広告も入らない。&lt;/strong&gt; うまくやれば、 &lt;strong&gt;CSSも使えるんじゃね？&lt;/strong&gt; と思い始めてみたわけです。&lt;/p&gt;
&lt;h2 id="できた"&gt;できた&lt;/h2&gt;
&lt;p&gt;以前読んだ、HTML5とCSS3使うと簡単に？サイトが見栄え良くできるという
を参考に、もりもり書いていきました。&lt;/p&gt;
&lt;p&gt;正直言うと、最近HamlやらSassをSinatraとともに使っていたので、生のコード書くのだるいとか思っていましたが、Windows付属のメモ帳で2時間くらい調べながらかけて書いたらできあがりました。xyzzy入ってないマシンでやるもんじゃないですね。Windows7はUTF-8のファイルがはけるようになったから、勢いでやってしまいました。&lt;/p&gt;
&lt;p&gt;ちなみに、カレンダーに情報登録してくださる方は随時募集しておりますので、@chezouまでtwitterでご連絡ください。&lt;/p&gt;</description></item><item><title>Twitterの合唱大喜利は楽しい</title><link>https://chezo.uno/post/2011-03-02-twitternohe-chang-da-xi-li-hale-sii/</link><pubDate>Wed, 02 Mar 2011 14:00:43 -0800</pubDate><guid>https://chezo.uno/post/2011-03-02-twitternohe-chang-da-xi-li-hale-sii/</guid><description>&lt;p&gt;Twitterでしばしば見かけるのですが、誰からともなく大喜利が始まることがあります。たとえば、何かの「あるあるネタ」なんかの広がりも面白いです。&lt;/p&gt;
&lt;p&gt;手前味噌ですが、合唱ネタを中心にこんなものが過去にありました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
皆でネタを広げて、さらに皆で追加してという流れが面白いですね。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ただ、twitterの日本語検索が結構漏れが多いので、ハッシュタグを先につけておいた方が良いかと思います。こういった盛り上がりを自動的にとぅぎゃれないだろうか。。。&lt;/p&gt;</description></item><item><title>マユールティールーム川崎店とティーハウスマユール宮崎台店の違い</title><link>https://chezo.uno/post/2011-02-13-mayuruteirumuchuan-qi-dian-toteihausumayurugong-qi-tai-dian-nowei-i/</link><pubDate>Sun, 13 Feb 2011 14:00:38 -0800</pubDate><guid>https://chezo.uno/post/2011-02-13-mayuruteirumuchuan-qi-dian-toteihausumayurugong-qi-tai-dian-nowei-i/</guid><description>&lt;p&gt;先日、川崎のアゼリアにあるマユールティールームと、宮崎台にあるティーハウスマユールに行ってきました。写真は、宮崎台のマユールのチキンカレーです。&lt;/p&gt;
&lt;p&gt;元々、川崎のアゼリアにある
には、リーズナブルなお値段でおいしい茶葉が買えるということで、ちょこちょこお世話になっていました。&lt;br&gt;
いつの間にやら
とのことで、チェックもしていました。(あまり更新はされていないようですが )&lt;br&gt;
席は少なくカウンター4席くらい、テーブル席がソファー有りで3つ(2人×2＋3人)とこぢんまりとしていますが、ソファーのおかげで赤ちゃんがいてもなんとかなりました。ちなみに、アゼリアの多目的トイレが近くにあるのでおむつ替えも比較的容易でした。&lt;/p&gt;
&lt;p&gt;で、先日いただいたのがこのフォンダンショコラと
。ホワイトショコラチャイは初めて飲んだのですが、チョコがほどよく溶けてなかなかおいしかったです。フォンダンショコラもほどよい甘さでよかったです。&lt;/p&gt;
&lt;p&gt;ちなみに、マユールに始めていったときに、「チャイをお願いします」と言うと「どのチャイですか？」と問い返されて驚きました(笑)5種類くらいのチャイから選ぶことができます。&lt;/p&gt;
&lt;p&gt;ある日、ツイッターで
があることを知ります(オフィシャルサイトは
)。川崎店が既にチェーン店がなさそうな雰囲気のお店だったので、たまたま同じ名前なのかなとか思っていたのですが、どうも関係がありそうです。&lt;br&gt;
そして、
さんから
ので行かないわけにはいかなくなりました(笑)&lt;/p&gt;
&lt;p&gt;雨の中、宮崎台の駅から徒歩3分かけて行ってみました。すると、入り口付近には見慣れたクジャクのマークのお茶が！そして、ランチタイムは14時までと既に過ぎていたのですが、チキンカレーとタルトタタンをいただきました。&lt;br&gt;
スパイシーでちょっと辛めだけど、どんどん食べられるそんなカレーでした。辛いのが苦手な妻でもぱくぱく食べていました。タルトタタンは、アップルパイのようなタルトです。すごくリンゴの味が生きていておいしいタルトでした。ほっぺた落ちます。&lt;/p&gt;
&lt;p&gt;ちなみに、何も考えずに行ってからおむつ替えの問題を思い出したのですが、たまたま空いていた時間帯だったため、空いている席でいすを並べておむつ替えをさせていただきました。本当にありがとうございます。&lt;/p&gt;
&lt;p&gt;肝心の「川崎店とはどういう関係なのか？」という疑問を、お店の方に聞いてみました。すると、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;元々、五反田のマユールジャパンが紅茶の卸売りをしていること&lt;/li&gt;
&lt;li&gt;川崎のマユールと宮崎台のマユールは姉妹店みたいなもの&lt;/li&gt;
&lt;li&gt;川崎のマユールの店長は紅茶のインストラクターも持っていることもあり、新しい飲み方なども研究されており、お茶を楽しむのにぴったり&lt;/li&gt;
&lt;li&gt;宮崎台のマユールは、お茶はもちろんマユールの茶葉を使用しておりおいしいが、店長さんの丹精込めてつくられたデザートは絶品
ということがわかりました。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;まとめますと、 &lt;strong&gt;お茶を楽しむなら川崎店&lt;/strong&gt; へ、 &lt;strong&gt;デザートを楽しむなら宮崎台店&lt;/strong&gt; の方が、よりこだわりの味を楽しめておすすめです。&lt;br&gt;
いつか、五反田のお店も行ってみたいです。&lt;/p&gt;</description></item><item><title>Take6が2011/05/30,31に来日公演！</title><link>https://chezo.uno/post/2011-02-08-take6ga2011-slash-05-slash-3031nilai-ri-gong-yan/</link><pubDate>Tue, 08 Feb 2011 04:02:09 -0800</pubDate><guid>https://chezo.uno/post/2011-02-08-take6ga2011-slash-05-slash-3031nilai-ri-gong-yan/</guid><description>&lt;p&gt;
が非常にださいのですが、Take6が東京にて来日公演するようです。&lt;br&gt;
5/30(月),5/31(火)の二日公演で、初日がアカペラのゴスペル、R&amp;amp;Bの演奏、二日目が新日本フィルとの共演Jazz、Classicalの演奏のようです。アカペラが良い人は初日の夜でしょうか。&lt;br&gt;
チケットは、
ならびに
メンバー向けの先行発売は2/6からもう開始しているようです。&lt;br&gt;
一般発売は、 &lt;strong&gt;2/20&lt;/strong&gt; からのようです。&lt;/p&gt;
&lt;p&gt;詳細は、
を確認していただくとして、概要は以下の通りです。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;会場：すみだトリフォニーホール&lt;br&gt;
日時：2011/05/30 ,31 開場18:30 開演19:00&lt;br&gt;
タイトル：TAKE 6 ジャパンツアー 2011 &amp;ldquo;All About TAKE 6 from Gospel to Classic&amp;rdquo;&lt;br&gt;
第1夜：ゴスペル ＆ R&amp;amp;B ナイト&lt;br&gt;
第2夜：ジャズ＆クラシック・ナイト with 新日本フィル&lt;br&gt;
チケット：2公演セット券：S\14,400　A\12,600 各1回券：S\8,000　A\7,000&lt;br&gt;
(トリフォニークラブ会員ならびにブルーノート東京JAM SESSIONメンバーは、&lt;br&gt;
2公演セット券はS\12,800　A\11,200、 各1回券は各10%引き)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;コンテンポラリーアカペラの大御所なので、是非聞かれてみてはいかがでしょうか？&lt;br&gt;
オフィシャルサイトに、Youtubeの動画がいくつかのせられているようです。&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/QkL3nBCpoCo?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>Acer Aspire 1410をcrucial RealSSD C300に外付けDVDなしに換装した</title><link>https://chezo.uno/post/2011-02-05-acer-aspire-1410wocrucial-realssd-c300niwai-fu-kedvdnasinihuan-zhuang-sita/</link><pubDate>Sat, 05 Feb 2011 02:02:47 -0800</pubDate><guid>https://chezo.uno/post/2011-02-05-acer-aspire-1410wocrucial-realssd-c300niwai-fu-kedvdnasinihuan-zhuang-sita/</guid><description>&lt;h2 id="せっかちな人のための結論"&gt;●せっかちな人のための結論&lt;/h2&gt;
&lt;p&gt;RealSSD C300いいよ！SATA2でも十分HDDに比べて恩恵感じられるよ！１万円なら全然あり！&lt;br&gt;
記事の内容としては、外付けDVDなしでリカバリしないでSSD(64GB)への移行する際のポイントを書いていきます。&lt;/p&gt;
&lt;h2 id="はじめに"&gt;●はじめに&lt;/h2&gt;
&lt;p&gt;ある日、メインで使っている第１世代の
のCPU(CoreSolo!)が、昨今のAtomにすら負けているということを知り悔しくなって新しいマシンを手に入れることを模索し始めました。&lt;br&gt;
（誰だよ！「ノートPCにはDual Coreは要らない、敢えてCore Soloにしたんだ。」とか言ってたVaio開発者は！)&lt;br&gt;
でも、なかなか物入りの時期なのと、自分好みの軽量のマシン(1.3kgとか重くて持てない)が、手頃な値段のものがMacBook Airくらいしかなかったので、妻のために買ったけど音楽再生専用機になっていたAcer Aspire 1410 (いわゆるCULV)を接収することにしました。&lt;br&gt;
きっかけは、某巨大掲示板に「CULVノートはCore i5を狙うよりもSSDにした方が幸せになれるんじゃ」ということが書いてあったのが背中を押してくれました。&lt;/p&gt;
&lt;h2&gt;&lt;/h2&gt;
&lt;p&gt;●用意するもの&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;RealSSD C300&lt;/li&gt;
&lt;li&gt;Acer Aspire1410&lt;/li&gt;
&lt;li&gt;SATA-USB変換ケーブル or 2.5inchケース&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="ssd"&gt;・SSD&lt;/h3&gt;
&lt;p&gt;今回購入したSSDは
の64GBのモデルです。早いのに1万円程度と手頃なのが魅力的です。SATA3で本来の実力を発揮できるらしく、Sandy BridgeのCPU買った人が一緒に買っているようです。なお、 &lt;strong&gt;国内正規代理店のものは3年保証&lt;/strong&gt; 、 &lt;strong&gt;並行輸入品は1年とか半年とかの保証&lt;/strong&gt; だったりするので、買う店は選んでください。&lt;br&gt;
内容物はSSDのみなので、バックアップツールやSATAをつなぐケーブル等は用意しないといけません。(当たり前ですよね)&lt;/p&gt;
&lt;h3 id="マシン"&gt;・マシン&lt;/h3&gt;
&lt;p&gt;Acer Aspire1410はCeleron SU2300という安いながらDual Coreのなかなかできる子です。Windows7の64bitを積んでいるのでメモリを4Gまで増やしてあります。&lt;br&gt;
ただし、リカバリディスクを作成するのに外付けDVDドライブを購入する必要があります。今回は一応リカバリディスクは作成しましたが実質的には使いませんでした。&lt;br&gt;
ちなみに、購入したのはこちらの
(Buffalo DVSM-PS58U2-WH)。小さくないしちゃちいです。初期不良つかまされましたがTSUKUMOがさくっと交換してくれたので無事使えております。&lt;/p&gt;
&lt;h3 id="sata-usbケーブル-or-25inchケース"&gt;・SATA-USBケーブル or 2.5inchケース&lt;/h3&gt;
&lt;p&gt;SSDにHDDの内容を移すために使いました。&lt;/p&gt;
&lt;h2 id="やり方"&gt;●やり方&lt;/h2&gt;
&lt;h3 id="0ssd交換のイメージをつかむ"&gt;0.SSD交換のイメージをつかむ&lt;/h3&gt;
&lt;p&gt;
の記事にある、
を見て交換の仕方をつかみます。&lt;br&gt;
っていうか、簡単です。開けてケーブル抜いてさすだけです。&lt;/p&gt;
&lt;h3 id="1ssdをsata-usbケーブルで接続する"&gt;1.SSDをSATA-USBケーブルで接続する&lt;/h3&gt;
&lt;p&gt;外付けドライブとしてSSDを認識させます。&lt;/p&gt;
&lt;h3 id="2hddの中身をssdにバックアップ"&gt;2．HDDの中身をSSDにバックアップ&lt;/h3&gt;
&lt;p&gt;こちらのサイトを参考にさせていただきました。&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;簡単に言うと、リカバリディスクではリカバリ領域をバックアップできないので、
を使ってHDDを丸ごとCloneしましょうということです。&lt;br&gt;
このソフトは、コピー元のドライブ(HDD)のサイズがコピー先(SSD)より大きくても、実際の使用量がコピー先のサイズを超えていなければ適当に調整してくれます。もちろん、自分でパーティションサイズを変えることも可能です。今回は元々のCドライブの領域以外は最小としました。&lt;br&gt;
詳細なやり方は
の記事などを参考にしてください。&lt;br&gt;
ちなみに、Partition Cloneは一つのパーティションしかコピーできず、Windows7はCドライブの領域以外にMBRに相当するパーティションが必要なため今回はあきらめました。&lt;/p&gt;
&lt;p&gt;ドライブのcloneにはおよそ30分程度かかりました。&lt;/p&gt;
&lt;h3 id="3hddをssdに入れ替える"&gt;3.HDDをSSDに入れ替える。&lt;/h3&gt;
&lt;p&gt;先ほどの
の通り、裏蓋を開けてHDDをSSDに交換します。ドライバーは普通の＋ドライバーでOKです。&lt;/p&gt;
&lt;h3 id="4起動する"&gt;4.起動する&lt;/h3&gt;
&lt;p&gt;普通にWindows７が起動します。しかも、今までの設定のまま。&lt;/p&gt;
&lt;h3 id="5ssd向けに設定を調整する"&gt;5.SSD向けに設定を調整する&lt;/h3&gt;
&lt;p&gt;通常、Windows7はSSDにインストールするとSSD用に最適な設定をしてくれるのですが、HDDのCloneのためいくつかの設定を変える必要があります。&lt;br&gt;
&lt;br&gt;
詳細はこちらのサイトを参考にしつつ、以下のことをしました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自動デフラグの停止&lt;/li&gt;
&lt;li&gt;Prefetch/Superfetchの停止&lt;/li&gt;
&lt;li&gt;WebキャッシュをRamdiskに
Ramdiskは
が楽ちんです。Firefoxのキャッシュもボタン一つで設定できます。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="ベンチマーク"&gt;●ベンチマーク&lt;/h2&gt;
&lt;p&gt;こんな感じです。ランダムwriteがちと遅いですが、読み込みは速いです。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2011-02-05-acer-aspire-1410wocrucial-realssd-c300niwai-fu-kedvdnasinihuan-zhuang-sita/ssd_hu_9c2acf54bfaa55ce.webp 320w, https://chezo.uno/post/2011-02-05-acer-aspire-1410wocrucial-realssd-c300niwai-fu-kedvdnasinihuan-zhuang-sita/ssd_hu_1518dd380bf3815d.webp 416w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2011-02-05-acer-aspire-1410wocrucial-realssd-c300niwai-fu-kedvdnasinihuan-zhuang-sita/ssd_hu_9c2acf54bfaa55ce.webp"
width="416"
height="375"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id="ちなみに"&gt;●ちなみに&lt;/h2&gt;
&lt;p&gt;リカバリ領域からのリカバリもばっちりできました。ただし、
のはリカバリでは無理でした。当たり前か。&lt;/p&gt;
&lt;p&gt;リカバリ後のベンチマーク結果はこちら。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2011-02-05-acer-aspire-1410wocrucial-realssd-c300niwai-fu-kedvdnasinihuan-zhuang-sita/ssd_recovery_hu_54a5918804a0ef18.webp 320w, https://chezo.uno/post/2011-02-05-acer-aspire-1410wocrucial-realssd-c300niwai-fu-kedvdnasinihuan-zhuang-sita/ssd_recovery_hu_7ed348a57cea4d9.webp 416w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2011-02-05-acer-aspire-1410wocrucial-realssd-c300niwai-fu-kedvdnasinihuan-zhuang-sita/ssd_recovery_hu_54a5918804a0ef18.webp"
width="416"
height="379"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id="結論"&gt;●結論&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;SSDいいよSSD。&lt;/strong&gt; 劇的に速くなるという感じではないけど、Windows7の起動後や休止状態からの復帰後の壁紙見えてから実際に安定して使えるまでの重い時間が皆無になりました。&lt;br&gt;
Windows7は休止から復帰が速くなったように見えて、実はログオン後に逐次読み込みしてるのが重くて嫌だったんですが、4Gのメモリでも素早く復帰します。&lt;br&gt;
1万円でこの効果は大きいですね。120GBの容量がほしかったり、ランダムwriteを気にする方はintelのssdにした方が幸せかもしれません。&lt;/p&gt;</description></item><item><title>無料でiPhoneの標準カレンダーにアカペラ/合唱カレンダーを表示する方法</title><link>https://chezo.uno/post/2010-12-17-wu-liao-deiphonenobiao-zhun-karendaniakapera-slash-he-chang-karendawobiao-shi-surufang-fa/</link><pubDate>Fri, 17 Dec 2010 14:00:21 -0800</pubDate><guid>https://chezo.uno/post/2010-12-17-wu-liao-deiphonenobiao-zhun-karendaniakapera-slash-he-chang-karendawobiao-shi-surufang-fa/</guid><description>&lt;p&gt;AppBankで話題になっていたこのカレンダーの記事を見て、気づきました。
もiPhoneでみられるじゃないか！&lt;/p&gt;
&lt;p&gt;
.&lt;/p&gt;
&lt;p&gt;やり方は簡単。先ほどの記事を参考にしながら、以下のURLを登録してくださればOKです。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;URLは、メールやらtwitterやらでiPhoneで取得できるようにすれば良いでしょう。勿論、このやり方だと書き込みはできないので、その点はお気をつけてください。&lt;/p&gt;
&lt;p&gt;この話自体は割と知られてると思っていた話なんですが、Googleカレンダーの公開カレンダーにもicalのアドレスがあったということを忘れていました。&lt;/p&gt;
&lt;p&gt;ちなみに、 &lt;strong&gt;カレンダーに予定を書き込んでくださる方を大募集中&lt;/strong&gt; です！&lt;br&gt;
合唱の演奏会やアカペラのライブの告知がしたい方は、google calendarを編集できるメールアドレスを用意して是非
までご連絡ください。&lt;/p&gt;
&lt;p&gt;カレンダーに登録すると何が嬉しいか？
が自動的に前日、当日に宣伝してくれます。&lt;br&gt;
詳細は、
の記事をどうぞ。&lt;/p&gt;</description></item><item><title>夜のヴェネツィア</title><link>https://chezo.uno/post/2010-11-13-ye-novuenetuia/</link><pubDate>Fri, 12 Nov 2010 22:11:52 -0800</pubDate><guid>https://chezo.uno/post/2010-11-13-ye-novuenetuia/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="https://lh6.ggpht.com/_fY4jPztBNxw/TN4m-vk9IWI/AAAAAAAAAkM/FBrhsjGXKUY/s400/DSCF6149.JPG" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;夜というか早朝のサンマルコ広場から見た景色です。なんというか、不思議な雰囲気が漂っていますね。この年は実は歴史的なアクアアルタがあった年となったようで、着く数日前には
だったようです。
なので、わざわざ腰くらいの位置に踏み台で通路を組み立てて、水に濡れないようにしていました。街中では若いお姉さんが、レインブーツを華麗にはきこなしていました。
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="https://lh4.ggpht.com/_fY4jPztBNxw/TN4qOkM3ExI/AAAAAAAAAkU/pJddtSTi1ec/s400/DSCF6024.JPG" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
最初は何か分からなかったのですが、朝になると潮位が上がり通路の必要性がようやくわかりました。わざわざそれを準備したり撤去したりする人がいるのを眺めて、街の人たちは慣れているのだと感心したものです。&lt;/p&gt;</description></item><item><title>instagr.amが面白い</title><link>https://chezo.uno/post/2010-11-07-instagr-dot-amgamian-bai-i/</link><pubDate>Sun, 07 Nov 2010 14:00:00 -0800</pubDate><guid>https://chezo.uno/post/2010-11-07-instagr-dot-amgamian-bai-i/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="https://lh4.ggpht.com/_fY4jPztBNxw/TNa7URH8ORI/AAAAAAAAAjc/ZRSFiOyC6vc/s400/DSCF6018.JPG" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;今更ですが、
をはじめました。内容はざっくり言うと写真共有のSNSでiPhone専用のAppが簡単にフィルターかけられて楽しいわけです。色々言及されていますが、Twitterやfacebook,flicker,Tumblrまで連動して投稿できるという。古いiPhoneってカメラもへぼいし、アプリは3Gでもサクサク動くので良い感じです。
なんとなくPicasaからinstagramへ写真を流す方法無いかなーとか思っています。iPhoneから流さないと行けないのが、最大の特徴でもあり悩ましい点でもあります。
結構、写真たまってきたんだよなー。
instagramはお出かけしないとあまり活躍しない気もしていますが、色々試してみようと思います。&lt;/p&gt;</description></item><item><title>MeCabをRuby 1.9.2 on Windows7(64bit版)で使う方法</title><link>https://chezo.uno/post/2010-10-13-mecabworuby-1-dot-9-2-on-windows7-64bitban-deshi-ufang-fa/</link><pubDate>Wed, 13 Oct 2010 14:59:53 -0700</pubDate><guid>https://chezo.uno/post/2010-10-13-mecabworuby-1-dot-9-2-on-windows7-64bitban-deshi-ufang-fa/</guid><description>&lt;p&gt;Windows7の開発環境を構築するに当たって、なんとなくRubyを1.8.7から1.9.2にしてみました。&lt;br&gt;
そしたら意外とx64でMeCabを使えるようになるまでにハマったのでメモしておきます。&lt;br&gt;
Makefileとかよく分からないなりに頑張ったのですが、かなりいい加減だと思います。&lt;/p&gt;
&lt;p&gt;方針としては、libmecab.dllをx64環境でコンパイルしなおして、次のサイトを参考にしてmecab.rbを作ります。(ついでに、元々の
で実装されていたsparse_tonode(str)も使えるようにさせていただきました。ありがとうございます！ )&lt;br&gt;
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Windows版のMeCabをとりあえず入れておく。&lt;/li&gt;
&lt;li&gt;MeCabのソースを入手し、展開する。&lt;/li&gt;
&lt;li&gt;src以下にある、mecab.h, feaure_index.cpp, wrier.cpp, Makefile.msvc.inを修正する&lt;br&gt;
mecab.h&lt;br&gt;
・254行目　&lt;code&gt;#ifndef SIWG&lt;/code&gt; → &lt;code&gt;#ifndef SWIG&lt;/code&gt;&lt;br&gt;
・257行目 &lt;code&gt;#endif&lt;/code&gt; を 260行目の&lt;code&gt;};&lt;/code&gt;の前の行に挿入 feaure_index.cpp&lt;br&gt;
・311行目 &lt;code&gt;case 't': os_ \&amp;lt;\&amp;lt; (size_t)path-\&amp;gt;rnode-\&amp;gt;char_type; break;&lt;/code&gt;&lt;br&gt;
→ &lt;code&gt;case 't': os_ \&amp;lt;\&amp;lt; (unsigned int)path-\&amp;gt;rnode-\&amp;gt;char_type; break;&lt;/code&gt; wrier.cpp&lt;br&gt;
・236行目 &lt;code&gt;case 'L': \*os \&amp;lt;\&amp;lt; std::strlen(sentence); break;&lt;/code&gt;&lt;br&gt;
→ &lt;code&gt;case 'L': \*os \&amp;lt;\&amp;lt; (unsigned int)std::strlen(sentence); break;&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Makefile.msvc.in → Makefile.msvcにファイル名変更&lt;br&gt;
・5行目 &lt;code&gt;/MACHINE:X86&lt;/code&gt; → &lt;code&gt;/MACHINE:X64&lt;/code&gt;&lt;br&gt;
・7行目、8行目&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;DDIC_VERSION=@DIC_VERSION@&lt;/code&gt; → - &lt;code&gt;DDIC_VERSION=102&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DVERSION=”\”@VERSION@”\”&amp;quot;&lt;/code&gt; → - &lt;code&gt;DVERSION=“\”0.98″\”&amp;quot;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;2011/01/11追記:&lt;br&gt;
Visual Studio 2010ではcommon.hに #include &lt;iterator&gt;を追加する必要があるそうです。&lt;br&gt;
詳しくは&lt;a href="http://blogs.msdn.com/b/vcblog/archive/2009/05/25/stl-breaking-changes-in-visual-studio-2010-beta-1.aspx"&gt;こちら&lt;/a&gt;を参照(Thanks to id:&lt;a href="http://b.hatena.ne.jp/mayuki/"&gt;mayuki&lt;/a&gt;さん！)&lt;/iterator&gt;&lt;/p&gt;
&lt;ol start="4"&gt;
&lt;li&gt;
&lt;p&gt;Visual Studio 2008 x64 Cross Tool コマンドプロンプトでnmake&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;できたlibmecab.dllをlibmecab64.dllなど適当な名前にして、libmecab.dllと同じフォルダに移動&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
と
を参考にしてmecab.rbを作成&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-rb" data-lang="rb"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# -*- coding: windows-31j -*-&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;dl/import&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;dl/struct&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;module&lt;/span&gt; &lt;span class="nn"&gt;MecabFunc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kp"&gt;extend&lt;/span&gt; &lt;span class="no"&gt;DL&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Importer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;dlload&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;libmecab64.dllの場所&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;typealias&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;size_t&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;unsigned long&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;extern&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;mecab_t\* mecab_new2(const char\*)&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;extern&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;const char\* mecab_version()&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;extern&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;const char\* mecab_sparse_tostr(mecab_t\*, const char\*)&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;extern&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;const char\* mecab_strerror(mecab_t\*)&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;extern&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;void mecab_destroy(mecab_t \*)&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;module&lt;/span&gt; &lt;span class="nn"&gt;MecabLib&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Mecab&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kp"&gt;include&lt;/span&gt; &lt;span class="no"&gt;MecabFunc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="vi"&gt;@mecab&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kp"&gt;nil&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;initialize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="vi"&gt;@mecab&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="no"&gt;MecabFunc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mecab_new2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;version&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="no"&gt;MecabFunc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mecab_version&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;strerror&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="no"&gt;MecabFunc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mecab_strerror&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="vi"&gt;@mecab&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;sparse_tostr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="no"&gt;MecabFunc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mecab_sparse_tostr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="vi"&gt;@mecab&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;sparse_tonode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;#http://nlp.sfc.keio.ac.jp/~aihara/nlp.html でのaihara氏の実装です。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;prev&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kp"&gt;nil&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;head&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="no"&gt;Node&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;new&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;tmp_str&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;sparse_tostr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;tmp_str&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;each&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;buf&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="no"&gt;Node&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;prev&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;prev!&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kp"&gt;nil&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;prev&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;next&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;buf&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;prev&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;buf&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;head&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;next&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="kp"&gt;nil&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;head&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;next&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;buf&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;head&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;destroy&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="no"&gt;MecabFunc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mecab_destroy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="vi"&gt;@mecab&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Node&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="vi"&gt;@prev&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kp"&gt;nil&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="vi"&gt;@next&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kp"&gt;nil&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="vi"&gt;@surface&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kp"&gt;nil&lt;/span&gt; &lt;span class="c1"&gt;#形態素の表記&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="vi"&gt;@pos&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kp"&gt;nil&lt;/span&gt; &lt;span class="c1"&gt;#品詞&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="vi"&gt;@root&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kp"&gt;nil&lt;/span&gt; &lt;span class="c1"&gt;#原形&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="vi"&gt;@reading&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kp"&gt;nil&lt;/span&gt; &lt;span class="c1"&gt;#読み&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="vi"&gt;@pronunciation&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kp"&gt;nil&lt;/span&gt; &lt;span class="c1"&gt;#発音&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kp"&gt;attr_accessor&lt;/span&gt; &lt;span class="ss"&gt;:prev&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="ss"&gt;:next&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="ss"&gt;:surface&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="ss"&gt;:pos&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="ss"&gt;:root&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="ss"&gt;:reading&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="ss"&gt;:pronunciation&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;initialize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kp"&gt;nil&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;prev&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kp"&gt;nil&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="vi"&gt;@prev&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;prev&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="kp"&gt;nil&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;EOS&amp;#34;&lt;/span&gt; &lt;span class="c1"&gt;#EOSの時&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="vi"&gt;@surface&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;line&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="vi"&gt;@pos&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;EOS&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="vi"&gt;@root&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;EOS&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="vi"&gt;@reading&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;EOS&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="vi"&gt;@pronunciation&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;EOS&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="c1"&gt;#それ以外&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;linels&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="se"&gt;\t&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="vi"&gt;@surface&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;linels&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;fetls&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;linels&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;].&lt;/span&gt;&lt;span class="n"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;,&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="vi"&gt;@pos&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;fetls&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="o"&gt;..&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="o"&gt;].&lt;/span&gt;&lt;span class="n"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;,&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;fetls&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="o"&gt;]==&lt;/span&gt;&lt;span class="kp"&gt;nil&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="vi"&gt;@root&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="vi"&gt;@root&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;fetls&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;fetls&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="o"&gt;]==&lt;/span&gt;&lt;span class="kp"&gt;nil&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="vi"&gt;@reading&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="vi"&gt;@reading&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;fetls&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;fetls&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="o"&gt;]==&lt;/span&gt;&lt;span class="kp"&gt;nil&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="vi"&gt;@pronunciation&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="vi"&gt;@pronunciation&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;fetls&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;hasNext&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="vi"&gt;@next&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="kp"&gt;nil&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kp"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kp"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;mecab.rbの名前をmecab64.rbとでもつけます。実際に呼ぶときは、RUBY_VERSIONで切り替えたりしています。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-rb" data-lang="rb"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# -*- coding: windows-31j -*-&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;require&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;mecab64&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;MecabLib&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Mecab&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;version&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sparse_tostr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;本日は晴天なり。&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;node&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sparse_tonode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;本日は晴天なり。&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;hasNext&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;node&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;next&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt; &lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;surface&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34; : &amp;#34;&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pos&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34; : &amp;#34;&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;root&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34; : &amp;#34;&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;reading&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34; : &amp;#34;&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pronunciation&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;とすると、次のような結果が出るはずです。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;0.98&lt;br&gt;
本日 名詞,副詞可能,*,*,*,*,本日,ホンジツ,ホンジツ&lt;br&gt;
は 助詞,係助詞,*,*,*,*,は,ハ,ワ&lt;br&gt;
晴天 名詞,一般,*,*,*,*,晴天,セイテン,セイテン&lt;br&gt;
なり 助動詞,*,*,*,文語・ナリ,基本形,なり,ナリ,ナリ&lt;br&gt;
。 記号,句点,*,*,*,*,。,。,。&lt;br&gt;
EOS&lt;br&gt;
本日 : 名詞,副詞可能,*,*,*,* : 本日 : ホンジツ : ホンジツ&lt;br&gt;
は : 助詞,係助詞,*,*,*,* : は : ハ : ワ&lt;br&gt;
晴天 : 名詞,一般,*,*,*,* : 晴天 : セイテン : セイテン&lt;br&gt;
なり : 助動詞,*,*,*,文語・ナリ,基本形 : なり : ナリ : ナリ&lt;br&gt;
。 : 記号,句点,*,*,*,* : 。 : 。 : 。&lt;br&gt;
EOS : EOS : EOS : EOS : EOS&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>PRESS START 2010でゲーム音楽演奏会情報をゲットした</title><link>https://chezo.uno/post/2010-09-11-press-start-2010degemuyin-le-yan-zou-hui-qing-bao-wogetutosita/</link><pubDate>Sat, 11 Sep 2010 14:59:48 -0700</pubDate><guid>https://chezo.uno/post/2010-09-11-press-start-2010degemuyin-le-yan-zou-hui-qing-bao-wogetutosita/</guid><description>&lt;p&gt;ゲーム音楽の演奏会情報フリーペーパー2083なるものを
でいただきました。&lt;/p&gt;
&lt;p&gt;どうも調べてみると、ゲーム音楽情報のポータルサイト
というサイトがあったということを知りました。2009年10月に立ち上がったところみたいで、&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;ファミコンが誕生した1983年から100年後の2083年には、&lt;br&gt;
ゲーム音楽が現在のクラシック音楽のように、&lt;br&gt;
たくさんの人に認知され、演奏され、&lt;br&gt;
優秀なアーティストが集まり、発展していき、そして、文化を変える。&lt;/p&gt;
&lt;p&gt;というコンセプトを元に、&lt;br&gt;
ゲーム音楽の演奏情報ポータルサイト「2083WEB」というメディアと&lt;br&gt;
という楽団を&lt;br&gt;
立ち上げました。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;というコンセプトのようです。&lt;/p&gt;
&lt;p&gt;最近、ゲーム音楽を中心に演奏するアマチュア団体も増えてきているみたいですし、素晴らしい取り組みだと思います。 ４STAR ORCHESTRAも楽しみですねー。演奏会も東京だけでなく、神奈川、大阪、兵庫、宮城、千葉と色々広がっているようです。&lt;/p&gt;
&lt;p&gt;本当は演奏会情報をこちらに書こうと思ったのですが、ポータルがあるならそれで十分かもという気がしてきました(笑)&lt;/p&gt;
&lt;p&gt;しかし、ゲーム音楽でこのようなポータルサイトができるのに、何故合唱ではこういうサイトがないのでしょうか。(いや色々あるかもしれませんが、ここまでまとまっていない感があるのです。。。)&lt;br&gt;
せっかく連盟まであるのになー。&lt;/p&gt;</description></item><item><title>PRESS START 2010行ってきた</title><link>https://chezo.uno/post/2010-09-11-press-start-2010xing-tutekita/</link><pubDate>Sat, 11 Sep 2010 14:59:42 -0700</pubDate><guid>https://chezo.uno/post/2010-09-11-press-start-2010xing-tutekita/</guid><description>&lt;p&gt;本日、
に行ってまいりました。&lt;br&gt;
(写真はプログラム、この演奏会にあわせて発売した
、フリーペーパー2083)&lt;br&gt;
&lt;strong&gt;20100912追記&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;CDはどうやら、そんなに数生産しないのでしょうか？欲しい方は早めに買った方がよいかもしれません。
専売のようです。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;一言で言うと非常に良かったです！素晴らしい演奏でした。&lt;/p&gt;
&lt;p&gt;特に良かったのが、クロノ・トリガー/クロノ・クロスメドレー。去年も思いましたが、一曲目の気合いの入れ具合が違うのがこの演奏会の特徴なのでしょうか。カエルのテーマや魔王決戦とかは鳥肌ものでした。そして、トリガーとクロスでは若干パーカッションの編成が違うのか雰囲気も少し違っていて楽しめました。最後のChrono Cross-時の傷跡-でしめるあたりがわかってらっしゃる。トリガーのころのメロディを使って終えるわけですね。素晴らしい編曲！&lt;br&gt;
ちなみに、メドレーの詳細は次の通りでした。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;予感/クロノ・トリガー/風の憧憬/カエルのテーマ/魔王決戦/エピローグ-親しき仲間へ-/&lt;br&gt;
凍てついた炎/マブーレホーム/Chrono Cross-時の傷跡-&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;後は、 &lt;strong&gt;「ファミコンここまで出てるのにメドレー 初級者編」&lt;/strong&gt; が非常に楽しめました。やはり、にわかな僕にはタイトルしか知らないものも多かったのですが、ファイアーエムブレムとドクターマリオはメロディの第一音くらいからわかりました。基本的にメドレーと言いつつも、毎回切ってつなげているだけなので最初にパーカッションがリズムを整えるときのリズム感と、使用される楽器の編成で分かるんですよね。特にスネアで入ってきたファイアーエムブレムはこれしかない！と思っていました。もしかしたら、会場の方はゲーム大好き原曲大好きな方が多いけど、オケ編曲されるのには慣れていない方が多かったのかもしれませんね。でも、分かったら(分からなくても)手拍子してくださいね、というのは良いですね。盛り上がります。鬼ヶ島の反応の少なさは少し笑えましたが。&lt;/p&gt;
&lt;p&gt;今年の演奏は神奈川フィルだったのでとても良かったです(昨年はゲームに対する愛が少なかったように感じたのですが)。ただ、アレンジャーの個性が強い曲がちらほら見受けられたかなー、という印象もありました。古代祐三氏のゼルダの伝説(スマブラ版は
)は、当初3分の曲だと思って書いてしまった幻のバージョンを下敷きにされているそうで、とても楽しみにしていました。ですが一カ所、ゲームの2分版にはないメロディの調が変わって変奏するところの和音に違和感を感じてしまい、んーなんだかなーと思ってしまいました。原曲や色々なオケアレンジに慣れてしまったからかなぁ。&lt;br&gt;
あと、ロックマン2のワイリーステージ1のアレンジは、おっくせんまんの影響が強すぎたためか、Aメロの部分のメロディが弦であっさり背景的に流されてしまったのが物足りなかったです。&lt;/p&gt;
&lt;p&gt;しかし、今回は &lt;strong&gt;「ワイルドアームズ セカンドイグニッション」&lt;/strong&gt; のメドレーでまさかの「口笛ソロ」を聞いてしまいました。演奏していたのは
氏なのですが、どう考えても楽器です。ここまでビブラートや音色をコントロールできるんですもの。楽器です。それを駆使するなんてたまりませんでした。&lt;br&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/zurrh4ZBsyY?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;朧村正の三味線も楽しくてしかたありませんでした。弦とかと違ってリズムを刻んでいくのが、凄く全面に押し出されていてかっこよかったです。そして、尺八もあんなに近くで見られたのは感激でした。ビブラートするときは首を振るんですね。&lt;/p&gt;
&lt;p&gt;そして、リズム天国の忍者は相変わらず大盛り上がり。特に今年も行った会場の人から選んでの対決は、桜井さんのまさかの素手宣言に驚かされたのもつかの間、さらに驚きの連続が。まさか、手だけでなく、足踏みや口笛、正拳付き＋かけ声、オス！のかけ声などやりたい放題(笑)そんなお茶目な桜井さんが大好きだー！&lt;/p&gt;
&lt;p&gt;MOTHERメドレーは素晴らしいの一言です。やはり、元の曲が良いからなんでしょうね。ボーカルのメロディー・チューバックさんは、EIGHT MELODIESの歌詞をうっかりミスってしまって舌出していましたが(笑)杉並児童合唱団は安心の実力を発揮していただきました。ありがとう！&lt;/p&gt;
&lt;p&gt;なお、アンコールはメロディー・チューバックさんによる
、
のデモ(クロノトリガーの世界変革の時/ロマサガ3の四魔貴族バトル1)、そしてRomancing SaGa -Minstrel Song-を演奏していました。特にロマサガはメインテーマが
本人によるピアノ演奏付きというサプライズも！いやぁ、堪能させていただきました。&lt;/p&gt;
&lt;p&gt;というわけで、今年は非常に満喫させていただきました。流石5th Anniversaryですね。&lt;/p&gt;
&lt;p&gt;ゲーム音楽の演奏会情報フリーペーパー2083なるものが一緒に付いていたのですが、そこに書かれていた演奏会情報は長くなってしまったので、
で書きたいと思います。&lt;/p&gt;</description></item><item><title>豚組行ってきました</title><link>https://chezo.uno/post/2010-09-04-tun-zu-xing-tutekimasita/</link><pubDate>Sat, 04 Sep 2010 05:09:12 -0700</pubDate><guid>https://chezo.uno/post/2010-09-04-tun-zu-xing-tutekimasita/</guid><description>&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;前々から噂には聞いていたのですが、一度も行っていなかった西麻布の
に、
さんに連れられて夫婦で行ってきました。&lt;/p&gt;
&lt;p&gt;いやぁ、ご飯を食べて幸せな気持ちにさせてくれるお店というのは久々です。&lt;br&gt;
トップの写真の3cmの琉香豚も柔らかくて余裕でかみきれるし、ヒレカツも柔らかくてんまかったです。栄晶豚(一番下の写真)というほとんど白身の豚も食べたのですが、いやー脂身ってあそこまで美味しくなるんですね。そこまで重たくなくプルっプルでした。&lt;br&gt;
あと、なんでも、料理長が元々フレンチの方らしく、ラタトゥイユも出てきたのですがそれの味がよくしみていてたまりませんでした。&lt;br&gt;
お店の方々の気遣いもあたたかく、また、是非行きたいお店です。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>オオムラサキの羽化をCanon iVIS HF M31で撮影してみた</title><link>https://chezo.uno/post/2010-08-22-oomurasakinoyu-hua-wocanon-ivis-hf-m31decuo-ying-sitemita/</link><pubDate>Sun, 22 Aug 2010 14:59:31 -0700</pubDate><guid>https://chezo.uno/post/2010-08-22-oomurasakinoyu-hua-wocanon-ivis-hf-m31decuo-ying-sitemita/</guid><description>&lt;p&gt;
ので、それを使って動画をとってみました。
なかなか写真と違ってどういうストーリーでとるのかとかを考えないといけないのが難しいところです。&lt;/p&gt;
&lt;p&gt;北杜市にある
という所で撮影したのがこちらの動画。&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/yhAWBACKLM4?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;撮影しながら思ったことが、撮るのにかなり集中しないといけないため、自分の目で見ることがなかなか難しいこと。後、個人的にはオオムラサキが国蝶であることも妻に教えてもらうまでに知らなかったのですが、実際の羽化に立ち会えるとなったらとてもワクワクしましたね。子どもにもこういう体験が大事なんだなぁと思う一方、デジタル教科書なんかで「映像で見せればいい」と言う人は、それはベターな手段ではあるけどベストではないと気づいているのかな？と思いました。やはり、実際に自分で体験したことというのは記憶に強く焼き付くしモチベーションも高まるというものです。そうしたバーチャルでは得難い体験（バーチャルではというよりも、そのイベントに立ち会えたという感覚が大事なのかも）というのは、大事になっていくのでしょう。
10年ほど前に、インターネットが発展するときにどんどん部屋にこもるんじゃないか、という危惧がなされていた記憶があるのですが、そのとき「皆が外に出たくなるようなインターネットになるにはどうしたらいいだろうか？」と思っていたら、mixiやらTwitterやらで外に出たくなるインターネットの環境というのはあっという間に広がったのに驚きを隠せないです。&lt;/p&gt;
&lt;p&gt;しかし、今時は限定公開などでフルHD動画を共有すれば、実家にいる祖父母に孫の顔を見せるのは一番楽なのかも、とか思いました。&lt;/p&gt;</description></item><item><title>「学校教育の情報化に関する懇談会」 第8回のメモ</title><link>https://chezo.uno/post/2010-07-30-xue-xiao-jiao-yu-noqing-bao-hua-niguan-suruken-tan-hui-di-8hui-nomemo/</link><pubDate>Fri, 30 Jul 2010 14:59:26 -0700</pubDate><guid>https://chezo.uno/post/2010-07-30-xue-xiao-jiao-yu-noqing-bao-hua-niguan-suruken-tan-hui-di-8hui-nomemo/</guid><description>&lt;p&gt;先日7/28に開催された
の聞きながら書いたメモです。
はこちらにありますので、きちんとしたものはそちらを参照ください。&lt;/p&gt;
&lt;p&gt;今回の議論の目的は、修正された
を確認、議論することです。
ビジョン骨子自体はWeb中継が始まってから15分後くらいにひっそりと公開されたので、まだきちんと目を通していません(早いうちに確認したいです)。
が用意されていますのでそちらも参照ください。&lt;/p&gt;
&lt;p&gt;個人的に重要と思ったものを、メモから抜粋してきます。&lt;br&gt;
一言でそれぞれまとめると、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;日常的な経験から協働的な学びを(玉置委員)&lt;/li&gt;
&lt;li&gt;グラフィカルなCGなどパッシブなわかりやすいコンテンツではなく、抽象化・モデル化能力を育てる訓練を(新井委員)&lt;/li&gt;
&lt;li&gt;情報を仮説を持って能動的に収集できるようにすべき(村上委員)
という感じでしょうか。日常からの協働的学びと能動的な情報収集、情報処理能力という点は非常に共感できます。&lt;br&gt;
○玉置委員&lt;br&gt;
協働的な学びを日常から子どもたちが経験することが大事では？&lt;br&gt;
日常生活のはてなを書き込んで、子ども同士で議論・解決をする。子供版熟議カケアイ、美術作品の見せ合いなど&lt;br&gt;
日常的に情報端末を使い、学校の中できちんとコミュニケーションをできるようにすることで、21世紀にふさわしい学びができるのではないか。&lt;br&gt;
活用が広がるような例を。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;○新井委員&lt;br&gt;
「わかりやすい」に関する懸念。&lt;br&gt;
デジタルコンテンツは、「電磁場、惑星など観測・実験などで確認できないものを、見ることが出来るようになる。数式よりわかりやすくなる」という一般的な考えがあると思うが、これは逆ではないか。&lt;br&gt;
惑星の大きさを物差しで測るのではなく、モデルと数式でこうなっているのではないか？と考えるのが骨である。理科の考え方は、少量のデータから抽象的なモデルを作ることが重要。パッシブなデジタルコンテンツでは代替は不可能、むしろ悪化させる。&lt;br&gt;
またデジタルを活用する方法として、データを班ごとではなく、クラス全体で共有するというような、協働学習のベースとして情報機器を活用するべき。&lt;/p&gt;
&lt;p&gt;○村上委員&lt;br&gt;
今の学校でデジタル黒板などを使ったときのイメージが、わかりやすい以外が見えないことに懸念。&lt;br&gt;
情報化がもたらしたものを教育でどう使うか？は書かれているが、膨大な情報を能動的に仮説を持って取りに行かないと何の意味がない。プロダクティブに仮説を持って取りに行こうという子どもたちが出てくる。&lt;br&gt;
わかりやすい授業をやることで、こうした環境で生き残れる子どもができるのか。&lt;br&gt;
ゆとりで足りなくなったコンテンツを増やしても、情報を仮説を持って取りに行けないと意味がない。&lt;/p&gt;
&lt;p&gt;以下、聴きながらとったメモです。&lt;/p&gt;
&lt;p&gt;2010年7月28日(水)&lt;br&gt;
学校教育の情報化に関する懇談会 第8回&lt;/p&gt;</description></item><item><title>「デジタル教科書教材協議会設立シンポジウム」参加しました</title><link>https://chezo.uno/post/2010-07-30-dezitarujiao-ke-shu-jiao-cai-xie-yi-hui-she-li-sinpoziumu-can-jia-simasita/</link><pubDate>Fri, 30 Jul 2010 14:59:20 -0700</pubDate><guid>https://chezo.uno/post/2010-07-30-dezitarujiao-ke-shu-jiao-cai-xie-yi-hui-she-li-sinpoziumu-can-jia-simasita/</guid><description>&lt;p&gt;さる7/27に、デジタル教科書や教材を推進する民間中心の団体、
が発足しました。&lt;br&gt;
シンポジウムの内容は、各種記事がまとめていますし、内容の要約は、片山さんが
にまとめてくださっていますのでご参考にしてください。&lt;br&gt;
Usreamは前半が
、後半(孫氏講演から)が
にあります。&lt;/p&gt;
&lt;p&gt;会場には600人超、ニコ動・Ustなどネット視聴は1万人以上(翌日の文科省の懇談会で報告されています)というほどの熱気でした。ソフトバンク孫氏の終始熱いプレゼンに会場が魅了されていたようにも思います。また、藤原氏の軽妙なトークも会場が湧きました。デジタル教科書に対する期待が伝わってきたと思います。&lt;br&gt;
一方で、先にものを作ってしまえ、実証実験してしまえ、という姿勢は、子ども達に何を教育すべきなのか、それは本当にデジタル教科書・教材が答えなのか？というところが、孫氏、藤原以外ほとんど触れられておらず残念でした。(孫氏にしても、子ども達に感動を、という曖昧な主張をされていたのみで、現場の先生には「視聴覚教室や電子黒板でいいじゃん」と反論されそうだと思いました。)&lt;br&gt;
藤原氏が「DSなどICTを活用したドリル学習による学力向上は証明されている」と述べたのに対し、小宮山氏が「私は本当に証明されているとは思わない。後でご議論をさせてください」というやりとりが、会のバランスがとれているという意味で健全な議論ができるのではないかと感じました。&lt;/p&gt;
&lt;p&gt;登壇者の主張をまとめると、下記のような印象でした。&lt;/p&gt;
&lt;p&gt;○三菱総研 小宮山氏&lt;br&gt;
知識が爆発的に増加・細分化し、絶えず変わっていく中で先生もついて行けない。&lt;br&gt;
これら全ての問題がITで解決できるとは思わないが、答えの相当を担うだろう。&lt;br&gt;
スピード感を持って、どんどん良いものを実証実験で検証を行っていくべき。（ラピッドプロトタイピング指向）&lt;/p&gt;
&lt;p&gt;○慶応大 中村伊知哉氏&lt;br&gt;
現状のデジタル教科書の状況、他国の状況のよいまとめをなさっていました。&lt;/p&gt;
&lt;p&gt;○マイクロソフト 樋口氏 (なんとかビジネスモデルを確立したい)&lt;br&gt;
今の日本はやばい。&lt;br&gt;
東芝CM1でデジタル教科書のデモ実施。&lt;br&gt;
海外で展開できるビジネスモデルを確立したい。&lt;/p&gt;
&lt;p&gt;○ソフトバンク孫氏 (強いリーダーシップを発揮するための二元論的論理展開)&lt;br&gt;
30年後の日本が生き残るためのビジョン展開として、知的レベルの向上を提案。&lt;br&gt;
結果の平等を批判。国内で格差がなくなっても、国際的な格差が生まれる。&lt;br&gt;
30年後の企業人が求められるもの＝リーダーシップ、競争意識、知的能力、グローバル交渉力&lt;br&gt;
プレゼン能力、思考力、検索能力、分析力を学校教育で教えるべき。&lt;br&gt;
丸付けなどITの得意なところはITに、人間の先生がやるべきところは先生に。&lt;/p&gt;
&lt;p&gt;○学芸大藤原氏&lt;br&gt;
協働的学びの模擬授業の実践と、それに対してクラス全員の意見を集約するのに情報機器が必要だという主張。&lt;br&gt;
ドリル学習などの反復学習は、機械なら99回間違えても100回目に正解すればほめてくれる。人間だとこうはいかない。(これは教員を馬鹿にしているとの批判も考えられる)&lt;br&gt;
校長がダメだから、多くの校長を変えろ。&lt;/p&gt;
&lt;p&gt;というわけで、細かくメモったものをまとめもせずにはっつけます。備忘録代わりです。&lt;/p&gt;
&lt;p&gt;2010/07/27 13:30-16:10&lt;br&gt;
デジタル教科書教材協議会設立シンポジウム&lt;br&gt;
＠明治記念館　曙の間&lt;/p&gt;</description></item><item><title> 1TEXT file → ページ毎管理 → 1TEXT fileとしてダウンロード可</title><link>https://chezo.uno/post/2010-07-20-1text-file-pezimei-guan-li-1text-filetositedaunrodoke/</link><pubDate>Tue, 20 Jul 2010 14:59:18 -0700</pubDate><guid>https://chezo.uno/post/2010-07-20-1text-file-pezimei-guan-li-1text-filetositedaunrodoke/</guid><description>&lt;p&gt;・著作権管理システム&lt;br&gt;
・公開系システム&lt;/p&gt;
&lt;p&gt;まとめ&lt;br&gt;
1．コンテンツとフレームワークの切り離しを実施&lt;br&gt;
→教育現場はどう受け止めるか？&lt;br&gt;
2．多様な利用の可能性&lt;br&gt;
実験書、実験ガイドブック、種々のワンストップサービス&lt;br&gt;
3．著作権処理の困難(日本国民の活動に不利益)&lt;br&gt;
4．オリジナリティとは何か？(この活動はどこにも保護されていない)&lt;br&gt;
5．大学の研究？社会へのサービス？→大学の社会貢献&lt;br&gt;
社会貢献にお金を割いていると、教育や研究にお金を避けなくなってくる。誰が負担をするのか？大学が事業として手を伸ばせないか？&lt;br&gt;
6．双方向性、協調作業をどう可能にするか？&lt;br&gt;
7．「理想の教科書」はコンテンツか？システム化？&lt;br&gt;
・教師がtextB,Cを持つ学生を同時にまとめて教える&lt;br&gt;
・textAを使うもの同士が協調作業できる&lt;br&gt;
→これらを包括したプラットフォームがほしい&lt;br&gt;
利用者の様々な工夫を生かせる、コンテンツが載せられるプラットフォームが欲しい&lt;/p&gt;
&lt;p&gt;Q.UT-eTEXTはコンテンツとフレームワークが分かれていないように見えるが、再利用しやすいシステムになっているのか？&lt;br&gt;
A.元の材料となるファイルは独立して存在しているので、そこから変換すれば大丈夫。&lt;br&gt;
Q.プラチナ構想に乗るのか？乗せるべきではないのか？&lt;br&gt;
A.18歳に自然に分かるものであれば乗せられる。ただし、今は一方通行にしかなっていないので、双方向なものフィードバックを出来るようにしなければならない。「私が知りたい物質科学は違うんだ」という声こそ重要。それをシステムに乗せることが出来れば、プラチナ構想に応えられる。&lt;/p&gt;
&lt;p&gt;○UT-eTEXTをささえる　東大　大瀧友里奈&lt;br&gt;
著作権の問題をどう考えるか&lt;/p&gt;
&lt;p&gt;東京大学での実績&lt;br&gt;
UTOCW(東京大学オープンコースウェア)&lt;br&gt;
他人の著作物については、全て許諾をとっている(2005年から)&lt;/p&gt;
&lt;p&gt;講義資料入手&lt;br&gt;
↓&lt;br&gt;
図版・画像等の出典確認作業およびリスト化&lt;br&gt;
↓　　　　　　　　　　　　　　　　　↓&lt;br&gt;
オリジナル　　　　　　　　　　　　　引用&lt;br&gt;
↓　　　　　↓　　　　　　　　　　　↓&lt;br&gt;
全オリジナル　自著だが出版社で加工　　　↓&lt;br&gt;
……&lt;/p&gt;
&lt;p&gt;著作権に問題ないように、差し替え、許諾を得るなどする&lt;/p&gt;
&lt;p&gt;・Wikipediaから著作権フリーの画像を探す&lt;br&gt;
・書籍、論文は著作者に問い合わせる&lt;br&gt;
・ウェブ掲載物も同様&lt;br&gt;
・許諾は講義のよって大きく異なる&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;90分あたり0〜170件&lt;/li&gt;
&lt;li&gt;生命科学、都市科学、情報科学は多い傾向&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;対応を判断しないといけない場合&lt;br&gt;
・家電や車の写真は誰の著作物なのか？&lt;br&gt;
・建築物、工業製品はどこに許諾をとるのか？&lt;br&gt;
・連絡先が不明の場合(出版社倒産、著作権者不明など)&lt;/p&gt;
&lt;p&gt;これまでの課題&lt;br&gt;
・膨大な作業量&lt;br&gt;
・時間がかかる→既に過去の話題となってしまう&lt;br&gt;
・情報の共有化が鍵→重複、漏れを避ける&lt;/p&gt;
&lt;p&gt;著作権管理システムの構築&lt;br&gt;
・コンテンツ管理と連動&lt;br&gt;
・データベース化し、ノウハウを蓄積&lt;br&gt;
連絡先 or 著作物を利用不可能&lt;/p&gt;
&lt;p&gt;今後の課題&lt;br&gt;
・資料作成時点からの改善&lt;br&gt;
・許諾を得やすい出典のリスト化&lt;/p&gt;
&lt;p&gt;Q.有料化はできないのか？&lt;br&gt;
A.したいが難しい。国立大学法人がどこまでそれをやるのが許されるのかが分か&lt;br&gt;
らない&lt;br&gt;
Q.著作権が来年切れる、などあるのか？&lt;br&gt;
A.ある。そういうものを管理するために、検索が出来るデータベースになってい&lt;br&gt;
るのが重要。&lt;/p&gt;
&lt;p&gt;○教科書の電子化が拓く可能性　神奈川大学　何森仁先生&lt;br&gt;
資料参照&lt;/p&gt;
&lt;p&gt;○教材を電子化して教育現場を変える」　東京大学　三宅なほみ先生&lt;br&gt;
中京大学でIT基盤を使った、協調学習を研究していた。&lt;/p&gt;
&lt;p&gt;電子化したかった一番の理由は、一つの章を書くのに最低3つの資料が出てく&lt;br&gt;
る。教科書を出版するときは短いものを捨ててしまう。&lt;br&gt;
一つのひな形として電子的にとっておける、ニーズに合わせた記述ができる、こ&lt;br&gt;
れが電子化の一つの意義ではないか。&lt;/p&gt;
&lt;p&gt;教材電子化の目的は？&lt;br&gt;
・今できていなくてやりたいことは？&lt;/p&gt;
&lt;p&gt;教育をどうしたいのか&lt;br&gt;
・教育の質を上げたい←教員視点&lt;br&gt;
・やり甲斐のある勉強をしたい←生徒視点&lt;br&gt;
レベルの低いところから高いところまで対応する&lt;/p&gt;
&lt;p&gt;教材電子化ビジョン&lt;br&gt;
・学習者にとってのメリット&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;教材を学習者自身が編集して「自分なりに納得」し&lt;/li&gt;
&lt;li&gt;他人の納得と比較吟味して&lt;/li&gt;
&lt;li&gt;適用範囲を段々拡げ、その記録を取っておく&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;・教員にとって&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同じ教材を教員が試して体験を共有し、&lt;/li&gt;
&lt;li&gt;どうしたら教育の質が上がるのかを相互吟味して&lt;/li&gt;
&lt;li&gt;「教育の質向上」コミュニティを活性化する&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;電子化すればコミュニティが出来ていく&lt;/p&gt;
&lt;p&gt;教育をどうしたいのか？&lt;br&gt;
・教育の質を上げたい&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;楽しく、真剣に学んで欲しい&lt;/li&gt;
&lt;li&gt;今より進学率が上がればよい……だけか？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;・やり甲斐のある勉強をしたい←生徒視点&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;分かるようになりたい&lt;/li&gt;
&lt;li&gt;テストの点数があがる……だけか？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;教育をどうしたいのかに「？」が付く理由&lt;br&gt;
・目指されているのは、今の教育や学習では達成されていないこと&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;教員にも生徒にも「ゴール？」が見えない&lt;/li&gt;
&lt;li&gt;新しい教え方はいろいろ提案されるが判断根拠が分からない&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;何が本当にベストな状態なのか？というのが分からない、見たことない&lt;/p&gt;
&lt;p&gt;「？」への当面の答え&lt;br&gt;
・学びのゴールは「発生的(エマージェント)」で多様&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「自分なりのわかり方が他人と違うこと」が次のゴールを生む&lt;/li&gt;
&lt;li&gt;「自分がとける(成果を適用できる)課題が他人と違うこと」が次の段階の学習を意欲づける&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;小学校5クラスあれば、皆違うことを教えれば、廊下で情報交換する、という話はあるが実現はされていない。&lt;br&gt;
・教え方の原理は実践結果の相互吟味によって納得できる&lt;br&gt;
二度と同じことは起こらないので、ケースを積み上げるしかない&lt;/p&gt;
&lt;p&gt;「？」当面の回答支援&lt;br&gt;
・学びのゴール←多様性を保証&lt;br&gt;
・教え方の原理←教員間の相互吟味&lt;/p&gt;
&lt;p&gt;教育現場を変える&lt;br&gt;
・学習ゴールの多様性保証&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;学習者中心型学習形態へのシフト&lt;/li&gt;
&lt;li&gt;学習履歴の保存、活用(自分と他の人の意見の比較)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;・実践の共有・相互吟味保証&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;教材と実践結果の共有&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;先生が他の先生の教材を使ってフィードバックを返せる&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;教員ネットワークによる相互吟味&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これら二つは相互にフィードバックされて良くなっていく&lt;br&gt;
→電子的に履歴活用・相互吟味すので、電子化教材が2つがつながっていく&lt;/p&gt;
&lt;p&gt;学習者中心型授業へのシフト&lt;br&gt;
・自分の考えを外化して、意識的に見直したり作り替えたりする機会を積み上げる&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「目的」のある外化によって意識かを容易にする&lt;/li&gt;
&lt;li&gt;外化の履歴を振り返り、編集できる環境を準備する&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;・他人の考えを参考に、自分の考えを社会的に編集して抽象度を上げる&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;抽象レベルを上げるのに有利な聞き手の役割を重視&lt;/li&gt;
&lt;li&gt;他人の外化履歴も活用できる環境を準備する&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;学習者中心型授業の仕組み&lt;br&gt;
「雲はどうしてできるのでしょう？3つの資料の内容を組み合わせて答を作っ&lt;br&gt;
てください。何故そういう答になるかも説明してください」(中学生)&lt;br&gt;
・ある程度分かる部品を分担して担当&lt;br&gt;
・各部品担当が一人ずつ集まって課題を解く&lt;br&gt;
・各グループの解を総合的に検討して納得する&lt;/p&gt;
&lt;p&gt;授業の成果&lt;br&gt;
・雲の出来方を自分なりに説明できるようになる&lt;br&gt;
・子供たちの感想&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;雲がどうやってできるか、予想していたのとまったくちがってびっくりした&lt;/li&gt;
&lt;li&gt;曇って水蒸気の集まりじゃないの？&lt;/li&gt;
&lt;li&gt;水滴と水蒸気って何が違うの？？？←元に戻ったのではなく、ここまで理解&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;できたと考えるべき&lt;br&gt;
・どの程度&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;楽しかったか(35)楽しくなかった(1)&lt;/li&gt;
&lt;li&gt;理解できたか(34)できなかった(2)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;もう一つの例：「わかるとはどういうことか」(高校生)&lt;br&gt;
・3つの資料&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;行間が読める&lt;/li&gt;
&lt;li&gt;知っていることは覚えやすい&lt;/li&gt;
&lt;li&gt;多義的な解釈も出来る&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;・「わからなくても、経験や知識がちょっと足りないだけ……かも」&lt;/p&gt;
&lt;p&gt;実際のジグソー法の授業風景のビデオ&lt;br&gt;
・先生同士で共有できるデータとは？&lt;br&gt;
・Team Teachingでやる&lt;br&gt;
・エキスパート(3つの担当)に分かれる。読むと分かること、記憶、脳について&lt;br&gt;
・ジグソー(3つを併せる)&lt;/p&gt;
&lt;p&gt;このような情報をCoREFで共有できるようにしていきたい&lt;br&gt;
→高校数学の教科書も申請すれば使える(HTMLベース)&lt;/p&gt;
&lt;p&gt;「使い方キット」に教案などがある&lt;/p&gt;
&lt;p&gt;教材が共有できることの効果&lt;br&gt;
・教員コミュニティの育成&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;教育委員会などと協力している&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;・教材作りへの「社会人プロ」の参加を容易にする&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「教育現場の多様化」のモデル事業&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;学習履歴の活用&lt;br&gt;
・授業ビデオと音声記録&lt;/p&gt;
&lt;p&gt;失敗分析や知見もわかる&lt;br&gt;
→学生のコメント「偏差値40くらいとは思えない、私たち」&lt;/p&gt;
&lt;p&gt;電子化教材有効利用のためのIT基盤&lt;br&gt;
・双方向性の確保&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;閲覧＋ダウンロード＋編集して投稿＋新規発信&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;→クラス全員の子供の音声を個人個人に切り分けて、テキスト化してほしい&lt;br&gt;
・履歴の収集機能&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ビデオ記録&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;・一部を切り出してコメントを付けweb上で共有する機能&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;音声記録&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;・クラス全員の話し合い音声記録からテキスト化&lt;/p&gt;
&lt;p&gt;Q.早稲田非常勤の方。教員の能力・指導力を高めるためのDBを作る研究をしている。登録が非常に煩雑だと思うがどのように対応しているのか？&lt;br&gt;
A.記録はかなりの部分で取りっぱなしになると思う。分析の時に、ここで何が起こっていたか知りたい！という時のために取っている。天井に360度カメラを付けて後からズームして分析できるというシステムは500万&lt;/p&gt;
&lt;p&gt;○全体討論・まとめ　吉見俊哉先生&lt;br&gt;
7つの論点&lt;br&gt;
・小宮山先生&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;知の構造化&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;小柴先生が宇宙論から話していた。コペルニクスはなんで地動説を唱えたのか？アイゼンシュタイン「印刷革命」という書籍の中で言及。「新しい科学的発見があったわけではない。知識のプラットフォームにおける変化：グーテンベルグの印刷技術の発明。コペルニクスは50〜100年前の科学者と違って、自分の書庫を集めることが出来た。データへアクセスしやすくなった。データの比較検証して構造化することが出来るようになった。」これは、現代にも通じる。デジタルメディアのおかげで、莫大な情報に包まれている。情報の海の中で学問的に意味があることは、アクセシビリティの向上を、知の構造化へどのように結びつけるか？&lt;br&gt;
たくさん情報が使える人が増えても仕方がない。自らの視点から情報をまとめあげることができるかが、教育として重要である。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Recycle&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;「資源をRecycleすれば資源に乏しい国じゃなくなる」という話は、物質だけの話ではない。知や文化自体をRecycleして構造化し直すことが重要。文化・コンテンツは生産→流通→消費という流れになりがち。テレビ・映画・芸術など様々な文化もRe-useしなければならない。蓄積して循環させないといけないという時代になっているのだろう。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;うねり&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;「さざ波をうねりに変えなければならない」というのは、社会運動の語。60年安保、反日米安保のデモ行進？戦後からの「運動」というものが変わってきた。反体制運動→市民運動→社会全体が考えなければならない問題になった。&lt;br&gt;
・藤原先生、大瀧先生&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;フレームワーク&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;フレームワークとコンテンツの分離とコンテンツの転用可能化。&lt;br&gt;
何故日本の社会がGoogle,iPodを生み出せなかったのか？それがフレームワークとコンテンツの間にある問題に関係あるのでは？それは、標準化が出来ているのか？という問題に関係している気がする。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;著作権とは何か&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;世界的にロスが大きい問題。文化的なリソースがあるのに使えない、最大のネック。著作権不明著作物(オーファン？著作物。みなしご著作物)。どうもはっきりしないために処理できないケースが多い。文化庁長官の裁定制度はあるが、非常に煩雑で処理が大変。公共的な合意ができない。&lt;/p&gt;
&lt;p&gt;・何森先生、三宅先生&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;教科書とは何か&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;仮説：教科書の方が本より古いのでは？&lt;br&gt;
知識の三脚台モデル：図書館(集積場)、教育カリキュラム(プロセス)、百科事典(情報)&lt;br&gt;
百科事典は教科書に近い。&lt;br&gt;
教科書は印刷された本そのものではない。教える/学ぶプロセスそのものである。学校、大学などができた中世、近世に戻るとその答があるのでは？技術と法的制度、学校現場の実践が組み合わせられながら実験されているのが現状。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;教師とは何か&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Wikipedia,Google,YouTubeなどで、誰かの知識が皆の知識になっている＝匿名化している。明確な著者がいるときは、間違いを犯しても責任の所在が明らかである。匿名化した場合は誰の責任かが曖昧化してしまう。教師はそういう意味でエキスパートである。専門性・エキスパート性をどう担保するかが重要。&lt;/p&gt;
&lt;p&gt;・藤原先生&lt;br&gt;
計算物理のシミュレーションで何十年かけてやってきたことを世の中に残したい。知識やプログラムを作ってきたが、もう一度作り直さないと世の中に出せない。モジュール化されていないため、更新しにくい。外部に公開するためには作り直しが必要。&lt;br&gt;
研究した知識を公開するために標準化が必要。それをUT-eTEXTでやっている。&lt;/p&gt;
&lt;p&gt;・大瀧先生&lt;br&gt;
日本の中での教育が、教室の中だけでなくなっている。教育で使う場合はOKとい&lt;br&gt;
う先生も多い。東大がリードしていきたい。&lt;/p&gt;
&lt;p&gt;・何森先生&lt;br&gt;
小中高の教師とは、生徒に分かってもらってなんぼ。若手の先生が手書きの資料をたまたま作っていったら、生徒は心がこもっているからそっちにして、と言った。匿名化については、「何を信用するか」という教育していけば良いのでは。大学の先生は分かってもらおうと思うよりも、熱を込めて伝えれば十分では。&lt;/p&gt;
&lt;p&gt;・三宅先生&lt;br&gt;
プロセスとしての教科書は電子化にとてもあう。&lt;br&gt;
「オリジナリティに対する著作権」というのは面白くなる。「ガモフー」の話が面白いと言うが、それを紹介した人がすごいのでは。&lt;br&gt;
エキスパート性とは、全ての人にわかりやすく説明できる人ではないか。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;説明の多様性がとれるのが重要だと思う。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Q.日本人は機械設計はできるが、多国籍の人を引っ張っていってリーダーシップを発揮できる人が少ない。比較文化、比較言語を構造化してmulti cultural/lingualな人材が育つと思うがどう思うか？&lt;br&gt;
Q.教育家庭新聞西田氏。高等教育に使われるものなのか、小中は範囲外なのか？&lt;br&gt;
Q.NTTデータ重木氏。電子化教材がテーマ。エンドユーザが直接データを使える&lt;br&gt;
のがコンピュータ利用の最大のメリットだと思う。学習者そのもののインタラク&lt;br&gt;
ティブ性をどう考えるのか？&lt;br&gt;
Q.産学連携を加速するフレームワークを。ニーズを産業界へ。&lt;br&gt;
Q.理想の教科書をどのように大学教育で使えばよいのか？効果測定をどのように&lt;br&gt;
するのか？&lt;br&gt;
Q.子供にとって「知の構造化」が本当に重要か？優先順位として一番重要なのか？やる気のない先生をやる気のあるようにするのがポイントだと思う。どうする？&lt;/p&gt;
&lt;p&gt;・藤原先生&lt;br&gt;
A.産業の中での研究というものが、どういう考え方でやっているのか分からない。企業が何を目的に何を研究しているのか出さない。MDAを結んでも10分の一くらいしかわからない。人の流れがもっとあっても良いのでは。&lt;br&gt;
ニーズとシーズがかみ合わないことについて。状況を大学教員が理解していない。UT-eTEXTを他大学が使えるか？という話は、是非使って欲しい。しばらくはフリーで使っていただくつもり。&lt;/p&gt;
&lt;p&gt;・大瀧先生&lt;br&gt;
A.著作権管理システム、編集システムは大学のみならず使ってもらえると思うので、一声ください。&lt;/p&gt;
&lt;p&gt;・何森先生&lt;br&gt;
A.やる気のない先生・社員は多い。パレートの法則の紹介。&lt;br&gt;
先生は報告をしている。「来週の授業をどうするか」ということを。文科省の指導要領通りやりなさいということが、ことごとく言われる。やる気がなくなる。教員にもっと自由にやれる環境を。&lt;/p&gt;
&lt;p&gt;・三宅先生&lt;br&gt;
A.マルチカルチャー/リンガルの話。中京大の学生が苦手と思った英語のMITの授業のビデオをみていた。&lt;br&gt;
一人の人間が、どういうところで何をやってどうなっているのか？大勢として日本人はどうなのか？という情報がない。1ケースのものすごく長いスパンの情報が集められると良いだろう。&lt;/p&gt;
&lt;p&gt;・吉見先生&lt;br&gt;
A.リーダーシップ。従来の大学教育の仕組みが、リーダーシップを発揮するものではないのではという批判は受け止める。が、大学だけの問題ではない。どうも、日本は知識を大切にしない社会なのではないか？本人だけが優れているから大切ではなく、社会の中での相互性によって人物ができるのでは。博士や修士が企業でどれだけ大事にされているのか？まっさらな状態で欲しい、というのでは大学の知識は大切にされていないのでは。&lt;br&gt;
修士や博士をとれば、キャリアパスが広がる、というのではうまく社会へつながらない。社会の側で大学、大学で学んだ知識を大切にすべき。&lt;br&gt;
アーカイブの話。岩波映画の保存活動をしている。岩波科学映画、理科教材として良くできている。古いが良い教材。良いコンテンツは古びない。ストックされて蓄積されるのが良い。NHKアーカイブスの公開化が進み始めている。国会図書館も同様。これをさざ波からうねりに変えていくのがこれから。&lt;/p&gt;
&lt;p&gt;○藤原先生の締めの言葉&lt;/p&gt;</description></item><item><title>シンポジウム「教育の未来を拓く電子化教材」(UT-eTEXT)メモ</title><link>https://chezo.uno/post/2010-07-20-sinpoziumu-jiao-yu-nowei-lai-wotuo-kudian-zi-hua-jiao-cai-ut-etext-memo/</link><pubDate>Tue, 20 Jul 2010 14:59:15 -0700</pubDate><guid>https://chezo.uno/post/2010-07-20-sinpoziumu-jiao-yu-nowei-lai-wotuo-kudian-zi-hua-jiao-cai-ut-etext-memo/</guid><description>&lt;p&gt;7/16(金)に東大で開催されたシンポジウム「
」に行ってきました。&lt;br&gt;
個人的にはその前の週の
よりはビジョンベースの話が聞けて楽しかったです(EXPOはシーズベースというか既存製品の皮を教育にしただけの感が強くて……)。が、まだ現場とのギャップは大きいような気がします。&lt;br&gt;
また、
にもお会いすることが出来て楽しかったです。他分野の人との交流は新たな気づきが得られて良いですね。&lt;/p&gt;
&lt;p&gt;当日、僕が三宅先生の発表へのし損ねた質問です。現場でこれを聞きた かった……。&lt;br&gt;
「教員間のコミュニティの形成すばらしいと思います。膨大なデータを記録したときに、履歴が爆発するとどれを見ればいいのか 分からなくなると思いますが、どのように分析すればいいか、多忙な現場の先生がぱっと見て分かるような何かアイデアはありますか？」&lt;/p&gt;
&lt;p&gt;さて、当日取ったメモを備忘録として残します。今回は資料等が後悔されるわけではなさそうですが、漏れや誤解などもあると思いますので参考程度にしてください。&lt;/p&gt;
&lt;p&gt;また、関連サイトのURLを下記に記します。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
のサイト(
ありがとうございます！ )&lt;/li&gt;
&lt;li&gt;
と 開発時の
メモは以下の通りです。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;2010/07/16(金) 13:00-17:00&lt;br&gt;
教育の未来を拓く電子化教材シンポジウム&lt;br&gt;
＠東大法文2号館2F1番大教室&lt;/p&gt;
&lt;p&gt;○小宮山氏&lt;br&gt;
教わる方の視点は多様。&lt;br&gt;
多様な視点に応えられないと教育は成り立たない&lt;br&gt;
→構造化されて、ICTで実装された教材&lt;/p&gt;
&lt;p&gt;2050年には人間の価値観と知とをつなぐ(知の構造化)研究を半分の研究者が行っているだろう。&lt;/p&gt;
&lt;p&gt;社会と学術がリアルタイムでつなぐ&lt;/p&gt;
&lt;p&gt;e.g)12人の生命科学の教授が作る、3冊の生命科学の教科書&lt;br&gt;
→羊土社の理工系、生命科学系、文系進学者向け生命科学の(ICT)教科書を作成&lt;/p&gt;
&lt;p&gt;生命科学の進歩が早すぎて専門家でもついて行けない&lt;br&gt;
著名な先生でも「自分はかなり原理的なところで間違っていた」と言った。&lt;br&gt;
→Wikipediaみたいな形式で構造化していくことが重要&lt;/p&gt;
&lt;p&gt;教師用、生徒用、保護者用の知識データベースをクラウド上に置いて、進んだ個はどんどんやれるし、遅れている子は自宅でまたは進んだこと一緒にやっていくのが良いのでは。&lt;br&gt;
iPadやKindleなどは、ほとんど課外活動にしか使えない&lt;br&gt;
(課外授業、遠足、クラブ活動、修学旅行etc&amp;hellip;)&lt;br&gt;
50分の授業の積み重ねが大事。それに対応しないといけない。&lt;/p&gt;
&lt;p&gt;50分授業1学期に対応したデジタル教科書をつくる&lt;br&gt;
英語：8年間受けても話せないのは教育が悪い！&lt;br&gt;
民間の塾、英会話教室の知恵を動員すべし。日本人がどうすれば英語がで&lt;br&gt;
きるかは、外国は教えてくれない。日本人が開発しなければならない！&lt;br&gt;
理科：生命科学はコンテンツ作成した&lt;br&gt;
環境：日本が強い&lt;br&gt;
IR3S Sustainability Science(世界で初めての機構)&lt;br&gt;
芸術：日本の芸術はなくなってしまうかも！？&lt;/p&gt;
&lt;p&gt;教員の集団としての対応力不足→社会人の大量導入とICTの高度利用&lt;/p&gt;
&lt;p&gt;教員の不足：人数、専門的能力、「多様性」&lt;br&gt;
日本の余剰資源：日本の余剰資源 60〜70歳、女性&lt;/p&gt;
&lt;p&gt;日本はモデル転換が必要&lt;br&gt;
途上国モデル(坂の上の雲：国主導で産業導入)→先進国モデル(霧の中：暮らしを良くしようとすれば、新産業が興って国が強くなる)&lt;/p&gt;
&lt;p&gt;プラチナ社会＝21世紀の住みたいまち　を作らなければならない&lt;/p&gt;
&lt;p&gt;Q:生命科学の教科書はどれくらい評価されているのか？&lt;br&gt;
A:分かる人には分かる、評価されている。しかし、あまり見ている人がいない。&lt;br&gt;
日本では56大学で採択されている。文系のための生命科学を「生命科学入門」として使っている。&lt;br&gt;
既に電子教科書になっている。&lt;/p&gt;
&lt;p&gt;○大学の知の開放　「理想の教科書」UT-eTEXT：東京大学　藤原毅夫教授&lt;/p&gt;
&lt;p&gt;進化する教科書：Wikiをベースにしたself-editedな教科書&lt;/p&gt;
&lt;p&gt;のべ1200〜1500人が学術俯瞰講義を受講&lt;br&gt;
オムニバス講義ではなく、複数教員で1つの講義をつくる。&lt;br&gt;
学術俯瞰講義サイト
&lt;br&gt;
UTOpenCourseWare
&lt;br&gt;
PodCastも配信中&lt;/p&gt;
&lt;p&gt;・電子教科書が何故理想には遠いのか？&lt;br&gt;
将来像(目的)が不明確。フレームワーク先行、コンテンツ不十分&lt;br&gt;
iPadは、5年も経てばフォーマットが変わって使えなくなる&lt;/p&gt;
&lt;p&gt;理由1：大規模IT企業先行、技術の進展のスピードが早い&lt;br&gt;
理由2：電子化に伴う著作権のあり方が未整理&lt;br&gt;
広い意味での教育に対して著作権は自由ではない。&lt;br&gt;
著作権の考え方が各国で異なる。(e.g. Fair Use)&lt;br&gt;
理由3：再利用が困難(コンテンツの陳腐化、高いソフト依存性)&lt;/p&gt;
&lt;p&gt;1.コンテンツの使い回しを可能にするために、コンテンツとフレームワークの分離。面倒な新技術は使わない&lt;br&gt;
2.著作権処理の一元管理・効率化&lt;/p&gt;
&lt;p&gt;学術俯瞰講義のサイトは今週から完全オープンにしてある。しばらくはオープンにするが、いつか閉じてしまうかもしれない。&lt;br&gt;
ビデオと講義のPPTが並んでいる。講義の書き起こしも付いている。&lt;br&gt;
講義の書き起こしの文章からきちんとした説明のある所へリンクを貼れる。&lt;br&gt;
話題に挙がっている本もすぐにリンクをたどるとAmazonで買える。&lt;br&gt;
＃東京大学研究博物館のページへのリンクもある&lt;/p&gt;
&lt;p&gt;UT-eTEXTのシステム概要(東大、情報技研、オーム社で共同開発)&lt;br&gt;
・編集システム&lt;/p&gt;</description></item><item><title>苅谷剛彦、山口二郎「格差社会と教育改革」読了</title><link>https://chezo.uno/post/2010-07-05-yi-gu-gang-yan-shan-kou-er-lang-ge-chai-she-hui-tojiao-yu-gai-ge-du-liao/</link><pubDate>Mon, 05 Jul 2010 14:59:10 -0700</pubDate><guid>https://chezo.uno/post/2010-07-05-yi-gu-gang-yan-shan-kou-er-lang-ge-chai-she-hui-tojiao-yu-gai-ge-du-liao/</guid><description>&lt;p&gt;社会教育学者の苅谷剛彦氏と政治学者の山口二郎氏の対談による、格差社会についての議論をまとめた本です。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4000094262/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;本書の主張するところを簡単にまとめると、教育とは公共性を持つものであり、ある意味押しつけである。新自由主義のもと規制緩和・自由化をしていってサービス化をするのは格差を拡大する、というところだと思います。&lt;/p&gt;
&lt;p&gt;気になったところは概ね以下の通りです。&lt;/p&gt;
&lt;p&gt;予算はかけずに、あれもやるべきだ、これもやるべきだと盛り込むポジティブリスト方式のやり方は止めるべきである。予算とやりたいことを両輪として考えるべき。&lt;/p&gt;
&lt;p&gt;教育の公的性質を強調し、教育のサービス化を問題視している。とくに、新自由主義的な「選択の自由」を主張する言説は都会など恵まれた環境にいる場合には良いが、田舎に生まれた場合の不利益・効果のなさは大きい。「移動コスト」はゼロではない。&lt;/p&gt;
&lt;p&gt;教育というのは本来時間のかかるものである。それを短期間で成功する、という仮定のもと評価するのはおかしい。&lt;/p&gt;
&lt;p&gt;見所は、&lt;/p&gt;
&lt;p&gt;P.14 図1「国家予算と義務教育費の伸び率」における、教育費の伸び率の悪さ、&lt;/p&gt;
&lt;p&gt;P.20図2「PISA数学学力の変化」での、フィンランドと日本の比較における低学力層の学力低下&lt;/p&gt;
&lt;p&gt;P.25図5の都道府県の財政力と児童一人あたりの教育費の関係の変化、これは年を経る毎に財政力がある自治体が教育にお金をかけなくなっていく(＝1学級単位の人数の増加)&lt;/p&gt;
&lt;p&gt;等のデータに基づいた議論が、議論をわかりやすく導いてくれます。&lt;/p&gt;
&lt;p&gt;この本は、とても薄い割に議論がしっかりとしています。ちょうど安倍内閣のバウチャー制や学校選択制に対する批判が行われていた時期の話なので、今の時期に読むと少し感覚が違うかもしれません。新自由主義は国民は望んでいない、予算と人と教育理念を共に展開していくべき、という主張はすっきりしていてわかりやすいと思います。特に都会の感覚で自由化を進めていくことに対する問題提起は重要でしょう。&lt;br&gt;
苅谷氏の本を読み始めるのには最適かなと思います。&lt;/p&gt;</description></item><item><title>福田誠治著 「フィンランドは教師の育て方がすごい」読了</title><link>https://chezo.uno/post/2010-06-29-fu-tian-cheng-zhi-zhu-huinrandohajiao-shi-noyu-tefang-gasugoi-du-liao/</link><pubDate>Tue, 29 Jun 2010 14:59:04 -0700</pubDate><guid>https://chezo.uno/post/2010-06-29-fu-tian-cheng-zhi-zhu-huinrandohajiao-shi-noyu-tefang-gasugoi-du-liao/</guid><description>&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4750509035/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
フィンランドは教師の育て方がすごい
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;フィンランド教育を日本に紹介している福田誠治氏の著書です。
フィンランドの教育が現状の形になった理由を、教員養成課程を中心に分析。著者は一貫して構成主義的な教育が重要と主張しています。&lt;/p&gt;
&lt;p&gt;フィンランドの教員養成課程としては主に、下記の様な特徴が記述されています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;教師が、医師や弁護士並にの専門職扱いなので、尊敬されまたやりがいも感じている。(大学に入る段階で選別されているので、皆教師になれる)&lt;/li&gt;
&lt;li&gt;実習期間・回数が多く、理論と実践を両輪で進めていく大勢になっている。&lt;/li&gt;
&lt;li&gt;実習も複数人でサポートしながら行う。授業後は綿密な反省会を行う&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;その他のフィンランド教育の特色としては、このようなことが書かれていました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;そもそも教師は、授業のことしかほとんどやらない。カウンセラー等と役割分担がはっきりしている&lt;/li&gt;
&lt;li&gt;国の根幹として個人中心で教育することに素養があった&lt;/li&gt;
&lt;li&gt;テストの点数で管理するのではなく、目標の達成度で子どもの進度を把握
フィンランド教育の問題点としては以下のことが記述されています。&lt;/li&gt;
&lt;li&gt;学校で部活などの時間がなくいじめなどが起こってもはけ口が少なく、子どもたちも学校があまり好きではない&lt;/li&gt;
&lt;li&gt;整った学習環境のため、出来ないことは自分自身が努力しないせいとなってしまう。&lt;/li&gt;
&lt;li&gt;移民がドロップアウトする率が高い&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;新自由主義の規制緩和の流れと、国としての教育観が個人主義的・現場への裁量
を多く与えることによる機会均等への努力がうまく交わって、現状の形に行き着いたと考えられる、というのが著者の言いたいことなのかなと思いました。このことからも単純に日本に適用するのは難しいかな、という印象です。ほぼ公教育のみで、教師は医者や弁護士並にに尊敬されており、その質を保証するだけの狭き道です。それが維持できるのも、人口が日本より少ないかの国ならではではないでしょうか。538万人と1億2700万人の差は大きいでしょう。&lt;/p&gt;
&lt;p&gt;ただ、日本としても参考にするべきと思った点が、ヨーロッパは国民教育から市民教育へと移行している、ということです。従来は国民としてのまとまりを作るための知識を教えていくという姿勢だったのに対し、これからは大学での単位互換だけでなく、EU内での移住を前提としたヨーロッパ市民としての素養を教育していくということだそうです。グローバル化によって、教育というものが一国の話だけではなくなってきたのです。この点は、現状のICT教育の議論を見ていて気になっていた疑問に対して一つの観点だなと思います。&lt;/p&gt;
&lt;p&gt;公教育の再生が望まれる中で、現状の点数至上主義ではない教育とは何か？という問いに対する一つの解が、PISAで言われている読解力や21世紀型スキルなのだと思います。グローバルな学びを得ていくためには自ら問題点を見つけ解決していく構成主義的なアプローチを身につけていくことが重要となるのでしょう。個人的には、企業が求める人材を育てるというのは教育において一つの要求なだけであって、それが全てではないと思います。ともすると、大学入試に最適化しがちだった教育が、企業の求める人材像に最適化するのは本質的な取り組みではないように思います。&lt;/p&gt;
&lt;p&gt;とりとめもなく書いてしまいましたが、フィンランドの教育実習の模様と、この本の最後に付けられている &lt;strong&gt;フィンランドの学習指導要領は必見&lt;/strong&gt; です。学習指導要領は大まかなガイドラインでしかない、という書き方が本書の中にも何度も指摘されていましたが、これを読んで現場の先生は地域にあった教育を展開していかなければならないのか、そう思いました。相当に頭を使わないといけないようです。
一部、フィンランド教育を礼賛したり、自説に引き寄せような気がする点もありますが、学習指導要領と教育実習の様子だけでも読む価値はあるかと思います。&lt;/p&gt;</description></item><item><title>Canon iVIS HF M31がやってきた。フルHD楽しい</title><link>https://chezo.uno/post/2010-06-26-canon-ivis-hf-m31gayatutekita-huruhdle-sii/</link><pubDate>Sat, 26 Jun 2010 14:58:59 -0700</pubDate><guid>https://chezo.uno/post/2010-06-26-canon-ivis-hf-m31gayatutekita-huruhdle-sii/</guid><description>&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;【追記】撮影した映像を
に投稿しました。&lt;/p&gt;
&lt;p&gt;5/22まで5000円キャッシュバックキャンペーンと言うことで、買ってしまいました。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;近所のビックカメラの方が安い説とか、注文したところが2chで評判悪いところだったとか、後から発覚した様々なネガティブ要因がありました。しかし、無事に届いて触っていたらひゃっほいと楽しくなるばかりです。&lt;/p&gt;
&lt;p&gt;併せて後から買ったものとしては、&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;を買いました。&lt;/p&gt;
&lt;p&gt;保護フィルムはタッチパネルの汚れよけとしてですが、ちょうどというか少し足りないかもくらいな感じです。縁まで覆いたい人には向いていないかもしれません。僕にはちょうどでしたが。&lt;br&gt;
miniHDMI-HDMIケーブルは対応モニタがある人は必須ですね。実家とかでパッと見せるのにフルHDの動画をささっと見せられるのは魅力です。&lt;br&gt;
ケースに関しては、割とぴったりという印象です。予備バッテリを買ったら入るかどうかが心配なサイズです。逆に言えばコンパクトでぴったりとも言えます。&lt;/p&gt;
&lt;p&gt;まだ買っていないもので、いずれ買おうと思っているのが、SDHCカード 32GB。よく分からないけど、Class6以上が良さそうな感じなのでしょうか。
かなぁと思っていますが、なかなか今時の事情が分からないんですよね。&lt;br&gt;
予備バッテリは純正品は高くて手が出ないので、互換バッテリで行こうと思います。で、
、
のどちらにしようか悩んでいます。前者が実働どれくらいなのかで変わってくるんですよねぇ。&lt;/p&gt;
&lt;p&gt;ちなみに、画質は素人ですが満足。手ぶれもしっかり脇を締めていれば気にならない程度。録画したAVCHDのデータもYouTubeに簡単にフルHDで投稿できて、思いの外あっけない印象です。色々調べてみたんですが、結局.mtsファイルをYouTubeでアップロードすれば、後はよしなにしてもらえます。付属のツールも編集しないのならあんまりお世話にならなくてすむかも、という感じです。今は、YouTubeって知人だけにURLを公開する限定公開ができるので、(URLがばれなければ)実家の家族とかにも簡単に見てもらえて便利ですね。これから楽しみだー&lt;/p&gt;</description></item><item><title>「学校教育の情報化に関する懇談会」第6回のメモ #johokon</title><link>https://chezo.uno/post/2010-06-22-xue-xiao-jiao-yu-noqing-bao-hua-niguan-suruken-tan-hui-di-6hui-nomemo-number-johokon/</link><pubDate>Tue, 22 Jun 2010 04:06:47 -0700</pubDate><guid>https://chezo.uno/post/2010-06-22-xue-xiao-jiao-yu-noqing-bao-hua-niguan-suruken-tan-hui-di-6hui-nomemo-number-johokon/</guid><description>&lt;p&gt;本日6/22に開催された
の聞きながら書いたメモです。きっとそのうち
に動画が上がると思いますので、きちんとしたものはそちらを参照ください。&lt;br&gt;
それまでのつなぎとしての個人的なメモです。間違いや聞き漏らしもあるかもしれないので、ご了承ください。&lt;/p&gt;
&lt;p&gt;議論の流れで主要と思ったものは、&lt;br&gt;
・従来の目標が明確で比較的普及の進んだハードウェアだけでなく、ソフトウェア、特にコンテンツ共有の仕組みを国主導で普及を進めていくべきだ。(50インチテレビだけあって、コンテンツがないという事例の紹介)&lt;br&gt;
・ICT支援員によるサポートの充実を。そのためには、司書教諭がメディア教諭という形で情報処理教育の中心となり安定雇用化を。&lt;br&gt;
・21世紀型の教育へとシフトしていくにあたり、教員養成課程の改革だけでなく、現職の教員の研修などの仕組みを作っていくべきだ。そのためには、校内研修と教育センターの活用が重要である。&lt;/p&gt;
&lt;p&gt;特に、授業でのICT活用法の話、ICT支援員の話と、21世紀型の教育に関わる人材育成の議論が行われました。&lt;/p&gt;
&lt;p&gt;なお、次回第7回は7/7(水)15：00〜 事務局のビジョンの骨子の提案&lt;/p&gt;
&lt;p&gt;についてだそうです。&lt;/p&gt;
&lt;p&gt;以下、詳細です。&lt;/p&gt;</description></item><item><title>学校教育の情報化に関する懇談会第5回のメモ</title><link>https://chezo.uno/post/2010-06-15-xue-xiao-jiao-yu-noqing-bao-hua-niguan-suruken-tan-hui-di-5hui-nomemo/</link><pubDate>Tue, 15 Jun 2010 14:58:48 -0700</pubDate><guid>https://chezo.uno/post/2010-06-15-xue-xiao-jiao-yu-noqing-bao-hua-niguan-suruken-tan-hui-di-5hui-nomemo/</guid><description>&lt;p&gt;文科省が主催する、
の
。&lt;br&gt;
この懇談会は、世界的なICT化の流れに対して学校教育へどう適用すべきか、情報化時代の教育はどうあるべきか、ということについて議論されているものです。&lt;/p&gt;
&lt;p&gt;特筆すべきは、熟議カケアイという文科省が運営する掲示板サイトで、一般の人(保護者、研究者、教員など多岐にわたる)が議論を行っていることですが、(学校教育のICT化については「
」で議論されていました。現在は書き込みできません。)また、
を始めとする議論の動画が公開されています。時代の流れを生かした画期的な試みと言えます。&lt;br&gt;
更に画期的なのが、このカケアイで議論された内容というのを委員の方々がチェックしていて、議論のネタにする。そして、文科省の方々がまとめて懇談会の場で配布し、意見として吸い上げようという姿勢が感じられる点です。もちろん、これが最終的のどれだけ残るか/減衰するかは見守っていかなければなりません。&lt;/p&gt;
&lt;p&gt;第5回で個人的に興味深い意見としては、横浜国立大の野中氏による「持続可能なシステム構築のため、どういう学校でも使える、長期にわたっても効果のあることを実証すべき。目標や成果も学校ごとでバラバラなときにどう評価するか評価方法の検討を」というものがありました。&lt;br&gt;
教育の評価は社会への貢献などで図ろうとすると十年単位でしか効果が見られないのが辛いところです。かといって、単純な試験の点数に最適化するのはもってのほかと思います。そうした中で、いかに多様な価値観で教育を行っていき、それを評価するのか、これが重要になってくるでしょう。裏返せば、「学校で学ぶべきことはなんなのか？」ということを考えていくことに他ならないと思います。懇談会を聞いていると、しばしば、学習者中心主義的な考え方がこれからの教育に重要となってくる、というような印象を受けます。&lt;/p&gt;
&lt;p&gt;教育に関しては素人なのですが、どのような教育が望ましいのか考え続けていきたいと思います。また、是非ともお忙しい現場の小中高の先生にも、こういう議論があるんだということが伝われば、と思います。きっとベストプラクティスだけでなく、現場の様々な声、感覚がこれからの教育をよりよくする糧となると思います。PISA型の学力や
など、今の教育の現場とはもしかしたら直接は繋がらないかも知れない、けれどもパラダイムシフトが起こりうる考え方をチェックしていくことが重要なのかも知れないと思います。&lt;/p&gt;
&lt;p&gt;以下に個人的ではありますが、議論を見ながら取ったメモを残しておきます。詳細は動画をご覧ください。&lt;/p&gt;
&lt;p&gt;第5回で主に議論された点は、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;子供たちにすべき「情報教育」はどのようなもので、どうすべきか&lt;/li&gt;
&lt;li&gt;校務のICT化について&lt;/li&gt;
&lt;li&gt;予算の枠組みについて
ということが中心に議論された。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;1つめの情報教育に関してまとめると、以下の3つの観点がある。&lt;br&gt;
１）使い方を教えるコンピュータリテラシ教育&lt;br&gt;
２）アルゴリズムやOSの仕組みなど情報の技術の中身についての教育&lt;br&gt;
３）情報を処理(収集、選択、発表)するための教育&lt;br&gt;
現状の特に高校の情報科の教育では１）に終始してしまっているが、今後は21世&lt;br&gt;
紀型スキルを含めて３）について教育を行っていくべきだとの意見が多く見られ&lt;br&gt;
た。３）の実現方法については、まずは小中学校にも情報科の教科を設けて１）&lt;br&gt;
と共に小学校から一貫して教えていくべきだ、という意見と、国語や数学、社会&lt;br&gt;
など現在ある教科に組み入れるべき、そのために教員養成課程から変えていくべ&lt;br&gt;
きだという意見が対立した。&lt;/p&gt;
&lt;p&gt;また、校務のICT化に関しては2点NIIの新井氏から知見の発表があった。&lt;br&gt;
・教育委員会の専用回線(24Mbps)を各校が分配して利用するため、一つの学校がネットを一斉に利用すると他の学校が使えないなど、インターネットコンテンツがまともに利用できない。&lt;br&gt;
・教育クラウドでの校務支援に際し、成績票などの帳票の様式の違うため全ての統一化は困難。クラウドとローカルで行うことを切り分け、クラウド側はオープンな形式にして持続可能なシステムにすべき。&lt;/p&gt;
&lt;p&gt;予算については、国主導で推進していかないと全国的に進まないという点についての意見が相次いだ。&lt;/p&gt;</description></item><item><title>学校現場の負担軽減プロジェクトチーム（中間まとめ）についてのメモ</title><link>https://chezo.uno/post/2010-05-12-xue-xiao-xian-chang-nofu-dan-qing-jian-puroziekutotimu-zhong-jian-matome-nituitenomemo/</link><pubDate>Wed, 12 May 2010 14:58:43 -0700</pubDate><guid>https://chezo.uno/post/2010-05-12-xue-xiao-xian-chang-nofu-dan-qing-jian-puroziekutotimu-zhong-jian-matome-nituitenomemo/</guid><description>&lt;p&gt;何が教育現場の問題なのかを調べたいと思ったら、この資料にたどり着きました。ざっくりとしたメモです。情報薄いです。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;学校現場の教員の負担についての調査。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;行政による調査文書&lt;/li&gt;
&lt;li&gt;調査研究(モデル校)事業&lt;/li&gt;
&lt;li&gt;生徒指導&lt;/li&gt;
&lt;li&gt;会議&lt;/li&gt;
&lt;li&gt;授業準備・成績処理
が教員の業務負担の原因で、改善方法としては、&lt;/li&gt;
&lt;li&gt;業務の組織化&lt;/li&gt;
&lt;li&gt;情報の共有化
が重要としている。&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>教科書の国際比較された報告書についてのメモ</title><link>https://chezo.uno/post/2010-05-12-jiao-ke-shu-noguo-ji-bi-jiao-saretabao-gao-shu-nituitenomemo/</link><pubDate>Wed, 12 May 2010 14:58:37 -0700</pubDate><guid>https://chezo.uno/post/2010-05-12-jiao-ke-shu-noguo-ji-bi-jiao-saretabao-gao-shu-nituitenomemo/</guid><description>&lt;p&gt;
という国立教育政策研究所の報告書を読んだメモです。2009年3月の報告書です。&lt;br&gt;
デジタル教科書やら教育の情報化に関連して調べた際の個人的なメモなので、細かいところはオリジナルの報告書を参照してください。まちがっとるやんけ、とかありましたらご指摘ください。特に入試周りは胡散臭いです。&lt;br&gt;
#というか、途中で力尽きた感があります。。。&lt;/p&gt;
&lt;p&gt;この報告書は、日本、アメリカ、カナダ、イギリス、フランス、ドイツ、フィン&lt;br&gt;
ランド、韓国、中国、台湾の理科、数学の国際比較を行ったものである。前半&lt;br&gt;
は、各国の教科書・教育制度についてのまとめ、後半が2教科の教科書の内容比&lt;br&gt;
較である。&lt;/p&gt;
&lt;p&gt;○教科書の方向性の違い&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;教科書の使用状況&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;大まかに欧米とアジアで異なるのは、大学入試に向けた勉強が重視されるか否か&lt;br&gt;
という点である。&lt;br&gt;
日韓中台は、教科書の使用が義務づけられており、教科書も国定ないしは検定教&lt;br&gt;
科書で採択権限は学校以上のレベルである。一方、欧米は(国によって異なる&lt;br&gt;
が)、教科書使用の義務は無く、教師が選べる場合も多い(英仏芬)。特に、フランスは教科書を通しで使う先生が25％というデータが(少し古いようだが)ある。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;義務の国&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;・日本、韓国、中国、台湾&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;義務が無い国の使用状況&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;・教科書中心：アメリカ、イギリス、フィンランド&lt;br&gt;
・教科書は教材の一つ：カナダ&lt;br&gt;
・自由：フランス、ドイツ&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;教科書の持ち帰り&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;欧米の多くでは、無償貸与なため持ち帰りはしないことが多い。場合によっては&lt;br&gt;
初めから家に置くことも。&lt;br&gt;
持ち帰りする国は、日本、フィンランド、中国。韓国、台湾も無償給与もしくは&lt;br&gt;
有償なので持ち帰りはできるかもしれない。イギリスも、Sixth formは持ち帰る。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;教科書と情報化&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;アメリカは教科書の部分部分にパスコードがあり、教科書会社のサイトで関連情報などを調べられるようだ。自宅学習をWebで行うことも多いため、教科書の選定基準の一つに、Webを利用した学習の利用料の値段がなってくるとのこと。イギリスではWebの情報を授業に活用している。また、韓国は国が開発した教材データベースが活用されている。数学はコンピュータによる作図や定理の検証などを行われているようだ。&lt;/p&gt;
&lt;p&gt;○大学入試の違い&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;入学試験無し&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;・高校卒業試験のみ(ドイツ)&lt;br&gt;
・筆記試験無し(カナダ)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;入学試験はあるが教科書と関係が弱い&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;・論述試験のみ(フランス)&lt;br&gt;
・教科書と直接対応なし(アメリカ)&lt;br&gt;
・教科書が十分カバー(フィンランド)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;入学試験あり&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;・GCE・Aというコースと筆記試験の統一試験(大学の教養のようなもの)(イギリス)&lt;/p&gt;</description></item><item><title>Eric WitacreのVirtual Choirが凄い！これは日本のアマチュアでも広まるべき</title><link>https://chezo.uno/post/2010-04-21-eric-witacrenovirtual-choirgaqi-i-korehari-ben-noamatiyuademoguang-marubeki/</link><pubDate>Wed, 21 Apr 2010 14:58:32 -0700</pubDate><guid>https://chezo.uno/post/2010-04-21-eric-witacrenovirtual-choirgaqi-i-korehari-ben-noamatiyuademoguang-marubeki/</guid><description>&lt;p&gt;
さんの
で知りましたが、WhitacreのVirtual Choirがやばいです。何はともあれ実際の動画を見ていただけば、その凄さを体感できるはずです。&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/D7o7BrlbaDs?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;Whitacreのオリジナルの記事は
。
に日本語に訳してくださった記事があります。こういう映像を見ていると、生で歌うことの楽しさももちろん大きいですが、それとは別のアプローチで合唱を創る喜びがあるのかと思うとワクワクします。&lt;br&gt;
以前、
でも妄想していましたが、Webを通じて知り合った仲間や距離が離れてなかなか集まれない仲間同士で、「一曲歌ってみるか！」ってことが実現しやすくなったんじゃないかと思います。
も出来た時代ですし。
ワクワクしますねー。&lt;/p&gt;</description></item><item><title>「学校教育の情報化に関する懇談会」のライブ配信が行われるそうです〜情報化と教育</title><link>https://chezo.uno/post/2010-04-20-xue-xiao-jiao-yu-noqing-bao-hua-niguan-suruken-tan-hui-noraibupei-xin-gaxing-warerusoudesu-qing-bao-hua-tojiao-yu/</link><pubDate>Tue, 20 Apr 2010 14:58:27 -0700</pubDate><guid>https://chezo.uno/post/2010-04-20-xue-xiao-jiao-yu-noqing-bao-hua-niguan-suruken-tan-hui-noraibupei-xin-gaxing-warerusoudesu-qing-bao-hua-tojiao-yu/</guid><description>&lt;p&gt;最近、遅ればせながら色々と教育における情報化について調べることが多いのですが、こんな懇談会が4/22(木) 16:00-行われるそうです。(配信のリンクは文科省のトップからリンクが近々張られるそうです。)&lt;/p&gt;
&lt;p&gt;
.&lt;/p&gt;
&lt;p&gt;趣旨としては、&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;（1）授業におけるICTの活用について（デジタル教科書・教材、情報端末・デジタル機器、学校・教員等の在り方を含む）&lt;br&gt;
（2）ICTを活用した 校務支援について&lt;br&gt;
（3）ICTの活用に関する教員へのサポート等について&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;つまり、デジタル教科書を始めとする授業への情報端末の活用、情報機器を活用した採点業務などの効率化、情報端末を先生が使えるようにすること、について話が為されるようです。この懇談会への流れは、どうも原口総務大臣が
として「2015年までに全ての小中学校全生徒にデジタル教科書を」という目標を掲げていることが大きいようです。(
が詳しいです)&lt;br&gt;
本当は、懇談会の傍聴をしたかったのですが、既に満席とのことでライブ配信の恩恵にあずかろうと思います。(しかし、この時間は現場の先生見られるのでしょうか)&lt;/p&gt;
&lt;p&gt;デジタル教科書と言えば、ソフトバンクの孫さん始めとした方々がデジタル教科書協議会の設立目指して動いているようです(
,
)。また、従来の教科書会社も
ようです。twitterでも
で盛り上がっており、今とても熱い分野だと思います。紙の教科書からデジタルの教科書へ、大きなパラダイムシフトが起こる可能性があり技術者としてとてもワクワクします。&lt;/p&gt;
&lt;p&gt;しかし、デジタル教科書についてもビジネス的に興味深いとは思いますが、個人的には上記懇談会の2,3番目の項目が気になります。特に、3についてかなり重要になってくるのではないかと思っています。&lt;/p&gt;
&lt;p&gt;こちらに、平成20年度の公立小中高校等の
があるのですが(詳細なPDFは
)、資料を見て感じるのは &lt;strong&gt;「かろうじて授業準備にWordやExcel、インターネットが使える」&lt;/strong&gt; という印象です。「A 教材研究・指導の準備・評価などにICTを活用する能力」、つまり授業の準備に情報機器が利用できるという項目が「わりにできる」と「ややできる」を併せて72.6％なのに対し、「B 授業中にICTを活用して指導する能力」が &lt;strong&gt;56.4％&lt;/strong&gt; 、「C 児童のICT活用を指導する能力」が &lt;strong&gt;58.5％&lt;/strong&gt; と途端にできる人が少なくなっています。このままでは、デジタル教科書が普及したところで従来の紙の教科書と同じ使い方しか出来ないことが危惧されます。最大化の操作を教えられ感動し、最小化の操作まではちょっと覚えられない、と言われた先生もいらっしゃるとか……。前者の72.6％もどの程度できるのかというのを、それこそ一度全国一斉に試験をしてみた方が良いのかもしれません。&lt;/p&gt;
&lt;p&gt;また、少し話がそれますが、「D 情報モラルなどを指導する能力」は4つ項目があり平均すると66.8％なのですが、よくよくみてみると、D1〜3の「情報社会での行動に責任を持ち、相手のことを考えた情報のやりとりができるように指導」のような一般的に情報化社会についての技術的なことにあまり依存しない3項目の平均を取ると68.6％、それに対し「D4 児童がパスワードや自他の情報の大切さなど、情報セキュリティの基本的な知識を身につけることができるように指導する」が61.3%と落ちています。現状の情報技術や動向を大まかにでも知らず一般的な倫理道徳感だけでは、情報モラルを教えきるのは厳しいのではないかと私は不安に思います。&lt;br&gt;
一方で、愛知県の
(
)や、
のFlashによる体験教材、
による情報モラル教育のための体験ソフトウェアなど、インタラクティブに分かりやすい教材を提供しようという機運は高まっているように思います。こうした教材の情報がもっと分かりやすく提供されるような、
のようなポータルサイトやtwitterのアカウントなどで広まってもよいのかもしれません。&lt;/p&gt;
&lt;p&gt;将来はこうした教材の共有や校務分掌などが全部クラウドの向こう側に置かれて、先生や保護者が意識することなく教育できるようになるのかもしれない、と淡い期待と共に妄想しています。&lt;br&gt;
個人的には情報モラル、ネットリテラシーについては新しい技術がどんどん出る中、保護者でのフォローしきるのは難しいとも思いますので、社会全体で支えられる枠組みが出来れば、と思います。また、技術者としてそうした枠組みを作るお手伝いができたら幸せです。&lt;/p&gt;</description></item><item><title>"Laula kultani: European Folk Songs for mixed voices" がうちにきた</title><link>https://chezo.uno/post/2010-03-29-laula-kultani-european-folk-songs-for-mixed-voices-gautinikita/</link><pubDate>Mon, 29 Mar 2010 14:58:21 -0700</pubDate><guid>https://chezo.uno/post/2010-03-29-laula-kultani-european-folk-songs-for-mixed-voices-gautinikita/</guid><description>&lt;p&gt;
されていた
を衝動的に買ってしまいました。だって、Folk Songsって書いてあるんだもの(Pana Musicaの紹介文は
。しかし、Pana Musicaはいい紹介記事を書くのに、パーマリンクがないため紹介しづらいなぁ。今時パーマリンクなし、RSSなしだとGoogle先生などに補足されづらいので辛いと思います。勿体ない。)ヨーロッパの様々な合唱団がお国のFolk Songsを歌うコンピレーションアルバムという位置づけのようです。&lt;/p&gt;
&lt;p&gt;CDとしては素性がわからなかったので不安でしたが、なかなかどうしていいCDじゃないの。Carol of Bellsのオリジナルとなった曲(Ščedryk)がとても好きです。ウクライナ民謡だったのね。ちなみに、このYoutubeの映像は別の団体の演奏。この演奏よりもCDの方が素敵です。&lt;br&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/CIcdj3co5kQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;Webをみたら、演奏団体が曲ごとに書いてあるところが見あたらなかったため、ジャケットから情報を拝借してきました。Webに情報が載っていた方が詳しい方が色々コメントくださるかなぁと思って書いてみます。ただし、一部フォントの関係で正しく表示されていないものもあります(cの上にvとか)。&lt;/p&gt;
&lt;p&gt;全体的に外れの演奏が少ないいい音源だと思います。しかし、やっぱりハンガリーは和音聴けばハンガリーだってわかるなぁ。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;No. Country Composer Title Choir&lt;br&gt;
1 FI Finnish Traditional Laula kultani, folk song Murtosointu Chamber Choir&lt;br&gt;
2 DE Friedrich Silcher Ich weiß nicht, was soll es bedeuten Südfunk Chor&lt;br&gt;
3 DE Johannes Brahms Wach auf! II (&amp;ldquo;Wach auf, meins Herzens Schöne&amp;rdquo;), folk song for chorus (&amp;amp; piano ad lib), WoO 35/7 Junges Vokalensemble Hannover&lt;br&gt;
4 DE German Traditional In einem kühlen Grunde NordDdeutscher Figural Chor&lt;br&gt;
5 LU Pierre Nimax, Jr. Wéi meng Mamm, song for chorus Kammerchor Konservatorium Luxemburg&lt;br&gt;
6 CH Hansreudi Willisegger Du fragsch mi, song for chorus Oberwalliser Vokalensemble&lt;br&gt;
7 AT Anton Anderluh O Diandle, tiaf drunt im Tal, song for chorus in G major Wiener Kammerchor&lt;br&gt;
8 IT-Germ Felix Resch In Klausn isch Kirchtig, song for chorus Kammerchor &amp;ldquo;Leonhard Lechner&amp;rdquo; Bozen&lt;br&gt;
9 BE-Flem Vic Nees Gildebroeders, song for chorus Capella di Voce&lt;br&gt;
10 NL Henning Schmidt Daar was laatst, song for chorus Ensemble ECU06&lt;br&gt;
11 UK English Traditional Early One Morning, folk song The Cavendish Singers&lt;br&gt;
12 IE Irish Traditional The Star of the County Down, folk song Madrigal 75&lt;br&gt;
13 IS Jón Asgeirsson Vísur Vatnsenda-Rósu, song for chorus The Hamrahlíð Choir&lt;br&gt;
14 NO Norwegian Traditional Poul sine høns i haven lod flyve (Paul and His Hens), folk song Bergen Domkantori&lt;br&gt;
15 DK Danish Traditional Jeg gik mig ud en sommerdag (I went out on a summer&amp;rsquo;s day), folk song Tritonus&lt;br&gt;
16 SE David Wikander Kristallen den fina (The Fine Crystal), song Örebro Chamber choir Sweden&lt;br&gt;
17 UA Mykola Dmytrovich Leontovych Ščedryk, song for chorus National Music Academy Kiev&lt;br&gt;
18 PL Jozef Swider Góralu czy ci nie zal, song for chorus Absolwent aus Cieszyn&lt;br&gt;
19 CZ Czech Traditional Okolo Hradisca, folk song luventus paedagogica Praha/Besharmonie Praha&lt;br&gt;
20 SK Czech Traditional Janicko, zltovlas (Golden-Haired Johnny), folk song OZVENA Vranov n.T.&lt;br&gt;
21 SI Oskar Dev Ribce po murjici pvavajo, song for chorus in G major Slovenia Chamber Choir AVE&lt;br&gt;
22 HR Croatian Traditional Vehni, vehni fijolica, folk song Academic Choir Ivan Goran Kovačić&lt;br&gt;
23 CS Croatian Traditional S&amp;rsquo;one strane Dunava, folk song Trinity Church Choir Zemun, Beograd&lt;br&gt;
24 BG Fillip Koutev Polegnala e Toudora (Todora&amp;rsquo;s Dream) St. St. Cyril and Methodius&amp;rsquo; Chamber Choir&lt;br&gt;
25 MK Macedonian Traditional Ajde, slusaj, Angjo, folk song Slovenia Chamber Choir Megaron&lt;br&gt;
26 IT-Germ Paolo Bon Lu guarracino, song for chorus Coro Vox Cordis, Arezzo&lt;br&gt;
27 CH-Ital Hansreudi Willisegger Scià, scià Peppina, song for chorus Scheweizer Jugendchor&lt;br&gt;
28 ES Spanish Traditional El vito Grupo Vocal Alisios&lt;br&gt;
29 ES Spanish Traditional La Tarara Grupo Vocal Alisios&lt;br&gt;
30 LV Latvian Traditional Rïga dimd, folk song Ave Sol&lt;br&gt;
31 AL Fahri Beqiri Shkoj e vij flutrim, song for chorus Kosova Philharmony Choir&lt;br&gt;
32 GR Greek Traditional Syrtos Rhodou, folk song Corfu Municipality Choir&lt;br&gt;
33 CY Greek Traditional Psintri Vasilitzia mou, folk song (Cyprus) POLYFONIA Chamber Choir Cyprus&lt;br&gt;
34 AM Komitas Sew a cobani sowne, song for chorus Armenian Chamber Choir&lt;br&gt;
35 EE Estonian Traditional Kungla rahvas, folk song Mixed choir &amp;ldquo;Noorus&amp;rdquo; ( produced by Estonian Radio,2006)&lt;br&gt;
36 HU Hungarian Traditional A jó lovas katonának, folk song Budapesti Monteverdi Kórus&lt;br&gt;
37 ES-Basq Javier Busto Agur juanak, song for chorus Coro Hodeiertz Abesbatza&lt;br&gt;
﻿&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;ちなみに、各地方の略称は
を参考にされると良いかと思います。いや、途中まで日本語にしようかと思っていたのですが、流石に地方が散見されると僕の実力では無理と判断しました。。。すみませぬ。&lt;/p&gt;</description></item><item><title>世界変革の時〜ラヴォスのたった一つの買い方</title><link>https://chezo.uno/post/2010-03-22-shi-jie-bian-ge-noshi-ravuosunotatuta-tunomai-ifang/</link><pubDate>Mon, 22 Mar 2010 14:58:16 -0700</pubDate><guid>https://chezo.uno/post/2010-03-22-shi-jie-bian-ge-noshi-ravuosunotatuta-tunomai-ifang/</guid><description>&lt;p&gt;初めて
が現れたときの絶望感と言ったら……。想像を絶するものがありました。出自の分からない異形の者を倒し、そして更なる戦いへと挑むその姿を見ていったら、剣と魔法の世界からはおよそ想像の付かないものとの戦いに。いやぁ、本当に名作でした。クロノトリガー。&lt;/p&gt;
&lt;p&gt;そんなラヴォスがお手軽に購入できるようになったので、買ってきました。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;たいとるはもちろん釣りです。ごめんなさい。&lt;br&gt;
ちなみに、ラヴォスは
というケーキ屋さんで、「レモンタルトください」と言えば、買えます。少し黄色いですが、きっと亜種か変色しているだけに違いありません。倒すのには強靱な歯もいりませんので、ご安心してお買い求めください。&lt;/p&gt;
&lt;p&gt;ちなみに、先日のお祝いでキャンドルを使ってお茶とケーキをしました。そのときにラヴォスが現れたのです。もちろん、妻との協力でなんとか倒すことが出来ました。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;ちなみに、日本にこだわらずイタリアに行けば、
を買えます。クロノファンの方は是非！&lt;/p&gt;</description></item><item><title>アカペラのイベント情報とかをつぶやく@acappella_eventの使い方</title><link>https://chezo.uno/post/2010-02-21-akaperanoibentoqing-bao-tokawotubuyaku-at-acappella-eventnoshi-ifang/</link><pubDate>Sun, 21 Feb 2010 13:58:11 -0800</pubDate><guid>https://chezo.uno/post/2010-02-21-akaperanoibentoqing-bao-tokawotubuyaku-at-acappella-eventnoshi-ifang/</guid><description>&lt;p&gt;
でも少し書いていたんですが、twitterで
というbotを作りました。前から少しずつ色々試していたのですが、ようやく基本的なところができたので使い方を簡単にまとめたものを残しておきます。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;@
は&lt;br&gt;
1)合唱/アカペラについて検索して投稿&lt;br&gt;
2)@を飛ばされるとそれをリツイート&lt;br&gt;
3)
のアカペラ/合唱カレンダーから当日のイベント情報を投稿(する予定)&lt;br&gt;
の3つをするbotです。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
より抜粋。&lt;/p&gt;
&lt;p&gt;もう少し詳しく説明すると、&lt;/p&gt;
&lt;p&gt;1)は、twitter検索した情報をつぶやきます。「アカペラ or 合唱」と「情報 or 告知 or 開催 or 募」あたりのクエリを使ってます。なので、変な情報も拾ってきますし、漏れもありますがこの辺はまぁ今くらいでいいかなと思っています。&lt;br&gt;
(20100829追記：公式リツイートで検索した情報をつぶやくように修正しました 参考：
firegoby)&lt;br&gt;
2)は、「@acappella_event ○○」とつぶやくと、その発言自体を公式RTします。まだまだfollowerが少ないのですが、広めたい情報や告知したい情報は@で飛ばしていただければ5分程度でRTされるはずです。なお、つぶやきの頭に@acappella_eventと書かないとRTされないのでご注意ください。&lt;br&gt;
3)は、試験運転状態なので上手くいっているか少し不安ですが、細々と更新しています
から以下の3種の情報をつぶやきます(願望)。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;当日の予定を朝6時につぶやきます。&lt;/li&gt;
&lt;li&gt;翌日の予定も午後11時くらいにつぶやきます。&lt;/li&gt;
&lt;li&gt;新規登録されたイベントもつぶやきます。
今のところ3.の新規イベントは安定しているのですが、1,2が様子見な形で怪しいですTwitterの調子がよければ動いています(20100711追記)。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;以上が@acappella_eventの機能です。どちらかというと、他力本願なbotなので色々な人に活用していただければ盛り上がって嬉しいなぁと思っています。特に、
の編集に協力してくださる方大募集中です。ダイレクトメッセージなどでgmailのアドレスをお教えいただければ、登録いたします。
ではなんか面倒くさそうな感じがしたので、GAEの練習がてらbotを作ってみた感じです。そんなにたいしたことはしていないのですが、備忘録がてらそのうち参考にしたサイトなどをまとめたいと思います。&lt;/p&gt;</description></item><item><title>練馬アカペラコンテストに行ってきた</title><link>https://chezo.uno/post/2010-02-07-lian-ma-akaperakontesutonixing-tutekita/</link><pubDate>Sun, 07 Feb 2010 04:02:01 -0800</pubDate><guid>https://chezo.uno/post/2010-02-07-lian-ma-akaperakontesutonixing-tutekita/</guid><description>&lt;p&gt;2/6に開催された
に行ってきました。&lt;/p&gt;
&lt;p&gt;初めてアマチュアのアカペラのライブ的なもを聞いてみたのですが、とても楽しかったです。教えてくださったとても
には感謝です。また、
さんや
さんにお会いできたので良かったです。@toriuzuraさんお疲れ様でした！！素直な声が良かったです。&lt;/p&gt;
&lt;p&gt;参加された団体名と分かる範囲での曲目は以下の通りです。(敬称略、曲名は漏れや間違いあるかもしれません。ご容赦ください。曲名のメモをしてくれた妻に感謝！)&lt;/p&gt;
&lt;p&gt;○MERRELL&lt;br&gt;
・Rain drops keep falling on my head (TRY-TONE)&lt;br&gt;
・September&lt;/p&gt;
&lt;p&gt;○Wiz (準グランプリ)&lt;br&gt;
・White Christmas (TRY-TONE)&lt;br&gt;
・The Christmas Song (Vox One)&lt;br&gt;
・You raise me up (TRY-TONE)&lt;/p&gt;
&lt;p&gt;○ピノキオ(グランプリ)&lt;br&gt;
・童謡メドレー「この道-赤とんぼ-もみじ-雪」&lt;br&gt;
・How high the moon&lt;br&gt;
・Spain&lt;/p&gt;
&lt;p&gt;○Siestα&lt;br&gt;
・Moon River&lt;br&gt;
・(曲名わかりませんでした……)&lt;br&gt;
・未来予想図II&lt;/p&gt;
&lt;p&gt;○あぽろーぐ&lt;br&gt;
・(Smooth Aceの曲?)&lt;br&gt;
・逢いたいね(Smooth Ace)&lt;br&gt;
・無敵(Smooth Ace)&lt;/p&gt;
&lt;p&gt;○ASTERISK&lt;br&gt;
・Poison Tree ( &lt;strong&gt;Rajaton&lt;/strong&gt; )&lt;br&gt;
・The Wishing tree (The King&amp;rsquo;s Singers)&lt;br&gt;
・Butterfly ( &lt;strong&gt;Rajaton&lt;/strong&gt; )&lt;/p&gt;
&lt;p&gt;○むらさきのうえ♪&lt;br&gt;
・南風(レミオロメン)&lt;br&gt;
・奏(スキマスイッチ)&lt;br&gt;
・Distance(オリジナル)&lt;/p&gt;
&lt;p&gt;○aquamirage&lt;br&gt;
・Scarborough Fair(オリジナルアレンジ)&lt;br&gt;
・Middle of the River&lt;br&gt;
・The Voice(Celtic Woman)&lt;/p&gt;
&lt;p&gt;○Potion(審査員特別賞)&lt;br&gt;
・Prayer For Peace(The Idea of North)&lt;br&gt;
・Fly me to the moon&lt;br&gt;
・(曲名わかりませんでした……)&lt;/p&gt;
&lt;p&gt;バラエティに富んだ曲やアレンジを楽しむことが出来ました。圧倒的なステージ作りやノリノリの曲、和音で攻める感じなどなど。特に、皆さん難しい和音やリズムの曲にバリバリ取り組んでらっしゃる姿が印象的でした。今までの自分の経験してきた歌と、アカペラな方々の取り組んでいるものとの違いみたいなところが少し分かった気がします。発声方法や求められている方向性が少し違うのかなぁと思いました。割とJazzよりな和音でぶつけることが多いためか、マイクにのせたときに映えるからか、直線的な声だなぁ、と。特に、優勝したピノキオ(東大のOBバンド？らしいです)が、優勝記念でもう一曲歌ったThe Real Groupの
を聞いてそれを強く実感しました。リードのお二人はガンガンぶつけていくという感じが自分にはまねできない感じがしました。(個人的に、これを聞いて自分でThe Real Groupを歌うのは無理かもなぁと思ってしまいました)ちなみに、ピノキオのベースの人はThe Real Groupの変態(ほめ言葉)Anders J.の、超絶低い＆難しいリズムをオリジナルよりもアップテンポで難なくこなされいたので卒倒しそうになりました。彼みたいなベースになるのは楽器の違いなので厳しいですが、一緒に歌える機会があったら幸せだろうなぁと。そして、ピノキオのテノールの人はご自分でアレンジをされているようで、4声へのアレンジも全く問題なく聞けました。また、本戦で歌われていた曲もアレンジが面白かったです。&lt;br&gt;
ただ、全体的に気になったのは和音の難しい曲にいつもチャレンジしているためか、和音がはまる感覚があまり体に染みついてないのかなぁという感じのするところが結構多かった気がします。特に、複雑な和音をぬけて太純な3和音になったときにも崩れたままというのが、なんだかなーという風に思いました。音の勢いはあっても一体感がない感じですね。アーティキュレーションを付けて歌うところが印象に残るというのはよく分かりますが、もっとハーモニーを感じることが出来たら幸せだなぁと思いました。&lt;/p&gt;
&lt;p&gt;個人的には、
がRajatonにチャレンジしていたのには大きな拍手を送りたいです！(いや、実際にも送っていたのですが)。後ろに座っていた(推定Time Five目当ての)おばさまの「コンサートじゃないんだから」とか「あー、ラテン語の宗教曲歌ってた所ね」(ラテン語なんて歌ってませんでしたよ、英語ですよ)等という声にも負けず応援していました。選曲センスが素敵すぎ！Rajaton大好きな自分でも、まさか日本でRajatonの曲が聴けるとは思っていませんでした。感謝感激。しかも、難しい曲だったんですが、ちゃんと聞けるレベルまで持ってきていたのが素晴らしかったです。もちろん欲を言えば色々言いたいことはありますが(Butterflyは2番以降全パートフォルテになってしまったのは残念！パートごとのメリハリがないとわかりにくい曲になってしまいます……)、アマチュアでこんな水準で演奏できているのはかなり頑張っていると思います。ちなみに、アメリカにはこんな
もいます(笑)&lt;/p&gt;
&lt;p&gt;結局なんだかんだで、生の声を重ねることをベースに教会で歌うような宗教曲からポップな曲まで幅広く歌える、Rajatonみたいな歌い手になりたいなーという思いが強まりました。&lt;/p&gt;
&lt;p&gt;追記：全部俺なRajaton Boyな彼は
ですが、
していました。しかも今度は720pのHD画質で(笑)&lt;/p&gt;</description></item><item><title>合唱とアカペラのカレンダーをGoogle Calendarで作ってみた</title><link>https://chezo.uno/post/2010-01-19-he-chang-toakaperanokarendawogoogle-calendardezuo-tutemita/</link><pubDate>Tue, 19 Jan 2010 13:58:00 -0800</pubDate><guid>https://chezo.uno/post/2010-01-19-he-chang-toakaperanokarendawogoogle-calendardezuo-tutemita/</guid><description>&lt;p&gt;自分のために作ってみたものですが、
にありますので良ければ使ってみてください。手で見つけたものを少しずつ書いているものなので、色々と漏れがあります。ありまくりだと思います。また、自分が合唱の方が敏感なので、アカペラのイベントは全然拾えてません。もし、よろしければ情報をお待ちしております。
まで@飛ばしていただくか、このblogにコメントでもOKです。&lt;br&gt;
また、書き込んでくださる方も随時募集中です。基本自分のためのカレンダーではありますが、情報を集められたらいいなーと思っています。&lt;/p&gt;
&lt;p&gt;今後の実現できたら嬉しい機能を妄想してみると、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;twitterから@でカレンダーに登録&lt;/li&gt;
&lt;li&gt;その日のイベントを呟くbot&lt;/li&gt;
&lt;li&gt;ぴあやe-plusから情報を収集してきて(半自動で)登録
1つめに近いことは、
を使えばダイレクトメッセージでQuick addができます。ただ、複数人での登録が出来るかどうかはイマイチわかっていませんので、検証の余地があります。もしくは、自分でcronで回すとかかな。2つめは、
の情報を参考にすればできるやもしれません。3つめについては、e-plusはRSSを吐いているみたいなのですが、ぴあはイマイチよく分かりません。ただ、奴らの情報力はやはり大きいと思います。今度来日するスウェーデン放送合唱団も、先日のカペラのチケットを検索していたらひょっこり検索にひっかかったのです。&lt;br&gt;
自動で出来ると嬉しいことたちです。&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>フェラーラのジョスカン 〜ヴォーカルアンサンブル カペラ定期公演</title><link>https://chezo.uno/post/2010-01-14-hueraranoziyosukan-vuokaruansanburu-kaperading-qi-gong-yan/</link><pubDate>Thu, 14 Jan 2010 13:57:54 -0800</pubDate><guid>https://chezo.uno/post/2010-01-14-hueraranoziyosukan-vuokaruansanburu-kaperading-qi-gong-yan/</guid><description>&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
の演奏会に初めて行ってきました。&lt;br&gt;
曲目は、以下の通りです。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;ジョスカン・デ・プレ　ミサ《フェラーラ公エルコレ》&lt;br&gt;
Josquin des Prez (ca.1450/55-1521), Missa Hercules dux Ferrariae&lt;br&gt;
ジョスカン・デ・プレ 「神よわたしを憐れんでください」（詩編51編）&lt;br&gt;
Josquin des Prez, &amp;ldquo;Miserere mei Deus&amp;rdquo; (Psalmus 50)&lt;br&gt;
グレゴリオ聖歌　ミサ固有唱 Gregorian chant, Proprium missae&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;ルネッサンスは専門外なのですが、非常に楽しめました。目黒の聖アンセルモ・カトリック目黒教会にて演奏を聴いてきました。天井の高い教会で、久しぶりに倍音がわんわんと鳴っているのを体感しました。また、演奏前に曲目の丁寧な解説がついていたため、本来楽譜を持っていないとわからないような曲の構成に対しても気づくことができ、一層楽しめました。Hercules dux Ferrariaeという文字列が、&amp;ldquo;レドレドレファミレ&amp;quot;という音型になるということは歌付きの解説があって初めてわかったものでした。&lt;/p&gt;
&lt;p&gt;ちなみに、この楽譜たちは本番で皆さんがみていた楽譜たちです。人の胴体ぐらいの大きさがありました。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>12月に読んだ本</title><link>https://chezo.uno/post/2010-01-01-12yue-nidu-ndaben/</link><pubDate>Fri, 01 Jan 2010 01:01:57 -0800</pubDate><guid>https://chezo.uno/post/2010-01-01-12yue-nidu-ndaben/</guid><description>&lt;p&gt;読書メータにこんな機能あったのね。しかも画像付き。便利だわー。ちょっと貼り付けてみる。というか、あまり本読んでなかったのねぇ。twitterに時間を奪われていたのかな。&lt;/p&gt;
&lt;p&gt;12月の読書メーター&lt;br&gt;
読んだ本の数：5冊&lt;br&gt;
読んだページ数：1254ページ&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
感動の、というよりは、納得の最終回。最初ラストを理解するのに少し時間がかかったが、切ないというかむなしいというか。おまけ漫画を読むと生き返る。また、1巻から一気に読み直すと感覚が違うんだろう。&lt;br&gt;
読了日：12月31日 著者：
&lt;br&gt;
&lt;br&gt;
非常に興味深い一冊。特に、各会社の社長が様々な立場からゲーム会社の社長となり、それぞれの考え方をもっているのが如実になっているのが良く伝わってきた。ただ、これを読んで国内のゲーム会社にいようかと思うと、任天堂以外海外にあまり向いていないんじゃ、と思ってしまい悩ましくなる。&lt;br&gt;
読了日：12月31日 著者：
&lt;br&gt;
&lt;br&gt;
論理構成がハッキリしていて、読みやすい。twitterの今までが簡潔にまとめてある。今まで使っていた人にも、これから始める人にも、良く使い方が分からない人にもお勧めの良い本です。&lt;br&gt;
読了日：12月30日 著者：
&lt;br&gt;
&lt;br&gt;
興味深い情報もいくつか見受けられるが、酷く読みにくい。何も分かっていない人が何も分かって無いなりに、中身があるんだかないないんだかわからないことを書いてる。色々取材した、ということだけが価値のある一冊。&lt;br&gt;
読了日：12月23日 著者：
&lt;br&gt;
&lt;br&gt;
うーん、いまいちグダグダな終わり方。きっとスピンオフがでるに違いない。のだめと千秋の関係に興味ある人は楽しいのかなぁ。&lt;br&gt;
読了日：12月01日 著者：
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>今更ながら2009年で読まれた記事</title><link>https://chezo.uno/post/2010-01-01-jin-geng-nagara2009nian-dedu-maretaji-shi/</link><pubDate>Fri, 01 Jan 2010 01:01:07 -0800</pubDate><guid>https://chezo.uno/post/2010-01-01-jin-geng-nagara2009nian-dedu-maretaji-shi/</guid><description>&lt;p&gt;あけましておめでとうございます。今年もよろしくお願いします。&lt;/p&gt;
&lt;p&gt;さて、Wordpressに移行して早数ヶ月ですが、統計情報が簡単にアクセスできるのが大変便利で気に入っております。そんななかで、去年一年(もやってないか)で一番読まれた記事は、&lt;br&gt;
でした。ここら辺、皆さん苦労してるんでしょうねぇ。うちは結局Officeを買ってしまいましたが、ふりがな問題は誰かもっとスマートに解決しているのかなぁ。&lt;br&gt;
が次点でした。すみません、アクセスしていただく割には結局Simplify Musicを購入していません。そこまで家でiPhoneで音楽を聴かなくなったのが主な理由でしょうか。&lt;/p&gt;
&lt;p&gt;というわけで、段々と自分の作業ログめいたことが多くなってきていますが、今年もよろしくお願いします。&lt;/p&gt;</description></item><item><title>最相葉月著「絶対音感」を読了した</title><link>https://chezo.uno/post/2009-12-23-zui-xiang-xie-yue-zhu-jue-dui-yin-gan-wodu-liao-sita/</link><pubDate>Wed, 23 Dec 2009 00:12:42 -0800</pubDate><guid>https://chezo.uno/post/2009-12-23-zui-xiang-xie-yue-zhu-jue-dui-yin-gan-wodu-liao-sita/</guid><description>&lt;p&gt;本の大まかな内容は、音楽に素養がない記者が、絶対音感の言葉の響きに惹かれて解明しようとした努力の軌跡である。まとめると、&lt;br&gt;
・絶対音感の定義は曖昧だが、その中でもレベルがある&lt;br&gt;
・相対音感教育もあわせてすべき&lt;br&gt;
・後藤みどりのルポ&lt;br&gt;
といったところかな。とにかく、取材した順に並べてるんじゃないかというくらい読み辛いのだが、面白いところもいくつかあった。&lt;/p&gt;
&lt;p&gt;著者の分からないものを分からないままに、研究者や音楽家の言葉を集めて語る手法は、研究をかじったことがあるものならムズムズするに違いない。特に、○○学者や音響学会の名前を出すことで、権威付をして引用をする姿勢は記者独特というか、学術的でないために耐えるのが辛かった。そして、後藤みどりのルポの生き生きとしていること！彼女の書きたかったところはここなのだと読み解けて、逆にほっとした。&lt;/p&gt;
&lt;p&gt;と、苦言ばかりもなんなので、この本を読んでよかった点を。&lt;br&gt;
1.音楽家や研究者の言葉を豊富に集めてあること&lt;br&gt;
これだけの量の文献や取材をするのは相当骨が折れたに違いない。著者の知識不足や教養不足による、切り貼りの下手さが目立っても、やはり集められた言葉自体には重みがあります。佐渡裕氏の言葉はいちいち興味深いです。&lt;/p&gt;
&lt;p&gt;2.絶対音感教育の歴史が知れたこと&lt;br&gt;
特に、戦時中の戦闘機の音の弁別のために利用されようとしていたというエピソードは、普段の音楽に触れる生活では得られないと思います。&lt;/p&gt;
&lt;p&gt;3.絶対音感のカテゴリがぼんやり見えてきたこと&lt;br&gt;
絶対音感のカテゴリとしては、音名がなんとなく分かるという人、それが左脳で言語のように理解できる人、覚えた音とピッチがずれると気になる人、そうでない人、という感じだと思います。&lt;br&gt;
絶対音感教育のやり方を読むと、実は絶対音感を教えるときは和音で教えてしまうというのが驚きでした。むしろ、習わないJAZZや不協和音などからは普通と同じように分析的に聴くしかないということ。つまり、パターン認識の学習をさせてるだけだということになるのではないかと思うと、機械でも面白いことができないかなと思ってしまいます。&lt;br&gt;
関屋晋の「だいたい音感」をふと思い出しまた。&lt;/p&gt;
&lt;p&gt;音楽、音響とかの予備知識があると怪しい記述にうんざりしますが、普段なかなか読めない武満徹氏や佐渡裕氏の言葉やエピソードち触れられるという意味では楽しい本でした。ただ、著者がよく分かっていないことを、人の言葉を借りて切り貼りしてるだけなので、知ってる人はイライラ、知らない人はさっぱり分からない気もします。&lt;/p&gt;</description></item><item><title>粒谷区民合唱団の一つの実現方法(妄想) - #tlros を通じて思ったこと -</title><link>https://chezo.uno/post/2009-12-17-li-gu-qu-min-he-chang-tuan-no-tunoshi-xian-fang-fa-wang-xiang-number-tlros-wotong-zitesi-tutakoto/</link><pubDate>Thu, 17 Dec 2009 13:57:33 -0800</pubDate><guid>https://chezo.uno/post/2009-12-17-li-gu-qu-min-he-chang-tuan-no-tunoshi-xian-fang-fa-wang-xiang-number-tlros-wotong-zitesi-tutakoto/</guid><description>&lt;p&gt;最近、twitterで曲を歌うことになりました。なんというか、アカペラーや合唱人との繋がりが楽しくなってきたのですが、まさかこんな展開になるとは思っていなかったので楽しさが増してきました。&lt;br&gt;
TLに、三善晃や武満徹の文字が流れる日が来るとは！&lt;/p&gt;
&lt;p&gt;で、そんなわけで
さんが編曲したThe last rose of summerを歌うことになりました。(
,ハッシュタグ:
,楽譜などはまとめにあります。というか、
さんには感謝!) 正直２年くらいまともに歌っていなかったので、かなりいろんないみで不安だったりするのですが、何事も挑戦と言うことで参加してみました。&lt;/p&gt;
&lt;p&gt;粒谷区という日本語の仮想の区があるそうですが、粒谷区民合唱団はないの？というのをどなたかが呟いていたのです。(調べてみると、
と
は既にあった！)確かに、これはあっても面白そうだなぁと思ったのですが、オケと違って歌って結構録音しやすいんじゃないかと思うんですよね。そこで、粒谷区民合唱団の実現方法について妄想してみました。&lt;/p&gt;
&lt;p&gt;簡単に言うとこんな特徴のソーシャルサービスの形が面白そう。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;各自が自分の歌いたい曲の歌いたいパートを、どんどんUploadしていく&lt;/li&gt;
&lt;li&gt;曲名、作曲者名などをタグで管理&lt;/li&gt;
&lt;li&gt;twitterアカウントでログインする&lt;/li&gt;
&lt;li&gt;自由に他の人の声に重ねていける(ライセンスは
の継承(Share Alike)みたいな形？)
自分が歌った色々なパートを持ち寄って一つの楽曲を作り上げるということ。これができるとすごく面白いんじゃないかな。「誰々のにあわせましたー」というコメントとタグを付けて、パートごとに歌った音データをUpするのが良いのではないかな？現状で、未完成品をシェアして作り出せるようなサービスってあるんだろうか。なければ、作れたら楽しいだろうなぁと思います。こんなサービス知ってる人がいたら教えてください。なければ、、、つくれたら幸せ！？&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;もちろん、実際に集まって歌えたらもっと楽しいと思います！&lt;/p&gt;</description></item><item><title>ふたご座流星群は今晩から。14日AM2時がピーク</title><link>https://chezo.uno/post/2009-12-13-hutagozuo-liu-xing-qun-hajin-wan-kara-14ri-am2shi-gapiku/</link><pubDate>Sun, 13 Dec 2009 13:57:27 -0800</pubDate><guid>https://chezo.uno/post/2009-12-13-hutagozuo-liu-xing-qun-hajin-wan-kara-14ri-am2shi-gapiku/</guid><description>&lt;p&gt;前回のしし座流星群の時には逃してしまったので、今回こそはきちんと押さえておこうと思います。
.&lt;/p&gt;
&lt;p&gt;今回のピークは、１4日の午前２時だそうです。今晩はうちのあたりは曇りなので、明日の夜にチャレンジしようと思います。この時期なので、あたたかい恰好をして臨みたいと思います。&lt;br&gt;
「あたたかい」といえば今日会ったアメリカからの留学生が、「あたたかい」という言葉の発音が難しいと言っていました。日本語は全部に母音を入れるのが大変なんだ、ということみたいです。類似品で「肩たたき」も難しいんだとか。早口言葉は難しいのかも。&lt;/p&gt;</description></item><item><title>After Devil Forceを発掘した</title><link>https://chezo.uno/post/2009-12-05-after-devil-forcewofa-jue-sita/</link><pubDate>Sat, 05 Dec 2009 13:57:22 -0800</pubDate><guid>https://chezo.uno/post/2009-12-05-after-devil-forcewofa-jue-sita/</guid><description>&lt;p&gt;昔々、Compileというゲーム会社があったのだが（中略）、実家に帰ったら晩年の作品であるAfterDevilForceを発見してしまいました。当時、中学生だった自分には、最終面だけはクリアできなくて諦めた記憶があります。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;どういう話の筋かというと、小国クォーダが傭兵で外貨を稼いで国の生計を立てていたのですが、それら傭兵を率いる王が急死し、急遽攻めてきた同盟軍でもある大国ラウルを退けるという話です。基本的に、奇襲や撤退戦など力押しでなんともならないので、頭を使って戦わなければならないというのが珍しいと思ってプレイしていました。SRPGって終盤に行けば行くほど味方がもりもり強くなっていって、ボスだけ急激に強くなると言う印象があったのですが、最初から最後まで敵軍有利な状況しかなく、何ユニット以上撃破して退却させるという渋いクリア条件が楽しいところでした。１０年前のゲームですが、良くできた作品です。&lt;/p&gt;
&lt;p&gt;で、久しぶりにXPで起動してみて音が大分違うなぁとか（SoundBlasterを狙って作られたMIDIなので音色が違う）、ぶつぶつ言いながらプレイしていたのですが、やはり最後の７面は無理ゲーだったので、ニコニコ動画で参考までにプレイ動画を見てみました。そしたら、ある意味チェスのようにかなり頭を使ってクリアされていたわけです。&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;なんというか、ぬるゲーマーの自分としては最後は力押しというか、ゲームに頭を使ったら負けだと思っているので（ぇ、プレイ動画を見て満足してしまいました。&lt;/p&gt;
&lt;p&gt;ちなみに、色々と攻略記事を探していたら、
を見つけて喜んでおりました。なんでも、
とか。
もあるのですが、もうこれが世に出ないかと思うと惜しいの一言です。権利問題とかガチガチなんだろうなぁ。続編前提のシナリオだっただけに、残念です。&lt;/p&gt;</description></item><item><title>お安くお手軽アカペラ多重録音のための機材</title><link>https://chezo.uno/post/2009-11-26-oan-kuoshou-qing-akaperaduo-zhong-lu-yin-notamenoji-cai/</link><pubDate>Thu, 26 Nov 2009 13:57:16 -0800</pubDate><guid>https://chezo.uno/post/2009-11-26-oan-kuoshou-qing-akaperaduo-zhong-lu-yin-notamenoji-cai/</guid><description>&lt;p&gt;本格的に始めよう、というわけではなく、とりあえずアカペラで多重録音を始めてみようと思ったため、機材を簡単にそろえてみました。&lt;/p&gt;
&lt;p&gt;PCで録音をすることが前提（Webでデータをやりとりして重ねることが想定された）なので、購入したのは&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;マイク&lt;/li&gt;
&lt;li&gt;オーディオインターフェース（IF）&lt;/li&gt;
&lt;li&gt;マイクケーブル&lt;/li&gt;
&lt;li&gt;マイクスタンド
の4点です。基本的に値段重視です。うっかり挫折しても投資を後悔しないように。質が良いかはあけてみてのお楽しみ。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;マイクは、
にしました。値段の割にはいい音だそうです。音の癖はS58に比べると多少あるかもです。マイクケーブルは、
。500円と安価ですがそこそこ良いみたい。スタンドも
。こちらもお買い得なのです。&lt;br&gt;
オーディオインターフェースは安さ重視ということで、昔だったらEdirolのUA-25とかだったのですが既に生産停止しているようで。結局、
にしました。7000円弱で手に入るならいいかなと。&lt;/p&gt;
&lt;p&gt;しめて、12000円程度で導入できました。週末には届くので今から楽しみです。&lt;br&gt;
それまで、厳しい特訓が待っているみたいですが……。ルネサンスは厳しいよー&lt;/p&gt;</description></item><item><title>The Real Album</title><link>https://chezo.uno/post/2009-11-26-the-real-album/</link><pubDate>Thu, 26 Nov 2009 13:57:09 -0800</pubDate><guid>https://chezo.uno/post/2009-11-26-the-real-album/</guid><description>&lt;p&gt;Pass Me the Jazzがすてきなアルバムです！&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/a435vNaIG2k?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;Bumboo Beeもすてき。&lt;/p&gt;
&lt;p&gt;新体制になって日本では初めてのアルバムなのですが、全体的な印象としてはポップな感じです。Emmaはこれからの活躍に期待という意味で、楽しみにしています。まだまだ若々しいかなぁという印象です。他のメンバーの変態っぷりは健在です。クラシカルではないポップな彼らが好きな人は、手に入れたい一枚だと思います。&lt;/p&gt;
&lt;iframe style="width:120px;height:240px;" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" src="//rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=chezou-22&amp;language=ja_JP&amp;o=9&amp;p=8&amp;l=as4&amp;m=amazon&amp;f=ifr&amp;ref=as_ss_li_til&amp;asins=B002LFZFWU&amp;linkId=d49ede6f340ada8f1e1172c58b5f1233"&gt;&lt;/iframe&gt;</description></item><item><title>JBL reference 410を修理に出すことに決めた</title><link>https://chezo.uno/post/2009-11-18-jbl-reference-410woxiu-li-nichu-sukotonijue-meta/</link><pubDate>Wed, 18 Nov 2009 02:11:03 -0800</pubDate><guid>https://chezo.uno/post/2009-11-18-jbl-reference-410woxiu-li-nichu-sukotonijue-meta/</guid><description>&lt;p&gt;いつからか、片方の音が出なくなったうちのJBL reference 410だったのですが、ふらっと調べてみたら意外と修理にお金がかからなさそうというのが分かったので、修理に出すことにしました。（ちなみに、多分
に巻き付けてたから悪くなっちゃったのかも、と思っています。。。）&lt;/p&gt;
&lt;p&gt;お値段は、&lt;/p&gt;
&lt;p&gt;・プラグのみの交換の場合\3675(技術料込み）&lt;br&gt;
・それ以外の場合は\7000&lt;/p&gt;
&lt;p&gt;と思ったより高くないことが分かりました。もちろん、自分で修理する人もいるとは思うんですけど、今回ちょっと断線っぽくないので諦めて修理にしようかなと。一時期e-bayでは$45くらいでいっぱい出品されていたんですが、今では生産完了品だからかほとんど出回らなくなりました。お値段の割に上品な音使いが気に入っている品なので、大事にしたいです。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product//?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
JBL reference 410
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;参考URL:&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>iPhoneケースを買い換えた</title><link>https://chezo.uno/post/2009-11-14-iphonekesuwomai-ihuan-eta/</link><pubDate>Sat, 14 Nov 2009 04:11:21 -0800</pubDate><guid>https://chezo.uno/post/2009-11-14-iphonekesuwomai-ihuan-eta/</guid><description>&lt;p&gt;もともと、
を使っていたのですが、先日開けようと思ったら接続部の薄いところが折れているのに気付いて買い換えました。6月に買ってわずか5ヶ月の命でした。iPhone本体は傷など付いておらず、気に入っていただけに残念です。&lt;/p&gt;
&lt;p&gt;で、そんな折に
を見て良い機会だから買い換えました。&lt;/p&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B002STWZU4/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
iPhone 3G / 3GS ID Case with Screen Protector, Matte Royal Blue アイ・ディ ケース (液晶保護シート つき) マット・ロイヤル・ブルー IPH3GID-BRBLU
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;ちょっとはめて使ってみた感想ですが、&lt;/p&gt;
&lt;p&gt;クリスタルジャケットに比べて表面に段差がないので、本来のiPhoneってこんな感じなんだーと新鮮です。ポケットに入れた感じは以前より分厚くなったので、もう一台の携帯と一緒には入らないのかなぁ、と思います。最大のポイントであるカードを入れて似非おサイフケータイ化作戦は、懸案事項が出来たため保留中です。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;ビックViewスイカを入れるのはちとリスキー&lt;/li&gt;
&lt;li&gt;
が入らない
基本的に、モバイルSuicaの代わりに使えるのがベストなので、家でのSuicaチャージが必要となってくるわけです。ですが、現状持っているチャージ対応SuicaがビックViewスイカだけなので、携帯ごとなくすとショックが大きいかなぁと思っています。記名式のSuicaでも入手すれば、安心して使えるなぁと。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;バスカードについては、基本的に頻繁に使うのでこれとSuicaを同時に刺したいと思っていたのですが、残念ながら少し磁気カードの方が大きいので入らなかったです。上を少し切ってしまえば良いのかなぁとか考えたけど、そうすると通らなくなったりするのが怖いですしね。。。一枚だけなら曲げつついれれましたが、奥までいれると引っかかって出てこなくなってしまいました。&lt;/p&gt;
&lt;p&gt;カードのホルダー感はばっちりで、一枚でも落ちそうにありません。これから有効活用していきたいと思います。&lt;/p&gt;</description></item><item><title>無線コントローラ</title><link>https://chezo.uno/post/2009-11-14-wu-xian-kontorora/</link><pubDate>Sat, 14 Nov 2009 01:11:32 -0800</pubDate><guid>https://chezo.uno/post/2009-11-14-wu-xian-kontorora/</guid><description>&lt;p&gt;そういえば、
を買った。っていってもけっこう前ですが。思ったような遅延は感じられない。そんなにシビアなゲームはやってないからか。&lt;br&gt;
ただ、最近プレイするのがCoD4だから、全く意味ないという‥
はWindows版は12/23と遅いのが残念すぎる。待てないので、もう少し今のバージョンで練習しよう。&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://chezo.uno/post/2009-11-14-wu-xian-kontorora/p_1600_1200_fddd2f30-f71b-4f86-bbae-7095a4841fbd.jpeg"&gt;
&lt;/figure&gt;</description></item><item><title>Nas Navigator2をWindows7(64bit)で動かす方法</title><link>https://chezo.uno/post/2009-11-11-nas-navigator2wowindows7-64bit-dedong-kasufang-fa/</link><pubDate>Wed, 11 Nov 2009 04:11:25 -0800</pubDate><guid>https://chezo.uno/post/2009-11-11-nas-navigator2wowindows7-64bit-dedong-kasufang-fa/</guid><description>&lt;p&gt;
ですが、なんとか動かすことに成功しました。グラフィックボードのドライバ関係もあって、再インストールした後に行いました。&lt;/p&gt;
&lt;p&gt;1．管理者権限で、setupを実行する&lt;br&gt;
2.nassvc.exeを管理者権限で実行できるようスタートアップにショートカットを置く&lt;/p&gt;
&lt;p&gt;つまり、nassvc.exeがNASの自動実行のためのパケットを出し続けているようです。ただ、管理者でないユーザでの実行は確認していないです。&lt;/p&gt;
&lt;p&gt;
Buffaloはちと最近厳しいのかなぁ。&lt;/p&gt;</description></item><item><title>RAJATON BEST of 1999-2009がうちにきた</title><link>https://chezo.uno/post/2009-11-10-rajaton-best-of-1999-2009gautinikita/</link><pubDate>Tue, 10 Nov 2009 13:56:43 -0800</pubDate><guid>https://chezo.uno/post/2009-11-10-rajaton-best-of-1999-2009gautinikita/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2009-11-10-rajaton-best-of-1999-2009gautinikita/p_1466_1100_a35c0282-e71c-40aa-ad01-4952aee2124c_hu_5c251b5cb9479ddf.webp 320w, https://chezo.uno/post/2009-11-10-rajaton-best-of-1999-2009gautinikita/p_1466_1100_a35c0282-e71c-40aa-ad01-4952aee2124c_hu_cfa24b534600632c.webp 480w, https://chezo.uno/post/2009-11-10-rajaton-best-of-1999-2009gautinikita/p_1466_1100_a35c0282-e71c-40aa-ad01-4952aee2124c_hu_75db4d9fb01fa643.webp 481w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2009-11-10-rajaton-best-of-1999-2009gautinikita/p_1466_1100_a35c0282-e71c-40aa-ad01-4952aee2124c_hu_5c251b5cb9479ddf.webp"
width="481"
height="640"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;いつの間にか、Finlandのアカペラグループ
のベストアルバムが出ていたので購入してしまいました。(日本でのRajaton情報は
さんが詳しいです。最近は
いらっしゃるようです)&lt;/p&gt;
&lt;p&gt;本当はThe Real Groupの一番新しいアルバムも買ったのですが、新メンバーお披露目、という印象程度で今日まで来てしまったので、いつか多分書きます。。。&lt;/p&gt;
&lt;p&gt;で、CD自体はベストということで、今までのアルバム結構持ってるから知ってる曲ばっかりかなぁーと思ったら、CDにしていなかった曲も2曲納められていました。La Dolce VitaとTosi lapselinen joulusikermä, Liveですが、前者はYouTubeなどでTVの映像が良く出てくる歌謡曲みたいな曲です（映画の曲らしい？）。&lt;/p&gt;
&lt;p&gt;それよりも、お目当てはDVDです。結構JouluというDVDと重複があるのですが、ButterflyのLive映像は以前のDVDにはありませんでしたし、LuntaとKertosäkeen nainenという曲が素敵です。前者は、雰囲気イケメン（笑）なPVで魅了してくれます。後者はメンバーが楽器を演奏（！？）しながら奏でる楽しげな曲です。このDVDのおかげで更にRajatonが好きになりました。ただ、PALなので日本ではPCでしか見られないと思います。&lt;/p&gt;
&lt;p&gt;総括すると、CDは入門者にもおすすめな手堅い曲がきっちり入っていて、かつDVDも良い曲揃いですので、Rajatonに興味のある方は是非買いです！お値段も22ユーロ程度とお値打ちです。国内で入手する場合は、
が手軽で良いのではないでしょうか。&lt;/p&gt;
&lt;p&gt;やっぱりButterflyは名曲です！&lt;/p&gt;
&lt;p&gt;追記：&lt;br&gt;
関心空間の素敵な記事を書いていた方も
ヘルシンキで手に入れられたようで、羨ましい限りです。&lt;/p&gt;</description></item><item><title>いつのまにか、wptouchが導入されていた</title><link>https://chezo.uno/post/2009-10-27-itunomanika-wptouchgadao-ru-sareteita/</link><pubDate>Tue, 27 Oct 2009 14:56:37 -0700</pubDate><guid>https://chezo.uno/post/2009-10-27-itunomanika-wptouchgadao-ru-sareteita/</guid><description>&lt;p&gt;昔探したときはまったく情報がなかったものですが、いつの間にか
していました。って、10/22ってすごい最近だし。&lt;/p&gt;
&lt;p&gt;こちらとしては、記事を書くだけで自動的にiPhone/iPod touchでアクセスしたときにwptouchが動いてくれるみたいです。&lt;br&gt;
最近は、fc2といいiPhone対応が進んでいるみたいで便利です。3GでRSS flash g経由でAppbankを開くと、画像が多すぎて頻繁に落ちるのは辛いですが……。&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;</description></item><item><title>【メモ】Windows7用動作確認系リンク</title><link>https://chezo.uno/post/2009-10-26-memo-windows7yong-dong-zuo-que-ren-xi-rinku/</link><pubDate>Mon, 26 Oct 2009 14:56:32 -0700</pubDate><guid>https://chezo.uno/post/2009-10-26-memo-windows7yong-dong-zuo-que-ren-xi-rinku/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
とりあえず、二件しかないけどメモしておく。&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Logitecがオーディオに本気出してきた！？</title><link>https://chezo.uno/post/2009-10-26-logitecgaodeioniben-qi-chu-sitekita/</link><pubDate>Mon, 26 Oct 2009 14:56:26 -0700</pubDate><guid>https://chezo.uno/post/2009-10-26-logitecgaodeioniben-qi-chu-sitekita/</guid><description>&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;iPhone/iPod用のマイクです。44/22kHzのwavで録音できる代物で、iPhoneやiPodに刺すだけで使えるみたいです。
一つ前の機種は会議用として販売されたそうなのですが、多くのユーザが音楽用途に使いまくって「音が割れるぞ！」とクレーム出しまくったら出たという代物らしいです。Amazonのレビューには逆に「会議用途には使えません」とわざわざそれを皮肉ったものも（笑）
実売6000円くらいと、ちょっと手が伸びる価格帯なのがやばい。いつか買ってみたい一品です。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="https://images-na.ssl-images-amazon.com/images/I/41LH3I8OB7L.jpg" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>NAS Navigator2が悪さをする@Windows7 64bit</title><link>https://chezo.uno/post/2009-10-26-nas-navigator2gae-sawosuru-at-windows7-64bit/</link><pubDate>Mon, 26 Oct 2009 14:56:21 -0700</pubDate><guid>https://chezo.uno/post/2009-10-26-nas-navigator2gae-sawosuru-at-windows7-64bit/</guid><description>&lt;p&gt;091111追記：解決方法は
。&lt;/p&gt;
&lt;p&gt;一回だけなんですが、Nas Navigator2がRun time errorを出してくれました。&lt;/p&gt;
&lt;p&gt;で、調べてみると
&lt;/p&gt;
&lt;p&gt;どうも、管理者モードでインストールしないとダメみたいです。&lt;br&gt;
で、改めてアンインストールしようとしたら、それができない。コンパネからもスタートメニューからも、ダメ。BuffaloはWindows7（というか64bit？）対応があまり積極的でないとも聞きます。そろそろio-dataに切り替え時なのかなぁ。&lt;/p&gt;
&lt;p&gt;追記：&lt;br&gt;
ネットワーク上のTera/LinkStationを検索中です　が出て止まりません！NASにも三角アイコンがついてるし……。だめだぁ、こりゃ&lt;/p&gt;
&lt;p&gt;さらに追記：&lt;br&gt;
なぜか、スタート→すべてのプログラム経由でアンインストールできた。下手に互換モードとかにしてもいけないみたい。よくわからん。ダメルコの時代に戻ったのか？&lt;/p&gt;</description></item><item><title>Mac対応していないNASのプリントサーバー機能を使うには</title><link>https://chezo.uno/post/2009-10-25-macdui-ying-siteinainasnopurintosabaji-neng-woshi-uniha/</link><pubDate>Sun, 25 Oct 2009 14:56:16 -0700</pubDate><guid>https://chezo.uno/post/2009-10-25-macdui-ying-siteinainasnopurintosabaji-neng-woshi-uniha/</guid><description>&lt;p&gt;前々からやりたいと思っていたのだができなかったことだったのだが、今回Windows7を導入にあたってトライしてみたらあっさりできた。基本発想としては、Windows用にsamba経由で共有されているNASなのだから、MacのWindows用プリンタの共有を使ってみたら？という考えだ。&lt;br&gt;
これが、見事に的中した。&lt;/p&gt;
&lt;p&gt;環境は、&lt;br&gt;
Printer:Canon MP610&lt;br&gt;
NAS:
&lt;br&gt;
Mac OS X Leopard&lt;/p&gt;
&lt;p&gt;1.
の最新版をインストールする&lt;br&gt;
2.Macの「プリンタ設定ユーティリティ」から＋ボタンを押し「ほかのプリンタ」を追加する&lt;br&gt;
3.ネットワーク上で見えるNASのWorkgroupの下にあるプリンタを選び、ドライバはMP610の後ろにGimpprintとか書いてあったと思います。&lt;/p&gt;
&lt;p&gt;以上で完了です。最初ドライバが見つからなかったときはどうしようかと思いましたが、意外とすんなりといけました。&lt;/p&gt;
&lt;p&gt;参考：&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;</description></item><item><title>Windows7 64bitをDG33TLMになんとか導入した</title><link>https://chezo.uno/post/2009-10-23-windows7-64bitwodg33tlmninantokadao-ru-sita/</link><pubDate>Fri, 23 Oct 2009 14:56:10 -0700</pubDate><guid>https://chezo.uno/post/2009-10-23-windows7-64bitwodg33tlmninantokadao-ru-sita/</guid><description>&lt;p&gt;予想外に時間がかかってしまった、64bit版の導入。つまずいたところを忘れないようにメモする。&lt;/p&gt;
&lt;p&gt;今回の問題は、intel dg33tmlのドライバ周りがデフォルトでは32bit版なのか、Windowsエクスペリメントインデックスが完走しなかった。行ったポイントは２つ。&lt;/p&gt;
&lt;p&gt;1.BIOSのアップデートを念のため行う&lt;br&gt;
2.インテルのサイトでドライバアップデート。一応、チップセット、LAN、グラフィックを３つしっかりいれないとうまくいかなかった。&lt;br&gt;
64bitのほうがスコア値があがりました。&lt;br&gt;
ネックは、グラフィックか。&lt;/p&gt;</description></item><item><title>Windows7がきた！入れた！XP mode試した！</title><link>https://chezo.uno/post/2009-10-23-windows7gakita-ru-reta-xp-modeshi-sita/</link><pubDate>Fri, 23 Oct 2009 14:56:05 -0700</pubDate><guid>https://chezo.uno/post/2009-10-23-windows7gakita-ru-reta-xp-modeshi-sita/</guid><description>&lt;p&gt;64bit版を入れ直す←もうすぐここ&lt;/p&gt;
&lt;p&gt;Windows7の製品版が来ました。RC版で触っていたから、そんなに驚くこともなくスムーズに導入できました。&lt;br&gt;
基本的なソフト（ATOKやらFirefox,iTunesにIDMangerなどなど）を入れ終わって、XP modeの実力を試したら、64bit版を入れ直そうと思います。&lt;/p&gt;
&lt;p&gt;まってろよ！64bit Windows7！&lt;/p&gt;</description></item><item><title>VAIO Xに心ときめく</title><link>https://chezo.uno/post/2009-10-18-vaio-xnixin-tokimeku/</link><pubDate>Sun, 18 Oct 2009 14:56:00 -0700</pubDate><guid>https://chezo.uno/post/2009-10-18-vaio-xnixin-tokimeku/</guid><description>&lt;p&gt;IYHって単なるマリオ的雄叫びだと思っていたら、衝動買いをしてしまったということだったんですね。これだから、ネットの略語は面白い。&lt;/p&gt;
&lt;p&gt;今更ながら、CEATECにて
の実機を触ってきました。名前をど忘れして、Vaio type Xとかで検索してもでなかったのですが、
で検索したら出てきたという。Google先生も頑張ってらっしゃる。&lt;br&gt;
実機を触ってみた感触としては、恐ろしい軽さ。これなら鞄に入れっぱなしにしておいても苦にならないだろうという印象。個人的には、ノートは軽くて薄くなければ意味がない、という思想の基、SRX-3E→Type Gと来て壊れやすいが愛着もわいているVaioなので、こういう薄くて軽い路線は大歓迎。今Type Gがあるから我慢できるものの、何も無ければIYHしてたところだと思います。&lt;/p&gt;
&lt;p&gt;ただ、Type Gの時にCore Soloでも我慢できる！とか思って、結局処理重いなぁとか思っているので(1.8inch HDDとかウィルスバスターのせいも大いにあるかもしれないが)、Atom系は微妙なんだよなぁ、と我慢しております。&lt;/p&gt;
&lt;p&gt;ただ、根本的にiPhoneがあれば大体事足りる生活が出来つつあるので、おそらく旅行に行った先での手軽に利用できるマシンとして、という位置づけかなぁ。&lt;/p&gt;</description></item><item><title>CEATECいってきた</title><link>https://chezo.uno/post/2009-10-10-ceatecitutekita/</link><pubDate>Sat, 10 Oct 2009 14:55:54 -0700</pubDate><guid>https://chezo.uno/post/2009-10-10-ceatecitutekita/</guid><description>&lt;figure&gt;&lt;img src="https://chezo.uno/post/2009-10-10-ceatecitutekita/p_1600_1200_eeff51ad-5f1c-4cb3-9c71-f5f1b3da8a27.jpeg"&gt;
&lt;/figure&gt;
&lt;p&gt;去年と比べると少し勢いが薄れたかな、という印象でした。写真は海浜幕張駅の様子。あさから、階段を降りるという行列を楽しんで来ました。&lt;br&gt;
個人的には音響よりのメーカーが出展していなかったので、残念でした。昨年はVictorやPioneerがスピーカーやイヤホンを試聴させてくれたのに。。&lt;br&gt;
自分が見た中では、三菱のREALと東芝のセルREGZAのスピーカー、dynapocketのノイズ抑制、ドルビー先生のデモくらいかなぁ。&lt;br&gt;
テレビ対決は、お金の掛け具合の違いもあり、REGZAの方がよろしかったです。デモの方法の違いも大きいかなぁ。一方がJAZZライブに対し、もう一方が映画の予告編。しかも、ミサイルの爆音ですらあまり感じなかったという…。値段の差ですかねぇ。&lt;br&gt;
ドルビー先生のは、PCに組み込みしないとダメみたいなんで、そんなもんかなぁと。むしろ、試聴用ヘッドホンがHD555なのを見て、やはり映画向きなんだなぁーと実感。&lt;/p&gt;
&lt;p&gt;家電メーカー各社は、東芝を除いてメインはエコと3Dなので、あまり楽しめませんでした。むしろ、KDDIのテレビとの連携（番組推薦等）を見て家電の世界に入って来たかと思ったり、ドコモの眼球操作（筋電ではなく、左右しか取れないらしい）を見て、新たなインターフェースの可能性感じたりしてきました。&lt;/p&gt;</description></item><item><title>Windows7を予約した</title><link>https://chezo.uno/post/2009-09-25-windows7woyu-yue-sita/</link><pubDate>Fri, 25 Sep 2009 14:55:49 -0700</pubDate><guid>https://chezo.uno/post/2009-09-25-windows7woyu-yue-sita/</guid><description>&lt;p&gt;GIGAZINEを読んでいたら、
に触発されて予約してしまいました。&lt;br&gt;
色々調べていたら、どうやらWindowsXP HomeからもWindows7 Professionalに移行出来る模様。RC版を使ってみる感じでは、普通にいけます。特に問題は感じないです。&lt;br&gt;
あ、
と
はVistaにすら対応していないので、諦めました。まぁ、１００円で買ったからいいか。&lt;/p&gt;</description></item><item><title>Motion Blue YOKOHAMA</title><link>https://chezo.uno/post/2009-09-24-motion-blue-yokohama/</link><pubDate>Thu, 24 Sep 2009 14:55:44 -0700</pubDate><guid>https://chezo.uno/post/2009-09-24-motion-blue-yokohama/</guid><description>&lt;p&gt;初めて赤レンガ倉庫に行ってきました。お目当てはモーションブルーで行われたJAZZピアノ。&lt;br&gt;
ちょっと優雅なディナーと洒落込みました。&lt;/p&gt;
&lt;p&gt;テナーサックスの色っぽい音色や、ウッドベースの温かい音を満喫してきました。&lt;br&gt;
帰りは赤レンガ倉庫のお店を見て回るも、あまりパッとしたものもなく。連れ曰く、劣化パルコとのことです。趣はあるんだけどね。&lt;/p&gt;
&lt;p&gt;[&lt;figure&gt;&lt;img src="https://chezo.uno/post/2009-09-24-motion-blue-yokohama/l_1600_1200_ca074d00-f85d-4139-b129-5ed39958279b.jpeg"&gt;&lt;figcaption&gt;
&lt;h4&gt;](l_1600_1200_ca074d00-f85d-4139-b129-5ed39958279b.jpeg)&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>PCでワイヤレスコントローラを使うには</title><link>https://chezo.uno/post/2009-09-22-pcdewaiyaresukontororawoshi-uniha/</link><pubDate>Tue, 22 Sep 2009 14:55:38 -0700</pubDate><guid>https://chezo.uno/post/2009-09-22-pcdewaiyaresukontororawoshi-uniha/</guid><description>&lt;p&gt;ふと思い立って、WiiよろしくPCもワイヤレスコントローラでゲームをやってみたい、と思ったので調べてみた。&lt;/p&gt;
&lt;p&gt;おおざっぱにまとめると今のところ、3つの方法が有力かなぁ。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;普通に売っているLogicoolやHORIのPC用のコントローラを買う&lt;/li&gt;
&lt;li&gt;PS3用のDual Shock3を買う&lt;/li&gt;
&lt;li&gt;XBOX360用ワイヤレスコントローラを買う
1．普通に売っているLogicoolやHORIのPC用のコントローラを買う(\4000程度)&lt;br&gt;
普通すぎる選択肢ですが、たとえば
なんかがあるみたいです。これだと、難しいことを考えずに使える模様。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;2.PS3用のDual Shock3を買う(\5500程度)&lt;br&gt;
に
アダプタを買えば良いみたいです。デスクトップにはbluetoothアダプタが無いのでこうするしかないのかな。前者が\4400、後者が\1050ということです。PS3が無い環境ではちとためらうお値段。&lt;/p&gt;
&lt;p&gt;3.XBOX360用のワイヤレスコントローラを入手する(\9000程度)&lt;br&gt;
今となってはあまりオススメできない方法。ワイヤレスゲームアダプタというUSB側のアダプタ(\2100)が、現在入手するのが困難なのがその理由です。で、代替案としては\5000ちょいする
を買ってPCにつなぐと良いようです。コントローラ(\3780)と併せて\9000弱か……。高いなぁ。&lt;/p&gt;
&lt;p&gt;というわけで、手元にPS3もXBOX360も無い身としては、1のLogicoolのコントローラを買うのが無難そうです。しかし、シミュレーションゲームくらいしかやらないんだったら、ワイヤレスキーボード＆マウスで事足りそうなので、気が向いたらか。&lt;/p&gt;
&lt;p&gt;参考URL:
&lt;/p&gt;</description></item><item><title>RENT ブロードウェーツアーを見て来た</title><link>https://chezo.uno/post/2009-08-30-rent-burodouetuawojian-telai-ta/</link><pubDate>Sun, 30 Aug 2009 01:08:13 -0700</pubDate><guid>https://chezo.uno/post/2009-08-30-rent-burodouetuawojian-telai-ta/</guid><description>&lt;p&gt;今更ながら、報告です。&lt;br&gt;
行ける日程が急遽変更になったのですが、運良く譲っていただいていけることとなりました。&lt;br&gt;
まさか、映画でみたマークに、ロジャーに会えるとは思っていませんでした。日本に来たことに感謝。&lt;br&gt;
生のバンド演奏に震え出す思いでした。ロックミュージカルだわぁ。&lt;br&gt;
また、高良さんのダンスのキレも全然違っていてよかったです。日本人で背が低いことを感じさせないのが凄い。&lt;/p&gt;
&lt;p&gt;一度生で見れたのは幸せでした。二回目もみたくなったくらい。&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://chezo.uno/post/2009-08-30-rent-burodouetuawojian-telai-ta/p_1600_1200_d07a4775-6c1b-4fe7-8a6f-91034d676bc0.jpeg"&gt;&lt;figcaption&gt;
&lt;h4&gt;RENT Billboard&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;</description></item><item><title>瑞巌寺</title><link>https://chezo.uno/post/2009-08-12-rui-yan-si/</link><pubDate>Wed, 12 Aug 2009 03:08:40 -0700</pubDate><guid>https://chezo.uno/post/2009-08-12-rui-yan-si/</guid><description>&lt;p&gt;歌に聞きし瑞巌寺にいってきました。雄島はあいにくの雨のため諦め。&lt;/p&gt;
&lt;p&gt;しかし、岩にしみいる蝉の声というのはこういう風景をさすのだろうなあと思いながらめぐってきました。&lt;/p&gt;
&lt;p&gt;お寺そばの蕎麦屋さんにて食べた穴子天丼はやばいくらいのボリュームでした。なんとか食べ切ったけれど。&lt;/p&gt;
&lt;p&gt;その後、秋保温泉に。お高めなホテルの日帰り温泉にて満喫。&lt;/p&gt;
&lt;p&gt;総じて楽しい仙台松島紀行でした。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2009-08-12-rui-yan-si/l_1600_1200_537ea52d-9da4-440d-bb20-dd6291659923_hu_3af07eed8c2c2fd0.webp 320w, https://chezo.uno/post/2009-08-12-rui-yan-si/l_1600_1200_537ea52d-9da4-440d-bb20-dd6291659923_hu_a4cfb31dd15fb5e9.webp 480w, https://chezo.uno/post/2009-08-12-rui-yan-si/l_1600_1200_537ea52d-9da4-440d-bb20-dd6291659923_hu_eadcf43a3ec2ae5d.webp 640w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2009-08-12-rui-yan-si/l_1600_1200_537ea52d-9da4-440d-bb20-dd6291659923_hu_3af07eed8c2c2fd0.webp"
width="640"
height="480"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2009-08-12-rui-yan-si/p_1600_1200_a293f6fa-4bf1-4c74-9983-4d9b3c40d63f_hu_e6ec2ed9753bc924.webp 320w, https://chezo.uno/post/2009-08-12-rui-yan-si/p_1600_1200_a293f6fa-4bf1-4c74-9983-4d9b3c40d63f_hu_2f8876bb48998f1e.webp 480w, https://chezo.uno/post/2009-08-12-rui-yan-si/p_1600_1200_a293f6fa-4bf1-4c74-9983-4d9b3c40d63f_hu_18627ff6616a9e4c.webp 480w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2009-08-12-rui-yan-si/p_1600_1200_a293f6fa-4bf1-4c74-9983-4d9b3c40d63f_hu_e6ec2ed9753bc924.webp"
width="480"
height="640"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
]&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2009-08-12-rui-yan-si/p_1600_1200_e0c33e1d-b6cf-474a-ab09-ef06d208c273_hu_e35609470defe0a7.webp 320w, https://chezo.uno/post/2009-08-12-rui-yan-si/p_1600_1200_e0c33e1d-b6cf-474a-ab09-ef06d208c273_hu_9e08732b17723ab6.webp 480w, https://chezo.uno/post/2009-08-12-rui-yan-si/p_1600_1200_e0c33e1d-b6cf-474a-ab09-ef06d208c273_hu_fbb18a8dcde1c2b0.webp 480w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2009-08-12-rui-yan-si/p_1600_1200_e0c33e1d-b6cf-474a-ab09-ef06d208c273_hu_e35609470defe0a7.webp"
width="480"
height="640"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
]&lt;/p&gt;</description></item><item><title>MASA FESTA中止</title><link>https://chezo.uno/post/2009-08-12-masa-festazhong-zhi/</link><pubDate>Wed, 12 Aug 2009 02:08:52 -0700</pubDate><guid>https://chezo.uno/post/2009-08-12-masa-festazhong-zhi/</guid><description>&lt;p&gt;なんということか。RAJATONが、THE REAL GROUPが…。&lt;br&gt;
残念でなりません。そして、今後の海外アーティスト招聘に悪い影響が出ないと良いのですが。&lt;/p&gt;
&lt;p&gt;HOUSE JACKはすでに来日してるみたいなのにね…&lt;/p&gt;</description></item><item><title>ポケモン新幹線</title><link>https://chezo.uno/post/2009-08-07-pokemonxin-gan-xian/</link><pubDate>Thu, 06 Aug 2009 19:08:14 -0700</pubDate><guid>https://chezo.uno/post/2009-08-07-pokemonxin-gan-xian/</guid><description>&lt;p&gt;たまたま乗った新幹線がポケモン新幹線でした。&lt;br&gt;
車内でスイカを500円以上使うとオリジナルストラップがもらえるというのでゲットしたのですが、iPhoneにはストラップをつける穴がないことにもらってから気づきました。&lt;/p&gt;
&lt;p&gt;というわけで、七夕祭りで街は賑やかです。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2009-08-07-pokemonxin-gan-xian/l_1600_1200_f3df8735-9c7e-45fa-a572-596efa21a5b9_hu_2b5e7da91e7b166f.webp 320w, https://chezo.uno/post/2009-08-07-pokemonxin-gan-xian/l_1600_1200_f3df8735-9c7e-45fa-a572-596efa21a5b9_hu_10dbd0553522d599.webp 480w, https://chezo.uno/post/2009-08-07-pokemonxin-gan-xian/l_1600_1200_f3df8735-9c7e-45fa-a572-596efa21a5b9_hu_8516c1269dab05ef.webp 640w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2009-08-07-pokemonxin-gan-xian/l_1600_1200_f3df8735-9c7e-45fa-a572-596efa21a5b9_hu_2b5e7da91e7b166f.webp"
width="640"
height="480"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2009-08-07-pokemonxin-gan-xian/p_1600_1200_1efe7c75-6f73-4a32-b99a-4e58c87d9b82_hu_249fb367c3f3df5c.webp 320w, https://chezo.uno/post/2009-08-07-pokemonxin-gan-xian/p_1600_1200_1efe7c75-6f73-4a32-b99a-4e58c87d9b82_hu_5cc5f468ca620773.webp 480w, https://chezo.uno/post/2009-08-07-pokemonxin-gan-xian/p_1600_1200_1efe7c75-6f73-4a32-b99a-4e58c87d9b82_hu_7239b251353240d4.webp 480w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2009-08-07-pokemonxin-gan-xian/p_1600_1200_1efe7c75-6f73-4a32-b99a-4e58c87d9b82_hu_249fb367c3f3df5c.webp"
width="480"
height="640"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2009-08-07-pokemonxin-gan-xian/l_1600_1200_8d24e402-cded-4380-b40c-049fdd6bd555_hu_716560376d5e09ae.webp 320w, https://chezo.uno/post/2009-08-07-pokemonxin-gan-xian/l_1600_1200_8d24e402-cded-4380-b40c-049fdd6bd555_hu_d32940e750d0f2a2.webp 480w, https://chezo.uno/post/2009-08-07-pokemonxin-gan-xian/l_1600_1200_8d24e402-cded-4380-b40c-049fdd6bd555_hu_a6758a9c6768524c.webp 640w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2009-08-07-pokemonxin-gan-xian/l_1600_1200_8d24e402-cded-4380-b40c-049fdd6bd555_hu_716560376d5e09ae.webp"
width="640"
height="480"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>読書メーターの面倒なところ</title><link>https://chezo.uno/post/2009-07-23-du-shu-metanomian-dao-natokoro/</link><pubDate>Thu, 23 Jul 2009 14:55:06 -0700</pubDate><guid>https://chezo.uno/post/2009-07-23-du-shu-metanomian-dao-natokoro/</guid><description>&lt;p&gt;なんか、あれを始めてから殆ど本を読んでいないのであまり参考にはならないかもしれませんが、使ってみた雑感を。&lt;/p&gt;
&lt;p&gt;以前はexciteのライフログ機能を使っていたのですが、WordPressに切り替えたときに、乗り換えてみました。ライフログの評価は本以外にも可能で☆のレーティング＋コメントという形式だったのに対し、読書メーターはコメントのみです。で、書いてみると見た目的にあまり長文を書く気には慣れない。見た目がはてブっぽいんですよね。&lt;br&gt;
当初は、読書メーターでコメント書いてそれを殆ど使い回してブログのエントリーに出来ないかなとか考えていたんですが、どうも微妙です。&lt;/p&gt;
&lt;p&gt;でも、今何を読んでいるのか(積んでいるのか)が明示されるのは良いですね。モチベーションが多少は上がる気がします。&lt;/p&gt;</description></item><item><title>FUJIYAMA</title><link>https://chezo.uno/post/2009-07-23-fujiyama/</link><pubDate>Wed, 22 Jul 2009 20:07:36 -0700</pubDate><guid>https://chezo.uno/post/2009-07-23-fujiyama/</guid><description>&lt;p&gt;先日行ってきた河口湖です。貸別荘から見える富士山が素敵でした。&lt;br&gt;
バーベキューは楽しいですねぇ。&lt;/p&gt;
&lt;p&gt;帰りは40km以上の渋滞に飲み込まれました。怖るべし、海老名。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2009-07-23-fujiyama/p_1600_1200_625e8f56-a29c-4881-b4f7-45bcdc6e3f1b_hu_d01428af36be508.webp 320w, https://chezo.uno/post/2009-07-23-fujiyama/p_1600_1200_625e8f56-a29c-4881-b4f7-45bcdc6e3f1b_hu_bf775153782c8b4a.webp 480w, https://chezo.uno/post/2009-07-23-fujiyama/p_1600_1200_625e8f56-a29c-4881-b4f7-45bcdc6e3f1b_hu_955199e8911479a1.webp 480w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2009-07-23-fujiyama/p_1600_1200_625e8f56-a29c-4881-b4f7-45bcdc6e3f1b_hu_d01428af36be508.webp"
width="480"
height="640"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2009-07-23-fujiyama/l_1600_1200_91d6131c-6d5e-4e43-8a36-4299c59a23e8_hu_762355eab267311f.webp 320w, https://chezo.uno/post/2009-07-23-fujiyama/l_1600_1200_91d6131c-6d5e-4e43-8a36-4299c59a23e8_hu_ed67dcb9634f9af4.webp 480w, https://chezo.uno/post/2009-07-23-fujiyama/l_1600_1200_91d6131c-6d5e-4e43-8a36-4299c59a23e8_hu_1c171301d9ece356.webp 640w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2009-07-23-fujiyama/l_1600_1200_91d6131c-6d5e-4e43-8a36-4299c59a23e8_hu_762355eab267311f.webp"
width="640"
height="480"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>Masa festaのチケットが来た</title><link>https://chezo.uno/post/2009-07-11-masa-festanotiketutogalai-ta/</link><pubDate>Sat, 11 Jul 2009 05:07:59 -0700</pubDate><guid>https://chezo.uno/post/2009-07-11-masa-festanotiketutogalai-ta/</guid><description>&lt;p&gt;最近、とみにコンサートに通っていますが、八月に行われるMASA FESTAのチケットが届きました。&lt;br&gt;
お目当ては最終日のRAJATONです。今から楽しみ。&lt;/p&gt;
&lt;p&gt;しかし、運営がどうなのかなぁとかおもっていましたが、ビラはしっかりしていたので、よかったです。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2009-07-11-masa-festanotiketutogalai-ta/p_1600_1200_34dc1206-c46d-41d2-b3c4-69f3a291da19_hu_24dbf9d38460911.webp 320w, https://chezo.uno/post/2009-07-11-masa-festanotiketutogalai-ta/p_1600_1200_34dc1206-c46d-41d2-b3c4-69f3a291da19_hu_c05768f2c2ae5f03.webp 480w, https://chezo.uno/post/2009-07-11-masa-festanotiketutogalai-ta/p_1600_1200_34dc1206-c46d-41d2-b3c4-69f3a291da19_hu_87d0cc7cc03b9c8c.webp 480w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2009-07-11-masa-festanotiketutogalai-ta/p_1600_1200_34dc1206-c46d-41d2-b3c4-69f3a291da19_hu_24dbf9d38460911.webp"
width="480"
height="640"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>Steve Dobrogoszの動画がたくさんある件について</title><link>https://chezo.uno/post/2009-07-09-steve-dobrogosznodong-hua-gatakusanarujian-nituite/</link><pubDate>Thu, 09 Jul 2009 14:54:56 -0700</pubDate><guid>https://chezo.uno/post/2009-07-09-steve-dobrogosznodong-hua-gatakusanarujian-nituite/</guid><description>&lt;p&gt;以前
の動画がYouTubeにありました。たくさんあるので、一部紹介したいと思います。ちなみに
がいるようです。この充実度からするとオフィシャルなのかな？&lt;/p&gt;
&lt;p&gt;&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/aYiIBqxuPLo?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;br&gt;
一番有名な合唱曲MASSからKyrie。この演奏もそうですが作曲者の意図が分かるというか、なるほどそう言うイメージで作ったんだ！と驚きです。ピアノが歌っている。&lt;/p&gt;
&lt;p&gt;&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/5lXbMbvqD-U?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;br&gt;
Lord I&amp;rsquo;m Freeのリハーサル？模様。本番もアンコールもかっこいい！につきます。変態ベースがいる。羨ましい声。あこがれます。&lt;/p&gt;</description></item><item><title>七夕キャンドルナイト</title><link>https://chezo.uno/post/2009-07-07-qi-xi-kiyandorunaito/</link><pubDate>Tue, 07 Jul 2009 05:07:25 -0700</pubDate><guid>https://chezo.uno/post/2009-07-07-qi-xi-kiyandorunaito/</guid><description>&lt;p&gt;今年は晴れだか曇りだかわからない七夕でした。駅の近くでキャンドルナイトをやっていたので、行ってきました。&lt;br&gt;
ハート形のキャンドルや、メッセージキャンドルなどがあり綺麗でした。にしても、多かったのは近隣のお店の宣伝やらコミュニティFMの宣伝やらも。川崎にもあるんだー。&lt;br&gt;
今度聞いてみよう。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2009-07-07-qi-xi-kiyandorunaito/p_1600_1200_034bc5e1-3b83-48c7-abf0-9c021087bb3f_hu_aa076378e602b3ab.webp 320w, https://chezo.uno/post/2009-07-07-qi-xi-kiyandorunaito/p_1600_1200_034bc5e1-3b83-48c7-abf0-9c021087bb3f_hu_4c357d5136a3f6b0.webp 480w, https://chezo.uno/post/2009-07-07-qi-xi-kiyandorunaito/p_1600_1200_034bc5e1-3b83-48c7-abf0-9c021087bb3f_hu_1a472aafe63c6f25.webp 480w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2009-07-07-qi-xi-kiyandorunaito/p_1600_1200_034bc5e1-3b83-48c7-abf0-9c021087bb3f_hu_aa076378e602b3ab.webp"
width="480"
height="640"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>関東はGame Musicほいほいだ</title><link>https://chezo.uno/post/2009-07-05-guan-dong-hagame-musichoihoida/</link><pubDate>Sun, 05 Jul 2009 14:54:45 -0700</pubDate><guid>https://chezo.uno/post/2009-07-05-guan-dong-hagame-musichoihoida/</guid><description>&lt;p&gt;
が今年もやってまいりました。今年こそはチケットを購入したので、万全の体制で臨みたいと思います。&lt;/p&gt;
&lt;p&gt;他にも、関東にはアマチュアのGame Musicの演奏団体がいくつかあるようです。&lt;/p&gt;
&lt;p&gt;○
神奈川県を中心としているブラスバンド。選曲がかなりきてます。&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
FCB 9thより。今年もライブやるようです。&lt;/p&gt;
&lt;p&gt;○
素敵な演奏がニコ動にいっぱいあるです。&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
オープニングからの再現度が違います。&lt;br&gt;
&lt;br&gt;
なんというか、効果音が頑張りすぎです。&lt;br&gt;
&lt;br&gt;
かけ声ナイスすぎ(笑)&lt;/p&gt;
&lt;p&gt;今年はFCBにも行きたいですねぇ。&lt;/p&gt;</description></item><item><title>成就院の紫陽花</title><link>https://chezo.uno/post/2009-06-20-cheng-jiu-yuan-nozi-yang-hua/</link><pubDate>Sat, 20 Jun 2009 00:06:13 -0700</pubDate><guid>https://chezo.uno/post/2009-06-20-cheng-jiu-yuan-nozi-yang-hua/</guid><description>&lt;p&gt;激混みの江ノ電に乗って鎌倉は成就院にきています。&lt;br&gt;
人も多いけど、紫陽花もたくさんありました。素敵なお寺です。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2009-06-20-cheng-jiu-yuan-nozi-yang-hua/p_1600_1200_638ea25f-3d45-4f12-8891-218274e5fdbf_hu_91601990b98fe269.webp 320w, https://chezo.uno/post/2009-06-20-cheng-jiu-yuan-nozi-yang-hua/p_1600_1200_638ea25f-3d45-4f12-8891-218274e5fdbf_hu_42fcf901fdc27001.webp 480w, https://chezo.uno/post/2009-06-20-cheng-jiu-yuan-nozi-yang-hua/p_1600_1200_638ea25f-3d45-4f12-8891-218274e5fdbf_hu_6402b5eb1a4b72a3.webp 480w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2009-06-20-cheng-jiu-yuan-nozi-yang-hua/p_1600_1200_638ea25f-3d45-4f12-8891-218274e5fdbf_hu_91601990b98fe269.webp"
width="480"
height="640"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2009-06-20-cheng-jiu-yuan-nozi-yang-hua/p_1600_1200_eab35589-4b38-4340-b42b-bd79d56e055a_hu_e76ef584710ffca3.webp 320w, https://chezo.uno/post/2009-06-20-cheng-jiu-yuan-nozi-yang-hua/p_1600_1200_eab35589-4b38-4340-b42b-bd79d56e055a_hu_6fc4d281e6250e97.webp 480w, https://chezo.uno/post/2009-06-20-cheng-jiu-yuan-nozi-yang-hua/p_1600_1200_eab35589-4b38-4340-b42b-bd79d56e055a_hu_ba512dd6fc4a898d.webp 480w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2009-06-20-cheng-jiu-yuan-nozi-yang-hua/p_1600_1200_eab35589-4b38-4340-b42b-bd79d56e055a_hu_e76ef584710ffca3.webp"
width="480"
height="640"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;途中で見付けたアバウトな看板。大仏か海岸か。間違ってはいないんだけど、笑える。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2009-06-20-cheng-jiu-yuan-nozi-yang-hua/p_1600_1200_e69a27d9-0f41-4f7b-80dd-016578fa72e1_hu_ba190bbbcd3037ec.webp 320w, https://chezo.uno/post/2009-06-20-cheng-jiu-yuan-nozi-yang-hua/p_1600_1200_e69a27d9-0f41-4f7b-80dd-016578fa72e1_hu_8db72e64cd3b1573.webp 480w, https://chezo.uno/post/2009-06-20-cheng-jiu-yuan-nozi-yang-hua/p_1600_1200_e69a27d9-0f41-4f7b-80dd-016578fa72e1_hu_8509811cf426a8e0.webp 480w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2009-06-20-cheng-jiu-yuan-nozi-yang-hua/p_1600_1200_e69a27d9-0f41-4f7b-80dd-016578fa72e1_hu_ba190bbbcd3037ec.webp"
width="480"
height="640"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>iPhoneに望むこと</title><link>https://chezo.uno/post/2009-06-11-iphoneniwang-mukoto/</link><pubDate>Thu, 11 Jun 2009 14:54:34 -0700</pubDate><guid>https://chezo.uno/post/2009-06-11-iphoneniwang-mukoto/</guid><description>&lt;p&gt;最近、tumblrをメモがわりにquoteすることが多いのですが、iPhoneでtumblrを使う機会も増えてきました。&lt;br&gt;
iPhoneではリブログすることがほとんどだったりするのですが、tomblooライクに引用したいんですよね。現状、Googleリーダーで気になる記事をスター付けるくらいなんですが、余り検索する気にならないんですよね。何がメモしたいか、その部分を残したいと思ったときに残せる方法ってないのかなー。んー&lt;/p&gt;</description></item><item><title>新型iPhone 3G Sの価格について</title><link>https://chezo.uno/post/2009-06-09-xin-xing-iphone-3g-snojia-ge-nituite/</link><pubDate>Tue, 09 Jun 2009 14:54:29 -0700</pubDate><guid>https://chezo.uno/post/2009-06-09-xin-xing-iphone-3g-snojia-ge-nituite/</guid><description>&lt;p&gt;
.を見てみるとやばい、やばすぎる。&lt;br&gt;
１６GBで11520円、３２GBで23040円って、、、あれ、１６GBをスパボ一括で29800円で買ったのに涙が出てきそうだ……。&lt;/p&gt;
&lt;p&gt;いや、まてよ。たしか以前
で旧iPhoneから新iPhoneに切り替えても、違約金は発生しないという話をしてたので、一括で払い終えていると言うことはiPhone3G Sを更に機種変で買えば、16GBのカメラ付きiPod Touchを手に入れたってだけか……？&lt;/p&gt;
&lt;p&gt;だまされそうだー。&lt;/p&gt;
&lt;p&gt;ちなみに、バッテリー交換などをするときにデータが飛んでも良いように、Windowsで手っ取り早くアドレス帳を管理しようとOffice買いました。今、本数限定でキャンペーン価格で手に入るのよねぇ。アップグレードとはいえ、
のは大きいわぁ。&lt;br&gt;
ちなみに、学生さん
ので、これを逃す手はない！&lt;/p&gt;</description></item><item><title>LinkStationのWebアクセスとSimplify Music 2@iPhone</title><link>https://chezo.uno/post/2009-05-31-linkstationnowebakusesutosimplify-music-2-at-iphone/</link><pubDate>Sun, 31 May 2009 01:05:01 -0700</pubDate><guid>https://chezo.uno/post/2009-05-31-linkstationnowebakusesutosimplify-music-2-at-iphone/</guid><description>&lt;p&gt;NASに蓄えてある音楽へどうやってiPhoneからアクセスするかを考えたときに、2つの方法があったので、検討してみた。(Simplify Music2はまだ試してないですが)&lt;/p&gt;
&lt;p&gt;方法としては、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BuffaloのNASに付いている機能であるLinkStationのWebアクセス機能&lt;/li&gt;
&lt;li&gt;Simplifi Music 2 というPC上のiTunesの楽曲を共有するアプリ
の二通りの方法が考えられる。&lt;br&gt;
ちなみに、我が家のNASは
という代物で、最初の発表の時にはiTunesの共有サーバ機能が告知されていたのに、買ったときには既にその機能は削られていたという代物。あれ？kogureさんところに情報乗ったときには、OKだって書いてあったから信じてたのに、、、(ちなみに、後継機である
はiTunesサーバ機能が搭載されているのであった)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;今回は、Webアクセス機能を試してみた。(ちなみに、Simplify Music2の情報はこちらでどうぞ。
)&lt;br&gt;
色々調べているうちに、外から見なくて良いならBuffalo.comを経由してアクセスする必要ないんじゃね？と思っていたら、このサイトを発見した。&lt;/p&gt;
&lt;p&gt;
.&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;まさしく、望んでいた情報だった。つまり、ローカルのNASにアクセスするのみであれば、Webアクセスの設定時に「NASのIPアドレス」を設定すれば良いだけだったのだ。通常は、Baffalo.comを使うという設定になるが、うちではUPnPも静的NATの設定も上手くいかなかったから、苦肉の策でもあった。そしたら、意外にもローカルで回す分にはこれで十分いけるみたい。しかも、外にポートを開放していないから外部にNASを晒すというリスクも減るでしょうしね。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://chezo.uno/post/2009-05-31-linkstationnowebakusesutosimplify-music-2-at-iphone/p_480_320_17ad218e-24cf-4dc9-8066-78c13e53d3bd_hu_a833b94930a01665.webp 320w, https://chezo.uno/post/2009-05-31-linkstationnowebakusesutosimplify-music-2-at-iphone/p_480_320_17ad218e-24cf-4dc9-8066-78c13e53d3bd_hu_bb63e39826ff89f4.webp 320w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://chezo.uno/post/2009-05-31-linkstationnowebakusesutosimplify-music-2-at-iphone/p_480_320_17ad218e-24cf-4dc9-8066-78c13e53d3bd_hu_a833b94930a01665.webp"
width="320"
height="480"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Webアクセス機能の実際の使い勝手としては、イマイチだった。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;大量の曲(50G以上)が存在しているときに、フォルダを開いてブラウジングして目的の曲を探すのは面倒。というかやる気にならない&lt;/li&gt;
&lt;li&gt;一曲ずつしか再生できないので、BGMにしようという目的には全く向かない。というか不可能。
で、結局試してみた物の、お蔵入りになりそうな予感です。どちらかというと、この機能は遠隔地の人にファイルを提供するためのもの？なのかもしれません。iPhone用の画面も一応ありますが、、、おまけみたいなものですね。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;今度は、Simplify Music2を試してみたいところ。ネックは、PCを起動させておかないと共有音楽にアクセスできないことかなぁ。&lt;/p&gt;</description></item><item><title>三菱東京UFJのコールセンターが素晴らしい3つの理由</title><link>https://chezo.uno/post/2009-05-30-san-ling-dong-jing-ufjnokorusentagasu-qing-rasii3tunoli-you/</link><pubDate>Sat, 30 May 2009 14:54:18 -0700</pubDate><guid>https://chezo.uno/post/2009-05-30-san-ling-dong-jing-ufjnokorusentagasu-qing-rasii3tunoli-you/</guid><description>&lt;p&gt;今日、UFJ Directの関係でコールセンターに電話をしたのですが、過去のSoftbankやWillcom、新生銀行とは比べものにならないくらいの対応で驚きました。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;フリーダイヤルに携帯でかけてもはじかれない&lt;/li&gt;
&lt;li&gt;土曜の夜10時でもオペレータが対応&lt;/li&gt;
&lt;li&gt;オペレータが出るまで2コール
1．は、はじかれるだろうと思ってiPhoneでかけてみたらあっけなく繋がり驚愕。&lt;br&gt;
2．は、Webには24時間繋がると書いてあったんですが、どうせ自動音声案内のみだろうと、たかをくくってスピーカーモードにしていたら驚愕。&lt;br&gt;
３．は、スピーカーモード＆キーパッド表示にして操作していたら、階層が2階層(即ち二回ボタンを押すだけ)で、オペレータに行きまして慌てて切り替えてたら2コール目くらいでオペレータが出ました。驚愕。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;きっと、この対応をするために相当なお金をかけているとは思うのですが、平日の9時-17時とかいう会社が多い中で、大いに助かりました。&lt;/p&gt;
&lt;p&gt;MUFGすごいよ、MUFG！&lt;/p&gt;</description></item><item><title>X ZABADYのシリコンカバーを買ってしまった</title><link>https://chezo.uno/post/2009-05-30-x-zabadynosirikonkabawomai-tutesimatuta/</link><pubDate>Sat, 30 May 2009 05:05:33 -0700</pubDate><guid>https://chezo.uno/post/2009-05-30-x-zabadynosirikonkabawomai-tutesimatuta/</guid><description>&lt;p&gt;結局、
のシリコンカバーを追加注文してしまった。&lt;/p&gt;
&lt;p&gt;しかし、オフィシャルからしか買えず、値段も840円とちとお高め。更に送料が263円。。。まとめて買うと、逆に1050円以上の商品は送料630円になるという……。普段いかにAmazonに慣れていたか痛感する瞬間でした。&lt;br&gt;
元の物が4000円しない物だけに、ちょっと高いなぁと思う。さらに、佐川の代引きオンリーなところが、微妙。まぁ、宅配ポストとか無いからいいんだけどさ。&lt;/p&gt;
&lt;p&gt;まぁ、2年くらい使ったら破れるわな、とそこは文句は言わないのです。しかし、SoundhouseでEtymoticResearchの消耗品買えるみたいな、他の業者にも取り扱いが出来るようになってくれれば良いのに、と思う次第です。&lt;/p&gt;
&lt;p&gt;最近は、ニコニコ動画でフノレボイス　ドラクエ３をお風呂で見ていたのですが、ニコニコは夜は重いので、
で適当にJazzを聞く方向にシフト中です。Bill Evansくらいしかわからないんだけどね。Rockapellaとかも聞ければ良かったんだけど。&lt;/p&gt;</description></item><item><title>お風呂でiPhone+ニコ動は良いよ</title><link>https://chezo.uno/post/2009-05-27-ofeng-lu-deiphone-plus-nikodong-haliang-iyo/</link><pubDate>Wed, 27 May 2009 14:54:07 -0700</pubDate><guid>https://chezo.uno/post/2009-05-27-ofeng-lu-deiphone-plus-nikodong-haliang-iyo/</guid><description>&lt;p&gt;
.&lt;br&gt;
こちらのサイトと同様にうちでもZABADYでiPhone突っ込んでニコニコ動画を満喫していました。久しくニコ動を見ていなかったので、歌ってみたとかフルボイスドラクエ3とか色々漁って楽しんでおりました。&lt;/p&gt;
&lt;p&gt;ところが、先日ZABADYに穴が。。。&lt;/p&gt;
&lt;p&gt;やはり、iPhoneは大きいため結構無理矢理入れていたのがたたったのかなぁ。後、
をケースにつけているため相当分厚くなってしまったからとも思えます。とりあえず、穴の空いたZABADYはリビング用ラジオとして生きる道を見いだしました。&lt;/p&gt;
&lt;p&gt;もう一個ZABADYを買うか、ジップロックで頑張るかが悩みどころです。とりあえず、今日はジップロックで行くかな。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;追記&amp;ndash;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;と思ったら、シリコン交換できるらしい。でも、買うところがみつからないー&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;追記2&amp;ndash;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;どうやら、
で買えるみたい。&lt;/p&gt;</description></item><item><title>クロノトリガーの「時の回廊」が名曲すぎる</title><link>https://chezo.uno/post/2009-05-24-kuronotorigano-shi-nohui-lang-gaming-qu-sugiru/</link><pubDate>Sun, 24 May 2009 14:54:02 -0700</pubDate><guid>https://chezo.uno/post/2009-05-24-kuronotorigano-shi-nohui-lang-gaming-qu-sugiru/</guid><description>&lt;p&gt;あまりそう思ってなかったんですが、聞いてみてどのシーンで使われていたのか思い出せず検索してみたら、こんな動画が出てきました。&lt;br&gt;
クロノトリガー『時の回廊』全部俺の声（CHRONO TRIGGER Corridors of Time）&lt;/p&gt;
&lt;p&gt;意外と、原曲をとらえたいいアレンジだと思います。素敵。高音質な物が&lt;/p&gt;
&lt;p&gt;そしたら、こんなクロノトリガーのメドレーアレンジが。&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/pMMaH4AMJfM?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/onPmNzbBnXA?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;クロノトリガーの作曲をされた
は、昔から周りにファンがいたので名前は知っていましたが、改めて良い曲をかく人だなぁと再認識。&lt;/p&gt;</description></item><item><title>iPhoneでExpress予約ができるアプリ</title><link>https://chezo.uno/post/2009-05-19-iphonedeexpressyu-yue-gadekiruapuri/</link><pubDate>Tue, 19 May 2009 05:05:03 -0700</pubDate><guid>https://chezo.uno/post/2009-05-19-iphonedeexpressyu-yue-gadekiruapuri/</guid><description>&lt;p&gt;元々、W-ZERO3から乗り換えた大きな理由として、JR東海のExpress予約ができないからでしたが、そんなとき
があり感激して乗り換えを決意しました。&lt;/p&gt;
&lt;p&gt;そんななか、別の方が
ようで、115円ですが販売されています。
&lt;/p&gt;
&lt;p&gt;非常に便利。というか、そもそもJR東海が携帯かPCでしかアクセスできない状態にしていたこと、そしてJR東日本の駅では発券も変更もできないから、遅延が起こったときにはPCで変更してくださいとか言われることとか、基本的にはJR東海が手抜きをしているだけとも言えますが……。これによって、ようやくExpress予約を気軽に変更できる！&lt;/p&gt;</description></item><item><title>iPhoneとの1週間</title><link>https://chezo.uno/post/2009-05-18-iphonetono1zhou-jian/</link><pubDate>Mon, 18 May 2009 14:53:51 -0700</pubDate><guid>https://chezo.uno/post/2009-05-18-iphonetono1zhou-jian/</guid><description>&lt;p&gt;はじめて生で小夏ちゃんを見た。梅雨くん（ちゃん？）も見てしまった。それをiPhoneの
で実況板を見ていたのですが、流れが速くて追いつかないという現象を見てしまいました。すごいわー&lt;/p&gt;
&lt;p&gt;で、iPhoneを一週間使ってみて色々と戦ったわけですが、大体どの問題も一通り誰かが通ってきた道でした。というわけで、備忘録として簡単にメモしておきます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;i.softbank.jpの着信時に音が鳴らなず画面通知のみ。ならすためには、iBifflite(有料)を使うか定期的にフェッチをするようにする必要がある。後者は１回鳴るだけだが、無いよりマシ。&lt;/li&gt;
&lt;li&gt;コピペができない。頑張ってブックマークレット使うればいいんだろうが……。&lt;/li&gt;
&lt;li&gt;上に類して、メールで電話番号やメアドの変更が来たときにすぐに登録できない。一度ワン切りandメール送信をすれば登録可能。&lt;/li&gt;
&lt;li&gt;PCからファイルを転送するのにソフトがいる。とりあえず、
を使ってみる。これで十分。&lt;/li&gt;
&lt;li&gt;Docomoやauの.がらみの酷いアドレス(&amp;quot;..&amp;ldquo;や&amp;rdquo;.@&amp;quot;)をBCCに入れたまま送信しようとすると何も送れない。再利用もできない。必要に応じて一人一人Toで送ることはOK。ちなみに、２００人とか一斉に送っても問題なし。&lt;/li&gt;
&lt;li&gt;同じメールを何回も送りたい場合は、メモで作成して送るようにすれば良い。これ重要。&lt;/li&gt;
&lt;li&gt;
はgmailなんかの&amp;quot;+hogehoge&amp;quot;を使っているとログイン出来ない。
もちろん、洗練されたUIやWinodwsMobileにないキビキビした動作は素敵です。というか、これに慣れると戻れないです。素晴らしい。細かいところは、まぁスルーできる範囲内かな。&lt;br&gt;
障壁としては、完全に電話として移行するのがつらいというところでしょうか。PDAとかモバイル端末としてなら全然問題ないと思います。&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Apple storeがWe'll back soonに……</title><link>https://chezo.uno/post/2009-05-16-apple-storegawell-back-soonni-dot-dot-dot/</link><pubDate>Sat, 16 May 2009 14:53:46 -0700</pubDate><guid>https://chezo.uno/post/2009-05-16-apple-storegawell-back-soonni-dot-dot-dot/</guid><description>&lt;p&gt;もうすぐ、新型iPhoneだとかiPod touchの発表なんでしょうね。amazonでも32G touchが20000円引きで売られていることですし。&lt;/p&gt;
&lt;p&gt;なぜ気づいたかって？Xcodeをダウンロードしようとしたら、メンテナンス中だったからだよ。iTunesStoreはXcodeの入手には必要なかったみたいです。そういえば、、、&lt;br&gt;
参考URL:
&lt;/p&gt;
&lt;p&gt;今起きている問題は、Buffalo製のLS-C1.0TLに保存してあるiPhoto Libralyが不可視フォルダになって見えないということ。これにより、開けない状態になっているわけです。で、ターミナルを立ち上げて、dfをしてみると、どうもiPhoto Libralyが置いてあるディレクトリが複数あるわけです。&lt;/p&gt;
&lt;p&gt;/Volume/photo&lt;br&gt;
/Volume/photo-1&lt;br&gt;
/Volume/photo-2&lt;br&gt;
で、それぞれ中を見てみると、無印と-1のところにはiPhoto Libralyのみ入っている状態。作成されているのがそれぞれ休みの日の夜中だから、もしかしたらNASがバックアップしている時にiPhotoを開いていて、変なことになったのかなぁ、とか勘ぐってみる物の原因は不明。&lt;/p&gt;
&lt;p&gt;明日起きてから対処ですわ。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;関連サイト&amp;ndash;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[MacOSX 不可視ファイルの解除方法（&amp;amp;パスの通しかた） - WEB + PC[
&lt;br&gt;
もしかしたら、Nas navigator2を入れたときに自動マウント利用するようにしたのが悪いのかも。キーチェーンがおかしくて、大抵ゲストアカウントでマウントされてるし。&lt;/p&gt;</description></item><item><title>読書メーターはじめました</title><link>https://chezo.uno/post/2009-05-16-du-shu-metahazimemasita/</link><pubDate>Sat, 16 May 2009 14:53:40 -0700</pubDate><guid>https://chezo.uno/post/2009-05-16-du-shu-metahazimemasita/</guid><description>&lt;p&gt;
をはじめました。&lt;br&gt;
今までは、exciteのライフログで読んだ本を管理していたのですが、なんとなくこちらに移行してみます。別に何が変わるというわけではないのですが、読んだ本の状況ががグラフになるのが良いなぁと。&lt;br&gt;
ただ、だらだら読むだけで満足してはいけない、とか読書にかけたお金は投資じゃなくて浪費だとかいう話もあるのですが、気分転換に読む読書も大事だと思っています。&lt;/p&gt;
&lt;p&gt;というわけで、試してみようっと。&lt;/p&gt;</description></item><item><title>こんにちは、iPhone</title><link>https://chezo.uno/post/2009-05-12-konnitiha-iphone/</link><pubDate>Tue, 12 May 2009 14:53:35 -0700</pubDate><guid>https://chezo.uno/post/2009-05-12-konnitiha-iphone/</guid><description>&lt;p&gt;iPhoneさんがやってきた。&lt;br&gt;
なかなかおもしろいおもちゃだ。いろいろな可能性を持っている感じ。&lt;br&gt;
WordPressも、アプリからかけるし。電話帳と携帯移行の連絡が厄介かな。後は、ドコモのドットが入った人は強制的に連絡とれずなのもちと辛いか。&lt;/p&gt;</description></item><item><title>Ad[es]→iPhoneアドレス帳移行メモ</title><link>https://chezo.uno/post/2009-05-10-ad-es-iphoneadoresuzhang-yi-xing-memo/</link><pubDate>Sun, 10 May 2009 05:05:54 -0700</pubDate><guid>https://chezo.uno/post/2009-05-10-ad-es-iphoneadoresuzhang-yi-xing-memo/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;090510 2145追記&amp;ndash;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この方法では、「フリガナが消える」、「全てのアドレス帳が移行できない」といった根本的な問題がありました。まだ解決できていません。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;090513追記&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;結局、Outlook2003でやりました。はぁ&lt;/p&gt;
&lt;p&gt;アドレス帳の移行に躓くのがiPhoneのイニシエーションらしいので、躓いてみた。最終的に出来た方法を下記にしめします。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;下記のConvVCF2を利用して、Ad[es]のアドレス帳情報をVCFデータにする。
&lt;/li&gt;
&lt;li&gt;ちょっと頑張って100件以下にＶＣａｒｄを分割する。(その場合、文字コードは変えない)&lt;/li&gt;
&lt;li&gt;メールでiPhoneに添付して送る。&lt;/li&gt;
&lt;li&gt;iPhoneでVCFを開いて追加しまくる。
Ｏｕｔｌｏｏｋもいらないし、何故かＭａｃのアドレスブックやiPhoneのアドレス帳に100件以上登録できない問題も回避できます。よかったよかった。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;というわけで、こんにちはiPhoneさん。２９８００円でスパボ一括で買えました。幸せ幸せ。&lt;/p&gt;
&lt;p&gt;$&lt;/p&gt;</description></item><item><title>さよならWillcom、さよならAd[es]</title><link>https://chezo.uno/post/2009-05-07-sayonarawillcom-sayonaraad-es/</link><pubDate>Thu, 07 May 2009 14:53:25 -0700</pubDate><guid>https://chezo.uno/post/2009-05-07-sayonarawillcom-sayonaraad-es/</guid><description>&lt;p&gt;GW中ずっと悩んでいた案件に解を出しました。友人たちには感謝感謝。&lt;/p&gt;
&lt;p&gt;結論としては、iPhoneに移行ということになりました。コストで決まらない要素がたくさんあるというのが大きな理由です。通信速度、WindowsMobileの糞UI、機種は変わらないのにアドレス変更連絡を出す苦痛。これらを総合すると、月280円で維持できるとしても端末としての魅力がないのであれば、Ad[es]には魅力がないという結論になりました。&lt;br&gt;
対してiPhoneは、OSのアップデートも近日控えているように、touch発売から2年たった今も共通のプラットフォームで使い続けることができています。&lt;br&gt;
操作系の不満をいつでるかわからないアップデートを待たず、ユーザアプリに頼り不安定になっていくのもばかばかしいなと。&lt;/p&gt;
&lt;p&gt;ま、実際の決め手は相談の電話をしようとしたときにAd[es]がフリーズしたことなんですけどね。&lt;/p&gt;</description></item><item><title>Ad[es] VS iPhone(値引き合戦)</title><link>https://chezo.uno/post/2009-05-06-ad-es-vs-iphone-zhi-yin-kihe-zhan/</link><pubDate>Tue, 05 May 2009 22:05:42 -0700</pubDate><guid>https://chezo.uno/post/2009-05-06-ad-es-vs-iphone-zhi-yin-kihe-zhan/</guid><description>&lt;p&gt;最近のiPhone for everybodyとWillcomのGWキャンペーンの比較。Ad[es]をメインで持っていて、でもそろそろ愛想を尽かしたのでデータ専用の端末としようかなぁ、という人と考えてください。隣にAppleの回し者がいるけど、スルーの方向で。&lt;br&gt;
基本的に各月パケット代はフルまで使う前提です。&lt;/p&gt;
&lt;p&gt;ケース1：Ad[es]を解約せずに使い続ける場合&lt;br&gt;
[月額]&lt;br&gt;
WILLCOM定額プラン:2,900円&lt;br&gt;
リアルインターネット:2,100円 (cf.オプション・データ定額下限1,050円)&lt;br&gt;
ユニバーサルサービス料:8円&lt;br&gt;
計：5,008円/月&lt;br&gt;
(なお、現行での請求額はおよそ6,000円/月)&lt;/p&gt;
&lt;p&gt;ケース2:Ad[es]を解約して、GWキャンペーンに乗っかる(〜5/7)&lt;br&gt;
[解約コスト(*)]&lt;br&gt;
年間契約解約手数料:2,100円(2年目以降の場合。初年度は4,200円。7月に解約すればなし)&lt;br&gt;
割賦残高:8,050円&lt;br&gt;
小計:10,150円&lt;br&gt;
[購入費用]&lt;br&gt;
WS002IN(DD)購入代金:16,800円&lt;br&gt;
サポートコイン10コイン:-5,000円&lt;br&gt;
契約手数料:無料(29歳まで。〜5/31)&lt;br&gt;
小計:11，800円&lt;br&gt;
[月額費用]&lt;br&gt;
新つなぎ放題:280円(24ヶ月)&lt;br&gt;
ユニバーサル使用料:8円&lt;br&gt;
小計:288円&lt;br&gt;
備考:番号変更の連絡は必須。WindowsMobileの使いづらさは我慢し続ける&lt;br&gt;
参考:
&lt;/p&gt;
&lt;p&gt;ケース3:Ad[es]を解約してiPhone 16GBに移行する場合&lt;br&gt;
[解約コスト]&lt;br&gt;
(*)と同じく、10,150円&lt;br&gt;
[購入費用]&lt;br&gt;
iPhone 16GB: 42,240円&lt;br&gt;
お店のポイント10%:-4,224円&lt;br&gt;
ただともクーポン:-5,000円&lt;br&gt;
新規契約手数料:2,835円&lt;br&gt;
小計:35,851円&lt;br&gt;
[月額費用]&lt;br&gt;
パケット定額フル:4,425円&lt;br&gt;
ユニバーサル使用料:8円&lt;br&gt;
小計:4,433円&lt;br&gt;
備考:2年間の縛りが分割支払い意外に存在。9,975円。2年ごとのタイミングでしか解約できないことになる。&lt;/p&gt;
&lt;p&gt;グラフにまとめるとこんな感じ。&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://chezo.uno/post/2009-05-06-ad-es-vs-iphone-zhi-yin-kihe-zhan/cost.png"&gt;&lt;figcaption&gt;
&lt;h4&gt;各キャンペーンの月別コスト&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;○まとめ&lt;br&gt;
コスト的には、Willcom乗換が圧倒的に安い。ただし、WM6の仕えなさ加減と面白さがあまり感じられないこと、iPhoneのUIを見るとそっちに心惹かれるものがある。&lt;br&gt;
ただ、iPhoneは買い換えが2年間非常に厳しいことがネックである。逆にwillcomのGWキャンペーンであれば、維持したままの浮気も可能な額と言えよう。ただ、今までのようにPublic携帯とするのは通話コストの増加(10.5円/30秒→31.5円/30秒)が厳しいか。(ちなみに、ホワイトプランの通話料は21円/30秒)&lt;/p&gt;
&lt;p&gt;端末の魅力でiPhoneに押し切るか、コストでwillcomにするか、これが悩みどころ。多分iPhoneに押されるとは思うが。。。&lt;/p&gt;</description></item><item><title>Ad[es]を解約するために</title><link>https://chezo.uno/post/2009-05-04-ad-es-wojie-yue-surutameni/</link><pubDate>Mon, 04 May 2009 14:53:14 -0700</pubDate><guid>https://chezo.uno/post/2009-05-04-ad-es-wojie-yue-surutameni/</guid><description>&lt;p&gt;
.を読んでいたら、W-value selectで最安プランに変更して持ち続けることには意味がないらしい。待ち受け専用として持つ意味を感じるかというところのようだ。&lt;br&gt;
とっとと15コイン(≒7500円分？)使い切ってしまって、解約するのが吉かな。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;追記&amp;ndash;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;willcom store見たら、電池パックくらいしか買えないみたい。一応、Ad[es]の電池パックでも買うかなぁ。意味ないなぁ。&lt;/p&gt;
&lt;p&gt;iPhone 16GBとiPod touch 32GBどちらでもいいんじゃない？とか思っていたけれど、
見る限りでは、touchだとOSが無料でVer.UPできないみたい。これは後悔しそう。今のところは、一台で我慢するかiPhone 16GBに手を出すかだなぁ。&lt;/p&gt;</description></item><item><title>MoneyLookが便利な件について</title><link>https://chezo.uno/post/2009-05-04-moneylookgabian-li-najian-nituite/</link><pubDate>Sun, 03 May 2009 23:05:24 -0700</pubDate><guid>https://chezo.uno/post/2009-05-04-moneylookgabian-li-najian-nituite/</guid><description>&lt;p&gt;
なるものを友人から教えてもらいました。&lt;/p&gt;
&lt;p&gt;これは、銀行口座やクレジットカードの情報を一括で管理してくれるソフトです。Microsoft Moneyは有料なのでフリーのものを探していたら、これに出会いました。&lt;/p&gt;
&lt;p&gt;できることは、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;銀行口座の入出金の管理&lt;/li&gt;
&lt;li&gt;クレジットカードの仕様履歴の管理&lt;/li&gt;
&lt;li&gt;モバイルSuicaの入出金の管理（！）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ということで、家計簿を付ける際に困っていたところが解決できそうです。最近は、電子データでクレジットカードなどの仕様履歴を確認しなければならなく、かつWebでの確認は適当にならざるを得ないインターフェースだったので、このソフトでOfflineでじっくり確認できるようになりました。&lt;/p&gt;
&lt;p&gt;ただ、IDとPasswordをこのソフトに入れなければならないこと、Y!Japanが絡んでいること等が気になる人は避けた方がよいかもしれません。&lt;/p&gt;</description></item><item><title>ほぼ日がiPhoneを持ち上げてる</title><link>https://chezo.uno/post/2009-05-02-hobori-gaiphonewochi-tishang-geteru/</link><pubDate>Sat, 02 May 2009 14:53:03 -0700</pubDate><guid>https://chezo.uno/post/2009-05-02-hobori-gaiphonewochi-tishang-geteru/</guid><description>&lt;p&gt;
でiPhoneが欲しくなってきた。&lt;/p&gt;
&lt;p&gt;半分ほんと、半分はAdvanced[es]の一人ネガティブキャンペーンのおかげ。&lt;/p&gt;
&lt;p&gt;Willcom×Ad[es]に対する現状の評価は、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;遅い&lt;/li&gt;
&lt;li&gt;重い&lt;/li&gt;
&lt;li&gt;安くない&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;の３拍子揃ったものとなっている。特に、iPhoneが実質ほぼパケットし放題と同じ金額で手に入るキャンペーンをやっているおかげで、遅いWillcomのメリットがなくなった。そして、8円携帯にパケ放題を付けるくらいなら、、、というレベルになっているのは驚きを隠せない。&lt;/p&gt;
&lt;p&gt;＃ちなみに、パケットし放題２はSMSに課金がされるようになる詐欺仕様らしい&lt;/p&gt;
&lt;p&gt;一番安いのは、Willcomをつぶして8円携帯にパケットし放題を付けることだが、iPhoneという玩具で遊んでみたいのもあるんだよなぁ、と今更ながら悩んでおります。&lt;/p&gt;
&lt;p&gt;しかし、自分の中で必要な理由がハッキリとないってことは買わない方がいいんだろうなぁ。&lt;/p&gt;</description></item><item><title>はじめまして、WordPress</title><link>https://chezo.uno/post/2009-05-02-hazimemasite-wordpress/</link><pubDate>Sat, 02 May 2009 14:48:14 -0700</pubDate><guid>https://chezo.uno/post/2009-05-02-hazimemasite-wordpress/</guid><description>&lt;p&gt;exciteがちょっと不満になったので、こちらにお引っ越しです。本当はデータも全部お引っ越ししようかと思って、色々試したのですが技術的に可能なことが分かったところで満足して面倒になったので、やめました。&lt;/p&gt;
&lt;p&gt;もしかしたら、本とヘッドホン関係だけ移行するかもしれませんが。&lt;br&gt;
それでは、よろしくお願いします。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;追記&amp;mdash;-&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本と音楽関係だけは連れてきました。&lt;br&gt;
exciteの移行には
にお世話になりました。&lt;/p&gt;</description></item><item><title>チャンネルはそのまま！Vol.1</title><link>https://chezo.uno/post/2009-04-26-tiyanneruhasonomama-vol-dot-1/</link><pubDate>Sun, 26 Apr 2009 14:48:20 -0700</pubDate><guid>https://chezo.uno/post/2009-04-26-tiyanneruhasonomama-vol-dot-1/</guid><description>&lt;p&gt;[
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="https://ecx.images-amazon.com/images/I/51DmEVIjTzL._SL160_.jpg" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;チャンネルはそのまま! 1―HHTV北海道★テレビ (1) (BIG SPIRITS COMICS SPECIAL)&lt;/p&gt;
&lt;p&gt;佐々木 倫子 / 小学館&lt;/p&gt;
&lt;p&gt;どうでしょうでおなじみの、HTBがモデルになっているらしい、というポップにつられて買ってしまいました。&lt;br&gt;
開けてみるとすばらしい！魔神がモデルになっている小倉部長が良い味出しています。どうでしょうファンの人なら是非楽しめるはず！&lt;/p&gt;
&lt;p&gt;スコア:
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;&lt;img src="https://md.exblog.jp/img/hm/lifelog_star5.gif" alt="" loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;](
)&lt;/p&gt;
&lt;p&gt;となりでダ・ガーンを絶賛オススメされています。ガオーンが可愛いらしいです。&lt;/p&gt;</description></item><item><title>It don't mean a thing.</title><link>https://chezo.uno/post/2009-04-13-it-dont-mean-a-thing/</link><pubDate>Mon, 13 Apr 2009 14:50:33 -0700</pubDate><guid>https://chezo.uno/post/2009-04-13-it-dont-mean-a-thing/</guid><description>&lt;p&gt;
がかっこいいです。&lt;br&gt;
Fight of Foo Birdsもかっこいいですが。&lt;/p&gt;
&lt;p&gt;この辺のThe Real Groupが歌っているような曲の元曲やら、アレンジ曲を集めてみたいなぁと、思ってRealのCDをニマニマしながら聞いております。&lt;/p&gt;</description></item><item><title>新居にはクローゼットがない</title><link>https://chezo.uno/post/2009-03-15-xin-ju-nihakurozetutoganai/</link><pubDate>Sat, 14 Mar 2009 20:03:00 -0700</pubDate><guid>https://chezo.uno/post/2009-03-15-xin-ju-nihakurozetutoganai/</guid><description>&lt;p&gt;押し入れはあってもクローゼットがありません！&lt;br&gt;
箪笥は置く場所がありません！というか引越の時にも大変そうです。お値段も（ｒｙ&lt;/p&gt;
&lt;p&gt;というわけで、
の一番大きいやつを買いました。&lt;br&gt;
動機は、頑丈そうだから。というこれにつきます。以前使っていたホームセンターで買ったやつは、量はかけられそうだったのですが、耐荷重が低すぎて、下に落ちてくると言う始末。なので、耐荷重だけは気にしながら買いました。&lt;/p&gt;
&lt;p&gt;で、使ってみて良い感じです。和室に置いているのですが、カバーがあるおかげで埃も気にならないですし、強度もまぁまぁ。&lt;br&gt;
ただ、強度に関しては組み立ての時の精度によって結構変わってきそうなので、一人で組み立てるのはお勧めしません。&lt;/p&gt;
&lt;p&gt;全般的に買って良かったなと思います。アマゾン的には☆４つかな。二人で組み立てれれば５つになったかなと。&lt;/p&gt;</description></item><item><title>MasaFestaのコンサート情報が出始めました</title><link>https://chezo.uno/post/2009-03-15-masafestanokonsatoqing-bao-gachu-shi-memasita/</link><pubDate>Sat, 14 Mar 2009 19:03:00 -0700</pubDate><guid>https://chezo.uno/post/2009-03-15-masafestanokonsatoqing-bao-gachu-shi-memasita/</guid><description>&lt;p&gt;
のコンサート情報が明らかになりました。まだ、
ですが、予定も出ています。とりあえず、Rajatonを聞くために日曜日には行こうと思います。チケットとれるかなー。&lt;br&gt;
8/20(木)：MOSAIC、m-pact&lt;br&gt;
8/21(金)：Pitsj 、The House Jacks&lt;br&gt;
8/22(土)：Riltons Vänner&lt;br&gt;
8/23(日)：Rajaton、Take6&lt;/p&gt;
&lt;p&gt;お値段は、全席指定でS席￥18,000、A席￥15,000、B席￥12,000&lt;br&gt;
通しなのかなぁ、と思いますが、これで一回の値段だったら……&lt;/p&gt;
&lt;p&gt;&amp;mdash;-追記&lt;/p&gt;</description></item><item><title>MasaFestaにRajatonが！！</title><link>https://chezo.uno/post/2009-03-09-masafestanirajatonga/</link><pubDate>Mon, 09 Mar 2009 14:50:44 -0700</pubDate><guid>https://chezo.uno/post/2009-03-09-masafestanirajatonga/</guid><description>&lt;p&gt;やばい！生で聞きたいと思い、Finlandまで行ってもすれ違いだったRajatonが向こうから来てくれるとは！&lt;/p&gt;
&lt;p&gt;
で聞くのが一番手っ取り早いかもしれませんが、とてもすてきなアカペラグループなのです。&lt;br&gt;
コンサートだけでなくて、academyも行きたくなってきた……。夏休みをここでとれば行けるしなぁ。&lt;/p&gt;
&lt;p&gt;過去のエントリ&lt;br&gt;
○Masa Festa&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;</description></item><item><title>続報Masa Festa</title><link>https://chezo.uno/post/2009-03-03-sok-bao-masa-festa/</link><pubDate>Tue, 03 Mar 2009 04:03:00 -0800</pubDate><guid>https://chezo.uno/post/2009-03-03-sok-bao-masa-festa/</guid><description>&lt;p&gt;
&lt;br&gt;
Realの男性陣が来日するとのことです。ひゃっほう！&lt;/p&gt;</description></item><item><title>世界最大規模のアカペラ祭が日本で</title><link>https://chezo.uno/post/2009-03-01-shi-jie-zui-da-gui-mo-noakaperaji-gari-ben-de/</link><pubDate>Sat, 28 Feb 2009 20:03:00 -0800</pubDate><guid>https://chezo.uno/post/2009-03-01-shi-jie-zui-da-gui-mo-noakaperaji-gari-ben-de/</guid><description>&lt;p&gt;
によると、Masa Festaというアカペラのお祭りが日本で2009/8/19〜8/23に行われるようです。&lt;br&gt;
（公式サイトは
)&lt;/p&gt;
&lt;p&gt;主な構成は、コンテスト、アカペラレクチャー、コンサートの３つのようです。&lt;br&gt;
コンテストは全国20カ所で行われるアマチュアコンテスト。時間が5分以上9分以内となっている他は曲数曲目は自由。&lt;br&gt;
アカペラレクチャー（アカデミーが本当の呼称）は、今日（3/1）から申込み開始のようです。Take6などの講師が来日するそうです。メニュー見た感じは、ボイパとかそっち方面かー、ってのでスルー。&lt;/p&gt;
&lt;p&gt;とりあえず、The Real Groupとかが来るわけではないみたいですが、ほいほい行ってしまいそうなタイミングです。お盆休みをそこでとれば良いんですね、分かります。&lt;/p&gt;</description></item><item><title>TRY-TONEがMY SpaceとYou tubeに</title><link>https://chezo.uno/post/2009-01-18-try-tonegamy-spacetoyou-tubeni/</link><pubDate>Sat, 17 Jan 2009 22:01:00 -0800</pubDate><guid>https://chezo.uno/post/2009-01-18-try-tonegamy-spacetoyou-tubeni/</guid><description>&lt;p&gt;
にいつの間にかTRY-TONEのオフィシャルページが出来てました。(Thanks!
さん)&lt;/p&gt;
&lt;p&gt;1/18付けで一番上にある約束が、どうみても先日のLAZONA川崎のクリスマスライブな気がして仕方がないんですが。あの客周辺の女の子の声とか、後ろのグループ名の投影の仕方が、特に。&lt;/p&gt;</description></item><item><title>愛がいない部屋</title><link>https://chezo.uno/post/2008-11-18-ai-gainaibu-wu/</link><pubDate>Tue, 18 Nov 2008 13:48:25 -0800</pubDate><guid>https://chezo.uno/post/2008-11-18-ai-gainaibu-wu/</guid><description>&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4087463044/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
愛がいない部屋 (集英社文庫 い 47-5)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
石田 衣良 / / 集英社&lt;br&gt;
ISBN : 4087463044&lt;br&gt;
スコア選択: ※※&lt;/p&gt;
&lt;p&gt;掴まされた。&lt;/p&gt;
&lt;p&gt;今度は悪い意味で。懲りずに買ってしまった。恋愛小説フェア(笑)がやっていたので、なんとなく買ってしまった。帯をしっかり読めば良かった。&lt;/p&gt;
&lt;p&gt;「DV、セックスレス、不倫。切なく胸を締め付ける恋に、光は射すのか――。」&lt;/p&gt;
&lt;p&gt;この帯で避ければ良かった。1ポンドの悲しみなどで良い印象を持っていた氏の恋愛小説だが、この作品は毛色が違う。私にはあわない。&lt;/p&gt;
&lt;p&gt;全てが女性視点で書かれていて、男がダメなのだ。しかも、それが全て女性に悪い部分はないように描かれている。そして、出てくる男性は大抵「仕事に生きている」のである。それが、非常にリアルなのである。つまり、自分もこの男と同じように堕ちてしまうのではないか、そういう不安をかき立てられる。特に、最後の表題作「愛がいない部屋」では、「あの手の男は、みんな最初のうちはそうなのよ。それで手のひらを返す」「所帯をもった最初のうちは、敵も尻尾をださないものよ」など、強烈な言葉が投げかけられる。&lt;/p&gt;
&lt;p&gt;一方的に攻められる気がして、良い気分ではない。おかげさまで大分落ちた。小説に求めているのは爽快感というエンターテイメントなので、ちょっときつかった。&lt;/p&gt;</description></item><item><title>良い時代になったねぇ</title><link>https://chezo.uno/post/2008-11-08-liang-ishi-dai-ninatutanee/</link><pubDate>Sat, 08 Nov 2008 13:51:05 -0800</pubDate><guid>https://chezo.uno/post/2008-11-08-liang-ishi-dai-ninatutanee/</guid><description>&lt;p&gt;関東に来たからには一度は行ってみたいと思っていた、
。&lt;br&gt;
つい先日、9thの演奏会があったのですが（残念ながら行けなかったのですが)、今ではニコ動に
ではありませんか。&lt;/p&gt;
&lt;p&gt;いや、オフィシャルがこういうことをやってくれるってのは、一昔前では(ネットワークリソース的な問題で)ありえなかったのに……。著作権とか色々面倒だったのに……。良い時代になりましたね。&lt;/p&gt;
&lt;p&gt;任天堂メドレーが楽しめました。いや、他も聴きたいし次は生で聴きたいです。本当に。&lt;/p&gt;</description></item><item><title>音律と音階の科学</title><link>https://chezo.uno/post/2008-11-06-yin-lu-toyin-jie-noke-xue/</link><pubDate>Thu, 06 Nov 2008 13:48:36 -0800</pubDate><guid>https://chezo.uno/post/2008-11-06-yin-lu-toyin-jie-noke-xue/</guid><description>&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4062575671/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
音律と音階の科学―ドレミ…はどのようにして生まれたか (ブルーバックス 1567)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
小方 厚 / / 講談社&lt;br&gt;
ISBN : 4062575671&lt;br&gt;
スコア選択: ※※※※※&lt;/p&gt;
&lt;p&gt;物理学の専門家による、音楽の「音律と音階」の解説書。非常にためになる。音楽と数学についての本は色々あるのかもしれないけれど、実験心理学的な話を絡めているのが面白い。&lt;br&gt;
どういうことかというと、心理実験を元にして二つの重音に対して、違和感を感じるかを不協和曲線というグラフを描いた。そして、それをベースにピタゴラス音律や純正律が何故用いられてきたか、心地よいかを論じている。非常に面白い。ただし、ターゲットとして音楽を知っていることを前提にしているようだ。仕方ないか。&lt;/p&gt;</description></item><item><title>これでいいのだ</title><link>https://chezo.uno/post/2008-11-06-koredeiinoda/</link><pubDate>Thu, 06 Nov 2008 13:48:31 -0800</pubDate><guid>https://chezo.uno/post/2008-11-06-koredeiinoda/</guid><description>&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4167753278/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
これでいいのだ―赤塚不二夫自叙伝 (文春文庫 あ 50-1)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
赤塚 不二夫 / / 文藝春秋&lt;br&gt;
ISBN : 4167753278&lt;br&gt;
スコア選択: ※※※※&lt;/p&gt;
&lt;p&gt;赤塚不二夫の自叙伝。がばいばあちゃんを読んだときも思ったのだが、昭和の時代を生き抜いた氏や氏の両親の話は読んでいて面白いですね。戦時中や戦後の子どもたちの伸びやかなこと(別に今の子どもがどうのと言いたいわけではないですが)&lt;/p&gt;
&lt;p&gt;気楽に読める一冊です。&lt;/p&gt;</description></item><item><title>a-cappella.comから注文の品が届いた</title><link>https://chezo.uno/post/2008-10-30-a-cappella-dot-comkarazhu-wen-nopin-gajie-ita/</link><pubDate>Thu, 30 Oct 2008 14:51:10 -0700</pubDate><guid>https://chezo.uno/post/2008-10-30-a-cappella-dot-comkarazhu-wen-nopin-gajie-ita/</guid><description>&lt;p&gt;
&lt;br&gt;
名前の通り、アカペラのCDやら楽譜が入手できるサイト。&lt;br&gt;
いやね、今の円高のビッグウェーブに乗って購入……、円高傾向が高くなる前の話ですね。&lt;br&gt;
今回頼んだのは、The Real GroupのNothing but The Real Groupと Live in Stockholm,それからA cappella in Acapuluco, I Sing, You singの楽譜たち。&lt;br&gt;
Waltz for Debbyの楽譜は売り切れでした。残念。ちなみに、Realが歌ってるアレンジを今回初めてまじめに聞きましたが、ベースはBill Evansが女性シンガーと一緒に演奏しているものですね。途中の展開の仕方が違うけれども。2番はやはりオリジナルの展開が躍動感あって好きだなぁ。&lt;/p&gt;
&lt;p&gt;というわけで、歌いたい曲がどんどん増えていきます。&lt;/p&gt;</description></item><item><title>何故かiTunes storeで買ったm4pが音が出ない</title><link>https://chezo.uno/post/2008-10-29-he-gu-kaitunes-storedemai-tutam4pgayin-gachu-nai/</link><pubDate>Wed, 29 Oct 2008 14:51:16 -0700</pubDate><guid>https://chezo.uno/post/2008-10-29-he-gu-kaitunes-storedemai-tutam4pgayin-gachu-nai/</guid><description>&lt;p&gt;そうなのだ。しかも、その症状が出たファイルは、前のマシンでバックアップして新しいマシンに復元した日本語のファイルばかり。ファイルも日本語の部分だけ文字化けしていて(日本語がアンダーバーになっていた)、QuickTimeでは再生できるというなぞっぷり。&lt;br&gt;
仕方がないので、問題のファイルをライブラリからいったん消して、m4pのファイルをもう一度追加したら大丈夫になった。iPodに入っていたファイルも、無音が曲の長さ分発生していたので、気持ち悪かったが……。よかった。&lt;/p&gt;
&lt;p&gt;というわけで、色々日本に来るらしいアカペラグループ等々のライブ日程をば。&lt;/p&gt;
&lt;p&gt;○
&lt;br&gt;
ラトビアのアイドルアカペラグループです。&lt;br&gt;
根性で有給取って、羽田から行けば13kちょっとで行けるみたいです。&lt;br&gt;
いや、有給取ってまで行くのかというのが大きな問題。&lt;br&gt;
11/7(二公演),9との日程です。&lt;br&gt;
関西に近い人は日曜の公演に行けると思うなぁ。名古屋とか。名古屋とか。&lt;/p&gt;
&lt;p&gt;○
&lt;br&gt;
ドイツからはるばるいらっしゃるいらっしゃるようだ。関東を中心に何件か演奏会をやるらしい。&lt;br&gt;
教会の少年合唱団あがりということで、キングス系？という声も。バンキエーリとかとは違うのかなぁ。&lt;br&gt;
スケジュールは11/26,27,28,29。ちょっと行ってみたい。&lt;/p&gt;
&lt;p&gt;○
&lt;br&gt;
以前、Rockapellaが来たおされな六本木のビルボードでTake 6がくるらしい。&lt;br&gt;
1/24〜27って、無理だろうなぁ……。色々な意味で。&lt;/p&gt;
&lt;p&gt;&amp;mdash;-081031追記&lt;br&gt;
どうやら、iGainをm4pにかけると-100%にされて文字化けしてしまっているのがダメらしい。納得。&lt;/p&gt;</description></item><item><title>買ってしまった</title><link>https://chezo.uno/post/2008-10-28-mai-tutesimatuta/</link><pubDate>Tue, 28 Oct 2008 14:52:46 -0700</pubDate><guid>https://chezo.uno/post/2008-10-28-mai-tutesimatuta/</guid><description>&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B000WM8KPI/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
マランツ シルバー SA-15S1S
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
/ マランツ・スーパースコープ&lt;br&gt;
ISBN : B000WM8KPI&lt;br&gt;
スコア選択: ※※※※※&lt;/p&gt;
&lt;p&gt;糞耳かもしれない自分がちょっと背伸びをして買ってしまった。&lt;/p&gt;
&lt;p&gt;いや、いい音だってのはわかるよ。とっても。今までの環境からしたら音の密度が全然違う。トリオのJazzなんか、ライブハウスで聴いているみたいな生々しさ。&lt;/p&gt;
&lt;p&gt;ちまたで聴くような高音が刺さる感じもない、、、と思ったらプラネテスのCDでWonderful Lifeを聴いたら刺さった。。。。このプレーヤーでアニソン聴くなと言われそうだが、Outside atmosphereやJupiter highwayを聴きたかっただけなんだ。&lt;/p&gt;
&lt;p&gt;というわけで、やっとHD650が本気を出してクラシックやジャズを再生できる環境が整いました。無論、合唱やアカペラも良い感じです。&lt;/p&gt;
&lt;p&gt;ちなみに、現在の構成は&lt;br&gt;
SA-15S1→HD53R Ver.8→HD650,HD555,K240S,HFI-700です。&lt;br&gt;
HD555とHFI-700はまだ試してないや。&lt;/p&gt;</description></item><item><title>SINGS 2008 with Steve Dobrogosz</title><link>https://chezo.uno/post/2008-10-28-sings-2008-with-steve-dobrogosz/</link><pubDate>Tue, 28 Oct 2008 14:51:21 -0700</pubDate><guid>https://chezo.uno/post/2008-10-28-sings-2008-with-steve-dobrogosz/</guid><description>&lt;p&gt;少し遅くなりましたが、
に行ってきました。&lt;br&gt;
結論から言うと、とても素晴らしかったです。すべてのステージが、Dobrogoszを愛してやまないんだということがひしひしと伝わってきました。たまに、(女声に)プロが混じっているんじゃないかという場面もあったのですが、どちらかというとそれは曲に浸りすぎてしまいたがが外れたという感じでした。全体的に明るく軽やかな声で日本独特の重さ、しつこさといった要素が徹底的に排除されていました。だからこそ、Dobrogoszの曲にマッチしていたんだとも思いました。&lt;/p&gt;
&lt;p&gt;特筆すべきは2st。会場に浮き上がるように一本のライトで演出された氏のピアノでの即興ソロもとても印象的でした。「会場の雰囲気を感じて演奏してください」という言葉がとても現れていました。&lt;br&gt;
氏の曲はピアノなのに歌いたがっているように感じました。特に言葉に対して忠実に、というと変かもしれませんが、言葉のアクセント感、リズム感、響きをピアノで表現しているように受け取りました。合唱曲においても作曲者の意図が良く伝わってきて、良かったと思います。Lord I&amp;rsquo;m Freeや、Zakuroなど明るく楽しい曲が特に素敵でした。ゴスペルもそこまで乱暴な演奏ではなく(それに比べるとオフィシャルのMP3の何という荒いこと！）、World Youth Choirの様な印象すら受けました。この演奏会のCDが出たら間違いなく買います。というか、音源が欲しいです。&lt;/p&gt;
&lt;p&gt;総じて素晴らしい演奏会でした。機会があれば参加してみたいです、SINGS。&lt;/p&gt;</description></item><item><title>うつくしい子ども</title><link>https://chezo.uno/post/2008-10-28-utukusiizi-domo/</link><pubDate>Tue, 28 Oct 2008 14:48:47 -0700</pubDate><guid>https://chezo.uno/post/2008-10-28-utukusiizi-domo/</guid><description>&lt;p&gt;石田衣良の「うつくしい子ども」です。 &lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4167174057/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
うつくしい子ども (文春文庫)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
石田 衣良 / / 文藝春秋&lt;br&gt;
スコア選択: ★★★★&lt;/p&gt;
&lt;p&gt;また石田衣良を掴まされてしまいました(ほめ言葉)&lt;/p&gt;
&lt;p&gt;途中で気になって確認したのですが、1999年に書き上げられています。このあたりの時代って、自分が高校生になった頃で結構少年犯罪がどうのという話が取り上げられてしばらくした後というような印象です。&lt;br&gt;
ちなみに、読んでて気持ち悪くなったり胸くそ悪くなったりするので、僕みたいに小説に癒しを求める人にはお勧めできません。主人公は猟奇的殺人犯の兄。そして、もう一人の主人公は新聞記者。二人の視点から、「何故、主人公の弟は犯行に至ったか」を追いかけていきます。&lt;br&gt;
相変わらず石田衣良は、読者をはらはらさせて次を読ませて、カタルシスへと駆け抜けさせるのが得意だなぁと言う印象。しかし、それと平行して犯罪者の家族に向けられる牙を疑似体験させられました。&lt;br&gt;
最近、揚げ足取りのようにマスコミが叩く風潮から、Webでのコメント(2chやブックマークを含む)での追求がなされるフェーズへと移ってきたように感じます。従来の、一辺倒な報道からの情報に比べれば、はてブやブログで得られる多面的な背景は読んでいて考えさせられることが増えましたが、脊髄反射的に正義のコメントを展開する姿はある種滑稽にも思えます。いや、
なんか見てると、言いたいことはわかるんだが本末転倒というか、本当に子どもを心配する気持ちを利用した方が弾劾されてしかるべきなのに、反射的な反応は考え物だなと思った次第です。想像力の欠如とかなんとかよく言われている言葉にするとチープなんだけれど、もう少し人に優しい世の中にならないのかなぁ。&lt;/p&gt;
&lt;p&gt;閑話休題。センセーショナルな題材(恐らく当時、そして今も)であることに目を奪われてしまうかもしれませんが、そこを描きつつも問いかけられるメッセージが何だったのかを受け止めたいと思います。&lt;/p&gt;
&lt;p&gt;でも、二回目は読みたくない本です。食欲がなくなるので……。&lt;/p&gt;</description></item><item><title>3年で辞めた若者はどこへ行ったのか？</title><link>https://chezo.uno/post/2008-10-28-3nian-deci-metaruo-zhe-hadokohexing-tutanoka/</link><pubDate>Tue, 28 Oct 2008 14:48:41 -0700</pubDate><guid>https://chezo.uno/post/2008-10-28-3nian-deci-metaruo-zhe-hadokohexing-tutanoka/</guid><description>&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4480064141/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
3年で辞めた若者はどこへ行ったのか―アウトサイダーの時代 (ちくま新書 (708))
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
城 繁幸 / / 筑摩書房&lt;br&gt;
ISBN : 4480064141&lt;br&gt;
スコア選択: ※※&lt;/p&gt;
&lt;p&gt;タイトル詐欺。中身は筆者の言いたいことが詰まっていて、その裏付けに様々な人の言葉たちが使われているだけ。Amazonでそのような言葉を読んだが、まさしくその通り。&lt;br&gt;
後書きを買う前に読むべき。そこに筆者の主張が詰まっているから。別に建設的でないとは言わないけれども。&lt;/p&gt;
&lt;p&gt;リーマンショックを経た今、投資銀行へつとめている人がどうなったか、もう一度筆者にリポートをお願いしたい。その上で、アメリカ中心のシステムにそった形が良いのかというのをもう一度検証していただきたい。&lt;/p&gt;
&lt;p&gt;確かに民主、社会、共産、マスコミ批判はわかりやすいが今更感も。そして、繰り返される昭和→平成の主張は何か論拠が薄い。いつもこの手の本を読んで思うのが、文系の人は何故こんなに転職や残業超過について言及するのが好きなのだろう。(こう考えてしまうのは典型的二本の理系なのかもしれないが)、自分の研究室での経験からすると残業代がでる残業は幸せなのではないかと思う。給料がもらえるんだから。それより多い時間を費やしてただ働きしている理系学生の多さを考えたら、就職して楽になったという事例も結構あるんじゃないかと思う。&lt;br&gt;
是非ともこうした無茶な労働時間を平気でこなすことを要求する日本の理系研究室に対してメスを入れて欲しい。というか、それをやらないと、残業当たり前の感覚は抜けないのではないかと思う。&lt;br&gt;
また、転職のリスクというものは存在しないのだろうか？それを伝えずして転職をオススメするのはあまり感心しない。まだ、勝間和代の転職活動をしても食いっぱぐれない様に運用をって話のほうが親切に聞こえる。&lt;/p&gt;
&lt;p&gt;ちなみに、就職率の酷いグラフの比較(2〜8％の差に有意差が見いだせるのだろうか？)や、ベースラインを明らかにしない割合の比較など、ミスリーディングを誘ったり誇張をしている場面が見られるのが残念で仕方ない。&lt;br&gt;
前作はもっと素直に読めたのに。&lt;/p&gt;</description></item><item><title>JPOPサウンドの核心部分が、実は１つのコード進行で出来ていた</title><link>https://chezo.uno/post/2008-10-19-jpopsaundonohe-xin-bu-fen-ga-shi-ha1tunokodojin-xing-dechu-lai-teita/</link><pubDate>Sat, 18 Oct 2008 20:10:00 -0700</pubDate><guid>https://chezo.uno/post/2008-10-19-jpopsaundonohe-xin-bu-fen-ga-shi-ha1tunokodojin-xing-dechu-lai-teita/</guid><description>&lt;p&gt;
をやっと読んだ。というか見た。&lt;br&gt;
なるほどなー、と感心する反面どうもTommorow never knowsにしか聞こえない罠。&lt;/p&gt;
&lt;p&gt;まぁ、投稿者の方の主張している理由というのが&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;「メジャーとマイナーの中間を漂う浮遊感」&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;というのには、納得です。&lt;br&gt;
割と曲を作っていると、メジャーだかマイナーだかわからないけど、とにかく使いたいコードを使っちまえっていうのはあると思うんですよね。そして、それが耳なじみよければOK、となると良く聴いた曲の進行になってしまいがちになるのも頷けます。&lt;/p&gt;
&lt;p&gt;個人的には、民族チックな和音やらメロディのほうが好きなので、ふーんで終わりますが。&lt;/p&gt;</description></item><item><title>楽譜が欲しい</title><link>https://chezo.uno/post/2008-10-11-le-pu-gayu-sii/</link><pubDate>Fri, 10 Oct 2008 20:10:00 -0700</pubDate><guid>https://chezo.uno/post/2008-10-11-le-pu-gayu-sii/</guid><description>&lt;p&gt;出版されている物を、取り寄せるのは比較的なんとかなるとわかりました。&lt;br&gt;
今欲しいのは、
。Dulamanが歌いたいわー。&lt;/p&gt;
&lt;p&gt;でも、もっと歌いたいのは未出版のものがほとんど。採譜できる自信がないので、オリジナルの方々に英語で問い合わせてみるしかないのかなぁー……。&lt;br&gt;
でも、SuomiとかSwedishとか無理ぽ……。&lt;/p&gt;
&lt;p&gt;しっかし、前から思うのが自分が求めるアカペラ情報って、結構ネットに分散していてまとまってるところないのね。ちょこちょこ集めていくしかないかなぁ。&lt;/p&gt;</description></item><item><title>落語百選　夏</title><link>https://chezo.uno/post/2008-10-10-luo-yu-bai-xuan-xia/</link><pubDate>Fri, 10 Oct 2008 14:48:57 -0700</pubDate><guid>https://chezo.uno/post/2008-10-10-luo-yu-bai-xuan-xia/</guid><description>&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4480034528/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
落語百選―夏 (ちくま文庫)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
/ 筑摩書房&lt;br&gt;
ISBN : 4480034528&lt;br&gt;
スコア選択: ※※※※※&lt;/p&gt;
&lt;p&gt;落語を読むのは(聞くのも含めて)本書が初めてであった。それまでは、何とも言えない距離を感じていたのは事実である。「きっとわからないだろう」とか、「現代の話でも面白いんじゃない」とかいう具合に。元々時代物のお話も得意なほうじゃあなかったのもある。&lt;/p&gt;
&lt;p&gt;本書は、そんなことはどうでも良くて楽しめる本である。人々の日常の中から面白いことをちょっと誇張して切り取ってきた、という漢字である。本の中には、誰かを貶めるような話はまずない。最近のメディアから垂れ流されてくる人を小馬鹿にしたような笑いとは一線を画す。というか、本来何かを見下したものは笑いではないのだろう。&lt;/p&gt;
&lt;p&gt;閑話休題。とにかく、笑いの中にも人々の息づかいや心配りが感じられて、気楽にしかし楽しく読める。オススメ。&lt;/p&gt;</description></item><item><title>ちいさなちいさな王様</title><link>https://chezo.uno/post/2008-10-10-tiisanatiisanawang-yang/</link><pubDate>Fri, 10 Oct 2008 14:48:52 -0700</pubDate><guid>https://chezo.uno/post/2008-10-10-tiisanatiisanawang-yang/</guid><description>&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4062083736/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
ちいさなちいさな王様
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
アクセル ハッケ / / 講談社&lt;br&gt;
ISBN : 4062083736&lt;br&gt;
スコア選択: ※※※※&lt;/p&gt;
&lt;p&gt;話もシュールなら絵もシュール。でも、何故かそれが落ち着く本です。&lt;/p&gt;
&lt;p&gt;お話としては、年を重ねるごとに体が小さくなっていき物を忘れてしまう世界の王様が、偉そうに色々なことを主人公に言ってきます。しかし、その王様の一言一言がなんというか思慮に溢れていて、深いのです。&lt;/p&gt;
&lt;p&gt;最初ゾーヴァの絵だけを見たときには、シュールだなとしか思わなかったのですが、アクセル・ハッケの文章を読むと納得、いやそれ以上のものをゾーヴァの絵は与えてくれました。プードル救い機の絵は感激です。&lt;/p&gt;</description></item><item><title>勝間和代のビジネス頭を創る7つのフレームワーク力 ビジネス思考法の基本と実践</title><link>https://chezo.uno/post/2008-10-05-sheng-jian-he-dai-nobizinesutou-wochuang-ru7tunohuremuwakuli-bizinesusi-kao-fa-noji-ben-toshi-jian/</link><pubDate>Sun, 05 Oct 2008 05:10:01 -0700</pubDate><guid>https://chezo.uno/post/2008-10-05-sheng-jian-he-dai-nobizinesutou-wochuang-ru7tunohuremuwakuli-bizinesusi-kao-fa-noji-ben-toshi-jian/</guid><description>&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4887596391/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
勝間和代のビジネス頭を創る7つのフレームワーク力 ビジネス思考法の基本と実践
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
勝間 和代 / / ディスカヴァー・トゥエンティワン&lt;br&gt;
ISBN : 4887596391&lt;br&gt;
スコア選択: ※※※※&lt;/p&gt;
&lt;p&gt;大分前に読んだので、うろ覚えになっているが一応読了したので書いておく。&lt;/p&gt;
&lt;p&gt;話の中身としては、PDCAだとか水平思考力だとか良く聞くような話を体系的にまとめて説明してくれている。著者の本は二冊目だが、説得力を感じるし何より読者がいかにしたら受け入れてくれるのか、という点を強く意識して書かれているため、受け入れやすい。&lt;/p&gt;
&lt;p&gt;何点をあげるとしたら、著者の本を色々追っかけてきた人にとっては良いのかもしれないが、そうではない人にとっては「拙著○○を参照されたい」というのはどこの論文だよ、と思ってしまった。これが論文のようなPublicな文章なら比較的後々も入手容易であると考えられるが、本というのは生ものであるので長期的に販売され続けるという前提が成り立つのか疑問に思う。そういう意味からも、他書を見て欲しいというのは、わかるのだが3行で要点を書いて欲しかった。&lt;/p&gt;
&lt;p&gt;色々とどういう構造で成り立っているかを分析するのに参考になる点は多いので、おすすめです。&lt;/p&gt;
&lt;p&gt;しかし、この本が書かれた頃のはてなは、もうちょっと穏やかだったのでしょうか。最近チェックしだしたので、あまりわからないのですが。色々とおすすめの本などが拾えたので重宝していました。ちょっと前までは。&lt;/p&gt;
&lt;p&gt;＊追記&lt;br&gt;
後ろにあった参考文献を今気づいた。これは良い。表紙を付けて載せてあるので書店等でも探しやすい。&lt;/p&gt;</description></item><item><title>HD53R Ver.8を購入</title><link>https://chezo.uno/post/2008-10-05-hd53r-ver-dot-8wogou-ru/</link><pubDate>Sun, 05 Oct 2008 05:10:00 -0700</pubDate><guid>https://chezo.uno/post/2008-10-05-hd53r-ver-dot-8wogou-ru/</guid><description>&lt;p&gt;2chではとことん評判のよろしくないC.E.Cの
を購入しました。&lt;br&gt;
しかし、JBLのReference410といい、今のマシンの電源といい（ｒｙ&lt;/p&gt;
&lt;p&gt;で、購入したきっかけはULTRASONEのHFI-700をROCKとPops用に購入したのですが、その際にフジヤエービックで使われていたアンプがこの子でした。(ちなみに、上流はマランツの
だったはず)&lt;br&gt;
そこで、聞き比べたのがiPodとHD53R越しの音とSA7001越しの音。まぁ、当たり前かもしれないけれど一番重みがある音に感じられたのがHD53R越しの音だったわけですね。で、家でもこの環境が良いなぁと思い購入しました。&lt;br&gt;
まぁ、アンプなしからありにしたらそりゃ良くなるわけです。&lt;br&gt;
もう一つの理由が、彼女と一緒にヘッドホンで鑑賞したいと思ったときに、インピーダンス等々の関係で2個ボリュームが調整できる方が良かったわけです。もう生産終了したということでこの子に決定しました。&lt;/p&gt;
&lt;p&gt;で、帰ってから自宅のCDPlayer(といってもラジカセみたいな子なんですけど)にはRCAのAUX-InはあってもOutがないことが発覚。現在、tokyostyleのS010から出力して聞いています……。こりゃ次はDACかな。ONKYOのSE-200PCI LTDはなんだかんだでそこそこらしいし。&lt;br&gt;
ちなみに、参考にしてしまったしたのは某ちらしの裏です。んまぁ、自分で納得した上で買ってるからいいんだけどね。&lt;/p&gt;
&lt;p&gt;肝心のノイズ周りと音はというと、ノイズは奇跡的にガリノイズもギャングエラーもありませんでした！！すげー。で、現在20時間くらいしかエージングしてないですが、音はS010直やDenDACよりも低域が密度が高くなった気がします。確かに、ロックとかJ-Popを聴くのには良いかな。HFI-700が楽しくなりました。で、合唱やアカペラはというとアカペラ曲は良い感じです。Rajaton素敵。合唱はというとAllegriのMiserereとかちょっとすっきりしすぎかなという印象がぬぐえません。硬質な音と言えばそうなのかも。&lt;br&gt;
しばらくは、この子で頑張っていこうと思います。&lt;/p&gt;</description></item><item><title>パーフェクトブルー読了</title><link>https://chezo.uno/post/2008-10-02-pahuekutoburudu-liao/</link><pubDate>Wed, 01 Oct 2008 18:10:00 -0700</pubDate><guid>https://chezo.uno/post/2008-10-02-pahuekutoburudu-liao/</guid><description>&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4488411010/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
パーフェクト・ブルー (創元推理文庫)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
宮部 みゆき / / 東京創元社&lt;br&gt;
ISBN : 4488411010&lt;br&gt;
スコア選択: ※※※※&lt;br&gt;
最初、恵比寿の有隣堂で何の気なしに付けて貰ったブックカバー。いつもはあまり気にもとめない爽やかすぎる青。店員さんがブックカバーを付けるときに「色と本の指定はありますか？」と聞かれたのですが、店員さんにお任せをしました。&lt;br&gt;
読み終わって納得。これがパーフェクトブルーの色だったのね。&lt;/p&gt;
&lt;p&gt;東野圭吾と森博嗣しかミステリーは読んだことなかったのですが、きっとこれが王道なんだろうなという伏線の張り方、回収の仕方。どんどん引き込まれます。最後の結末も(可能性は考えなくもないが)、まさかという展開。でも、読後感がすっきりしないかな。感情移入すればするほど、辛くなってしまう。&lt;br&gt;
読んで損はないとは思いますが二回目を読もうとは思わないです。。&lt;/p&gt;</description></item><item><title>フジヤエービック行ってきました</title><link>https://chezo.uno/post/2008-09-28-huziyaebitukuxing-tutekimasita/</link><pubDate>Sat, 27 Sep 2008 23:09:00 -0700</pubDate><guid>https://chezo.uno/post/2008-09-28-huziyaebitukuxing-tutekimasita/</guid><description/></item><item><title>B'zのUltra treasureがやばすぎる</title><link>https://chezo.uno/post/2008-09-28-bznoultra-treasuregayabasugiru/</link><pubDate>Sat, 27 Sep 2008 17:09:00 -0700</pubDate><guid>https://chezo.uno/post/2008-09-28-bznoultra-treasuregayabasugiru/</guid><description>&lt;p&gt;B&amp;rsquo;zのUltra treasureの選曲がやばすぎです。&lt;/p&gt;
&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B001CRGVAS/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
ULTRA Treasure(DVD付)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
B’z / / VERMILLION RECORDS(J)(M)&lt;br&gt;
ISBN : B001CRGVAS&lt;br&gt;
スコア選択: ※※※※※&lt;/p&gt;
&lt;p&gt;選曲が素晴らしすぎる。どうせファン投票で入る曲なんて、しっとりじめじめバラードで埋め尽くされるんだろう、とか高をくくっていたら、違う違う。&lt;/p&gt;
&lt;p&gt;まさか、F・E・A・Rが入ってくるとは！Homeも
だし！！素晴らしいの一言。ファンなら是非。Ultra pleasureは無くてもいいかもしれんけど、こちらは手元に置いておくべきです。&lt;/p&gt;
&lt;p&gt;しかも、一緒に着いてくるライブDVDが熱い！これはDVDまであわせて一つの作品ととらえるしか。ライブ行きたくなってしまいました。&lt;/p&gt;</description></item><item><title>ヘッドホン物色したひ</title><link>https://chezo.uno/post/2008-09-14-hetudohonwu-se-sitahi/</link><pubDate>Sun, 14 Sep 2008 14:52:57 -0700</pubDate><guid>https://chezo.uno/post/2008-09-14-hetudohonwu-se-sitahi/</guid><description>&lt;p&gt;J-POPやROCKが聞けるヘッドホンが欲しくなってきたので、メモメモ。&lt;/p&gt;
&lt;p&gt;最初は、Sennheiserの
にしようかと思ったのですが、思った以上に低音がもこもこしてて断念。きっと、電車とかで聞くのにはいいのかもしれないんでしょうけど、それならEP-630やらReference410で十分なんですよね。&lt;/p&gt;
&lt;p&gt;で、大須のノムラ無線にて勧められたのが、
。最初は、DENONでJ-POP？とか思ったんですが、意外とあうんだなぁ。無難な音という評価はよくありますが、やっぱり全体のバランスが大事なのかなぁと思った次第です。&lt;br&gt;
でも、これを買うことを決定する前にヘッドホンアンプを買うか、GRADOやらbeyer dynamicの子を視聴してみたいなぁと思う次第です。&lt;/p&gt;</description></item><item><title>エンジェル・ハート(27)</title><link>https://chezo.uno/post/2008-09-10-enzieruhato-27/</link><pubDate>Wed, 10 Sep 2008 14:49:13 -0700</pubDate><guid>https://chezo.uno/post/2008-09-10-enzieruhato-27/</guid><description>&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4107714209/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
エンジェル・ハート 27 (27) (BUNCH COMICS)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
北条 司 / / 新潮社&lt;br&gt;
ISBN : 4107714209&lt;br&gt;
スコア選択: ※※※※※&lt;/p&gt;
&lt;p&gt;やばいなぁ。北条司はこういう泣かせる話描かせたら天下一品だなぁ。&lt;/p&gt;
&lt;p&gt;任務故に家族と生き別れた、老人のお話。展開としては何も目新しいことはない。でも、そのべたかもしれないけれども、一つ一つのキャラクターの行動、その描写にぐっと来てしまう。&lt;/p&gt;
&lt;p&gt;今回は買って良かった巻だ。売るのかと思うと……。ま、それはそれか。&lt;/p&gt;</description></item><item><title>Luck Stealer (2)</title><link>https://chezo.uno/post/2008-09-08-luck-stealer-2/</link><pubDate>Mon, 08 Sep 2008 14:49:19 -0700</pubDate><guid>https://chezo.uno/post/2008-09-08-luck-stealer-2/</guid><description>&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/408874571X/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
Luck Stealer 2 (2) (ジャンプコミックス)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
かず はじめ / / 集英社&lt;br&gt;
スコア選択: ★★★&lt;/p&gt;
&lt;p&gt;運を盗んで人を殺す。殺人鬼のお話。&lt;br&gt;
シリアスなようでシリアスじゃない展開がもどかしい。なんというか、鬼気迫る感じがほとんどないんだよなぁ、今回。お話を淡々と進めていく感じ。猟奇的な教師も出てきたし、お膳立てはしているはずなのに、迫力というか迫ってくることがない。&lt;br&gt;
なぜだろう。ちょっと残念。&lt;/p&gt;</description></item><item><title>残業ゼロの仕事力読了</title><link>https://chezo.uno/post/2008-09-08-can-ye-zeronoshi-shi-li-du-liao/</link><pubDate>Mon, 08 Sep 2008 05:09:00 -0700</pubDate><guid>https://chezo.uno/post/2008-09-08-can-ye-zeronoshi-shi-li-du-liao/</guid><description>&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4820717138/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
「残業ゼロ」の仕事力
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
吉越 浩一郎 / / 日本能率協会マネジメント 出版情報事業&lt;br&gt;
ISBN : 4820717138&lt;br&gt;
スコア選択: ※※&lt;/p&gt;
&lt;p&gt;著者は幸せな、そして特殊な世界に生きてきたのだと理解。&lt;br&gt;
典型的理系大学院を通ってきた自分には、受け入れられない言葉が多い。彼は一度日本の理系大学院を指弾して欲しい。サービス残業とボランティアでできている、研究室という存在が、日本の理系を残業好きにしている。だって、企業で働く方が楽で金も貰えるんだもの。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;残業をしない方が良いに決まってるでしょ。&amp;ldquo;それこそ、自明と言わずにロジカルにつめるべき話ではなかろうか。そして、ロジカルシンキングをうたっておきながら、本書の構成の無駄の多いこと。何が本質かぼやけてしまう。同じ様なことをなんどもくどくど書いてある。これが、ロジカルシンキング？&lt;/p&gt;
&lt;p&gt;書いてある中身は、参考にしようと思うこともそれなりにあった。長時間労働するより密度を上げろ、というのは素晴らしい。ただ、素晴らしい考え方ではあるものの、前提として役職のある人間にしか通用しないテクニックの連発のようだ。というか、平の自分には関係ないね、と思ってしまう。&lt;br&gt;
なんか、文章からは「俺は実績あるんだぜ」以上のものが感じられず、敵を不必要に作っている気がする。センセーショナルな文章でなぇれば人の心に残らないのだろうか。&lt;/p&gt;
&lt;p&gt;正直、本に書いてあることが読者の受け取れる全てなはずなのに、本書以外の経験を主張されてもなんだかなぁという印象。&lt;br&gt;
へー、あなたは凄いんですね。結果も残しましたね、ワンマン社長。&lt;/p&gt;</description></item><item><title>初音ミクのカラオケ曲</title><link>https://chezo.uno/post/2008-09-07-chu-yin-mikunokaraokequ/</link><pubDate>Sun, 07 Sep 2008 05:09:00 -0700</pubDate><guid>https://chezo.uno/post/2008-09-07-chu-yin-mikunokaraokequ/</guid><description>&lt;p&gt;JOY SOUNDならなんとかしてくれるはず！と信じて、初音ミクで検索しても二曲しか出なかった。&lt;/p&gt;
&lt;p&gt;それも当然のはず。&lt;br&gt;
&lt;br&gt;
初音ミクはアーティスト名として登録されていないのだ。普通のJ-POPだと、歌い手の名前で登録するよねー。でも、作曲者の方が中心だからかなぁ。&lt;br&gt;
覚えて次歌いに行くかなぁ。メルトが無いのが残念無念。&lt;/p&gt;</description></item><item><title>風が強く吹いている</title><link>https://chezo.uno/post/2008-09-06-feng-gaqiang-kuchui-iteiru/</link><pubDate>Sat, 06 Sep 2008 14:49:29 -0700</pubDate><guid>https://chezo.uno/post/2008-09-06-feng-gaqiang-kuchui-iteiru/</guid><description>&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4104541044/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
風が強く吹いている
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
三浦 しをん / / 新潮社&lt;br&gt;
ISBN : 4104541044&lt;br&gt;
スコア選択: ※※※※※&lt;/p&gt;
&lt;p&gt;正直、スポーツものって縁がなかったのです。自分が運動できないから。&lt;/p&gt;
&lt;p&gt;でも、それを補ってあまりある心惹かれる文章です。とても、おすすめ。何が良いかというと、読み始めると物語のキャラクターが自分で一人歩きし出すんですね。何か伏線がはってあるというよりも、こいつはこういう行動をとるだろう、という展開です。でも、それがうれしい。&lt;/p&gt;
&lt;p&gt;神童のゴールの瞬間がたまりません。思わず朝の通勤で涙してしまいました。&lt;/p&gt;
&lt;p&gt;毛嫌いせずに是非読んで欲しいです。少し分厚いですが、逆にそれがトレーニングのつもりで共感できました。&lt;/p&gt;</description></item><item><title>機動戦士ガンダムTHE ORIGIN　16 17</title><link>https://chezo.uno/post/2008-09-04-ji-dong-zhan-shi-gandamuthe-origin-16-17/</link><pubDate>Thu, 04 Sep 2008 14:49:35 -0700</pubDate><guid>https://chezo.uno/post/2008-09-04-ji-dong-zhan-shi-gandamuthe-origin-16-17/</guid><description>&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4047139874/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
機動戦士ガンダムTHE ORIGIN 16 オデッサ編・後 (16) (角川コミックス・エース 80-19)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
安彦 良和 / / 角川書店&lt;br&gt;
ISBN : 4047139874&lt;br&gt;
スコア選択: ※※※※&lt;/p&gt;
&lt;p&gt;マクベの散り方が割とあっさり。&lt;/p&gt;
&lt;p&gt;オリジナルのTV版では、もう少しねちっこい奴だったと思うが。エノラゲイについての話を引き合いに出した、核爆弾を投げに来た兵士の話には少し残念な気分になった。そこまでピンポイントにする必要はないんではないの？後々の話では核は非常に重要な存在とされているのに、今回は少し軽々しい感じがしました。&lt;/p&gt;
&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4047150754/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
機動戦士ガンダム THE ORIGIN (17) ララァ編・前 (角川コミックス・エース 80-20)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
安彦 良和 / / 角川グループパブリッシング&lt;br&gt;
ISBN : 4047150754&lt;br&gt;
スコア選択: ※※※※&lt;/p&gt;
&lt;p&gt;大佐が女たらしなのがわかる瞬間。&lt;/p&gt;
&lt;p&gt;みらいのフィアンセが格好良くなってる。素晴らしい。そして、アムロ父って最後に亡くなられたっけ？&lt;/p&gt;
&lt;p&gt;基本的に、面白いんだけど、オリジナル版でも問題ないんだよなぁ。&lt;/p&gt;</description></item><item><title>TRY-TONEスペシャルライブ 〜　アカペラ夏唄2008　〜</title><link>https://chezo.uno/post/2008-08-31-try-tonesupesiyaruraibu-akaperaxia-bai-2008/</link><pubDate>Sun, 31 Aug 2008 14:51:54 -0700</pubDate><guid>https://chezo.uno/post/2008-08-31-try-tonesupesiyaruraibu-akaperaxia-bai-2008/</guid><description>&lt;p&gt;渋谷にあるライブハウス「
」にて行われたTRY-TONEのライブに行ってきました。
多作というかライブハウス自体が初めての体験だったので、開場時間に少し遅れて行ったらすでにたくさん並んでいました。しかも、周りの方々が「今日はアカペラグループ皆で来ましたー」とか言ってるのを聞いて、一人でやりおるわぁとニヤニヤしていました。さすが、アカペラメインのライブハウスだなぁと。&lt;/p&gt;
&lt;p&gt;で、遅れていったからには当然というかライブハウスの規模を舐めていて、友人と離れた席になってしまいました。そうなのかー、35人くらいしか入らないのね。きっついわ。
でも、その狭さのおかげか2列目というか2mくらいの近さでメンバーの方々と対面できました。いやはや、浴衣での演奏に感激です。正直、ゆかたは一度着ただけなのですが、歌うのには適さない服だなぁと思っていたので……。しかも、男性陣はちゃんとした下駄で歌っているという！！いやぁ、下駄でリズムをとる青木さんに尊敬の眼差しを送っていました。&lt;/p&gt;
&lt;p&gt;曲目は、、、あっという間に通り過ぎてしまったのでキチンと拾い切れてないですが、前回名古屋で聞いたのとは全然違って、新旧色々な曲（今回のためのアレンジも含んだメドレーもあるとか）を楽しめたのが良かったです。「夏」をテーマにした曲で固めていたのですが、どれも素敵な曲でした。実は、あまり全部を拾うほど聞き込んでいなかったのですが、秋田音頭が聞けたのはとても印象的でした。
そして、会場と一緒になってソーラン節を歌ったのは、とても盛り上がりました。良くある会場との歌のやりとりを経て、会場のレベルが高いことを認識した多湖兄さんと、会場を二分したメンバーで「ヤーレン」「ソーラン」の応酬が。楽しいわぁ。&lt;/p&gt;
&lt;p&gt;男性陣のTokyo Los Angelsの面々による懐メロメドレーは最高に面白かったです。胸がキュンキュンキュンとか真顔でやられるなんて、たまりません（笑）ちなみに、Trio Los Amigosというラテン曲のユニットとして活躍しているみたいなのですが、TLAの略称を募集しているらしいです。会場で考えてたときにはThree Love Affairsという酷い名前しか思い浮かびませんでした。。。名前付けのセンスないのよね。&lt;/p&gt;
&lt;p&gt;最後に、青木さんに低音を出すこつを教えていただき、多湖さんの口トランペット講座を立ち聞きして、写真も撮っていただきました。うれしいわー。デジカメ持って行けばよかったかも。&lt;/p&gt;
&lt;p&gt;帰りに「冬彦さんを知らないの？」と友人に怒られてしまったのは、ここだけの話（笑）
また是非行きたいライブでした。10月にもいっちゃうぜ。&lt;/p&gt;</description></item><item><title>知らなかった、youtubeが貼り付けられるなんて</title><link>https://chezo.uno/post/2008-08-31-zhi-ranakatuta-youtubegatie-rifu-kerarerunante/</link><pubDate>Sun, 31 Aug 2008 00:08:00 -0700</pubDate><guid>https://chezo.uno/post/2008-08-31-zhi-ranakatuta-youtubegatie-rifu-kerarerunante/</guid><description>&lt;p&gt;やっとかよー。テストテスト。&lt;/p&gt;
&lt;p&gt;というわけで、某あかぺら村よりThe　Real Groupのアカペラマシーンと教授の歌を転載。&lt;/p&gt;
&lt;p&gt;あー、あとで昨日のTRY-TONEのライブのレポをしようかと思います。口トランペットの音の出し方講座を終わった後の観客とメンバーのトークの中で聞けました♪&lt;br&gt;
言葉ではよーかかんですけどね。&lt;br&gt;
また、後ほど。&lt;/p&gt;</description></item><item><title>アキハバラ＠DEEP</title><link>https://chezo.uno/post/2008-08-26-akihabara-at-deep/</link><pubDate>Tue, 26 Aug 2008 14:49:40 -0700</pubDate><guid>https://chezo.uno/post/2008-08-26-akihabara-at-deep/</guid><description>&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4167174111/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
アキハバラ@DEEP (文春文庫)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
石田 衣良 / / 文藝春秋&lt;br&gt;
ISBN : 4167174111&lt;br&gt;
スコア選択: ※※※※※&lt;/p&gt;
&lt;p&gt;まず、今まで石田衣良を舐めていた。&lt;/p&gt;
&lt;p&gt;プロローグで描写される秋葉原は、少し古くさい要素はあるにしろ、素晴らしい。ただの、はやりに乗っただけかと思っていたが、そうでもない。むしろ詳しすぎる。熱収縮チューブなんて一般人しらないよ。&lt;/p&gt;
&lt;p&gt;話としては、以前も書いたかもしれないが、キャラクターが非常に生きている。まず、開始直後に事故死してしまうユイさんは言葉が重い。詳細は以前書いた日記を参照して頂きたいが、コンプレックスを感じるすべての人に届いて欲しい。&lt;/p&gt;
&lt;p&gt;そして、コンプレックスといえば、ページとタイコの二人が誘拐されたときの取った行動が素晴らしすぎる。普通は、吃音などという要素は憐れみの対象であれ、武器になるということはないだろう。そこで、作者はこれらのWeekPointを武器にかえてしまった。&lt;/p&gt;
&lt;p&gt;少しまどろっこしい部分もあるかもしれないが、基本的に勧善懲悪（クルークが善悪かはわからないが）ものであるので、すっきりとした読後感である。秋葉原という単語に反応してしまうデジタル好きなら読んでみると良いかもしれない。&lt;/p&gt;</description></item><item><title>サヨナライツカ</title><link>https://chezo.uno/post/2008-08-24-sayonaraituka/</link><pubDate>Sun, 24 Aug 2008 14:49:45 -0700</pubDate><guid>https://chezo.uno/post/2008-08-24-sayonaraituka/</guid><description>&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/434440257X/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
サヨナライツカ (幻冬舎文庫)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
辻 仁成 / / 幻冬舎&lt;br&gt;
ISBN : 434440257X&lt;br&gt;
スコア選択: ※※※※※&lt;/p&gt;
&lt;p&gt;「人間は死ぬとき、愛されたことを思い出すヒトと愛したことを思い出すヒトにわかれる。私はきっと愛したことを思い出す。」&lt;/p&gt;
&lt;p&gt;2部構成の意味が最初はわからなかったのですが、最後まで読んでみて納得。1部は最初、情熱的な浮気の描写に辟易していたのですが、2部の終わりの沓子が亡くなるところですべてが繋がり思わず涙。&lt;/p&gt;
&lt;p&gt;良い作品です。&lt;/p&gt;</description></item><item><title>のだめ21巻</title><link>https://chezo.uno/post/2008-08-11-nodame21juan/</link><pubDate>Mon, 11 Aug 2008 14:49:56 -0700</pubDate><guid>https://chezo.uno/post/2008-08-11-nodame21juan/</guid><description>&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4063407128/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
のだめカンタービレ #21 (21) (講談社コミックスキス)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
二ノ宮 知子 / / 講談社&lt;br&gt;
ISBN : 4063407128&lt;br&gt;
スコア選択: ※※※※&lt;/p&gt;
&lt;p&gt;衝撃の展開。のだめご乱心。&lt;/p&gt;
&lt;p&gt;以下ネタバレ含みます。&lt;/p&gt;
&lt;p&gt;なんというか、ついに千秋と一夜を共に過ごしました。どん引きです。で、その翌朝結婚を申し込んでスルーされました。どん引きです。さらに、その後シュトレーゼマンに誑かされます。どん引きです。&lt;/p&gt;
&lt;p&gt;でも、続きが気になっちゃいます。&lt;/p&gt;</description></item><item><title>面白いほどよく分かる哲学・思想のすべて</title><link>https://chezo.uno/post/2008-08-11-mian-bai-ihodoyokufen-karuzhe-xue-si-xiang-nosubete/</link><pubDate>Mon, 11 Aug 2008 14:49:50 -0700</pubDate><guid>https://chezo.uno/post/2008-08-11-mian-bai-ihodoyokufen-karuzhe-xue-si-xiang-nosubete/</guid><description>&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4537255889/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
面白いほどよくわかる哲学・思想のすべて―人類が共有する「知」の絶対真理を読み解く (学校で教えない教科書)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
湯浅 赳男 / / 日本文芸社&lt;br&gt;
ISBN : 4537255889&lt;br&gt;
スコア選択: ※&lt;/p&gt;
&lt;p&gt;これは酷い。哲学思想じゃあないだろう。本書の構成としてはキーワードと重要人物の名前と、その学歴が主となっている。だからなんだと。&lt;/p&gt;
&lt;p&gt;まったく何も知らない人ならば、へーと思って読めるのかもしれないが、少しでも知っていると「で、この思想家が言いたかったのは何なの？」という具合に疑問に思ってしまう。後、まったく解説のない単語を「ちなみに」という言い回しで書くのはやめて欲しい。知ってる人はこんな本読まないでしょ。知らない人は意味が分からないでしょ。ロジカルに考えたら、無駄が多すぎる。しかも、どう考えても本質は書いてない。本文と全く同じことを図にしてスペースを稼ぐのも酷い。どこのB4の研究会の予稿第一稿だよ。&lt;/p&gt;
&lt;p&gt;筆者の意見なんかや経済の話を読むより、思想家の唱えていることの中身について知りたいんだから。比重おかしいでしょ。&lt;/p&gt;
&lt;p&gt;倫理の教科書と一緒に使う山川の単語集なんかの方がよっぽど役に立つ。&lt;/p&gt;</description></item><item><title>Ono Lisa best 2002-2006</title><link>https://chezo.uno/post/2008-08-01-ono-lisa-best-2002-2006/</link><pubDate>Fri, 01 Aug 2008 14:52:09 -0700</pubDate><guid>https://chezo.uno/post/2008-08-01-ono-lisa-best-2002-2006/</guid><description>&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B0015YEKBU/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
Ono Lisa best 2002-2006
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
小野リサ / / EMIミュージック・ジャパン&lt;br&gt;
スコア選択: ★★★★&lt;/p&gt;
&lt;p&gt;どこかで聞いたことある曲も、そうじゃない曲もいろいろつまってます。&lt;br&gt;
ぼーっと聞きたいときにいやされる感じです。&lt;/p&gt;
&lt;p&gt;素敵なCDです。でも、電車に乗りながら聞くと寝過ごすので注意（笑）&lt;/p&gt;</description></item><item><title>なるたる</title><link>https://chezo.uno/post/2008-07-30-narutaru/</link><pubDate>Wed, 30 Jul 2008 14:50:01 -0700</pubDate><guid>https://chezo.uno/post/2008-07-30-narutaru/</guid><description>&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4063141861/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
なるたる―骸なる星珠たる子 (1) (アフタヌーンKC (186))
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
鬼頭 莫宏 / / 講談社&lt;br&gt;
ISBN : 4063141861&lt;br&gt;
スコア選択: ※※※※※&lt;/p&gt;
&lt;p&gt;ハートフルボッコアニメ、と呼ばれた同名のアニメの原作。グロい。残酷。人は何故ここまで残酷なことが考えつくのだろうか。&lt;/p&gt;
&lt;p&gt;でも、その分味があって良い。メッセージというよりもガツンと目を覚まさせてくれる作品。&lt;/p&gt;
&lt;p&gt;でも、万人にはお勧めしない。ぼくらのよりハードルが高い。日乃レポートが出たときは、なんと！！！と驚きを隠せなかったが、よくよく考えてみると滅びた後にあそこまで復旧したのはありえないんだろうな。&lt;/p&gt;</description></item><item><title>合唱団お江戸コラリアーず第7回演奏会</title><link>https://chezo.uno/post/2008-07-20-he-chang-tuan-ojiang-hu-korariazudi-7hui-yan-zou-hui/</link><pubDate>Sun, 20 Jul 2008 14:52:15 -0700</pubDate><guid>https://chezo.uno/post/2008-07-20-he-chang-tuan-ojiang-hu-korariazudi-7hui-yan-zou-hui/</guid><description>&lt;p&gt;良い演奏会でした。男声合唱に対するイメージが良い意味で変化しました。&lt;br&gt;
細々と書いていくとあれなので、簡単に。&lt;/p&gt;
&lt;p&gt;1stのVictoriaは、最初のステージとは思えない立ち上がりでした。&lt;br&gt;
柔らかくステージを包み込む和音が広がります。&lt;/p&gt;
&lt;p&gt;2stの新しい歌は、初めて良い演奏にありつけた気がします。&lt;br&gt;
この曲は、若さが必要です。それと同時に演奏のレベルとクオリティも求められます。&lt;br&gt;
そう言う意味では、ちょうどいいバランスの上に成り立っていました。心がうきうき踊るステージでした。&lt;br&gt;
で、信長先生がステージにたって挨拶後は、アンコールインターミッションとしてトトロを歌っていました。この間TVでやっていたようで、良かったんじゃないですかね。一人ノリノリ過ぎてヘドバンしてた人が居たのが気になりました（笑）&lt;/p&gt;
&lt;p&gt;3st。Tormisがうれしすぎる。この暗い感じがたまんねぇっ！&lt;br&gt;
タダタケの鮪組からThe Drunken Sailorへの小芝居うまいことつないだなという感じでした。&lt;br&gt;
ただ、このステージ重すぎやしませんか（苦笑）&lt;/p&gt;
&lt;p&gt;4st。寺嶋陸也氏のピアノが上手すぎる。伴奏として合唱団を引き立てながらも、主張する。&lt;br&gt;
かっこいいねぇ。それまで伴奏がボケボケな感があったのが、急にシャープになったようでした。&lt;br&gt;
「生きる」は、素晴らしいの一言に尽きます。いや、いつも混声だと感情的に、ともすればヒステリックな高ぶりを聞いていたので、落ち着いたというか内面からわき起こる感情に心を打たれました。&lt;/p&gt;
&lt;p&gt;概して良い演奏会でした。また行きたい。&lt;/p&gt;
&lt;p&gt;演奏曲目の詳細は続きに書きます。&lt;/p&gt;
&lt;p&gt;【1st Stage】
聖週間の応唱集より　作曲：Tomas Luis de Victoria
　指揮：山脇卓也
・Iudas mercator pessimus（恥知らずの商人ユダは）
・Tenebrae factae sunt（暗闇となりぬ）
・O vos omnes（おお　汝らすべての人よ）&lt;/p&gt;
&lt;p&gt;【2nd Stage】
男声合唱とピアノのための「新しい歌」(2台ピアノ版) 作曲：信長貴富
　指揮：山脇卓也　ピアノ：斎木ユリ 須永真美&lt;/p&gt;
&lt;p&gt;～ intermission ～
「となりのトトロ」編曲：信長貴富&lt;/p&gt;
&lt;p&gt;【3rd Stage】海のア・ラ・カルト
・Gryning vid havet （海の夜明け）作曲：Hugo Alfven
・Muistse mere laulud （古代の海の歌）作曲：Veljo Tormis
・内なる怪魚シーラカンス 作曲：廣瀬量平
・鮪組 作曲：多田武彦
・THE DRUNKEN SAILOR(酔いどれ水夫)　編曲：Robert Sund
　指揮：山脇卓也　村田雅之　ピアノ：村田雅之&lt;/p&gt;
&lt;p&gt;【4th Stage】
二群の男声合唱とピアノのための「路標のうた」
作詩：木島始　作曲：三善晃
-ピアノのための無窮連祷による-「生きる」＊
作詩：谷川俊太郎　作曲：三善晃
　指揮：栗山文昭(客演)　ピアノ：寺嶋陸也
　＊作曲者の許諾のもと、女声版楽譜を使用して演奏いたします。&lt;/p&gt;</description></item><item><title>がばいばあちゃん 佐賀から広島へ めざせ甲子園</title><link>https://chezo.uno/post/2008-07-20-gabaibaatiyan-zuo-he-karaguang-dao-he-mezasejia-zi-yuan/</link><pubDate>Sun, 20 Jul 2008 14:50:06 -0700</pubDate><guid>https://chezo.uno/post/2008-07-20-gabaibaatiyan-zuo-he-karaguang-dao-he-mezasejia-zi-yuan/</guid><description>&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4087461963/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
がばいばあちゃん佐賀から広島へめざせ甲子園 (集英社文庫 し 45-1)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
島田 洋七 / / 集英社&lt;br&gt;
ISBN : 4087461963&lt;br&gt;
スコア選択: ※※※&lt;/p&gt;
&lt;p&gt;一番有名な、がばいばあちゃんを読んでから二冊目として手に取った。でも、どうやらこの本は先に一人で文庫化されていたらしい。そういうときの新規読者のためのわざとらしい説明がたっぷり含まれていた。&lt;/p&gt;
&lt;p&gt;こちとら、一冊読んでその中で生きるものがあったから、新しいことがあるのかな、と思って手に取ったこともあって、焼き直しの部分が3，4割程度あるのは残念だった。&lt;/p&gt;
&lt;p&gt;初めて読むのなら、ありかもしれない。要点となるエピソードも抜粋されているし、読みやすい。ただ、文章量が薄いのですぐ読めるのがうれしい人でなければ、あまりおすすめしない。&lt;/p&gt;
&lt;p&gt;さっとがばいばあちゃんのことを追いかけたい人向け。でも、一作目が一番エピソードに溢れていてよかったかなぁ。&lt;/p&gt;</description></item><item><title>EnsembleNow 第39回定期演奏会＠セシオン杉並</title><link>https://chezo.uno/post/2008-07-19-ensemblenow-di-39hui-ding-qi-yan-zou-hui-at-sesionshan-bing/</link><pubDate>Sat, 19 Jul 2008 14:52:20 -0700</pubDate><guid>https://chezo.uno/post/2008-07-19-ensemblenow-di-39hui-ding-qi-yan-zou-hui-at-sesionshan-bing/</guid><description>&lt;p&gt;Bustoの作品を聞きたいと思い行ってきました。&lt;br&gt;
といっても、ぼけーっとケーキを食べていたら少し遅れてしまいました(&lt;sup&gt;_&lt;/sup&gt;;&lt;/p&gt;
&lt;p&gt;曲目は
を参照してくださればと思います。&lt;br&gt;
Joseph fill Davidは懐かしかった。でも、全体的に内声がとけない感じだったので、&lt;br&gt;
あまりBustoには向いているとは思いませんでした。残念。&lt;br&gt;
自分がやったことがある曲だと、色々粗がわかるよね。&lt;br&gt;
後、宗教曲はそれなりに信仰のある人かそれに準ずる知識を持つ人がやらないと駄目かな、と思いました。&lt;br&gt;
なんというか、薄っぺらく感じてしまうんですよね。特に曲の変わった雰囲気で攻める変態なやつ（Jaakko MäntyjärviとかCayabyabとか）じゃない限りは、そこに存在する空気感みたいなのが必要になってくるんじゃないかと思うわけです。&lt;br&gt;
その源は、何か。世界観の根本は何かってのを考えてしまいました。&lt;/p&gt;
&lt;p&gt;ちなみに、Bustoに五柳五酒に……という時点で、予想していたのですが、やはり三善の方が会う団体でした。割とアバウトなんだけどスケール感で攻めるというかんじですね。&lt;br&gt;
久石譲のScarborough Fairの合唱編曲は楽しかったです。歌ってみたい。&lt;br&gt;
そして、Bob ChilcotのEvery time I feel the spiritも良かった。&lt;br&gt;
ノリの良い曲の方があう団体でした。&lt;/p&gt;</description></item><item><title>「残暑」鬼頭莫宏</title><link>https://chezo.uno/post/2008-07-19-can-shu-gui-tou-mo-hong/</link><pubDate>Sat, 19 Jul 2008 14:50:12 -0700</pubDate><guid>https://chezo.uno/post/2008-07-19-can-shu-gui-tou-mo-hong/</guid><description>&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4091885012/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
残暑―鬼頭莫宏短編集 (IKKI COMICS)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
鬼頭 莫宏 / / 小学館&lt;br&gt;
ISBN : 4091885012&lt;br&gt;
スコア選択: ※※※※&lt;/p&gt;
&lt;p&gt;なんて爽やかな作品なのだろう。鬼頭の作品とは思えない。でも、その中に何故かもの悲しさが存在する気がしてならない。&lt;br&gt;
氏独特の鬱展開を期待している人には物足りないかもしれないが、氏の独特な世界観が好きな人は良いのかもしれない。この先、この人が描く作品が気になってしまう。&lt;/p&gt;</description></item><item><title>西の魔女が死んだ</title><link>https://chezo.uno/post/2008-07-19-xi-nomo-nu-gasi-nda/</link><pubDate>Fri, 18 Jul 2008 20:07:00 -0700</pubDate><guid>https://chezo.uno/post/2008-07-19-xi-nomo-nu-gasi-nda/</guid><description>&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4101253323/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
西の魔女が死んだ (新潮文庫)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
梨木 香歩 / / 新潮社&lt;br&gt;
ISBN : 4101253323&lt;br&gt;
スコア選択: ※※&lt;/p&gt;
&lt;p&gt;「アイ・ノウ」おばあちゃんの人柄の良さが伝わってきます。のんびり読むのにはちょうど良い作品。地の文が主人公の女の子目線なので、そこまで激情にほだされないのが良いのかもしれません。&lt;br&gt;
ただ、その分感情移入もしづらく、色々な謎を残したまま終わってしまった感がぬぐえません。何で流行ってるんだろう。&lt;/p&gt;</description></item><item><title>Rockapella Channel</title><link>https://chezo.uno/post/2008-07-16-rockapella-channel/</link><pubDate>Wed, 16 Jul 2008 14:52:25 -0700</pubDate><guid>https://chezo.uno/post/2008-07-16-rockapella-channel/</guid><description>&lt;p&gt;
なるものがありました。&lt;br&gt;
この、プロモが素敵すぎます！&lt;/p&gt;
&lt;p&gt;今から楽しみやわぁー。まってろよ、Tokyo billboard！&lt;/p&gt;</description></item><item><title>クピドの悪戯 虹玉、おいしいコーヒーの入れ方 夢のあとさき</title><link>https://chezo.uno/post/2008-07-15-kupidonoe-xi-hong-yu-oisiikohinoru-refang-meng-noatosaki/</link><pubDate>Tue, 15 Jul 2008 14:50:23 -0700</pubDate><guid>https://chezo.uno/post/2008-07-15-kupidonoe-xi-hong-yu-oisiikohinoru-refang-meng-noatosaki/</guid><description>&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4087463036/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
おいしいコーヒーのいれ方 (10) 夢のあとさき (集英社文庫)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
村山 由佳 / / 集英社&lt;br&gt;
ISBN : 4087463036&lt;br&gt;
スコア選択: ※※※&lt;/p&gt;
&lt;p&gt;ついに、おいしいコーヒーシリーズの完結です。といっても、1stシーズンですが。中身はいつもながらの安心して読める内容となっています。刺激はそこまで強くないです。ただ、いつもながら男性視点の葛藤を女性の作者が描写できる不思議。自分の中にあるドロドロを湧き起こしたい人にはお勧めかもしれません。&lt;/p&gt;
&lt;p&gt;終わりにはあまり納得がいかないかもしれませんが、これは2ndシーズンへの布石でしょう。&lt;/p&gt;
&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4091532012/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
クピドの悪戯―虹玉 (1) (ヤングサンデーコミックス)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
北崎 拓 / / 小学館&lt;br&gt;
ISBN : 4091532012&lt;br&gt;
スコア選択: ※※※※※&lt;/p&gt;
&lt;p&gt;生々しい恋愛模様が良いですね。男の欲望とかむき出しで。でも、女の欲望も出ているのが新鮮です。特に、桐生麻美が良い味出してます。噛ませ犬っぽいのにそうでもない。ぼかぁ桐生麻美の方が好きです。こういう恵まれないヒロイン、好きなんだよなぁ。&lt;/p&gt;</description></item><item><title>狼と香辛料（1）</title><link>https://chezo.uno/post/2008-07-13-lang-toxiang-xin-liao-1/</link><pubDate>Sun, 13 Jul 2008 14:50:28 -0700</pubDate><guid>https://chezo.uno/post/2008-07-13-lang-toxiang-xin-liao-1/</guid><description>&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4840233020/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
狼と香辛料 (電撃文庫)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
支倉 凍砂 / / メディアワークス&lt;br&gt;
ISBN : 4840233020&lt;br&gt;
スコア選択: ※※※※&lt;/p&gt;
&lt;p&gt;色々なライトノベルを読んだ結果、自分の趣向に関して得た事実が二つ。&lt;/p&gt;
&lt;p&gt;・頭の悪い文章は読む気がしない。&lt;/p&gt;
&lt;p&gt;・妙にインテリぶって、非常用漢字や漢字にフリガナふりまくる文章は嫌だ。&lt;/p&gt;
&lt;p&gt;そう言う意味ではどちらにも属さず、それでいて話に引き込まれる作品でした。&lt;/p&gt;
&lt;p&gt;劇的な刺激はあまりありませんが、手順を踏んで一つずつ進んでいく感じが安心して読めます。世界観がしっかりしているんでしょうね。続きが気になる作品です。&lt;/p&gt;</description></item><item><title>Ris a la malta</title><link>https://chezo.uno/post/2008-07-10-ris-a-la-malta/</link><pubDate>Thu, 10 Jul 2008 14:52:31 -0700</pubDate><guid>https://chezo.uno/post/2008-07-10-ris-a-la-malta/</guid><description>&lt;p&gt;
に行ってきます。&lt;br&gt;
1ドリンク飲みながらってことは、結構狭めの小屋なんだろうなぁ。今からわくわくですよ。&lt;br&gt;
青木さんのプリチーさをもう一度見ねば！！&lt;/p&gt;
&lt;p&gt;
にも行きたいのですが、土曜日の1stライブの自由席は完売とな。。。&lt;br&gt;
むぅぅ、やりおるわぁ。&lt;/p&gt;
&lt;p&gt;BGM:The Real Group &amp;ldquo;Substitute For Life&amp;rdquo;&lt;/p&gt;</description></item><item><title>PRESS　START当選しました</title><link>https://chezo.uno/post/2008-07-09-press-startdang-xuan-simasita/</link><pubDate>Wed, 09 Jul 2008 14:52:36 -0700</pubDate><guid>https://chezo.uno/post/2008-07-09-press-startdang-xuan-simasita/</guid><description>&lt;p&gt;以前言っていた
に当選しました。
いやっほぅぅぅぅ！&lt;/p&gt;
&lt;p&gt;これで、オーチャードホールが堪能できるぜ！ゲーム音楽を生で聴くのは久々なので楽しみですわ。&lt;/p&gt;</description></item><item><title>The Real Group - Real Christmas, Commonly unique</title><link>https://chezo.uno/post/2008-07-07-the-real-group-real-christmas-commonly-unique/</link><pubDate>Mon, 07 Jul 2008 14:44:53 -0700</pubDate><guid>https://chezo.uno/post/2008-07-07-the-real-group-real-christmas-commonly-unique/</guid><description>&lt;p&gt;おいおい、書いていたら消えてたよ。&lt;br&gt;
というわけで、書き直しです。&lt;/p&gt;
&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B000NIVMRE/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
コモンリー・ユニーク[スペシャル・エディション]
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
ザ・リアル・グループ / / スパイス・オブ・ライフ&lt;br&gt;
スコア選択: ★★★★&lt;/p&gt;
&lt;p&gt;楽しいアカペラグループのCDです。&lt;br&gt;
聞いていて、うきうきするような曲がたくさん詰まっています。&lt;/p&gt;
&lt;p&gt;ハーモニーも楽しければ、ノリもいいのです。ライブいきたいわぁ&lt;br&gt;
Telepone Talkingが大好きです。&lt;/p&gt;
&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B000VZE0NW/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
リアル・クリスマス
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
ザ・リアル・グループ / / スパイス・オブ・ライフ&lt;br&gt;
スコア選択: ★★★★&lt;/p&gt;
&lt;p&gt;なじみ深いChristmas Songをアカペラアレンジしたものから、かの国の曲まで。あー、Jul, julってこんな曲だったんだね。のーんびりしたいときに聞くのが良いと思います。&lt;br&gt;
るどるふー、大好きだー&lt;/p&gt;</description></item><item><title>のだめカンタービレ18〜20</title><link>https://chezo.uno/post/2008-07-06-nodamekantabire18-20/</link><pubDate>Sat, 05 Jul 2008 18:07:01 -0700</pubDate><guid>https://chezo.uno/post/2008-07-06-nodamekantabire18-20/</guid><description>&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4063406482/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
のだめカンタービレ (18)(講談社コミックスキス)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
二ノ宮 知子 / / 講談社&lt;br&gt;
ISBN : 4063406482&lt;br&gt;
スコア選択: ※※※※※&lt;/p&gt;
&lt;p&gt;おもすれー。&lt;/p&gt;
&lt;p&gt;テルミン演奏するとか、すげーと思うよ。そして、フランクの立ち位置と気持ちの変化が、素朴にいいなぁと思います。&lt;/p&gt;
&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4063406733/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
のだめカンタービレ (19) (講談社コミックスKiss (673巻))
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
二ノ宮 知子 / / 講談社&lt;br&gt;
ISBN : 4063406733&lt;br&gt;
スコア選択: ※※※※※&lt;/p&gt;
&lt;p&gt;この巻から、各地のピンクっぷりが振りまかれるのですが、何故だろう。あんまり、いやらしくないのは。&lt;/p&gt;
&lt;p&gt;それぞれ目的を持っていて、それに向かって邁進しているのがいいんでしょうね。&lt;/p&gt;
&lt;p&gt;妄想の中で、裏軒にてはたらくキヨラは笑えましたけど（笑）&lt;br&gt;
&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4063406911/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
のだめカンタービレ #20 (20) (講談社コミックスキス)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
二ノ宮 知子 / / 講談社&lt;br&gt;
ISBN : 4063406911&lt;br&gt;
スコア選択: ※※※※※&lt;/p&gt;
&lt;p&gt;そして、最新刊。&lt;/p&gt;
&lt;p&gt;のだめを取り巻く環境が変わっていきます。いや、周りののだめに対する意識が明らかになっていくというところか。&lt;/p&gt;
&lt;p&gt;本人は自分の才能を疑いもしない、のだろうか、自分の実力に気づきもしないのだろうか。とかく周りとの溝を感じてしまうのだめですが、凡人からしてしまうとうらやましい悩みだとしか思わないんですよね。&lt;/p&gt;
&lt;p&gt;でも、物語の展開の仕方はさすがといったところ。次が気になります。&lt;/p&gt;</description></item><item><title>三毛猫ホームズの恐怖館</title><link>https://chezo.uno/post/2008-07-06-san-mao-mao-homuzunokong-bu-guan/</link><pubDate>Sat, 05 Jul 2008 18:07:00 -0700</pubDate><guid>https://chezo.uno/post/2008-07-06-san-mao-mao-homuzunokong-bu-guan/</guid><description>&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4041497876/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
三毛猫ホームズの恐怖館 (角川文庫)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
赤川 次郎 / / 角川書店&lt;br&gt;
ISBN : 4041497876&lt;br&gt;
スコア選択: ※※&lt;/p&gt;
&lt;p&gt;初めての赤川次郎。友人に読みやすいと勧められて読みました。&lt;br&gt;
読みやすいは読みやすいんだけど、印象に残らないというか、子供向けだなぁというのが印象でした。&lt;br&gt;
後、文章が理解しづらい。描写に対して頭をうんうんうなって考えるのはあまりしたくない人間なので、ちと話の流れに飛躍があり理解できない箇所がいっぱいありました。&lt;br&gt;
というか、最後のオチも唐突すぎて伏線たっぷりでスッキリしていない、というのが印象です。&lt;/p&gt;
&lt;p&gt;同じ次郎なら、浅田次郎の方が向いてるんだろうなぁ&lt;/p&gt;</description></item><item><title>Rajaton</title><link>https://chezo.uno/post/2008-07-05-rajaton/</link><pubDate>Sat, 05 Jul 2008 14:45:04 -0700</pubDate><guid>https://chezo.uno/post/2008-07-05-rajaton/</guid><description>&lt;p&gt;うひょ、こういう系統のアカペラはたまらんわぁ。&lt;br&gt;
というわけで、
という、フィンランドのアカペラグループの紹介です。&lt;br&gt;
フィンランドってケルトだっけ？とか小難しいことはさておいて、
でございます。&lt;br&gt;
これは、amazonに直行せねば。&lt;br&gt;
なんというか、民族的な和音がたまりません。確かに、メロディーの進行もケルティックなアーティストを彷彿とさせます。これは良い。&lt;/p&gt;
&lt;p&gt;紹介してるブログの方は韓国までThe Real Groupと一緒にRajatonがでるというアカペラ祭りに行かれるそうですが、非常にうらやましい限り。お盆休み長めに取りたいなぁ〜。&lt;/p&gt;</description></item><item><title>新・萌えるヘッドホン読本</title><link>https://chezo.uno/post/2008-06-25-xin-meng-eruhetudohondu-ben/</link><pubDate>Wed, 25 Jun 2008 14:45:09 -0700</pubDate><guid>https://chezo.uno/post/2008-06-25-xin-meng-eruhetudohondu-ben/</guid><description>&lt;p&gt;ついつい買ってしまいました。&lt;br&gt;
アマゾンギフト券があったので、0円で買ってしまいました。&lt;/p&gt;
&lt;p&gt;まだ、全然見てないんですけど、ヘッドホンインプレ本として買ったつもりです。詳しくはきっと後日。&lt;br&gt;
Webで見るヘッドホン娘の絵とか、結構いいなと思うものもあったので受け取ったときは期待していたのですが、表紙を見て違和感。&lt;br&gt;
中を開いて、、、&lt;/p&gt;
&lt;p&gt;趣味の合う絵がないかもしれない。&lt;/p&gt;
&lt;p&gt;というわけで、右半分のページだけ読もうかと思います。&lt;/p&gt;</description></item><item><title>ぼくらの〜alternative</title><link>https://chezo.uno/post/2008-06-22-bokurano-alternative/</link><pubDate>Sun, 22 Jun 2008 14:44:25 -0700</pubDate><guid>https://chezo.uno/post/2008-06-22-bokurano-alternative/</guid><description>&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4094510753/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
ぼくらの ~alternative~ 5 (ガガガ文庫 お 1-5)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
大樹 連司 / / 小学館&lt;br&gt;
ISBN : 4094510753&lt;br&gt;
スコア選択: ※※※※※&lt;/p&gt;
&lt;p&gt;ハートフルぼっこな作品を書かせたら天下一品の、鬼頭莫宏の「ぼくらの」をノベライズした作品。その最終巻。&lt;br&gt;
先に言っておくと、鬱漫画のノベライズです。取り扱い注意。&lt;br&gt;
想像の斜め上を行ってくれる展開で、楽しめた。満足。&lt;br&gt;
そして、最後の原作者との対談で「ノベライズに当たって、原作よりも酷い話を目指した」という、作者の言葉に納得。ですよねー。&lt;/p&gt;
&lt;p&gt;その小説よりもえぐいという漫画版の最終回にも期待大。&lt;/p&gt;</description></item><item><title>鬼才現る</title><link>https://chezo.uno/post/2008-06-15-gui-cai-xian-ru/</link><pubDate>Sun, 15 Jun 2008 14:44:30 -0700</pubDate><guid>https://chezo.uno/post/2008-06-15-gui-cai-xian-ru/</guid><description>&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/4087474763/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
エンジェル (集英社文庫)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
石田 衣良 / / 集英社&lt;br&gt;
ISBN : 4087474763&lt;br&gt;
スコア選択: ※※※※※&lt;/p&gt;
&lt;p&gt;日本人にしか書けないんじゃないか、と思わせる設定。&lt;/p&gt;
&lt;p&gt;主人公は、幽霊。でも、現実を「生きている」。その「生」の喜びと死の理由を探していく。&lt;/p&gt;
&lt;p&gt;読み終わった後に、強烈なショックを受ける本。そういう筋なのか。悲しみというより驚きと言うより、衝撃。&lt;/p&gt;</description></item><item><title>お金の勉強</title><link>https://chezo.uno/post/2008-06-15-ojin-nomian-qiang/</link><pubDate>Sat, 14 Jun 2008 22:06:00 -0700</pubDate><guid>https://chezo.uno/post/2008-06-15-ojin-nomian-qiang/</guid><description>&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/433403425X/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
お金は銀行に預けるな 金融リテラシーの基本と実践 (光文社新書)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
勝間 和代 / / 光文社&lt;br&gt;
ISBN : 433403425X&lt;br&gt;
スコア選択: ※※※※&lt;/p&gt;
&lt;p&gt;金融に関する入門書の入門書として買いました。&lt;/p&gt;
&lt;p&gt;本当に入り口の所ばかりみたいですが、比較的読みやすくわかりやすく書いてあります。&lt;/p&gt;
&lt;p&gt;ただ、筆者の主張というか傾向が含まれているので、もう何冊か読んでみないといけないかなと思います。&lt;/p&gt;</description></item><item><title>ついにiPhone登場</title><link>https://chezo.uno/post/2008-06-09-tuiniiphonedeng-chang/</link><pubDate>Mon, 09 Jun 2008 14:46:02 -0700</pubDate><guid>https://chezo.uno/post/2008-06-09-tuiniiphonedeng-chang/</guid><description>&lt;p&gt;
のページが素敵なことになっています。&lt;br&gt;
なんか、欲しくはないとは思いつつも周りが皆欲しい欲しいと言っていると、流されそうになる自分がいます（笑）&lt;br&gt;
触るだけ触ってみようかなぁ。2万円だったら、まぁOKですよね。&lt;/p&gt;</description></item><item><title>二度寝前</title><link>https://chezo.uno/post/2008-06-03-er-du-qin-qian/</link><pubDate>Tue, 03 Jun 2008 14:45:20 -0700</pubDate><guid>https://chezo.uno/post/2008-06-03-er-du-qin-qian/</guid><description>&lt;p&gt;9時前に寝てしまい、気が付けば11時。&lt;br&gt;
でも、朝の4時かと思うくらい長い夢を見ていた気がする。苦しい夢だった。&lt;/p&gt;
&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B000A0H5CG/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
yours
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
溝口肇 / / バップ&lt;br&gt;
スコア選択: ★★★★★&lt;/p&gt;
&lt;p&gt;ドラマやアニメ、Jazzなど様々なアレンジをこなすチェリスト。結構菅野よう子と仕事してることも多いようだ。&lt;/p&gt;
&lt;p&gt;そんな氏の、ポップスアレンジのCD。Mr.Lonlyなどどこかで聞いたことのある曲・アレンジがつまっている。&lt;/p&gt;
&lt;p&gt;のんびーりしたいときにはお勧め。&lt;/p&gt;
&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/B0000DG01K/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
The Best of Barber
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
/ Telarc&lt;br&gt;
スコア選択: ★★★★&lt;/p&gt;
&lt;p&gt;アメリカの作曲家、Barberの「弦楽のためのアダージョ」を中心に選曲されたCD。&lt;/p&gt;
&lt;p&gt;というか、本当に聞きたかったのは上記の曲に詞を当てたAgnus Deiであった。&lt;/p&gt;
&lt;p&gt;お目当ての二曲は満足のいくものであった。ただ、弦楽のためのアダージョは解釈が違うとここまで違うのか、ってほどテンポが速い。もっとねっとりしてる方が好きなのになぁ。&lt;/p&gt;
&lt;p&gt;合唱は、Robert shaw festival singersということでどうかなと思っていたけれど、意外ときっちりと歌われていて満足です。&lt;/p&gt;</description></item><item><title>高屋奈月</title><link>https://chezo.uno/post/2008-06-03-gao-wu-nai-yue/</link><pubDate>Tue, 03 Jun 2008 14:44:42 -0700</pubDate><guid>https://chezo.uno/post/2008-06-03-gao-wu-nai-yue/</guid><description>&lt;p&gt;胃が凄い荒れ狂っているのがわかります。&lt;br&gt;
紹興酒まずかったorz&lt;/p&gt;
&lt;p&gt;&lt;div class="border-2 rounded-lg amazon-widget"&gt;
&lt;a target="_blank" href="https://www.amazon.co.jp/gp/product/459218601X/?tag=chezou-22"&gt;&lt;/a&gt;
&lt;div class="amazon-widget-img"&gt;
&lt;img src="https://chezo.uno/media/no_image_square.webp" /&gt;
&lt;/div&gt;
&lt;div class="amazon-widget-info"&gt;
&lt;span class="amazon-widget-title"&gt;
星は歌う 1 (1) (花とゆめCOMICS)
&lt;/span&gt;
&lt;span class="amazon-widget-via"&gt;
&lt;img src="https://www.amazon.co.jp/favicon.ico" /&gt;
amazon.co.jp
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
高屋 奈月 / / 白泉社&lt;br&gt;
ISBN : 459218601X&lt;br&gt;
スコア選択: ※※※&lt;/p&gt;
&lt;p&gt;高屋奈月の新しいシリーズ。&lt;/p&gt;
&lt;p&gt;うむ、フルバと同じテイスト。というかほぼ同じ臭いが。フルバ好きな人ならOK.ダメならやめとけって感じです。&lt;br&gt;
なんというか、相変わらず陰がある作品だなぁと思います。&lt;/p&gt;</description></item><item><title>なんという努力の人</title><link>https://chezo.uno/post/2008-06-01-nantoiunu-li-noren/</link><pubDate>Sun, 01 Jun 2008 14:45:25 -0700</pubDate><guid>https://chezo.uno/post/2008-06-01-nantoiunu-li-noren/</guid><description>&lt;p&gt;
&lt;br&gt;
SUGEEEEEEEEEEEE!&lt;/p&gt;</description></item><item><title>なんというお茶目さん☆</title><link>https://chezo.uno/post/2008-05-21-nantoiuocha-mu-san/</link><pubDate>Wed, 21 May 2008 01:05:00 -0700</pubDate><guid>https://chezo.uno/post/2008-05-21-nantoiuocha-mu-san/</guid><description>&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;Mantyjarviさんは、お茶目らしい。&lt;/p&gt;
&lt;p&gt;Four Shakespeare Songs (1984)&lt;br&gt;
More Shakespeare Songs (1997)&lt;br&gt;
No More Shakespeare Songs? (2000)&lt;/p&gt;
&lt;p&gt;この次は、Even More Shakespeare Songsを書きたいとか言っているとか。&lt;br&gt;
馬鹿だ(笑)&lt;/p&gt;</description></item><item><title>「すべてがFになる」読了</title><link>https://chezo.uno/post/2008-05-17-subetegafninaru-du-liao/</link><pubDate>Sat, 17 May 2008 00:05:00 -0700</pubDate><guid>https://chezo.uno/post/2008-05-17-subetegafninaru-du-liao/</guid><description>&lt;p&gt;森博嗣の「すべてがFになる」を読了した。&lt;br&gt;
タイトルの意味も最初はさっぱり分からなかったのだが、読み終わる頃にはなっとく。&lt;br&gt;
なるほどね、と。&lt;/p&gt;
&lt;p&gt;僕にミステリーの食わず嫌いを無くし入門となってくれたのが、東野圭吾の「ガリレオ」シリーズならば、更に深くつっこむ機会を与えてくれたのが、この森博嗣である。&lt;br&gt;
元々、学生の頃に自分の大学の先生がミステリーを出している、というので話題になっていたのだが、ミステリーなんて頭使って推理するのがめんどくさい、と思い避けてきていた。&lt;/p&gt;
&lt;p&gt;しかし、ガリレオにしろ森博嗣にしろそうなのだが、こんなん想像付かないよというトリックを用意してくる。こちらとしては、それがどういうものなのかを考えることはするのだが、それよりも何が出てくるのかワクワクしてしまう。&lt;/p&gt;
&lt;p&gt;シリーズ1冊目なのだが、続きが気になるところである。&lt;/p&gt;</description></item><item><title>そういえばここは物欲ブログだった</title><link>https://chezo.uno/post/2008-01-18-souiebakokohawu-yu-burogudatuta/</link><pubDate>Fri, 18 Jan 2008 13:46:07 -0800</pubDate><guid>https://chezo.uno/post/2008-01-18-souiebakokohawu-yu-burogudatuta/</guid><description>&lt;p&gt;というわけで久々にメモ&lt;/p&gt;
&lt;p&gt;・ARIA全巻&lt;br&gt;
・Creative EP-630&lt;br&gt;
なんでも非常にコストパフォーマンスの良いカナル型ヘッドホンだとか&lt;br&gt;
・安定したういるすたいさくそふと&lt;br&gt;
Norton360がクソすぎて使えない．VBもいまいちくさいし……&lt;/p&gt;</description></item><item><title>ワイド液晶と液晶テレビ</title><link>https://chezo.uno/post/2007-10-27-waidoye-jing-toye-jing-terebi/</link><pubDate>Sat, 27 Oct 2007 14:46:13 -0700</pubDate><guid>https://chezo.uno/post/2007-10-27-waidoye-jing-toye-jing-terebi/</guid><description>&lt;p&gt;20インチワイド液晶が3万円で手にはいると聞いて、沸々とほしくなってきた次第です。&lt;br&gt;
20インチワイド液晶テレビが6万円で手に入りそうなのを見て、少しときめくわけですよ。&lt;br&gt;
ビクターってブランド代があまりないので、お安く買えるのが良いですよね。&lt;br&gt;
他社より1万円近く安いのがとても魅力的。&lt;/p&gt;
&lt;p&gt;ただ、困るのが来年寮に入ると会社が選べなくなりそうなこと。&lt;br&gt;
決断は焦らず急がねば。&lt;/p&gt;</description></item><item><title>「みんなの合唱」</title><link>https://chezo.uno/post/2007-07-02-minnanohe-chang/</link><pubDate>Mon, 02 Jul 2007 14:45:36 -0700</pubDate><guid>https://chezo.uno/post/2007-07-02-minnanohe-chang/</guid><description>&lt;p&gt;
なんつーサービスがあるようです．&lt;/p&gt;
&lt;p&gt;見てみたら，着うたフルで全国大会の曲とかをDLできるようです．すげー．&lt;br&gt;
でも，この料金設定ぼったくりだよな……&lt;/p&gt;</description></item><item><title>ZARDのVocalが亡くなられたなんて……</title><link>https://chezo.uno/post/2007-05-29-zardnovocalgawang-kunararetanante-dot-dot-dot/</link><pubDate>Mon, 28 May 2007 21:05:00 -0700</pubDate><guid>https://chezo.uno/post/2007-05-29-zardnovocalgawang-kunararetanante-dot-dot-dot/</guid><description>&lt;p&gt;高校時代には、良く聞いたものですが……&lt;br&gt;
ご冥福をお祈りいたします。&lt;/p&gt;
&lt;p&gt;現在、ほしいものをメモしていきます。&lt;br&gt;
久しぶりに物欲にまみれることになる気がします。&lt;/p&gt;
&lt;p&gt;・オーディオケーブル(ミニピン)1m&lt;br&gt;
ダイソーで二股のステレオケーブルを分けるものを買ったので、&lt;br&gt;
ふるーいミニコンポにPCの音とiPodを差し替えることなく聞けるようにしたいです。&lt;br&gt;
ただ、大学生協などで買おうとすると700円くらいするので、&lt;br&gt;
くらいの値段を狙いたいところです。&lt;/p&gt;
&lt;p&gt;・FMトランスミッター&lt;br&gt;
秋葉原に先日行ったときに、980円で売っていたのですが&lt;br&gt;
あまりに胡散臭くて買うのをやめてしまいました。&lt;br&gt;
今となっては、あの値段なら人柱にはいいのかも、と思い直して後悔中。&lt;br&gt;
PCやiPodなどにつないで、お風呂ラジオに電波を飛ばしてみたいと思っています。&lt;/p&gt;
&lt;p&gt;ただ、実際にはどれがまともなのかがわからないのが難点です。&lt;br&gt;
酷い酷いとは聞くのですが……。&lt;br&gt;
とりあえず、ACでも使えるのだとよいのかもしれないなぁと。&lt;/p&gt;
&lt;p&gt;・学習リモコン&lt;br&gt;
というか、リモコソでいいからほしいです。&lt;br&gt;
999円なら買ってみてもよいのかな、と。&lt;br&gt;
TV,DVDプレーヤー、ミニコンポ、5.1chのスピーカー、エアコン&lt;br&gt;
これだけまとめられるとうれしいなぁと。&lt;/p&gt;
&lt;p&gt;小物ばかりといえば小物ばかりかもしれないですが、&lt;br&gt;
きちんと狙わないと高くかかってしまうモノばかりなので、近々大須へ行って狙ってこようかと。&lt;/p&gt;
&lt;p&gt;&amp;mdash;-070529追記&lt;br&gt;
・ケーブルまとめるやつ&lt;br&gt;
前使っていた
がどこかへ行ってしまったので、&lt;br&gt;
これをもう一回買い直すか、
に切り替えるかが悩みどころ。&lt;/p&gt;
&lt;p&gt;・iPod用FMチューナー&lt;br&gt;
なんとなくFMが聞けると幸せかなぁと思っているだけです。&lt;br&gt;
ちょっとお高いんですよね。&lt;/p&gt;</description></item><item><title>USBで聞けるFM/AMラジオ</title><link>https://chezo.uno/post/2007-05-10-usbdewen-kerufm-slash-amrazio/</link><pubDate>Thu, 10 May 2007 03:05:00 -0700</pubDate><guid>https://chezo.uno/post/2007-05-10-usbdewen-kerufm-slash-amrazio/</guid><description>&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;こんなものついに登場しました。&lt;br&gt;
価格は手ごろな6980円！&lt;/p&gt;
&lt;p&gt;うりきれじゃなかったら、ぽちってたなぁー&lt;/p&gt;
&lt;p&gt;これがあれば、ラジオと連動させて、とかやらなくてもすみそうだし。&lt;/p&gt;</description></item><item><title>ナビナビ</title><link>https://chezo.uno/post/2006-08-26-nabinabi/</link><pubDate>Sat, 26 Aug 2006 14:46:29 -0700</pubDate><guid>https://chezo.uno/post/2006-08-26-nabinabi/</guid><description>&lt;p&gt;ついに、うちの車にもナビがつきました。&lt;br&gt;
カロッツェリアのCYBER NAVIというやつなのですが、&lt;br&gt;
HDDを積んでいるのでCDを入れたら勝手に録音する優れものです。&lt;br&gt;
新しいおもちゃが入った子供状態です。うれしーのよね&lt;/p&gt;</description></item><item><title>夏なので</title><link>https://chezo.uno/post/2006-07-28-xia-nanode/</link><pubDate>Fri, 28 Jul 2006 14:46:34 -0700</pubDate><guid>https://chezo.uno/post/2006-07-28-xia-nanode/</guid><description>&lt;p&gt;ノートをたちあげっぱにしておくと，熱で手が低温やけどしそうな今日この頃，いかがお過ごしでしょうか．&lt;/p&gt;
&lt;p&gt;とりあえず，なんとか色々ありましたが，少しはマシな方向？に向かってきているようです．&lt;br&gt;
ここにきて，研究テーマを変えて1からやり直しとかは大変ですが．．．&lt;/p&gt;
&lt;p&gt;さてはて，この前テレビを見ていたら，&lt;br&gt;
素敵なミュージシャンが出ていたのでまたCDが欲しくなってきましたよ．&lt;br&gt;
という人たちなのですが，&lt;br&gt;
ギターのデュオだそうです．&lt;br&gt;
軽快なアコギでじゃかじゃか，でもメロディック，みたいな感じが良いです．&lt;br&gt;
みたいな感じかな？&lt;br&gt;
インストゥールメンタルがちょっぴり好きなおいちゃんのツボですわ．&lt;/p&gt;
&lt;p&gt;DEPAPEPEは，CDの視聴ができるのですが，元気がもらえそうな感じです．&lt;br&gt;
CDかりたーい！&lt;br&gt;
お金があれば買いたいですが，今はW-ZERO3[es]が来るのを控えているので節約モードです．&lt;/p&gt;</description></item><item><title>DS de TV</title><link>https://chezo.uno/post/2006-05-19-ds-de-tv/</link><pubDate>Fri, 19 May 2006 14:46:40 -0700</pubDate><guid>https://chezo.uno/post/2006-05-19-ds-de-tv/</guid><description>&lt;p&gt;
なるものがでてるようです。&lt;br&gt;
しっかし、このサイズにこの重さはどうなんだろうなー。&lt;br&gt;
まぁ、以前よりTVはみるようになったとはいえ、そこまで必要ないかなぁ。。。&lt;/p&gt;
&lt;p&gt;−−−&lt;br&gt;
そういえば、某SNSで高校時代の先生が参加していることが判明したのですが、何がすごいって、 &lt;strong&gt;息子から招待されてたんですよね&lt;/strong&gt; 。&lt;br&gt;
すごい時代になったもんだわぁー。&lt;/p&gt;
&lt;p&gt;国語の時間丸々つぶして自分の高校生の時の大恋愛話をご教授していただいたのが昨日のように思い出されます（笑）&lt;/p&gt;</description></item><item><title>DSLite!</title><link>https://chezo.uno/post/2006-05-01-dslite/</link><pubDate>Mon, 01 May 2006 14:46:45 -0700</pubDate><guid>https://chezo.uno/post/2006-05-01-dslite/</guid><description>&lt;p&gt;ついに念願のNintendoDS Liteを購入しました！&lt;br&gt;
先週の金曜日に研究室の秘書さんがおもむろに&lt;/p&gt;
&lt;p&gt;「chezouくん、DS買った？栄のポケモンセンターに入荷したらしいんだけど」とか言われるわけですよ。&lt;br&gt;
もう、即購入ですわ。全色ある中から選べるなんて！&lt;br&gt;
とりあえず、紺色なやつを買っていただきました。&lt;br&gt;
ビバ、秘書さんのご友人(笑)&lt;/p&gt;
&lt;p&gt;ただ、現在どうぶつの森を買うまでDS用ソフトがありません。&lt;br&gt;
研究室の先輩には「タイの学会に行くから、指さしなんとか買ってくれ」とか言われましたが……。&lt;br&gt;
丁重にお断りしましたｗ。&lt;/p&gt;
&lt;p&gt;その間僕使えないですし。&lt;/p&gt;
&lt;p&gt;というわけで、今からGEOに行ってきまーす&lt;/p&gt;</description></item><item><title>うひー</title><link>https://chezo.uno/post/2006-03-17-uhi/</link><pubDate>Fri, 17 Mar 2006 03:03:00 -0800</pubDate><guid>https://chezo.uno/post/2006-03-17-uhi/</guid><description>&lt;p&gt;全く持って卒論の筆が進みません。卒論締めは月曜午後5時。&lt;br&gt;
間に合うのか俺。&lt;/p&gt;
&lt;p&gt;というわけで、某A先輩のブログが熱いことになってるのを尻目に、卒論を書くわけですが、&lt;br&gt;
秋葉原土産に買ったものを色々試したくて仕方がない状況でして、手につかないわけです。&lt;br&gt;
なんてたって、ケースを買ってきたり、キャスター付きのバックを買ってきたりと非常に大荷物でした。&lt;br&gt;
なので、地下鉄では「ザ・迷惑」を実行しておりました。一緒に乗られた方々、すいませんでした。。&lt;/p&gt;
&lt;p&gt;今回、秋葉原での戦利品ですが、&lt;/p&gt;
&lt;p&gt;・キャスター付きバック　￥６９８0&lt;br&gt;
・PCケース　￥1980&lt;br&gt;
・巻き取り式USBケーブル　￥600&lt;br&gt;
・巻き取り式iPodケーブル　￥600&lt;br&gt;
・外付けHDD160GB(弟への土産)　￥7980&lt;br&gt;
・
　￥4800&lt;br&gt;
・IDE to USBケーブル　￥1280&lt;/p&gt;
&lt;p&gt;となっております。ケースは本当に馬鹿だったorz&lt;br&gt;
ちなみに、今回最も当たりだったのは、IDE to USBケーブル。&lt;br&gt;
これが非常に便利でいろいろなHDDを漁りだしてはころころ変えて遊んでいました。&lt;br&gt;
昔使っていて壊れてしまったノートのHDDを取り出したら、ウィルスまみれだったのが笑える話。&lt;/p&gt;
&lt;p&gt;本当はニンテンドーDSLiteを見つけたら買おうと思っていたのですが、&lt;br&gt;
なんと、定価の二倍近くの￥32000もしやがったのでパスしました。&lt;/p&gt;
&lt;p&gt;と、思っていたら先ほど研究室の秘書さんから電話がかかってきて「DSならあるけどLiteがほしいんだよね？」と報告をいただきました。&lt;br&gt;
散々、「Liteの方が断然良いよー」とおっしゃっていたのはあなたではありませんか。&lt;br&gt;
というわけで、じっくりLite待ちです。&lt;/p&gt;</description></item><item><title>ついにｷﾀ━━━━━━(ﾟ∀ﾟ)━━━━━━ !!!!!</title><link>https://chezo.uno/post/2005-10-07-tuinikita/</link><pubDate>Fri, 07 Oct 2005 14:46:55 -0700</pubDate><guid>https://chezo.uno/post/2005-10-07-tuinikita/</guid><description>&lt;p&gt;○
&lt;/p&gt;
&lt;p&gt;長年欲しかったものがついに発売されます。&lt;br&gt;
ようやく、これでPCでラジオとりほうだいです。結構NHK-FMをとりたいと思うときはよくあるのですが、なかなかWAVに起こすのは面倒なのででMDに録音していました。&lt;br&gt;
これがあればまさにMDいらず。&lt;/p&gt;
&lt;p&gt;しかしネックはおそらく受信状況だろうなぁ。。人柱いないかなぁ&lt;/p&gt;</description></item><item><title>す、すげー一品ですよ</title><link>https://chezo.uno/post/2005-10-03-su-suge-pin-desuyo/</link><pubDate>Mon, 03 Oct 2005 14:47:01 -0700</pubDate><guid>https://chezo.uno/post/2005-10-03-su-suge-pin-desuyo/</guid><description>&lt;p&gt;あの一部では有名なほぼ日刊イトイ新聞が、
なるものを出すらしいです。&lt;/p&gt;
&lt;p&gt;正直、この発想には参った。毎月のカレンダーが紙なのにホワイトボード使用。&lt;br&gt;
これは、サークル室に是非置いておきたい。でも、たぶん喜ぶのはE氏に違いない。&lt;br&gt;
現代美術合戦になること請け合いだ。&lt;/p&gt;</description></item><item><title>WILLCOM新機種ｷﾀ━━━━━━(ﾟ∀ﾟ)━━━━━━ !!!!!</title><link>https://chezo.uno/post/2005-09-27-willcomxin-ji-zhong-kita/</link><pubDate>Tue, 27 Sep 2005 14:47:06 -0700</pubDate><guid>https://chezo.uno/post/2005-09-27-willcomxin-ji-zhong-kita/</guid><description>&lt;p&gt;というわけで、
が出てきて正直びっくりです。&lt;br&gt;
miniSDからJavaからFlashまで。PDFをPHSで読む必要はあるのでしょうか？でも、論文が読めたら便利だな、とは思いますが。&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;機種変は高いんだろうなぁ……&lt;/p&gt;</description></item><item><title>高田三郎行ってきました。</title><link>https://chezo.uno/post/2005-09-18-gao-tian-san-lang-xing-tutekimasita/</link><pubDate>Sun, 18 Sep 2005 14:45:41 -0700</pubDate><guid>https://chezo.uno/post/2005-09-18-gao-tian-san-lang-xing-tutekimasita/</guid><description>&lt;p&gt;今日は、某高田三郎の演奏会に行ってきました。&lt;/p&gt;
&lt;p&gt;豊中混声と大久保混声が一緒に聴けるとはとても素敵なチャンスだとばかりにるんるんでいきましたが、 &lt;strong&gt;生まれて初めて&lt;/strong&gt; 600人くらいの合唱団をはじめてみました。&lt;br&gt;
ええ、それはもうきもかったですとも。だって、芸文のコンサートホールに、オケを乗せてさらに4団くらい女声を乗せて、さらに後ろの客席に余った人々を乗せていましたから。&lt;br&gt;
肝心の歌は……、力押し。。。パイプオルガンはおろか、オケまで負けていたのが驚きでした。しかも、何を言っているのかさっぱりわからない。和音も何もあったもんじゃあございません。&lt;br&gt;
やっぱり、合唱団は70人くらいが限界だな、と相方と喋っていました。&lt;br&gt;
東海メールの内なる遠さは、曲が良かったためそこそこ楽しめました。男声だと暴力的に高音が出されないから安心だわぁ。あと、男声合同曲で典礼聖歌を歌っていたときの、テナーソロのおじいちゃんが感動でした。あの年でコンサートホールに栄えるソロってのは正直かっこよかったです。&lt;/p&gt;
&lt;p&gt;で、豊中混声はやっぱりうめーなぁ、と思いながら堪能していました。大久保混声もなかなか濃厚なつくりで良かったのですが、豊中のすがすがしいハーモニーは演奏会で一二を争う清涼剤になりました。歌としては大久保混声の方が好みですが。&lt;br&gt;
辻さんの髪の毛は赤が落ちたような茶色でした（ぇ&lt;/p&gt;
&lt;p&gt;そんな素敵な演奏会ですが、実は今日の演奏会でオーボエやってたのが高校の同級生でびっくり。まさか、こんなところでつながるとは思いもしませんでした。ちなみに、オケのほうはなかなかお上手でした。練習とか大変なんだろうなぁとか思いながら聞いていましたが、とりあえず、統率された弦が心地よかったです。某M音大のメサイアなんかとはわけがちがいました。&lt;br&gt;
でも、3時に開演で7時過ぎに終わるってのはちょっと大変だったかなぁ、とか。&lt;/p&gt;
&lt;p&gt;出演された、なみぃ師はお疲れ様でした。&lt;br&gt;
色々大変だったとは思いますが、楽しめるところも色々あったので良かったです。&lt;/p&gt;</description></item><item><title>ノートの改造</title><link>https://chezo.uno/post/2005-09-09-notonogai-zao/</link><pubDate>Fri, 09 Sep 2005 14:47:11 -0700</pubDate><guid>https://chezo.uno/post/2005-09-09-notonogai-zao/</guid><description>&lt;p&gt;今使っているノート（VAIO PCG-SRX 3E/BD)のバッテリがへたってきました。&lt;br&gt;
充電してももう1分ももちやしません。&lt;br&gt;
ここで、バッテリを買おうとしたんですが、毎度のことながら純正バッテリは高杉なわけです。そこで、純正ではなく噂のROWAのを買おうとかんがえているんですが、なかなか勇気がでません。&lt;/p&gt;
&lt;p&gt;バッテリを買えるとなると、HDDやらメモリも増やしたくなってくるのが人情ってもんでして、こうなるともう新しいマシンが欲しくなるという罠。大変だー&lt;/p&gt;
&lt;p&gt;バイトで稼いだ3万5千が飛んでいく日も近い。&lt;/p&gt;</description></item><item><title>へっどほん！へっどほん！</title><link>https://chezo.uno/post/2005-08-24-hetudohon-hetudohon/</link><pubDate>Wed, 24 Aug 2005 14:47:16 -0700</pubDate><guid>https://chezo.uno/post/2005-08-24-hetudohon-hetudohon/</guid><description>&lt;p&gt;いや、厳密に言うとヘッドホンではないのかもしれません。カナル型イヤホンのER-6iです。&lt;br&gt;
てか、色々ネットで調べてる内にこれしかない、という状況にまで来てしまいました。&lt;br&gt;
しかし、研究室の同期曰く、「自分で店に行って聞き比べた方が良いよ」とのこと。確かにその通りだと思うので、明日台風が来なかったら大須に行ってみようと思います。&lt;br&gt;
是非とも合宿までには入手したいところ。&lt;/p&gt;</description></item><item><title>男声合唱</title><link>https://chezo.uno/post/2005-08-21-nan-sheng-he-chang/</link><pubDate>Sun, 21 Aug 2005 14:45:46 -0700</pubDate><guid>https://chezo.uno/post/2005-08-21-nan-sheng-he-chang/</guid><description>&lt;p&gt;最近、無性に男声合唱がやりたくなってきました。&lt;br&gt;
新年会とかに向けて今から準備すれば曲いっぱいやれないかなぁ……。&lt;br&gt;
男声じゃなくても良いから、一度県のアンコンにでておきたいなぁ、とも思ったり。&lt;/p&gt;
&lt;p&gt;男声でやるなら&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;・カウボーイポップ（信長）&lt;br&gt;
・祝福（木下）&lt;br&gt;
・じょんがら節（松下）&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;ここら辺がいいなぁ。二個目は、ちゃんと音楽にすると美しいんですよ。ええ。&lt;br&gt;
誰か一緒にやりませんか？（ってここは見てないかorz)&lt;/p&gt;</description></item><item><title>まじめな？電波系Songs</title><link>https://chezo.uno/post/2005-08-17-mazimena-dian-bo-xi-songs/</link><pubDate>Wed, 17 Aug 2005 02:08:00 -0700</pubDate><guid>https://chezo.uno/post/2005-08-17-mazimena-dian-bo-xi-songs/</guid><description>&lt;p&gt;
らしいですよ。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;**_素数は夢を見ています&lt;/p&gt;
&lt;p&gt;明日の夢を歌います。_**&lt;/p&gt;
&lt;p&gt;　加藤先生が言うには素数が見る夢とは、&lt;br&gt;
「宇宙が滅びそうになったとき素数さんたちが救ってくれる」&lt;br&gt;
その夢を見ているとのことだそうですが。&lt;br&gt;
　実際にはこれは類体論の夢を見ていると解釈したほうが妥当でしょう。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;どうしたらそんな解釈に至れるんでしょうか……。&lt;/p&gt;
&lt;p&gt;もう一つ、
はすでに出尽くした有名どころですが、分かる人には分かるすごさ。&lt;/p&gt;
&lt;p&gt;普通は、&lt;br&gt;
&lt;strong&gt;三善晃×宗左近＝縄文連祷などの縄文シリーズ&lt;/strong&gt;&lt;br&gt;
という連想だと思うんですが、たぶんかけ算じゃないのかもしれません。&lt;br&gt;
＊とかで
をしているのかもしれません。&lt;/p&gt;
&lt;p&gt;……んなわけないか。&lt;/p&gt;</description></item><item><title>Webカメラ</title><link>https://chezo.uno/post/2005-08-06-webkamera/</link><pubDate>Sat, 06 Aug 2005 03:08:00 -0700</pubDate><guid>https://chezo.uno/post/2005-08-06-webkamera/</guid><description>&lt;p&gt;最近、MSNやらYahooやらSkypeやらを駆使して、あの手この手でボイスチャットやお絵かきチャットしながら友達と勉強をしていたわけですが、&lt;br&gt;
そうなると、無性にほしくなるのが
。&lt;/p&gt;
&lt;p&gt;TSUKUMOのネットショップで10kで売ってたんですよね。やってみたいー&lt;/p&gt;</description></item><item><title>うらやましかー</title><link>https://chezo.uno/post/2005-07-17-urayamasika/</link><pubDate>Sat, 16 Jul 2005 20:07:00 -0700</pubDate><guid>https://chezo.uno/post/2005-07-17-urayamasika/</guid><description>&lt;p&gt;昨日は家で勉強をしようとしていたわけですが、行きたかった演奏会があったわけで。&lt;br&gt;
マートラの風景という曲がとても聴きたかったわけですよ。&lt;/p&gt;
&lt;p&gt;でもね、いろんなりゆうで勉強する気にならなくてさ……。&lt;br&gt;
こんなことなら、聞きに行けば良かったと。&lt;/p&gt;
&lt;p&gt;マイアヒとcayabyab聞いて我慢しますよ。。。&lt;/p&gt;</description></item><item><title>W-SIM</title><link>https://chezo.uno/post/2005-07-11-w-sim/</link><pubDate>Mon, 11 Jul 2005 14:47:27 -0700</pubDate><guid>https://chezo.uno/post/2005-07-11-w-sim/</guid><description>&lt;p&gt;
&lt;br&gt;
着せ替えPHSですよ、いいですね。発想が面白いですよ。&lt;/p&gt;
&lt;p&gt;今は、京ぽんとAUの二台持ちで頑張ってるわけですが、何故かうちだと彼女さんと電話してると通話がしょっちゅう切れるんだな。&lt;br&gt;
まるで走りながら電話してるみたい。困ったorz&lt;/p&gt;</description></item><item><title>VHS内蔵DVDプレーヤー</title><link>https://chezo.uno/post/2005-05-19-vhsnei-zang-dvdpureya/</link><pubDate>Wed, 18 May 2005 23:05:00 -0700</pubDate><guid>https://chezo.uno/post/2005-05-19-vhsnei-zang-dvdpureya/</guid><description>&lt;p&gt;最近、無性にほしいのがVHS搭載DVDプレーヤーなのです。&lt;br&gt;
なにせ、いつの間にか壊れてしまったVHSデッキがうちにほったらかしにしてあり、さらにDVDの需要がこのところ高まってきています。両方ともめちゃくちゃ安いプレーヤーにするのもありかとは思いますが、壊れて修理に出しに行くのが面倒なので一体型を買っちゃえという発想です。（なんか矛盾してる気がする）&lt;/p&gt;
&lt;p&gt;で、
がほしいのですが、、、もうちょっと値段さがらないかなー&lt;/p&gt;</description></item><item><title>WILLCOM</title><link>https://chezo.uno/post/2005-04-23-willcom/</link><pubDate>Sat, 23 Apr 2005 14:47:38 -0700</pubDate><guid>https://chezo.uno/post/2005-04-23-willcom/</guid><description>&lt;p&gt;最近、無性にWILLCOMにしたい衝動に駆られています。&lt;br&gt;
今は、AUの一番高いプランを学割で使っているのですが、10kを越えることもしばしば。&lt;br&gt;
しかし、ほとんどの通話は彼女にしているので、WILLCOMにすれば、通話料がほとんどいらないかな、と。&lt;br&gt;
しかも、メールまで定額になってくれたらもう金がかかるのはWebだけ。&lt;/p&gt;
&lt;p&gt;一つネックがあるとすれば、Javaアプリとかが使えないことでしょうか。&lt;br&gt;
最近ちょっとさぼっている家計簿とかがつけられなくなるのは多少痛いかなぁ……。&lt;/p&gt;
&lt;p&gt;2台同時に持つことも考えておきますか。&lt;/p&gt;</description></item><item><title>う、うるさい……</title><link>https://chezo.uno/post/2005-03-27-u-urusai-dot-dot-dot/</link><pubDate>Sun, 27 Mar 2005 13:47:43 -0800</pubDate><guid>https://chezo.uno/post/2005-03-27-u-urusai-dot-dot-dot/</guid><description>&lt;p&gt;現在、CPUはCeleronDの320を使っているんですが、最近長時間起動しているとCPUファンがうるさいのなんのって。。。&lt;br&gt;
これを機にCPUファンを変えようかなぁとか思ったりもするんですが、それ以前にケース内のケーブルをもうちょっと整理した方が良いのかなぁとも思うのですよ。リテールのFANはうるさいです。。。&lt;/p&gt;
&lt;p&gt;そういえば、ケースファンは一個もついていないのですが、これも一つの原因なのかなぁ……。&lt;br&gt;
なんとかならんもんかねぇ。&lt;/p&gt;</description></item><item><title>すごーい！！</title><link>https://chezo.uno/post/2005-03-03-sugoi/</link><pubDate>Thu, 03 Mar 2005 13:47:48 -0800</pubDate><guid>https://chezo.uno/post/2005-03-03-sugoi/</guid><description>&lt;p&gt;
を見て、携帯のカメラのすごさを思い知った。しょせんは付属物とかいってなめてちゃいかんのね。&lt;br&gt;
ちなみに、この写真はA5406CAだそうです。&lt;br&gt;
僕も携帯変えたくなってきました。うちが使ってる携帯はA5401CAなのですが、9と＃のボタンが硬くなってきたのです。いやだなぁー、と思っているとき友達が携帯を変えていたのです。そのA5406CAに。&lt;br&gt;
ポイント2500つかって5kで買ったとかいってたかな？僕は3000ポイントあるので4kくらいでかえるのでしょうか。でも機種変にしたいからどれくらいかかるのだろうか。&lt;br&gt;
個人的には、
のころからCASIO使いなので、CASIOしか使う気が起きません。でも、FMチューナーがついて欲しいんだよなぁ。どっちかというとカメラより安くしてくれとか思う人だったりします(&lt;sup&gt;_&lt;/sup&gt;;&lt;/p&gt;
&lt;p&gt;というか、そもそも学割だと途中で機種変できなかったっけかな？&lt;/p&gt;</description></item></channel></rss>