はじめに
某ウイルスのせいで外出できなくなってから、もう1ヶ月以上は経っています…
4月はじめの時は、この状況が収束してから目標設定をしようと思っていたのですが、どうやらまだまだ続きそうですね。ヘタしたら1年続いてもおかしくない気がしてきました。
そうなった場合に「一年間何もしませんでした」ではもったいないので、現状のままやれることについて目標を立てたいと思います。
フロントエンドのみで実装されたサービスを1つリリースする
プライベートでは今まで、簡単なchrome拡張やコンテストのためのデモアプリくらいしか実装してきませんでした。
そこで今期は、webから利用可能なサービスを実装したいと考えています。
とはいえ、いきなりサーバーの運用をするのは技術的にもコスト的にもハードルが高いので、まずはフロントエンドのみの実装という縛りでやろうと思います。
サービスのアイディアは今考えているところですが、何かリモート作業に役立つものができたらいいなと考えています。
代表的なCLIツールを日常的に使えるようになる
便利そうだな〜と思いつつ、今まで手を出してこなかったツール達があります。
具体的には以下のやつらです。
- vim
- git
- tmux
「いや、tmuxはともかくvimやgit使ってないわけないでしょ」と言われそうですが、まぁ実際には使っていますw
しかし、vimなんて「iして編集したらESCからの:wq」くらいにしか覚えていません。最近になってようやくddで一行消せるとか、shift+gで最後の行に飛べるとか覚えた程度です。行番号の出し方は毎回ググってますw
そういうレベルなので、ペア作業してるときとか相方にイライラさせてるような気もしておりw、もうちょっとまともに使えるようになりたいなーと思っている次第です、ハイ。
今までこのレベルで済んでいたのは、僕が主にGUIエディタ(というかVSCode)使いであることが大きいと思います。今までは「別にクリックで動くんだったらコマンド覚えなくてもよくない?」というスタンスでした。
しかし最近は、双方を組み合わせることでより作業効率が上がるのではないか?と思うようになりました。例えば、VSCodeのエディタでvimのキーバインディングを使うとか、これまたVSCodeのターミナルでtmuxを使うとかです。
どちらかといえばマイナーな使い道でしょうが、一歩進んだ使い方ができるような予感があります。
6冊以上の技術書を読む
僕はこれまで、技術書というものをあまり読んできませんでした(資格試験のための問題集等を除く)。
理由は以下の通りです。
- わからないことはwebで検索することで解決できた
- 理論を読むよりもサンプルコードを動かす方が理解しやすかった
というわけで、APIリファレンスとか、QiitaやGitHubでコードを読めば十分だったのですが、最近になって書籍を読むメリットが思い浮かんだことで、モチベーションが出てきました。
具体的には以下の通りです。
- コードの裏にある思想を学ぶことができる
- 検索クエリが思いつかなかった情報を得ることができる
- 論拠としての信頼性が高い
- 適切な文章表現を目にすることができる
「コードの裏にある思想を学ぶことができる」というのは特に最近実感していて、機能としては同じことを実現していても、保守のしやすさという点で差がつくことがあります。一般にデザインパターンと呼ばれるものもそうですし、「リーダブルコード」に書かれているような内容もそうだと思います。
そういったことを学ぶには、個人がオレオレ流を紹介している記事を読むよりも、複数人による添削が入っている(であろう)書籍を読む方が適切なように感じました。これは「論拠としての信頼性が高い」にも近いですね。
また、最後の「適切な文章表現を目にすることができる」というのも個人的には期待しています。
僕は知識を獲得できたかどうかの指標として、「相手に伝えることができるか」ということを意識していますが、やはりなかなか難しいです。なので、書籍を読むことで技術そのものだけでなく、それを説明するエッセンスについても学べれば良いなと思っています。
以上を踏まえると、実は紙の書籍に限らずとも論文のPDFや、経典のようなwebページを読むのでも良いかもしれません。が、分かりやすい目安として、1ヶ月に1冊=半年で6冊を目標にしたいと思います。
Pythonを学んで競技プログラミングを始める
僕はなんらかプログラミングをするとき、言語から入ることはほとんどありません。なぜなら、多くの場合使う言語はプラットフォームによって固定されるか、プロジェクトの経緯によって決まるかのどちらかだからです。
そのせいか、中途半端に汎用性のあるPythonやRubyはあまり書いたことがありません。「書きやすい」とよく聞くものの、特別言語仕様が好みということも無いですし、むしろ基本的な構文の記法が独自だったりして面倒だなぁと思うことさえありますw
そんな僕がなぜPythonを学ぶのかというと、競技プログラミングや学術計算に興味が出てきたからです。
個人的に競技プログラミングはスポーツや趣味の類だと思っており、今まで興味がありませんでした。
しかし、エンジニアとしてアルゴリズム力を上げておくことも大事だなと思うようになり、それには競技プログラミングの問題が良い題材になるのではないかと考えたわけです。
なぜアルゴリズム力を上げることが大事だと思ったのかというと、特別理由はありませんw
ただ、アルゴリズム力があるエンジニアは「つよいエンジニア」として認識されるので、自分の市場価値を上げるにあたっては有効かなと考えています。
では競プロにPythonが最適かというと、実は界隈ではC++の方がメジャーのよう、Pythonは2番手らしいですね。
参考: https://qiita.com/knakajima3027/items/809be5abe5c3d9f29ee7
とはいえ、サービスを実装するときにC++を使うことはほぼないので、僕はPythonを選択したいと思います。競技プログラミングにハマって高みを目指したくなったら乗り換えるかもしれないです。
Androidにおけるメディア処理を理解する
業務の都合上Androidの開発力を上げる必要が出てきており、個人的にも今興味があるプラットフォームです。
そのためには「kotlinを勉強する」のような目標も考えたのですが、領域を絞った目標にした方が達成度合いが分かりやすいので、今回はメディア処理に着目しました。
具体的には、以下のようなことをできるようになりたいです。
- カメラの映像を取得して描画する
- 映像のフレームを取得してフィルターをかけられる
- マイク入力にフィルターをかけられる
- 録画録音ができる
- 他の端末とメディア通信ができる
おわりに
今年度上半期の目標を考えたのですが、技術的な学習目標が多くなったので「エンジニア編」として切り出してみました。
こうしてみると、今期は今までやってこなかった領域を勉強したい気持ちが高いような気がします。
一方で、ここ一年くらい勉強した内容で実現したいアイディアもあるので、それはしっかり形にしてアウトプットしたいと思います。
生活編も別記事でまとめます!
コメント