「プロになるためのWeb技術入門」を読んだ
しがないラジオパーソナリティのgamiです.
仕事の関係でCookieの仕様を調べている中で、オーソドックスなCookieの使い方についてそもそもちゃんと学んだことがないなぁと思い、Webアプリケーションの入門書を書って読みました.
「プロになるためのWeb技術入門」 ――なぜ、あなたはWebシステムを開発できないのか
- 作者: 小森裕介
- 出版社/メーカー: 技術評論社
- 発売日: 2010/04/10
- メディア: 大型本
- 購入: 57人 クリック: 1,242回
- この商品を含むブログ (35件) を見る
誰がこの本を読むべきか?
結論を言うと、現代を生きるほとんどのWeb開発者はこの本を読まなくていいです.
10年近く前に書かれた本で、古いJavaのエコシステムを前提にしているからです.
歴史を学びたい人か、レガシーなJavaアプリケーションをメンテしている人には、もしかしたら価値があるかもしれません.
具体的には、以下に当てはまる人は、暇だったら読んでもいいかもです.
- CGI誕生からWebアプリケーションフレームワークが流行るまでの、Webアプリケーションの歴史をさらっと知りたい
- Javaのエコシステムの中で生きていて、JSP/サーブレットのWebアプリケーションを作ってみたい
SIerの新卒とかは、読むと業務で役に立つ可能性があります. ちなみに私は前職でCOBOLとJavaアプレットを使っていたので、この本の内容にすら追いついていませんでした. 悲しい.
3行で言うと?
- 動的なWebコンテンツの需要が高まり、CGI、Javaアプレットを経て、サーブレット+JSPを使ったWebアプリケーション開発が主流になった
- 宅配ピザ注文サイトの実装を通じて、「一般的な」Webアプリケーションの仕組みを知る
- MVCなどのアーキテクチャやそれを実装するフレームワークを使うことで、「関心の分離」ができる
新たに知れたこと
この本を読んで、新たに知ることができたことも、少ないながらありました. なお、サーブレットやJSPの知識は、前職の研修でやったので知っていました.
CGIとは何か?
Rebuild.fmなどを聞いていると、昔話の中でCGIという単語が出てきて、「古き良きインターネットのアクセスカウンターなどを作るのに使われていた技術」くらいの理解でした.
この本によると、CGI(Gommon Gateway Interface)とは、動的なWebサイトを実現する初期の試みで、「Webサーバとプログラムの間でリクエストとレスポンスをやりとりするための規約」であると書かれています.
「APIがHTMLを返します」とか言われると、現代的な感覚では「やばいな」という感じですが、CGIはHTMLを返すケースが圧倒的に多いらしく、「やばいな」という感じです. 現在のフロントエンドのMVVMの考え方などとは全く相容れないですが、JavaScriptの仕様が不安定だった時代だからこそ求められた技術なのでしょう.
Common Gateway Interface - Wikipedia
HTTP通信の詳しい中身
HTTPのリクエスト/レスポンスのヘッダについてざっくり解説があるので、例えば普段あまり意識しないステータス・コードやポート番号などに思いを馳せることができました.
「一般的な」Webアプリケーションは状態をどのように記憶するのか?
FTPと違って、HTTPがステートレスなプロトコルであり、「Webアプリケーション」の実現のためにはどこかに状態(特に、アクセス元ユーザーのID)をCookieなどに保持する必要がある、という説明は納得感がありました.
Cookieの歴史と限界
特に、ステートレスなHTTPを補うためのCookieについて、簡単な歴史と限界を知ることができたのはよかったです.
あるドメインのサーバーは、レスポンス先のブラウザのCookie領域の中に、自ドメイン専用の領域を確保することができます. そしてそのブラウザからのリクエスト全てに、その領域のCookieに保存した文字列が自動で付加されます.
これによって、バラバラでステートレスなHTTPリクエストの中で、同一ブラウザからのアクセスを特定することができるわけです.
さて、この本自体には書いていませんが、社内勉強会で発表するために、Cookieについて少し詳しく調べたので、その内容を書きます.
ブラウザに保存されたCookieは、ブラウザのデベロッパーツールから確認することができます. しかし、その実体はどこに保存されているのでしょうか?
Chrome for Mac (version: 62.0.3202.94)の場合、以下のファイルに格納されています.
/Library/Application Support/Google/Chrome/Default/Cookies
実はこのファイルは、sqlite3のDBになっていて、SQLをかけることができます.
$ cd ~/Library/Application\ Support/Google/Chrome/Default $ sqlite3 Cookies $ sqlite> .schema cookies $ sqlite> select host_key, name from cookies;
実際に確認してみると、ドメイン(正確には、サーバーを特定するキー)毎にkey-valueが保存されていることがわかります.
ブラウザは、レスポンス先のサーバー毎に該当のcookieを検索し、その結果をHTTPリクエスト・ヘッダに入れて送るわけです.
まとめ
10年近く前の本ということで、使われている技術は現在のモダンなそれとは乖離していました. しかし、ステートをどこに持たせるか?、関心をどう分離するか?など、基本的な課題意識については、あまり変わっていないという印象でした.
昔の本を読むにあたっては、どの部分が普遍的で、どの部分が周縁的で変化するのか、意識しながら読むべきだと感じます.
We Are JavaScripters!@16th まとめ
しがないラジオパーソナリティのgamiです.
さて、2/22(木)に【We Are JavaScripters!@16th】に参加したので、その内容についてまとめました! 公開されていない資料については、見つけ次第追加していきます。
イベント自体の詳細は、こちら!
スポンサーLT(moffers)
サービス紹介
- 年収確約型スカウトサービス
- 中途採用向け
- moffersに登録してください!
LT1: Riot.jsの今とこれから @kuwahara_ngv5
資料
自己紹介
- ゆめみ
- Node.js
- Riot.jsのコミッター
コミュニティ
- Ionicスタッフ
- DISTスタッフ
- MDN翻訳
Riotとは?
- シンプルでエレガントなコンポーネントベースのUIライブラリ
- Reactをベースに、シンプルにしたもの
特徴
- カスタムタグで実装
- タグの中に、HTML/JS/CSSを書いたものを、マウント
- シンプルで軽量
現在
- v2.9.0
- GitHub star 12,782
- Vue.jsは約80,000
- size: 10.74kb
- Vue.jsの1/3
事例
- 日本のサイト
- exvirte
- cacoo
- Made with riotのサイトに掲載あり
パフォーマンス問題
- 10,000行のリスト要素描画
- v2.4.1に比べて、v3.7.2は約1/9
エコシステム
- 色んなものを組み合わせることが可能
- ジャンル
- Basics
- SPA(routing)
- Others
- State management
- Compile
- Design and animations
v4
- なくなるもの
- this.tags
- riot-observable
- shourUpdate
- ":root" -> ":scope"
- parser/compilerを作り直してパフォーマンス改善
- 今年の夏頃リリース予定?
質疑応答
Riotを好きになった理由は?
- Riotは個人開発で簡単に使えるので、惚れた
v2からv3への破壊的な変更は?
- コアのメソッドが使えなくなった
- 繰り返し処理の使い方が変わった
LT2: 【ビ】emacs helm likeな WebExtensions を作った話 @kumabook
資料
- 404
自己紹介
- Hiroki Kumamoto
- Spincoaster
- 音楽系スタートアップ
WebExtensionとは?
できること
- Webページのコンテンツ追加
- ツールバー
自作したWebExtensions
- Emacs helm on WebExtensions
- クエリで候補を絞り込んで、アクションを実行
- 検索履歴を消したりが、マウス無しでできる
元ネタ
- Vimperator for Firefox
- 似たようなものはあったが、シンプルに自分で作った
WebExtensionsのアーキテクチャ
- background script
- popup
- content script
- options ui
アーキテクチャ
- react, redux, redux-sagaで作った
- 普段のWeb開発フレームワークも使える
- popupもoptions uiもreduxを使った
- 2つのredux間では、storage apiでstate共有
- redux-sagaのchannelを仕様
質問
ブラウザ毎に違う記述が必要なケースはある?
- Chromeだとディスプレイサイズが取れないなど、無い機能はある
LT3: ES2015のProxyを使ってみた(仮) @tipo159
資料
- 404
なぜProxyについて話すのか
- WebComponentsを調べていた
- 「Proxyオブジェクトを使うと、ObjectObservableみたいなことができるよ」
Proxy概要
- プロパティの検索、代入、列挙、関数起動などについて、独自の動作を定義できる
- 構文
var p = new Proxy(target, handler);
- 引数
- target: ターゲットのオブジェクト
- handler
- pとtargetは同じ名前でも良い
サポート状況
- IEは...
- モダンなブラウザであれば、使える
Vue3のProxy関連情報
- Vue2では、配列のプロパティへの値の設定や動的なプロパティの追加は、Vue.setで行う必要がある
- Vue3では、配列のプロパティへの値の設定や動的なプロパティの追加も、Proxyで他のプロパティと同様に扱える
メタプログラミングの例
LT4: 僕のフロントエンド奮闘記 @Nao-bt
自己紹介
- 文系出身
- プログラミング歴5年
- AngularやReactを触ってきた
- 今はレガシーな環境をVue.jsでリプレースする仕事
趣旨
- JSフレームワークを使った開発をこれから始める人のため
コンポーネント志向
- 画面をUIパーツ毎に分割して作り、組み合わせる
- 再利用がしやすい
- 分業やテストがしやすい
やりとり
- 親→子: props down
- 親は子を必ず知っている
- 子→親: event up
- 子は親を知らなくてもいい
どのくらいの細かさで切るか?
- Atomic Designとの出会い
Atomic Design
- Atoms: 原子
- Moledules: 分子
- Organisms: 有機体
- Templates
- Pages
Atomic Designを使った結果
Vuex
- Reduxリスペクト
- アプリの状態をコンポーネントから分離できる
- バケツリレーしなくていいなんて素敵!
Vuexを使った結果
- バケツリレーの代わりに、Vuex用の記載が増えていって辛い
- どんなActionがあるか知らないと成立しないコンポーネントをたくさん作ってしまった
- 親も子もVuexを知らないといけない
- 再利用できない
- PagesコンポーネントにVuexをまとめて、そこから下はバケツリレーすべきだった
まとめ
- 流行りだからって何も考えずに取り入れるとやばい
LT5: 【ビ】アプリ開発未経験者がReactNativeでProgateアプリをリリースした話 @wyvernMurai
資料
自己紹介
- 村井謙太
- Progate CTO
技術
- Rails
- Node.js
- React
- インフラ
Progateアプリ
- 教育カテゴリで一瞬1位
- キーボード部分だけが、オリジナル
- ReactNativeファンになった!
ReactNative
コード
- ReactNative側が用意している
<Text>
などのコンポーネントを使用
偉大な点
1. 開発プロセスがWebとほぼ同じ!
- xcode使わなくていい
- npmでpackage管理
- スタイルはCSSで書ける(CSS in JS)
- reduxなどでstate管理
- 9割くらいは、reduxを書く時間となる
- axiosやfetchでAPIリクエスト
2. ビルド速すぎて最高!
- ライブリロード、ホットリロードが設定不要で使える
- コードを書いて約3秒で動作確認できる
3. react-devtools最高!
辛い点
1. 日本語の情報が少なすぎる
- 英語のドキュメントを読み込む必要がある
- ソースコードを読む必要性が多々ある
2. たまにネイティブコードを書く必要性あり
- 外部ライブラリのセッティングなど
- コピペで動かないケースがある
- Progateリポジトリでは、20行程度
リリースして得られた知見
1. redux使おう
- 洗練されている
- 迷ったら使うべき
2. 静的型付けしよう
- アプリ開発は、状態が多くて複雑になりやすい
- 関数の入出力が安定していないと、バグを起こしやすい
- flowかtypescriptを使うべき
3. テストは早めから書こう
- 複雑なロジックは、テストが無いと詰む
- jestが入っているので、初期から書くべき
4. パフォーマンスチューニングは必須
- 以下を使ってチェックすべき
- デバッグビルドとリリースビルドでは、アプリの動作速度がまるで違う
スポンサーLT(マイクロソフト): JavaScriptでパワポを作ろう@sakkuru
資料
www.slideshare.net
宣伝
- App StoreにEdgeアプリが登場!
自己紹介
JavaScript API for Office
- Officeドキュメント内のコンテンツを操作できるJS API
- Word, Excel, PowerPoint...
- HTML, CSS, JSを使える
アーキテクチャ
アドインの作り方
yo office
- 対話的に作成可能
- https://docs.microsoft.com/ja-jp/office/dev/add-ins/overview/office-add-ins
開発中のアドインの使い方
- PowerPointから、アドイン > 開発者向けアドイン
- PowerPointの画面内に、Webアプリケーションを表示できる
- クリック時のハンドラに、PowerPoint側の操作を記述できる
LT7: 学生に戻った気持ちで例文で理解しよう!JavaScriptに関する用語達! @fukamiiiiinmin
資料
- 404
自己紹介
- taskey株式会社
- 深見将一
- peepリリース
背景
- 新入社員がやって来る!
- 「◯◯って何ですか?」
- 文章として説明できる?
説明・例文
jQuery
- JavaScriptをパワーアップしたもので、JSで書くと長いものが簡単に書ける
- 全ブラウザで同じように動く
HTML, CSS, JS
- 研究者が、文字や画像を共有したくてHTML
- デザインを作りたいときは、CSS
- ブラウザに動きが必要だとJSが必要
- JSすごい!
ajax
- 同期通信と非同期通信の2つがある
- 画面が白くなるかどうか
React, Angular, Vue
- 設計図を元に画面を作ってくれる
まとめ
- 言葉にすると、自分の中で整理されてとてもよい
- エンジニアとして、「ここを省いたらやばい!」ということもあるけど、理解できるかどうかが大事
LT8: 【ビ】Unit testing for React components @camcam_lemon
資料
- 404
自己紹介
- 日本事務器
使っているテストライブラリ
- mocha
- power-assert
- jsdom
- enzyme
- testdouble
テストでつまりそうなポイント
refコールバック
- rnzyme@3.0.0からref情報を読み込むようになった
- disabledLifeCycleMethodsをtrueにすると、いきなりcomponentDidMoutが実行されないようになる
DOMオブジェクトへのアクセス
- DOMの情報は、テスト環境では空オブジェクト
- shallowでテストしたい
引数有りのイベントハンドラ
- simulate()の第二引数以降にモックオブジェクトを渡すことができる
- instance()から実行もできる
時間が絡む処理
- testdouble-timersを使う
グローバルオブジェクトへのアクセス
- jsdomのuserAgentやlocationは直接書き換えできない
- setterが無いので、ヘルパーを書いた
- windowを明示するかどうかで、テストの仕方と難易度が変わる
LT9: モジュールと名前空間について @chikoski
資料
- 404
script type="module"
- chromeだとデフォルトで使える
- webpackのmodule export的なことを、ブラウザでやってくれる
- script type="nomodule"で、フォールバックできる
変数とは
- value = 1
- 代入: 手続き的な概念
- 束縛: 関数的な概念
束縛
- データに対して名前を付ける
スコープ
- 名前の有効範囲
- JSでもやっとブロックスコープができた
環境(lexical environment)
- 名前と値の対応表
- スコープ毎に作られる
- クロージャーも、環境自体を参照できる
例
- Global environment
- Module environment
- Function environment
名前空間
- 良い名前思いつかない問題
- スコープなどとは違う単位で、名前を区切るもの
JSには名前空間がなかった
- 無名関数の即時実行で頑張っていた
common.js
- 名前空間が整備された
ES2016 module
- 1ファイルが、1名前空間
export
を付けたものだけが、外部から使えるexport 値
export default
: 名前を指定せずに読み込んだ場合
import: 依存するモジュールの読み込み
import {add} from "module_a";
- read only
- importしたものをexportすることもできる
モジュールのいいところ
- 「この名前使っていいかな?」を考えなくていい
- グローバルを汚染しない
- 外へ露出しない関数やクラスを作れる
- 他人の作ったものを、自分の好きな名前で呼べる
依存関係のネットワーク(サイクルも解決可能!)
- 循環依存も解決可能!
テストをどうするか?
- 露出しない関数はどうテストする?
テストを埋め込む
- テスト自体も、モジュールに埋め込めるメリット
- doTest関数を露出
名前を隠すモジュールを別に作る
- それ用のモジュールを作ってしまう手もある
Scriptsとの違い
- 強制strictモード
- 非同期
- グローバル変数は、windowに明示的に追加する必要がある
創業から4年の「メイカー」が中国スマホ市場トップシェアになる、「メイカーズ」の驚異のスピード感の源泉とは?
しがないラジオパーソナリティのgamiです.
今度、中国の深圳に旅行に行くことになったので、『メイカーズのエコシステム 新しいモノづくりがとまらない。』という書籍を読みました.
メイカーズのエコシステム 新しいモノづくりがとまらない。 (OnDeck Books(NextPublishing))
- 作者: 高須正和
- 出版社/メーカー: インプレスR&D
- 発売日: 2016/03/28
- メディア: Kindle版
- この商品を含むブログ (5件) を見る
私はWeb系エンジニアの端くれで、ハードウェア産業で世界的に今なにが起こっているのかは、今まであまり知りませんでした. この本を読んで、かつてソフトウェアで起こったようなイノベーションやオープン化が、ハードウェア分野でもものすごいスピードで発生しているということが、様々な事例とともに理解できました.
もっとも大事なことは、そのイノベーションというのは、学会や論文と仲がいいようなものばかりではなく、「同人的」なお遊びのエコシステムから生まれてきたということです.
『メイカーズのエコシステム』
この本は、「メイカー」と呼ばれる同人的なハードウェア製作者が、なぜ世界規模で増えていて、なぜその中でXiaomiやGoProなどの世界的メーカーが登場したのかを説明する本です.
著者は高須正和さんで、ニコニコ技術部深圳観察会を主催したり、日本と世界のメイカームーブメントをつなげる活動をされている方です.
学術的な本というより、メイカーズの熱狂の現場を見てきた著者やメイカーたちの言葉を集めた、実際的な本でした.
何が書いてあったか?
3行でいうと
- 「メイカーコミュニティ」、「ハードウェアのオープンソース文化」、「小ロット製造に対応した工場」、「クラウドファンディング」、「アクセラレータ」などの登場によって、同人的なメイカーが世界的メーカーになるためのパスができた
- 深圳のハードウェア製造エコシステムは驚異的に発展しており、複雑な部品も安価に小ロットから製造できる
- オバマ政権、深圳政府、シンガポールなど、STEM教育の導入や金銭的補助によって、政府主導でメイカーのエコシステムを構築しようとしているケースが増えてきた
メイカームーブメントとは何か
ソフトウェア産業については、初期投資が少ないこともあって、近年スタートアップが大企業のビジネスを脅かす例が多くあります. 一方、ハードウェア分野では、まだ大企業の方が強い時代が続いていました.
しかしここ最近、アメリカや中国を中心に、創業してから短期間で、歴史あるメーカーと並ぶシェアを獲得するスタートアップが登場するようになりました.
この本では、以下のような企業が例に挙げられています.
- GoPro
- Xiaomi
- DJI
実際、私もXiaomiが買収したHuamiというメーカーが作っている"Xiaomi Huami AMAZFIT Bip"というスマートウォッチを夢の中で使っています. 一度の充電で45日間使えるなど、これまでのスマートウォッチの常識を覆す性能をもっていて、品質もよく、動作も安定しています.
調べてみると、Xiaomiは創業から4年で、中国スマホ市場トップシェアを獲得したらしいです. これは、従来のハードウェア産業から考えると、明らかに異常な事態です.
こうしたハードウェアスタートアップの隆盛は、趣味的なハードウェア愛好家を支援するエコシステムが育ってきたことから、実現しています. この生態系の盛り上がりを指して、「メイカームーブメント」と呼ばれているようです.
個人的には、生産性の低い大企業は新興企業にどんどんと脅かされて人材流出した方が社会的に望ましいと思うので、もっと趣味的なMakeが流行るといいと思います.
なお、メイカームーブメントを象徴するお祭りとして、Maker Faireと呼ばれるイベントが世界中で開催されています.
東京でも、毎年メイカーフェア東京が開催されており、2018年は8/4(土)〜8/5(日)の予定です. 私も遊びに行きたいと思います.
メイカームーブメントと深圳
香港と隣接する中国の都市である深圳市は、メイカームーブメントの中心地の1つとして語られることが多いです.
深圳は中国最初の経済特区で、大都市・香港の下請け工場が成熟して、大抵のハードウェアならゼロから作れるくらいの技術を蓄積するようになったそうです.
現在は大量のハードウェア工場、テンセントやファーウェイなどの企業本社、世界最大の電気街「華強北」などを擁しています.
特質すべきは、Seeedという会社が、雑多で複雑な深圳の工場群を、仮想的なWebサービスのように扱えるようにしている点です.
シリコンバレーを含む世界中のメイカーが、Seeedを通じて試作品や小ロットの製品量産を低コストで発注し、スピード感を持ってハードウェアスタートアップとして羽ばたいていきます.
世界のメイカームーブメントを支えるエコシステムの重要な一翼を、深圳が担っているわけです.
メイカームーブメントと政府
メイカームーブメントで興味深いのは、地域的なコミュニティはもちろん、政府によって強く支援されている例が多いことです. この本では、深圳、アメリカ、シンガポールが例に挙げられています.
特にオバマ政権の例が面白く、彼は2014年からなんとホワイトハウスでメイカーフェアを開催しています.
https://makezine.com/2015/05/06/a-practical-roadmap-mayors-maker-challenge-part-2-of-3/
2014年のWhite House Maker Faireでの大統領の挨拶は、以下のサイトから全文日本語で読むことができます.
とりわけ印象的なのは、以下の一文です.
本日、みなさんをお招きしたのは、今日がD.I.Y.だからです。D.I.Y.は明日のMade in Americaです。みなさんのプロジェクトは、アメリカの製造業に起こりつつある革命の実例です。新しい雇用を生み、今後数十年続く産業を生み出す革命です。
「ハードウェアを作ることが、明日のアメリカを作る」という明確なメッセージを発して、大統領自らメイカームーブメントを支援していることがわかります. その背景には、ハードウェア製造業がその他の産業に比べて多くの雇用を生み出すという事実があります.
また、シンガポールの例では、メイカーへの支援がさらに社会制度や公教育に現れています.
例えば、シンガポールではオートメーションへの投資が盛んで、レストランが新しい自動化レジを入れると、70%までは政府の補助が出るそうです. ルールのトライ&エラーも積極的に行なっており、日本ではまだ実現できなそうな先進的な試みがされています.
- 全ての車にERPというシステムが搭載され、混雑時に公道を走っていると自動で課金される
- レストランで給仕するドローンのテスト飛行が許可される
以前シンガポールに旅行に行ったとき、Uberを使って非常に便利だった記憶があります. ぜひ日本にも、大企業や既得権益の延命に注力するのではなく、未来の日本社会や世界にとっての一番いい選択が何かを議論して欲しいです.
「メイカーズのエコシステム」読んでる. シンガポールでは、全国の中学校で実践的な電子工作やプロトタイピングの授業が行われ、業務のオートメーション化に最大70%の補助が出て、2ページのパンフレットに記載された条件を満たせば自由にドローンを飛ばせるらしい. どうすれば日本もこうなるんだ...
— j_ikegami (@jumpei_ikegami) 2018年1月22日
やってみた
せっかくこの本を読んだので、メイカーズムーブメントの裾くらいは掴みたいと思いました.
クラウドファンディングの出資先を探してみた
日本のハードウェアメイカーを、クラウドファンディングで支援してみようと思いました.
ただ、Makuakeなどを見ると、海外のクラウドファンディングサイトで成功した製品を日本に輸入して販売するケースが多く、日本のハードウェアメイカーが直接出資を募っているプロジェクトはかなり少ない印象でした。
また、クラウドファンディングブームはすでに落ち着いているようで、例えば、1/8タチコマで有名なCerevoがやっているハードウェアクラウドファンディングサイト・Cerevo DASHは、2012年前後で時が止まっているようでした...
『メイカーズのエコシステム』読み終わって、日本のガジェットメイカーをクラウドファンディングで応援したい欲が高まったけど、CEREVO DASHとか2012年で時が止まってるし、Makuake見ても「Kickstarterで○万円調達した××が日本上陸!」とか多いし、うまく見つけられなかった. どこで探せばいいんだ.
— j_ikegami (@jumpei_ikegami) 2018年1月25日
その中でも一番盛り上がっているのは、やはりCAMPFIREのテクノロジー・ガジェットカテゴリのようです. ちょうどいいプロジェクトがなかったので、インターステラテクノロジズのロケット事業に5,000円投資しました.
そもそも日本は寄付文化がそこまで無いので、クラウドファンディング自体が文化的に合っていないのかもしれません.
ラズパイで電子工作してみた
実際に自分で電子工作をしてみることも試しました. よく言われる話ですが、ラズパイと秋月電子通商があれば、初歩的なことは簡単にできました.
電子工作に目覚めたので、秋月電子でラズパイ含め14,000円分の電子部品を購入した. めっちゃ安い部品もバラでオンライン購入できて、ちゃんと袋に入れて送ってくれるの、本当にスゴい. 今日はブレッドボードにジャンパワイヤと抵抗を挿しまくります. pic.twitter.com/VZM3czjDaL
— j_ikegami (@jumpei_ikegami) 2018年1月28日
参考にした本は、これです.
やさしくはじめるラズベリー・パイ ~電子工作で簡易ロボット&ガジェットを作ってみよう~
- 作者: クジラ飛行机
- 出版社/メーカー: マイナビ出版
- 発売日: 2017/05/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
必要な電子部品が型番指定で書いてあり、それらを使って最低限やれることを実践で学べるので、すごく良い本でした.
買った電子工作本のフルカラーLEDのサンプルが普通にRGBそれぞれ0か1しか入力しないやつでフルカラーじゃないので、PWMとかいうON/OFFを高速に切り替えるぞみたいなやつを使って勘でコード書いたら、すごい勢いで色が変わる治安の悪い物体ができた. やったぜ. pic.twitter.com/oWCYuCwAyV
— j_ikegami (@jumpei_ikegami) 2018年1月29日
そして、治安の悪いライトができました.
ラズパイでPython書いて6個のフルカラーLEDをランダムに光らせることに成功した!GPIOとのしんみつどが3あがった! pic.twitter.com/hETl1yl4H4
— j_ikegami (@jumpei_ikegami) 2018年1月29日
会社の宣伝をしたりしました.
7セグメントLEDで弊社の社名を宣伝できるとこまで来た. pic.twitter.com/63l3vsjf8n
— j_ikegami (@jumpei_ikegami) 2018年1月28日
今のところ、光の色で進捗がわかるタイマーを作るところまでできました.
ラズパイでタイマーできた!光で進捗がわかる. 来週はこれをもうちょい作り込んだやつを深センの工場に見せに行く(らしい)#RaspberryPi pic.twitter.com/r8PtPgUst6
— j_ikegami (@jumpei_ikegami) 2018年2月4日
WebIOPiというやつを使うとブラウザ経由でラズパイを操作できるらしいので、今後はそれを使ってWebエンジニアならではのプロダクトを自作したいと思っています.
まとめ
- メイカー・ムーブメントが世界的に加速している
- 日本のメイカーはどこにいるんだろう?
- 電子工作楽しい!
「OK, Google. 12面サイコロ3個投げて」Google Homeに何ができるのか?何に使っているか??
しがないラジオパーソナリティのgamiです.
Google Home miniを買ったので、何に使っているかを書きます.
開封の儀をしているときに、珍しく地震警報が鳴ったのでそういう機能かと思ったというtweetをしたらしいです.
コレの開封の儀してたら警報なったから、そういう機能かと思った...怖... pic.twitter.com/4W1y3cI92S
— j_ikegami (@jumpei_ikegami) 2018年1月5日
Google Home感想
Google Home miniを買ってみた感想を3行で言うとこんな感じです.
- 部屋の隅で小さな声で話しても反応するので、その技術にめっちゃ驚いた
- まだ音楽再生とアラームくらいしかまともに使ってない
- 誰が使うかわからない機能がたまにあるし、たぶん日々増えてるのでワクワク感はある
買った理由
2018年は早起きしてランニングするぞ!という目標を立てたのですが、寒すぎてつらいのを何とかしたいという需要がありました.
起きる30分前くらいから自動でエアコンが暖房してくれればいいので、Google Homeを買えばできる気がして買いました.
RM miniとかを買えばできると思いますが、まだ買ってないので朝は寒いままです.
Broadlink Wifi 赤外線 学習 リモコン RM mini3 [並行輸入品]
- 出版社/メーカー: Broadlink
- メディア: エレクトロニクス
- この商品を含むブログを見る
使っている機能
当初の目的は達成できていないですが、Google Home miniを使ってやっていることを述べます.
「7時間後に起こして」
『6:03にアラームをセットしました』
普通に目覚まし時計もスマホも持っているので、アラーム設定するだけならそっちでも全く問題ないです. ただ、私は「7時間寝たい」と決めているので、何時に寝始めるかによって、何時に起きたいかが変動します. そんな需要があるときに、声だけで「7時間後」などの相対時間で目覚ましをセットできるのは、地味に便利です.
「ポルカドットスティングレイかけて」
『プレイミュージックでポルカドットスティングレイを再生します』
ふと思いついて「○○かけて」とか言うと、ちゃんと流してくれます.
なお、自由に音楽を聞くには、Google Play Musicに980円のGoogle税を払う必要があります.
また、一部のアーティストは曲が無いので、見つからなかったりオルゴールアレンジがかかって、悲しい気持ちになったりします.
まだリピート再生ができないし、指定したアーティストの曲が無くなったら別の人の似たような曲が勝手にかかるので、「色んな曲を自由にかけるから、いい曲と出会ってね」という圧力を感じます.
でも、プレイリスト管理などをせずに、そのときの気分で気軽に再生できる体験は素晴らしいです. よく聞くのは、「ポルカドットスティングレイ」、「チャットモンチー」、「東京事変」、「フレデリック」、「Creepy Nuts」、「きゃりーぱみゅぱみゅ」、「相対性理論」、「宇多田ヒカル」です.
本当はミスチルとかも聞きたい.
GoogleHomeに「ミスチルかけて」って言ったら、何も言わずに「ナオト・インティライミ」の曲が流れ始めたのは、さすがに笑った.
— j_ikegami (@jumpei_ikegami) 2018年1月5日
「おやすみ」
『寒くなってきたので、暖かくして寝てください。良い夢が見られますように』
地味ですが、「おやすみ」とか「行ってきます」とか言うと、優しい言葉をかけてくれます.
布団の中でAIスピーカーに「おやすみ」と声をかける体験は、すごく未来感があってとてもいいです. すぐに飽きそうですが!
できるけど使っていない機能
「アフォーダンスって何?」
『Wikipediaによれば...』
わからない言葉を調べられます. 言葉の意味を知りたいタイミングは、だいたいPCの前か外出中なので、そんなに使わないです.
「今日の天気は?」
『今日は、予想最高気温11度...』
天気を気にしなくてもいいように生活を設計しているので、使っていないです. 具体的には、毎日折り畳み傘を持つとか、乾燥機能のあるドラム式洗濯機を使うとか.
「ニッポン放送かけて」
ストリーミング再生に対応しているラジオであれば、チャンネルを指定して聞けます.
自分で配信するほどポッドキャストが好きなので、常に積みポッドキャストがたくさんあり、ラジオを聞いている場合ではないです.
「今日のニュースは?」
『NHKラジオニュースから、今日8時のニュースをお伝えします』
NHKラジオニュースなどを流してくれます. ニュースソースの優先度などは、アプリから選べます.
Twitterでニュースを仕入れているので、聞かないです()
「スマホ探して」
『(機種名)のボリュームを最大にして鳴らせます. 鳴らしましょうか?』
Androidだと、ボリューム最大で電話を鳴らしてくれます. スマホを無くすような軟弱な家には住んでいないので、使わないです.
「12面サイコロ3個投げて」
『9 8 4と出ました. 合計は21です』
任意の面数のサイコロを任意の個数だけ投げて、それぞれの出目と合計値を教えてくれます.
「1000万面サイコロ投げて」とかも、律儀に対応してくれます.
ボードゲームで使うかもと思いましたが、「サイコロの出目がみんなに見える状態で残ること」が重要だったりするので、音声サイコロは使いづらい気がします.
「ピカチュウと話したい」
「わかりました、ピカチュウです」
ピカチュウと話したいタイミングがない.
「ぬるぽ」
「ガッ、と言えばいいのでしょうか?」
わかっておる...
ちなみに、元々の意味である"NullPointerException"の意味を拾って、
「それは私にとって一番恐ろしいことです」
と言ってくることもあります.
「生命、宇宙、そして万物についての究極の疑問の答え」
「42です」
正解.
できそうだけどできない
「1億面サイコロ投げて」
『9が出ました』
9999万面サイコロまではいけますが、1億面サイコロにするとなぜか小さい数しか出なくなりました.
日本人全員に番号を振って抽選したりするときには使えないです.
「りんなにLINE送って」
「すみません、よくわかりません」
Cloverじゃないのでできません.
LINE NL-S100JP Clova Friends Brown [スマートスピーカー]
- 出版社/メーカー: LINE NL-S100JP Clova Friends Brown [スマートスピーカー]
- メディア: エレクトロニクス
- この商品を含むブログを見る
「Gmailを新規作成」
「すみません、まだ対応していません」
対応しても怖くて使えない.
「バンコクの正式名称は?」
『thaiembassy.jpのサイトにはこう書かれています. 外国人はタイの首都を「バンコク」と呼びますが、正式名称はバンコクではなく以下のように大変長い名称です.普段、タイ人は正式名称の初めの部分「クルンテープ」(“天使の都”の意)を首都名として呼んでいます』
ラーメンズが好きな人は誰でもバンコクの正式名称を覚えたくなるはずですが、そのトレーニングには使えないようです.
まとめ
上に挙げた機能に限れば、Google Homeにしかできないことは1つもありません.
それでもGoogle Homeを買って良かったと思いました. それは、「音声インタフェースを使うことが日常化される」という体験ができるからです.
全く手を動かさなくても、好きな情報にアクセスできるという体験は、まだ一般的ではありません. しかし、きっとすぐ先に待ち受けている未来のはずなので、それに予め慣れておくことができます.
それだけといえばそれだけですが、新しいUXに慣れることで生み出せるものもある気がします. なので、今日も「OK, Google」と話しかけていきます.
Web系に転職したいエンジニアが「N予備校」の「Webアプリ入門」をやるべき5つの理由
しがないラジオパーソナリティのgamiです.
N予備校のプログラミングコースを始めて、 「Webアプリ入門」コースがすごく良かったので、紹介します.
N予備校ってなあに?
ドワンゴが提供するeラーニングサービスです.
主にN高等学校向けに作られているようですが、一般向けにも提供されています.
無料体験もできますが、基本的には月額1,000円を払うと全てのサービスが使えるようになります.
上記URLにアクセスすると、「ネットで志望校へ一直線!」とか出てくるので不安になりますが、高校生の親から主に収益を得ているサービスだと思うので、そこに最適化されているだけです.
N予備校のプログラミングコース
N予備校は主に高校生向けなので、英語とか社会とかの受験科目のコースも当然あります.
ただし、プログラミングコースの力の入れ方がすごいです.
2017年の9月にはてな匿名ダイアリーの記事がバズったので、知っている人も多いかもしれません.
ドワンゴがやっているので、Webアプリケーション開発の講義がメインです.
受講生の中から、普通に「未踏Jr.採択者」とかも輩出しているらしいので、実績も出てきています.
詳しくは、N高等学校 Advent Calendar 2017の1日目の記事で、担当責任者の@sifueさんが説明しています.
「プログラミングしたいけどそもそもつくりたいものが無い生徒に必要なのは、対話でした」など、プログラミング教育論としても非常に良い記事です.
Web系に転職したいエンジニアが「N予備校」の「Webアプリ入門」をやるべき5つの理由
前述のように、一般にはN予備校のコースは高校生向けに作られています.
ただし、実際に「プログラミング入門 Webアプリ」コースを受講してみて、これからWebエンジニアとしてのキャリアを始めようとしている人にとってもすごく良いと思いました.
その理由を5つ捻り出したので、以下に書いていきます.
なお、N予備校の授業は基本的に「動画」と「Web教材(テキスト)」のセットで提供されていますが、私はほぼ後者の「Web教材(テキスト)」しか使ってないので、その点はご了承ください.
1. 前提知識が要らない
世の中の初心者向け技術書の多くは、ある一定の前提知識を要求してきます.
これは、技術書出版業界のセオリーとして、「『入門』という言葉を付けると売上が上がる」という話があるのが1つの原因です.
一方で、N予備校の授業はPCを使ったことがないレベルまで想定して作られています.
例えば、Chromeのインストール方法や、(
の入力方法から丁寧に説明されています.
2. Webの知識が網羅的に身につく
「Webエンジニアになるぞ!」となったときに、身につけるべき知識の範囲というのは、結構広いです.
ざっと考えても、以下のようなトピックについて薄っすらとでも知っておく必要があります.
- Linuxと環境構築
- シェルプログラミング
- 通信とネットワーク
- GitとGitHub
- サーバーサイド言語1つ
- HTML/CSS/JavaScript
- DBとSQL
- 認証
- アプリケーション設計
- Webフレームワーク
- テスト
- セキュリティ
- Hostingサービス
- CI
それぞれ別個の入門書が出ているようなトピックばかりです.
「Webアプリ入門」コースは、これらを全て網羅した内容になっています. 20冊近い本を積み上げて勉強するよりは、モチベーションが保ちやすいと思います.
3. 手を動かしながら実践的に学べる
N予備校のプログラミング授業では、ほとんど全ての章で実際に手を動かしながら学べるようになっています.
VagrantでUbuntuを立てて、エディタでコードを修正して結果を見ながら、問題なければgit commitしていきます.
「概念は知っている」よりも、「実際に手を動かして実装したことがある」の方が、仕事で触るときの心理的なハードルがグッと下がります.
例えば、OAuth2.0の存在は知っていましたが、実際にnpmライブラリを使って実装してみると、もっと身近に感じられました.
4. 比較的モダンな開発環境に慣れることができる
私がSIerのF社でSEをやっていたときは、開発環境がかなりレガシーでした.
そのため、転職後にWebエンジニアになったとき、使っている言語やツールがすべてガラッと変わって、慣れるまで辛かった覚えがあります.
N予備校のプログラミングコースは、以下のような比較的モダンな環境を使うので、実作業の中でそれらに慣れることができて良いと思います.
ちなみに私の前職は、COBOL + サクラエディタ + VSS + その他F社製品でした. エディタとかは宗教戦争ありそうですが、サクラエディタよりはVSCodeの方が圧倒的にWeb開発には向いているしWebエンジニアの間での普及率も高いでしょう.
なお、これらの「モダン」な開発環境も日々廃れていきますが、コース名に「2017年」と書いてあったので、毎年教材の改訂を行なっていくみたいです.
5. GitHubアカウントの見栄えをよくできる
Web系の企業で中途採用選考を受ける場合、GitHubアカウントを見られることが多いです.
もしWeb系への転職を考えていてGitHubアカウントも持っていないような状態であれば、GitHubの見栄えを良くすることは、テクニックの一つとしてはありかなと思います.
N予備校のプログラミング入門コースでは、すべての演習のソースコードがISCライセンスで公開されています.
教材に沿ってこれらのソースコードを写経して、自分のGitHubリポジトリのmasterにpushしていけば、GitHubに学習の成果が反映されます.
もちろん最初から自分のプロダクトを作れれば一番いいですが、何もしていない人とは差別化できるでしょう.
なお、GitHubのContributionsに草を生やしたい場合、以下の記事とかを参考にするといいかと思います.
教材の通りにやると、多分master-2017
ブランチ等にpushすることになるので、草が生えない恐れがあります.
また、ISCライセンスに従って、『「無保証」であることの明記と著作権およびライセンス条文自身の表示』が必要になるので、たぶんREADME.mdとかに書いておけば大丈夫だと思います.
(ライセンス周りは詳しくないので、問題だ!という指摘があれば教えてください)
まとめ
- これからWebエンジニアになる、なったけど自信がない、という人は、「N予備校」の「Webアプリ入門」をやると最低限の知識と経験が身に付く
- 特に、SIerなどの文化が違うところからの転職だと、慣れるためにも、「これやりました!」と面接で言うにも、良さそう
プログラミングに限らず、こういったサービスがたくさん出てきて、学習コストがどんどん下がっていくといいですね.
「白と黒のとびら オートマトンと形式言語をめぐる冒険」を読んでオートマトン学習モチベがMAXになった話
こんにちは、 しがないラジオ パーソナリティのgamiです.
友人から借りて、オートマトンと形式言語をファンタジー調で解説した本を読みました.
内容は物語ですが、研究者である著者が、東京大学出版会というガチガチなところから出しているので、技術的な裏付けのある書籍です.
- 作者: 川添愛
- 出版社/メーカー: 東京大学出版会
- 発売日: 2013/04/18
- メディア: 単行本
- この商品を含むブログ (14件) を見る
3行で感想
あらすじ
主人公は魔術師アルドゥインの弟子のガレットです.
ただし、師匠からはいっこうに魔法を教えてもらえず、毎日よくわからない言語の勉強をさせられます.
古代ルル語や古代クフ語という古代の言語で、文字は○と●の2文字しかありません.
しかし、各地で不思議な遺跡と出会い、それらを探索する中で、古代語を学ぶ意味に気付いていきます.
遺跡は白と黒のとびらのついた部屋の集まりから構成されていて、とびらを開ける順番を誤ると、二度と出てこられないものもあります.
ガレットは古代語の文法と遺跡の関係についての謎を紐解いていき...
オートマトンと形式言語
各古代語には、それぞれ固有の文法があります. 例えば、第三十三古代クフ語は、「偶数個の○と●の文字からなる回文」のみを、正しい文とみなします.
そして、各遺跡にも、どの状態で、どの行動をしたら、どの部屋に飛ばされるか、といったルールがあります.
古代語や遺跡などのよくわからないけどものから、こうした固有のルールを、読者もガレットと一緒に見つけ出していくような作りになっています.
巻末には、物語の解説がまとめられています.
物語の中の要素との対応としては、実は
を表していることがわかります.
また、オートマトンと形式言語の「現実世界」での発展に沿って、物語のストーリーが組まれています.
その対応関係も、解説を読んだときに後から知らされるので、「そうだったのか!」という感覚が味わえます.
オートマトンや形式言語を学ぶ意味
この本を読む前は、「オートマトンとかよく聞くけど、ライフゲームみたいなやつでしょ」くらいの知識でした(雑).
読んだ後は、かなりオートマトン学習モチベが上がりました.
こちらも解説に書いてある内容ですが、オートマトンと形式言語は、とってもとっても大事な基礎理論らしいです.
情報科学も数学も、漠然と「学び足りてないなあ」と思っているので、その基礎を知れるというのは良いなあ.
また、オートマトンと形式言語を深く学ぶことによって、以下のような問いに対して答えることができるとのこと.
- 「計算」とはそもそも何なのか?
- 計算機械にできることと、できないことの境目はどこにあるのか?
- 人間の脳を一種の「計算機械」と見なした場合、私たちの持つ言語能力をどのように説明することができるか?
個人的には、特に「2. 計算機械にできることと、できないことの境目はどこにあるのか?」という問いにはすごく興味があります.
この本の終盤のテーマも、「何でもできそうな計算機械でも、実はできないことがある」という点にあります. こうした「直感に反する事実を論証する」というところに、理論の強さがある気がします.
最近の機械学習/ディープラーニング熱の高まりを見ていると、「もうAIが全部決めてくれればいいのに」と思うことがあります.
しかし、実際には、その「全部」という領域の範囲は、理論上は「全部」ではないかもしれない?ということなんですかね.
こんな感じでもやもやしてくるので、この本はオートマトンと形式言語の入門書として、最適な本だと思いました.
「白と黒のとびら」というオートマトンと形式言語を物語にした本を読んだ. 面白かったが、オートマトンを知らないと「だからなんなんだ」感がすごいので、関連書籍を読むことを強いられる. 入門書として逆に優秀.https://t.co/hRjp2j90Vw
— j_ikegami (@jumpei_ikegami) 2018年1月1日
自己肯定感を爆上げする、MRM(Morning Routine Management)を始めてみた
あけましておめでとうございます.
しがないラジオ パーソナリティのgamiです.
2018年になるにあたって、今年の目標を何にしようかなーと考えました. やっぱり「普段やりたくてもできていないこと」を、まずはちゃんとできるようにしたいなあと.
例えば、Webエンジニアなので趣味でコード書きたいですし、昨年で15kg太ったので運動したいです. 家の掃除とかも、ついサボって埃だらけになります.
MRMってなあに?
唐突ですが、MRM(Morning Routine Management)という概念があります.
特に仕事以外で日々やるべきことを、毎日のルーチンに分割して、朝の時間ですべてやるための習慣マネジメント手法です.
さっき私が考えました.
ネーミング自体は先ほど5分くらいで考えたのですが、構想は3年前くらいから持っていた気がします. ただし、ちゃんと実践できていなかったので、今年はこれをちゃんとやっていきたいなと思うわけです.
なぜ朝なのか?
朝活と夜活のどっちがいいのかという論争は、ググるとたくさん出てきます.
私は朝活派です.
毎日決まったことをやろうとするとき、夜だとどうしても予定が入ってしまう日が多く、まとまった時間が取りにくいです. 一方、朝であれば、起きる時間と出社時間は(頑張れば)固定できるので、毎日2時間とか3時間とか確保できます.
なので、決まったルーチンをやるなら、朝の方がいいと思いました.
これまでのMRM実践
これまでもMRMっぽいことを実践しては、うまくいったり挫折したりしてきました.
私はむかし公務員試験を受けて失敗したりしているのですが、そのときは自己肯定感が大変なことになったので、リカバリのために数ヶ月間、毎朝ランニングをしました. 特に複数のルーチンを管理するには至りませんでしたが、毎朝同じことをすることの良さを実感しました.
また、2016年には、Google SpreadSheetに朝やるべき習慣をすべて書き出して、それをスマホで見ながら毎日こなしていくということをしました. そのときは、掃除、洗濯などの家事から、爪切りなどの週一タスクも曜日限定ルーチンみたいにして管理していた気がします.
これも、何も考えずにSpreadSheetに書いてあることを上から順番にやるだけで、自然と運動できるし、部屋は毎日きれいだし、最高でした.
ただし、SpreadSheetをスマホで見るという運用が地味にめんどくさくて、やめてしまいました.
MRMのプロセス
というわけで、これまでの実践から、 「日々の生活でやるべきことを毎朝のルーチンとして細かい粒度ですべて定義し、その通りにやっていく行為」 はすごくいいという結論に至りました.
ただし、その行為を何と呼べばいいかわからなかったので、今回、MRMという呼称を付けました.
私の中のMRMプロセスをざっくり定義すると、以下のようになります.
1. 日々の生活の中で、やるべきこと、やりたいことを洗い出す
感覚値では、以下のように分けると出しやすいです
すでに毎朝やっている当たり前のこと
- 例
- 「朝起きて立ち上がる」
- 「トイレに行く」
- 「シャワーを浴びる」
- 「歯を磨く」
- 「服を着る」
やるべきだけどできていない家事など
- 例
- 「洗濯をする」
- 「掃除機をかける」
- 「皿を洗う」
- 「爪を切る」
自己成長のためにやりたいこと
- 例
- 「読書する」
- 「ブログを1記事書く」
- 「趣味の開発でcommitする」
2. 毎朝やるルーチンとして正規化する
毎朝何も考えずに同じルーチンを回すために、以下の3要素を適切な度合いに調整します.
- ルーチンの「頻度」
- ルーチンの「粒度」
- ルーチンの「程度」
「頻度」の調整
例えば、「爪を切る」は毎日やると深爪になってしまいます.
そこで、曜日別ルーチンを作成し、例えば「爪を切る」をその月曜日に割り当てます. イメージとしては、ある1つのルーチンの中身が曜日によって変わる感じです.
「粒度」の調整
例えば、「シャワーを浴びる」というルーチンは、私の場合、以下の子ルーチンを含んだ複雑なものです.
- 「下着とタオルを持って浴室に行く」
- 「服を脱ぐ」
- 「シャワーを浴びる」
- 「身体を拭く」
- 「服を着る」
- 「浴槽を掃除する」
こうした大きな粒度のルーチンを、適切な粒度まで分割します. 「どの粒度だと、『何も考えずに』実行できるか」を考えると、いい感じになります.
「程度」の調整
例えば、「ブログを1記事書く」というルーチンは、毎朝やるには重いです. 仮に実行しても、薄めの記事が量産されてしまうことになりそうです.
「どのくらいやるのか?」が不明確なルーチンについては、毎朝やれる/やるべき量を設定します.
ブログの例で言えば、「30分間以上書く」など時間の長さで定義したり、「50行以上書く」などアウトプットの量で定義したりします.
3. 朝起きる時間を決める
朝起きる時間を決めることで、毎朝のルーチンにどのくらいの時間を割けるか決まります.
私は毎朝6時に起きます(宣言).
4. どのルーチンをどの順番でやるかを決める
効率性やモチベーションの観点から、ルーチンをどの順番でやるかを決めます. 時間内に終わらないルーチンは、程度を下げたり消したりします.
最初は仮置きで決めて、やりながら調整すればいいです.
5. 毎朝決まった時間に起きることを決心し、実行する
一番大事です. これができると、勝ちます.
6. 毎朝PDCAを回す
毎朝決めたルーチンを淡々とこなしつつ、順番や内容をチューニングしていきます.
うまくできない、そもそも朝起きられない、というときは、自分が悪いのではなくルーチン設定が悪いと考えて、ひたすら改善します.
私のルーチンリスト
ということで、2018年1月現在の私のルーチンは以下です. 再開してすぐなので、ちょこちょこ変わると思います.
- 立ち上がる
- ポッドキャストを聴き始める
- 1日の予定を確認する
- トイレに行く
- 20分以上ランニングする
- 体重計にのる
- 布団をしまう
- commitする(=プログラミングする)
- 筋トレする(毎日部位を変える)
- Slackに筋トレ報告
- COMPとプロテインとサプリを飲む
- 皿を洗う
- タオルと着替えをもつ
- イヤホンを外す
- シャワーを浴びる
- イヤホンをつける
- 浴室をシャワーで掃除する
- スクイージーをかける
- 髭を剃る
- 歯を磨く
- 髪を乾かす
- 歯をジェットウォッシュする(ドルツEW-DJ61-W)
- 掃除機をかける
- 1 tweetする
- ブログ20分以上書く
- 服を着る
- 家を出る
30個弱あります. すごいですね.
数日続けた感じ、最初のランニングさえできれば、他は結構いける気がします. ランニングモチベを上げるために、3万円のスニーカーを買いました.
NB1という、NewBalanceのスニーカーの全パーツの色と素材をオンラインで選んで注文できる夢のようなサービスを使って注文した靴が届いたけど、完成品も非常に好みで良い. これが、マス・カスタマイゼーションっ!https://t.co/By7s83KZFI pic.twitter.com/WkpETTMatR
— j_ikegami (@jumpei_ikegami) 2017年12月29日
あと、起きた瞬間に出発できるように、夜は靴下とウィンドブレーカーを身に付けて寝ています.
筋トレは、ダンベルとフラットベンチが家にあるので自宅でやります.
- 出版社/メーカー: ファイティングロード
- メディア: その他
- この商品を含むブログを見る
ファイティングロード (FIGHTINGROAD) フラットベンチPRO
- 出版社/メーカー: ファイティングロード
- メディア: その他
- この商品を含むブログを見る
トレーニング内容は、石井直方先生を信奉しているので、この本をやっています.
- 作者: 石井直方
- 出版社/メーカー: マイナビ出版
- 発売日: 2014/02/22
- メディア: Kindle版
- この商品を含むブログを見る
まだ洗濯とかゴミ出しとかがルーチンに入ってないので、今後どっかに混ぜ込みます.
MRMの効用
MRMを少し実践してみた感じ、すごくいいです. もうちょっと言語化します.
QOLが上がる
掃除や皿洗いなどを毎日ちゃんとやるので、部屋がきれいな状態で保たれてQOLが上がります.
「やるべきだけどやれてない」感が減る
QOLと似てますが、より精神的なメリットです.
仕事から帰ってきて、家が埃まみれだったり、洗っていない皿が大量にあったりすると、「やってねえ...でも疲れた...」という気持ちになって意志力とかが削られます. そういう「やるべきだけどやれてない」感からくる精神ダメージを軽減できます.
自己肯定感が上がる
自分で決めたことをその通りにこなすと、「自分をコントロールできている」という感覚から自己肯定感が上がります. また、単純に学習やアウトプットに時間を割けるので、スキルや周囲からの評価も上がります.
良いこと尽くめですね!
MRM実践のために諦めること
とはいえ、毎朝MRMをちゃんと実践して上記のメリットを得るには、何かを捨てなければいけません. ここは、選択と意志の問題です.
夜更かしする
確保したい睡眠時間にも依りますが、家で夜更かしできなくなります. 私は23時には寝ます(予言).
夜の飲み会でお酒をたくさん飲む
上と同じですが、飲んで終電で帰るとかができなくなります. 「飲んだ翌朝は休む!」と決めてもいいですが、飲み会が続くとグダグダになります.
「ちょっと朝のランニングがあるので...」とか言って颯爽と飲み会を抜け出しましょう. 飲み過ぎると寝坊するので、お酒も控え目にします(自戒).
朝、布団の中でゴロゴロする
微睡みの中で布団と蜜月の時間を過ごすことができなくなります.
特に冬はまだ日の出前に目覚ましに叩き起こされて、運動を強いられたりして辛いです.
MRMを実現するための強い味方
MRMを実現するときに私が使っているものです.
ルーチンを記録するアプリケーション
ルーチンを脳内に記録し続けるのは辛いので、外部化します.
むかしはGoogle SpreadSheetを使っていましたが、辛いので今は自分でアプリケーションを作っています. 自分がエンジニアで良かった、良かった.
kesamoというスマホ向けWebアプリです.
ルーチンを1つずつ表示させることができたり.
一覧から編集や並び替えができたりします.
使いたい方は、どうぞ! まだ開発中で大きな仕様変更がありうるので、ご了承ください!
ポッドキャスト
ランニングや家事の最中は耳が暇なので、ずっとポッドキャストを聞いています. 好きなポッドキャストが見つかると、「ポッドキャストを聴くために運動する」みたいに主従が逆転するので、ハードなルーチンでも心理的ハードルが下がるという効用もあります.
私はエンジニアなので、Tech系のポッドキャストをガシガシ消費してます.
同じくエンジニアの方なら、まずはこのポッドキャストが軽くておすすめです(PR).
自分がポッドキャスターで良かった、良かった.
マジレスすると、エンジニアならまずはRebuildを全部聞けばいいと思います.
非エンジニアなら、バイリンガルニュースとかを聞けば英語の勉強になっていいんじゃないでしょうか(適当).
まとめ
- 日々やれてないことにモヤモヤしてるなら、MRMおすすめ!
2018年の目標
ということで、2018年はMRMのプロセスの中で、以下をやっていきます.
- 毎日運動する(そして10kg痩せる)
- 毎日コード書く
- 毎日ブログ書く(週1回くらいでshipする)
(なんかラジオで言ったやつから変わった気がする)
今年もしがないラジオとがみぶろと @jumpei_ikegami をよろしくお願いします.