あけましておめでとうございます。今年もよろしくお願いいたします。新年一発目の更新ということで、今年の抱負なんかを語ってみようと思います。昨年は勉強したい言語に的を絞って書きましたが、今年は雑多な諸々を含めた抱負です。
2020年の目標
いきなりですが目標です。3つ考えました。- Androidアプリを10本以上リリースしたい
月1本ペースでリリースしたいですね。多分2月ぐらいには現在の忙しさから脱却できると思うので、10ヶ月として10本です。Flutterが優秀なのでプログラミング自体は大丈夫な気がしますが、10本分のアプリのネタがあるかどうかの方が問題かもしれないです。今のうちにネタ集めしといた方がいいかも。
- Linux再勉強
2020年になって一番最初に思い出したのは2000年の頃の自分でした。ちょうど20年前になります。あの時はちょうど2000年問題で世間が揺れている時だったのですが、まだフリーランスになりたてで、12月いっぱいで客先常駐の案件が切れて2000年問題から離れた年末年始を送れたのを覚えています。
世の中のITエンジニアが年末年始に仕事していた時に自宅で何をやっていたのかというと、これからはWindowsじゃなくてLinuxだよなぁ、なんて思って雑誌かなんかの付録についていたCD-ROMからRedhatの5.2をインストールして弄くり回してました。それが最初のLinuxとの出会いです。ということで私がLinuxを触りだしてからこの正月で丁度20年経ちました。
20年も経つと技術もかなり変わります。時代の変化に合わせて勉強してきたつもりではいますが、やはり新しい技術からは遅れてる気もしますので、これからの20年を念頭にいちど頭の中を真っ更にして勉強し直してみようと思います。
- サイト作りに力を入れる
フリーランスとして生きていく以上、収入源は複数ある方が何かと安心です。ですが、昨年はサイト作り(アフィリエイト)は殆ど出来ませんでした。今はさすがに客先常駐案件はやっていないのですが、自宅で仕事をしているとついついサボってしまいがちなので、自制して一つの仕事をやっている時は他のことを考えないようにしています。ですが、それではいつまで経っても他の収入源は確保できません。ですので、今年は意識的に受託案件以外の仕事をメインにしてみようと思っています。それがサイト作りであり、アプリ作りです。今年はこちらに力を入れていこうと思います。
2020年に勉強したい言語
- Dart(Flutter)
昨年から引き続きなのですが、Dart(Flutter)は続けたいですね。アプリ自体はJavaやKotlinで書いた方が多分楽なのですが、今後、iPhoneアプリでのリリースを考えるとFlutterの方が良いと思ってます。
それと何よりも大きいのがAndroidの次期OSと見られているFuchsiaではFlutterが標準の開発環境になるらしいということです。現行のAndroid、次世代のFuchsia、そしてiPhone。更にデスクトップアプリも作れますしWebアプリも作れます。現状でこれだけマルチプラットフォームなのはFlutterぐらいしか無いので今のうちに勉強して使いこなせる様になっておきたいです。
ただ、Dartは癖がありすぎる気がしますね。何事も慣れだとは思いますが、今のとこ慣れてないです。前途多難。
- Rust
昨年勉強出来なかったRustも引き続き勉強したいと思ってます。でも、やれるとしても後半かな・・・?MSがRust推しになっているらしいので、もしかしたら今年で一気に化けるかもしれないですね。早く勉強して波に乗りたいなぁ・・・。
- Erlang
Erlangも引き続きやりたいとは思ってます。・・・が、多分そんな余裕は無いと思っているので半ば諦めてます・・・。でもサーバサイドの技術者としてErlangは見過ごす事の出来ない言語だと思ってます。いつかはやらなきゃならないと思っているので、なるべく早く勉強したいです。
- 番外:英語
フリーランスでやっているので客先にあまり行くこともありませんし、だったら海外でもいいんじゃないか?ってことで海外に移住することを考えるようになりました。消費税周りも面倒くさいことになりそうですし、税金面で有利な国で生活したいと思ってます。それを踏まえてのスマホアプリ開発とアフィリエイトです。この2つの収入源が確保できれば、とりあえず移住に向けてのハードルはかなり低くなりますしね。
今のところ、どの国に移住しようとか具体的なことは何も考えていませんし、考える余裕もなかったりしますが、とりあえず英語を話せなければ話にならんだろ、という事で英語も勉強しようと思ってます。まぁ他の勉強の息抜きにやる程度なので、あまり身にはならないかもしれないですが、来たるべき将来に向けて地道に勉強していきたいです。
2020年に勉強したいDB
昨年、PC環境をかなり変えたので、自宅サーバ環境も変わってきています。基幹がRabbitMQとPythonなのは変わっていませんが、DBはPostgreSQL以外の物も導入します(現状テストで導入済み)。俗に言うNoSQLというやつで、現状、2つにまで絞りこんでますがテスト運用次第でどちらかに絞りこんで勉強したいと思います。- CouchDB
ErlangでできてるDBです。ひとことで言うとドキュメントDBです。スキーマレスでどんなデータでもぶち込めます。MongoDBと争ってましたが、CouchDBの方が軽いので最終選考迄残りました。
かなり自由な反面、プログラム側である程度作り込まないと使い物にならない気がします。一次データをCouchDBで受けて、そこから抽出したデータをPostgreSQL側にいれて運用する事を考えてます。スキーマレスなのはやはり強いです。
- ArangoDB
こちらもスキーマレスですが、CouchDBとはかなり違います。DBとしての理想形はこれなんじゃないか?と思ってしまえるぐらい凄いです。ひとことで言うとグラフも使えるドキュメントDBでしょうか?おそらく次世代のDBはこういう物になるんでは無いかと思ってます。
当初はPostgreSQLに格納しているデータをグラフ化してみたくてグラフDBを選考していたのですが、ArangoDBあればPostgreSQLいらなくね?っていう結論にまで達しています。CouchDB+PostgreSQLかArangoDBかの2択ですね。インデックス張れるのはでかいです。
唯一の難点はCore2世代のCPUだと最新版がコンパイル通らない事です。サーバ機がC2Qなので、最新のバージョンではなく1世代前のバージョンしか動かないです。バージョン差がどれぐらいあるかが問題なのですが、Corei5のMacに最新版を入れてみたのですが、もしかしたら結構大きい差異があるかもしれません。それも含めての検証期間です。
現状ではどちらの環境でもやりたい事は出来ているのですが、グラフ化できるメリットがどれぐらいあるのかで決まりそうです。グラフ化のメリットが大きければサーバ機買ってArangoDB化しようと思いますが、そこまでメリットなければCouchDB+PostgreSQLの構成になりそうです。
どちらにしてもNoSQL環境には慣れていないので勉強ですね。json投げるだけでデータ弄れるのは楽な反面、javascriptライクな問い合わせ言語にちょっとモヤモヤしています。
2020年に勉強したいサーバサイドアプリケーション
先述したDBもサーバサイドのアプリケーションですが、それ以外にも触ってみたいものがいくつかあります。- ApacheNifi
データオーケストレーションツール。わかり易く言うとデータフローのツール。Javaベース。
現状はRabbitMQとLuigiでやってますが、それの乗り換え先として考えてます。・・・が、軽く触った感じだとRabbitMQとLuigiの方がやりやすいです。NifiはGUIベースで管理できるので、フローが分かりやすいのですが、あくまでも自宅サーバで個人で動かしてる物なのでNifiで判りやすくするメリットは薄いっていうのと、Javaベースなのが気に入らない。
ですが、知っておくに越したことは無いですし、多分知っておいた方が良い部類のアプリケーションなので、勉強はしておきたいです。
- nodered
こちらはIBM謹製のデータフローツール。nifiのIoT版とでも言うべきか。こちらも自宅サーバの環境変更で導入を考えたけども、nifiと同じ理由(こちらはGUI&Javascript)で採用されなかった。でも勉強しておくに越したことがないので勉強候補。
なんだかんだ言って、世の中のIoT化は進んでいるので、将来的には絶対に勉強しておきたい。
まとめ
今年は色んな意味で転換の年だと思ってます。仕事のやり方からなにから、これから先を考えていろいろと変えていこうと思っています。またそれを踏まえた勉強を多くしていこうと思っています。個人的にはこれからの世の中の流れは中小企業が淘汰されていく時代になるんじゃないかと感じています。今まで存在していた中小企業が淘汰され、個人事業主がもっと重用される世の中になっていくのでは・・・?なんて薄っすらと感じていますが、現状サラリーマンの方や他の個人事業主の方はどう感じていますでしょうか。
当サイトでは転職に主眼をおいたコンテンツを書いていますが、もしかしたらもう転職すらも時代から遅れ始めているのかもしれないです。サラリーマン→フリーランスの流れは今後加速していくと思います。個人で稼げる技術を身につける為にも、みなさん独学しましょう!