2018年も残すところあと少しです。
今回は今年仕事で使った技術などを紹介したいと思います。
今年はやったことがないことに挑戦した年でした。
2018年の業務
今年使った技術は以下です
PHP, Javascript, Python, React, Vuejs, Elasticsearch, Docker
さまざまな言語とミドルウェアを使いました。
VuejsでSPA開発
去年から引き続きVuejsを使った仕事です。
普通のWebアプリなので特に難しいことはありません。
埋め込み式のSDKを作る
Googleアドセンスのような、ページにタグを埋め込むと表示される広告ウィジェットを開発しました。
ピュアなjsでライブラリを作るのが好きだったのですが、これは軽量Reactっぽいフレームワークでの開発になりました。
わけあってすぐに辞めてしまったのですが、こういった案件はあまりないので貴重な体験でした。
機械学習で顔画像認証システム
取引先の依頼で、アップロードした画像に似た画像を抽出するプログラムを作成しました。
数学をちゃんと勉強していないので、機械学習は避けてたのですが依頼されたので仕方なくやることに。
学習済みのモデルを利用したので数字の弱い私でも簡単に実装できました。
画像から顔を切り出して以下のライブラリで特徴ベクトルを抽出します。
https://github.com/rcmalli/keras-vggface
その後はユークリッド距離で類似画像の判定をします。
画像ですが、検索するが画像が3万件近くあり、リアルタイムで類似計算する必要がありました。
パフォーマンスを出すために、Elasticsearchに画像のパスとベクトルを保存しておき、リアルタイムでscript_scoreで類似計算させました。
それでも5sほどかかりますが許容範囲です。
もうちょっとパフォーマンスを出すには性別や人種などでタグ付けしてある程度絞り込むのが良さそう。
Typescript + React + FirebaseでSPA
去年はVuejsの仕事のみでしたが、今年はReactばかり書いていました。
作ったものはEラーニングみたいなものです。
Typescript + Reactの案件は初。
フォルダ構成は悩みますが、個人的に以下の記事で書いたフォルダ構成に落ち着きました
Reactは個人的によく書いていたのですが、typescirptを使うのは初めてでした。
最初は型システムとライブラリの相性が悪くめんどくさく感じましたが、使っていくうちに型の安心感がくせになり、今では型なし言語は怖いくらいです。
小さいアプリケーションではありがたみは少ないですが、システムが大きくなった時や大幅な改修が必要な時に型があることでバグがかなり減ります。
大体のシステムは時間が経つごとに機能が膨らんでいくものなので最初からtypescript入れとくのがおすすめ。
コンパイルがちょっと遅いのが難点
Firebaseも初めてなのですが、firestore以外はなかなか便利。
firestoreはこれからかなというイメージ
個人的な学習について
今年個人的に作ったものの発表
Pythonでステガノグラフィーのライブラリ
テキストをバイナリにして画像に隠す手法を実装
言語処理系を作る試み。
そろそろ言語を自作してみたくなりました。
Rubyっぽくもありjavascriptっぽくもある言語を作ってます。
まだまだ、勉強段階です。
https://github.com/komayuki/rujs
動画プレイヤー
久しぶりにアプリを作ろうと思いAndroid Studioをインストールしました。
約7年ぶりにJavaを書きました。
出来たらPlayストアに公開予定
まとめ
こんな感じの仕事をしていた2018年でした。
今年が個人事業主最後の年で、2019年の1月に法人成りする予定です。
フロントエンド開発でお困りのことはありませんか?
フロントエンドの開発支援を行っています。
・Reactの開発をお願いしたい
・コーディング作業を依頼したい
・javascriptライブラリを作って欲しい。
上記以外にも何かありましたらお気軽にお問い合わせください。