読者です 読者をやめる 読者になる 読者になる

2016年1月まとめ

月報 雑文

はじめに

前年は10月から月報をまとめられなかったので、少し対策をするようにしました。

takuan-osho.hatenablog.com

といっても、やっていることは前回の記事で書いたように、週報を書くようにしたということだけです。これで月のまとめに今までやったことを思い出すという作業を大幅カットできるかと思ってます。

takuan-osho.hatenablog.com

やったこと

  • ブログの定期的なアウトプット

    • 去年に比べれば2〜3倍以上と圧倒的なアウトプット量。
    • これからは技術的なエントリの割合を増やしていきたいと思っている。
  • 新しい習慣

    • 運動(スポーツジムへの登録と利用)
    • 週報
      • 始めてから続いていてかなりいい調子。
      • 分量を書きすぎるのを避けるようにしているのがポイントかも?
  • Sphinxへの大きな意味でのコントリビュート

    • ブログに書いていないけれど、Pyladies Tokyo Meetup のSphinx回でチューターとしてヘルプに入ったりした。
    • epub3ビルダーに関しては継続中。現在は指摘を貰っている箇所の修正にまだ手がつけられていない…
  • 新年会とか飲み会系

    • 84pyの新年会に今年も参加した。同年代でやる飲み会はいいもんですね。
      • データサイエンティストの裏側的な話とか色々面白い話が聞けたのもよかった。
    • 空手方面ではお世話になっていた先輩が田舎に帰るということで送別会にも参加。
      • 自分が空手を始めてからずっとお世話になっていたので少し寂しい。
  • 新年の抱負で挙げたことの実践

    • 『プログラミングの基礎』は着実に進めている。
    • 『安全なWebアプリケーションの作り方』の再読は少し停滞中。すこしよろしくない。
  • CSS

    • CSSは仕事で要求されていることもあって最近特に勉強している最中。IEのサポートポリシーも変わったのでflexboxとかガリガリ使いたいので各方面の説得をしようと考えているところ。
    • BEMとかそういう手法で守らないと容易に破綻するCSSという言語はクソだなという思いを最近強めているところです。

所感

2015年の振り返り記事でも書いたけど、去年末に大掃除をした影響で随分と生活がスムーズになり、2016年は1月から調子よくスタートを切れて気分がいい状態。

takuan-osho.hatenablog.com

やったことにも書いたように新しいことを始めたり、今まで手をつけられなかったことに手をつけられるようになったので、この調子を続けていけるようにしたい。

これから

今度は既存の習慣の見直しを視野に入れて日々の生活の改善をしていきたいところ。

技術方面では、コードを書きつつ、技術的なアウトプットを増やしたいという気持ち。

あと、運動を習慣化して健康体と柔軟な身体による一段上の空手を手に入れたいですね。

新しい習慣を2つほど始めた

雑文 人生

年末年始の大掃除の効果が効いていて、新年迎えてから割といい調子でここまで過ごせたので、やろうかなと思い始めたことを2つほど始めてみた。

新しく始めたこと

スポーツジムに登録して通う

いきなり挫折率高そうなやつですが、家族から譲り受けた無料体験チケットを2枚使ってどんな調子か感じてから決めたので、続けて行けそうというある程度の賞賛はある。今日登録してきた。

ダイエットしたいというのもあるけど、それよりも現状やっている空手の動きの質を高めるために体力作りと柔軟性のアップを目的にしている。

スポーツジムにした理由は以下の通り。

  • 最寄り駅の近くにあって通いやすい。
  • 1月の先着で数ヶ月分無料になるキャンペーンにまんまと釣られた。
  • 福利厚生使えば月々のかかるお金が普通より大分安くなった。
  • 家族が該当スポーツジムに以前登録していてどんな感じか事前に聞けた。

後付け要素もあるけど1つ目はこんな感じ。

週報を書く

「週報って何?」って人は以下の記事を読めばいいかも。

bellflower.dodgson.org

やろうと決めたのは上の記事を読んでからだけど、やろうと思ったきっかけは上の記事ではなく、rebuid.fmの以下のエピソードを聞いたからだ。

rebuild.fm

2015年は月ごとにまとめとしてブログ記事に書いていたが、毎回月末になってまとめるのが大変で、結局10月以降は実施できなかったので、その反省もこめて、週報を軽く書きためて月単位でブログ記事にしようかと思っている。

で、週報はDay Oneとか使って自分用メモとしてやっていくつもり。

