- 普段趣味プログラミングで何か作る時、何かしら新しいことに挑戦するということを意識している
- 例えば何か触ったことのない技術を導入してみるとか、採用したことのない開発手法を取り入れてみるとか
- より具体的に言うとHeroku導入してみるとか、TDDで開発してみるとか
- 折角何か創作活動をするので、ついでに新たなことに挑戦し、新たな学びやスキルの向上へと繋げようという狙い
- ここまではよくある話だと思うけど、mizdraの場合は更に踏み込んで、「新しいことは数を絞って注力できるようにする」ということも意識している
- 新しいことに挑戦するのは多くの場合、非常に負荷が掛かる
- 例えばHeroku導入するにしても、HerokuのCLIやダッシュボードの使い方を学ぶ必要があるし、PaaSを触ったことが無ければそもそもPaaSとは、一体何が出来てどこまで面倒を見てくれるのか、ということから学ぶ必要がある
- 挑戦する数が多いと、それだけ1つあたりに避ける学習時間が減ることになる
- 学習時間が減って新しいことを上手くモノに出来ない、となるのは勿体ない
- 折角挑戦するので、1つあたりの学習時間を確保し、より多くのことをモノにできるようにすると良い
- そこでmizdraがプログラミングする時は新しいことは基本1〜2個、多くて4〜5個になるように努めている
- 少なければ少ないほど1つあたりに割く学習時間が増え、より深い学びへと繋げられる
- 学ばなければならないことが多すぎてこれに挑戦するのは大変そうだなと思ったら、無理して挑戦せず、フレームワークなどを導入して楽をすると良い
- 分からないことには蓋をする
- 回数を積み重ねれば、どんどん見識が広がっていく
- 無理ないペースで段階的に学んでいくことができる
- 見識が広がっていけば、最初はフレームワークを使って見てみぬフリをしてきた部分にもいつしか学習の目を向けられるようになるはず
- mizdraの話だと、以前はWebフロントエンドに閉じこもり、バックエンド触るの回避し続けてたけど、サークルの雑務や業務などを通じて少しずつ知識が備わってきて、最近バックエンドを触り始めている
- SQLはまだよく分からないのでORMで蓋をしている
- 新しいことに挑戦するのは多くの場合、非常に負荷が掛かる
- また、もうちょっと踏み込んで「新しいことには丁寧に取り組む」「時間を割くことに躊躇しない」ということも意識している
- もう少し別の言い方をすると「力を入れる」とか
- 折角挑戦するのでより深く学び、使いこなせるようになると良い
- 例えばあるツールのオプションが存在して、ググって出てきた記事にオススメですと書かれていたので真似して利用する、ではなく、オプションを付けると何が起こるのか、どういう時に使われることを想定しているのか、オプションが実装された背景は何か、今回利用するのは本来の用途的にはふさわしいのか、といったことを必要に応じて徹底的に調べていく
- 例: React 副作用分割パターン - mizdra
- React Hooksを触った際に「React Hooksはどう使うのか」から更に深く思考して、「そもそもReact Hooksって副作用を分割するものだよね」、「そういえば副作用を分割する技術には継承・mixin・HOC・render propsと過去に色々発明されてきたよね」、「それと違うところはなんだろう」、「既に副作用を分割する技術があるのに発明が続いたということはそれぞれに欠点があってそれを改善しようとした意図があるはずだよね。だって技術は螺旋だから。その意図はなんだろう。」「そもそもそれぞれの技術の利点・欠点や生まれた背景は?」「それらを踏まえてReact Hooksでは何が良くなった?」とどんどん深堀りしていった
- 深堀りした結果、React Hooksが任意の副作用の発生する場で使えることが分かったり、過去の発明の利点や欠点が分かったり、React Hooksの優れている点が分かったり、React Hooksは偉大な発明ですねと自信を持って言えるようになった
- とはいえ全てを深堀りしていっては時間が足りなくなる
- これも数を絞って狙い撃ちすると良い
- mizdraは興味のある場所や、深堀りすると勉強になりそうな場所、ググって出てきた記事で分かったようで分からないような解説がなされている場所などを狙い撃ちして深堀りしています
- 新しいことを学ぶ機会はとにかく大切にする
- 「趣味で創作する時は常に何かしら新しいことに挑戦する」という姿勢はプログラミングだけでなく執筆活動でも意識している
- 「普段は動機の項を雑に書くけど今回は丁寧に書こう」、「普段は生真面目な記事を書いているけど今回は緩い感じで笑ってもらえるような記事を書こう」、「本書いたことないので本書こう」、「『はじめに』を丁寧に書いて読者が釘付けになるようにしよう」「普段はプログラマー向けの記事を書くけど、今回は対象読者を広げてデザイナーなどにも読んでもらおう。そのためにそうした人々にとって分かりやすい表現を心がけよう。」 などなど
- プログラミングや執筆活動に限らず、色々な場面で適用できるはず
過去の実例たち
ポートフォリオに載っけられるよう、学んだ知見はできるだけ何らかの形にしてオープンインターネットに放流しているので色々ある。何が言いたいかと言うと挑戦した結果をついでにアウトプットしておくと武器になってお得ということです。
- 乱数調整 入門 - mizdra's blog
- Advent Calendar参加したことないので参加してみた (そもそも初参加 & 初主催だった)
- 長文ブログ書いたことないので書いてみた
- 教材的なものを書いたことがないので書いてみた
- Headless Chrome を使って自動車学校の技能教習の予約が空いたら通知するスクリプトを書いた - mizdra's blog
- puppeteer出たばかりだったので触ってみようということで触ってみた
- Emtimerの紹介 - mizdra's blog
- 今まで開発動機やプログラムの説明を丁寧に書いたことなかったので、今回は丁寧に書いてみようということで書いてみた
- 遅刻可視化ツールの紹介 - mizdra's blog
- リッチなUIのWebアプリ作ったことなかったので作ってみた
- あと裏テーマとして、今まで雑に技術選定してきたので、今回はそれぞれのフレームワークやライブラリを比較・検討し、ちゃんと良し悪しに自信を持って採用しましょう、という挑戦もしていた
- WebAssembly 開発環境構築の本を公開しました - mizdra's blog
- wasm初導入/電子書籍初執筆/VuePress初導入など色々挑戦した
- あと裏テーマとして宣伝方法を工夫して、ブクマを集めてみましょうという挑戦もしていた
- ブログで丁寧な紹介エントリも書きましょうとか、タイトルは「執筆しました」ではなく無料で読めることが分かるよう「公開しました」にしましょうとか気をつけていた
- Google Play Music 向けの #NowPlaying 拡張機能を公開しました - mizdra's blog
- ブラウザ拡張初開発/WebExtensions API導入
- WebAssemblyを使って乱数調整ツールをWebに移植した話 - mizdra's blog
- 初めてのwasmを使ったアプリケーション
- 真面目にアプリケーションの性能評価したことがなかったので、この際wams導入で速くなりました、ではなくどれくらい速くなったのかをグラフを使って分析した
- あとはプログラムのアーキテクチャ図を書いたことがなかったので、drawioを使って頑張って書いてみた
- 日向縁さんの誕生日をお祝いしてゲームを作った話 - mizdra's blog
- ゲーム作ったことなかったのでゲーム作った
- 当時React Hooks登場したばかりだったのでReact Hooks導入してみた
- React 副作用分割パターン - mizdra
- ゆかりスロットを実装した際の知見をアウトプットしたもの
- 過去の技術を比較してどう良くなったのか、というのを丁寧に分析したことがなかったので、丁寧に分析してみた
- scrapboxでちゃんとした記事を書いたことがなかったので、使用感を把握するためscrapboxで記事を書いてみた
- 鋭い洞察を連続して繰り出すことで、長文だけど読者が飽きずに最後まで読み進められるよう心がけた
- ネタに走らず読者の関心を保つ、という1つの挑戦
- 結果として多くのブクマを集められた
- mizdra on Twitter: "ゆゆ式 Advent Calendar 2019 21日目の「今日のゆゆ式」の動画です #ゆゆ式ac
https://t.co/tezNbs9JTK… "
- ハードウェアプログラミングっぽいことしたことないなと思って、レシートプリンタ触ってみた
- PDFやPostScriptのこと、ESC/POSのこと、ネットワーク越しにプリンタを操作する方法、lpコマンド、cups、ドライバの仕組みなどについて学ぶことができた
- その後知見はTM-T88IV 接続メモ - mizdraにまとめた
- Raspberry Pi触ったのも初めてだった
- 当然4コマ漫画裁断して画像処理するのも初めてだった
- ハードウェアプログラミングっぽいことしたことないなと思って、レシートプリンタ触ってみた
- ebith/Switch-Fightstick - mizdra
- 工作したことがなかったので工作した
- ハードウェアプログラミングの素振りはレシートプリンタでしていたので、結構すんなりできた
- 見識の広がりによって段階的に学ぶことができた
- iTerm2 で `cat /dev/urandom` すると印刷ダイアログが出ることがある - mizdra's blog
- 面白技術ネタ書いたことがなかったので書いてみた
- 文体も普段の生真面目なものから趣向を変えて、陽気な人間を意識して書いてみた
- 普段は「20へえ」とか書かない
- これも文章による表現方法を増やすという、1つの挑戦です
- 画像による Layout Shift が無くなる Web がやって来る - mizdra's blog
- 『はじめに』を丁寧に書いて読者の注意を引くことで、スクロールバーから文章量を察して読者が離れてしまわないよう心がけた
- 論文執筆で学んだ姿勢をブログでも活かしてみようと思って活かしてみた
- 普段はプログラマー向けの記事を書くけど、対象読者を広げてデザイナーなどにも読んでもらおうと思って丁寧に書いた
- jxckさんっぽい技術記事書いてみたいなと思って真似してみた
- React 副作用分割パターン - mizdraの時と同様に、鋭い洞察を連続して繰り出すことで、長文だけど読者が飽きずに最後まで読み進められるよう心がけている
- 身につけたスキルを活用し、段階的に学んでいっている
- React 副作用分割パターン - mizdraではReactという関心を集めやすい技術を扱っていて、対してこの記事ではそうではないものをテーマとしてブクマを集めるという挑戦にもなっていた