これはスポーツジムよりも気をつけないと習慣づけ出来ないタイプのものなのでリマインダー駆使してどうにかしておきたいところ。

新しく始めるために削ったこと

1日は24時間しかないという現実があるので、新しく習慣始めるなら既存の習慣を見直さないとカオスになるというのが今までの人生経験上明かなので、そこについて軽く書く。learnとunlearnは表裏一体。

といっても、今意識してやっているのは以下の行動を止める・少なくすることだ。

  1. ダラダラしたネットサーフィン
  2. ダラダラしたアニメ視聴

ネットサーフィンもアニメ見るのも止めたわけじゃないが、楽しくもないのに明らかに惰性で続けていてよくない視聴行動している時間が長いのが寝不足とか生活リズムの崩れを誘発していたので、その分だけを削るという意味だ。

「人はパンのみに生きるにあらず」なので、隙間時間とか気分転換など、ちゃんと楽しめて有意義な時にアニメ見るようにしたり、ネットするようにしている。

というか完全にそういう行動を断つと発狂するのでそういうことはしない。あくまで惰性で続けてしまっている所だけを削るように気をつけている。

思ったこと

今の私にとってはlearnよりunlearnが重要なんだろうなと感じるので、次は既存の習慣の見直しとかをする必要がある気がしている。

やりたいと思っていることを書き出してみる

雑文 プログラミング IT

2016年の抱負の記事で書いたことと被るけど、最近勉強していても色々なことに目移りして一つのことをやりきることが出来ていないように感じるのと、今自分がやりたいことの種類がどれくらいあるのかちゃんと把握してなかったので書き出してみようと思ったので書いてみる。

takuan-osho.hatenablog.com

基礎固め系

アルゴリズムやプログラミングの基礎作り

以下の本を読むだけでなく、中のコードをちゃんと書いて手を動かして理解してアウトプットすることを含んで取り組んでみる。

プログラミングの基礎 (Computer Science Library)

プログラミングの基礎 (Computer Science Library)

これは最近取り組んでいるが、とてもいい本なので終わったら感想エントリ書きたい気持ちでいる。

オンラインジャッジではじめるC/C++プログラミング入門

オンラインジャッジではじめるC/C++プログラミング入門

プログラミングコンテスト攻略のためのアルゴリズムとデータ構造

プログラミングコンテスト攻略のためのアルゴリズムとデータ構造

これらは私のアルゴリズム周りの弱さを補強する目的で。特に『プログラマの考え方〜』はいい本なので今年半ばまでに最後までやりきって身につけたいと思ってる。

セキュリティ周り

一度最後までやったことはあるが、すっかり頭の中から抜けているので復習する必要がある。

コードを書く系

技術的な分野

今後のことを考えて以下のことを練習していきたい

  • ES2015を前提にしたJavaScriptを書く
    • ツールの使い方を覚えるというより、Web標準や仕様にのっとった知識に基づくモダンなJSを書けるようにする、ということ
    • fetch APIとかPromiseとかよく知らないので、そういう所を埋めていく。
  • 今時のCSSの書き方を学ぶ
    • IEのサポートポリシーが変わった現在、たとえばfloatレイアウトではなくてflexboxを活用していくなど、モダンかつ標準に則ったCSSを書けるように出来たらいいなと思っている。
    • どちらかというとCSSは設計力の方が問われると思うので、その辺りも埋めていきたい。
  • Node.js
    • Node.js自体やエコシステムの理解を深めるのも大切だけど、それよりかはコールバックによる非同期プログラミングのやり方とかイベント駆動のプログラムのやり方を学んでいきたいという意味で書いている。
  • iOSプログラミングとSwift
    • これは単純にアプリを作って「これ、自分で作りました」とアピールできるものが欲しいという意味。

あとPythonとかGoとか書こうと思えば色々あるけど、現状の仕事とか今後のことを考えたらJavaScriptCSS力高めた方がいい気がしているので、この2つを優先した方がいい気がしている。

読書系

基礎固め系よりかは優先順位下げるけど、実力をつけていくために読んで身につけておきたいものだったり、純粋に興味があるから読みたいもの。

サイバーセキュリティプログラミング ―Pythonで学ぶハッカーの思考

サイバーセキュリティプログラミング ―Pythonで学ぶハッカーの思考

EPUB 3 Best Practices

EPUB 3 Best Practices

基礎からわかるTCP/IP ネットワークコンピューティング入門 第3版

基礎からわかるTCP/IP ネットワークコンピューティング入門 第3版

マスタリングTCP/IP 入門編 第5版

マスタリングTCP/IP 入門編 第5版

検索エンジン自作入門 ~手を動かしながら見渡す検索の舞台裏

検索エンジン自作入門 ~手を動かしながら見渡す検索の舞台裏

Code Reading―オープンソースから学ぶソフトウェア開発技法

Code Reading―オープンソースから学ぶソフトウェア開発技法

余力があればやる系

機械学習

データサイエンティスト養成読本 機械学習入門編 (Software Design plus)

データサイエンティスト養成読本 機械学習入門編 (Software Design plus)

取りあえず今手持ちのものでパッと思いついたものをリストアップしたので、コレヲ軸にして今月は勉強していこうと思った。最初の方に挙げたものは実際着手しているので

JavaScriptのthisがよく分からなかったので色々調べた結果、MDNが一番頼りになった

プログラミング JavaScript

前回の記事で書いたとおり、最近JavaScriptを仕事で使う機会が増えてきたので、ES2015の学習も含めてJavaScriptの学習をしている。

takuan-osho.hatenablog.com

もともとJavaScript力低いのでJSを使う上で知っておかないといけないことを色々知らないわけだけど、その中でも輪をかけて理解できていないものの一つにJavaScriptthisがある。

JSの経験が少ない他言語経験者がよくはまると言われている(と私は思っている)JSのthisの使い方について、私も当然の如くちゃんと理解しておらず、色んな記事を読んでみたけど、「なんでこういうことになるの?覚えきれない」という感想しか出てこなかった。

そんなわけで分からないなあという思いをしていた時、「そういえばMDNでthisの説明をちゃんと読んだことなかったな」と思い、MDNでの説明を見てみることに。

developer.mozilla.org

色々他の記事を読んで自分で手を動かしたりしてそれでもよく分からないというステップを踏んだ後に読んだからということもあるとは思うけれど、MDNの説明が一番「何故?」ということに答えてくれたので、今の私にちょうどよかった。

ちゃんと公式(かそれに準拠する)ドキュメントを読んでから取り組まないと時間を余計に消費してしまうなと思った一日でした。

Electron勉強してとても参考になった記事

Electron JavaScript プログラミング

最近業務の一環でJavaScriptを色々いじる機会があり、このご時世JSいじるならES2015やらなくてはと思って最近ちょこちょこ書いていたりする流れを受けて、Electronにも最近手を出している。

私みたいなJS初心者かつGUIアプリの経験も少ない人がElectronアプリ作成しようと思った時に一番最初にはまると思われるのが、「公式ドキュメントチュートリアルやった後、何すれば良いのか分からない」という状態だ。

2016年1月9日現在、Electronの公式ドキュメントはステップバイステップで教えてくれるというよりかは「必要な情報はリファレンスみたいにしてまとめてるから、そこから必要な情報を自分で拾い上げて自分の作りたいもの作れば?」という雰囲気漂わせている(と個人的には感じる)。

そのため、「real worldなアプリってどう作れば良いの?メインプロセスとレンダラプロセスが違うのは分かったけど、実際作る時にはどう違いを意識してやればいいの? ipcMain, ipcRenderer, remoteモジュールって何なの?」という状態になってしばらく訳が分からないまま時間が過ぎてしまった。

そこでたまたま次の記事を見つけて自分で手を動かしてやってみたら、上記に書いた疑問が大体解消して、Electronアプリの作り方が分かってきたので、私みたいに困っている人は読んでみたらいいと思う。

medium.com

上の記事をやると以下のことが分かるようになるので、チュートリアルの次にやるとちょうど良いと思う。

  • 複数画面の構築の仕方
    • ipcMain, ipcRendererモジュールを使ったメッセージング
    • remoteモジュールを使ったトレイメニューの構築
  • パッケージングの仕方
    • electron-packagerの基本的な使い方

その他グローバルショートカットの設定の仕方など、色々学べる。

ただ次のような難点もあるので学習する時には注意した方が良いかも。

  • 記事で使われているElectronのAPIはv0.35.0より前の古いAPIの書き方で書かれている
  • ES2015で書かれていない

後者は本質的な難点ではないが、気になる人は気になるかも。私は気になった。

ただ、難点を補って余りあるくらい分かりやすいのでオススメ。

後で知ったけど、Awesome Electronに掲載されている記事のようで、さっさとチェックしておけばよかったと後悔。

2016年の抱負

プログラミング

はじめに

今年の抱負というかやり遂げたいことを書き出してみる。

  1. githubのアクティビティ率を高める
  2. アウトプットの量を増やす
  3. 一つプロダクトをリリースする
  4. SphinxにContributeする
  5. 後色々アレなど

それぞれ軽くコメントつけます。

githubのアクティビティ率を高める

要するにgithubのactivity欄に草生やしていきたいってことです。

何でそう思ったかというと、草生やすくらいに活動していないと何もやっていないと思われているらしく、悔しい思いをすることが多くなったからです。

とはいえ、意味の無いコミットばかりしてもしょうがないので、少し考えながらやっていきたいですね。

現状の草の様子です。

f:id:kutakutatriangle:20160105230518p:plain

アウトプットの量を増やす

具体的には以下のようなことを考えています。

技術書を読んで読みっぱなしにせずアウトプットする

今まで技術書を読んでいるのは止めていないのですが、読んだだけでアウトプットしていないせいか、知識が定着していなかったり自分の成果に繋がっていないように感じたことがやろうと思った理由の一つです。

読んでアウトプットしようと思っている書籍は今のところ以下の通りです。一度読んだのもありますが、少しずつ読み返したりしています。

プログラミングの基礎 (Computer Science Library)

プログラミングの基礎 (Computer Science Library)

オンラインジャッジではじめるC/C++プログラミング入門

オンラインジャッジではじめるC/C++プログラミング入門

プログラミングコンテスト攻略のためのアルゴリズムとデータ構造

プログラミングコンテスト攻略のためのアルゴリズムとデータ構造

選んだテーマとしては以下の3つを重点的にしたいと思っています。

  1. 基礎的なプログラミング能力を担保するためのアルゴリズムの習得・理解
  2. セキュリティの知識と実践
  3. コンピュータサイエンスの基礎的な知識

ブログ記事をある程度定期的に書く

技術書などで得た知識をブログ記事としてまとめられればいいなと思っています。

あと、今年は技術ネタだけじゃなくて、もっと雑多なネタも含めてブログを書きたいと思ったので、それも出来ればいいなと思います。

一つプロダクトをリリースする

これ何回も書いていますが、何かしら「これ、私が作りました!」といえるようなものをリリースしたいので。

多分スマホアプリになる見込みです。多分。

SphinxにContributeする

Sphinx本体へのPull Requestに限らず、コミュニティ活動とかにも少し貢献していきたいです。気持ちとしては!

後色々アレなど

色々出来ていないし、目途も立っていないけれど、前からやりたかったことに手を出してみるつもりです。

達成できて何らかの形で報告できればいいなあと思っています。

まとめ

全て出来るとは思っていないです。

Consulがよく分からなかったので色々調べて勉強する時に訳だった資料をまとめてみた

Consul

最近のDevOpsだとかInfrastructure as Codeとかの流れを汲んだ開発スタイルに少しでも触れていたらHashicorp社製ツールには何らかの形でお世話になっている人が多いと思います。私もその一人ですが、Hashicorp製のツールの中で「これ、よく分からん」というものがあって、それがConsulとSerfでした。

www.serfdom.io

consul.io

というわけで、去年の年末から年始にかけてConsulいじってみて、「なるほど、全自動オーケストレーションとかに使えるツールなのか(そこまで設定するのが大変そうだけど)」という感触を掴めるくらいには理解できてきました。

で、以下はConsulを勉強する時にとても役に立った資料です。

fstn.hateblo.jp

一番最初の「やわらかConsul」はConsulでどういうことが出来るのかを実際にConsulクラスタを組んで体験できるのでオススメです。ただ、バージョンが変わったりしていてビルド時にバージョン番号を一部変更する必要があったりするので、docker-composeの使い方が分かってないとそこで詰まるかも知れません。

2つ目のエントリもやわらかConsulと似たようなものですが、dockerを利用してConsulクラスタを組んで新しめの機能を体験できるようになるのでこれもオススメです。この中で使われているgliderlabsのconsulのDockerfileを読むと軽量なAlpine LinuxのDockerイメージが有効活用されてるなってことも分かって勉強になると思います。

最後はHashicorp製ツールのことを調べていたら絶対にいくつかの資料が出てくる前佛さんのサイトですが、参考役やslideshareの資料含めて、「Consulとは何か?」「Serfとは何か?」ということが分かるので、こちらも読んでみると非常にためになります。 前佛さんはHashicorp社製ツールについて最近本を出しているので、気になる方はそちらも購入してみると良いでしょう。 (私はもう既に買いました)

DevOpsを支える HashiCorpツール大全 (Think IT Books)

DevOpsを支える HashiCorpツール大全 (Think IT Books)