2021年の振り返りと2022年の抱負

年の瀬ということで、自分自身へ向けた振り返りと来年の抱負を書き連ねて行こうと思います。

 

2021/1

・Vimateリリース

リリースツイートを拡散してもらってユーザ数が伸びた、うれしかったしテンション上がった

 

2021/2-3

・転職活動兼ニート

 

2021/4

・スタートアップに転職

・エンジニア4年目スタート(プログラム学習ニート期間含め)

・要件定義をやっていて開発あまりしてない

SQLの壁

 

2021/5-6

・外部APIへの並列処理マイクロサービスを作る

Rails + Python + Lambda + SQS etc

・ツイート形態素解析APIを作ってみる

 

2021/7

・あんまり覚えてないけど何かやってた

 

2021/8-10

・サービスの要の形態素解析をマイクロサービス化

Python + Ruby + S3 object lambda

・バッチの処理の分割

Batch + Stepfunctions

・そのほか色々やってた

 

2021/11

・なんかやってた

 

2021/12

ビジネスロジックの移行

インフラ設計、GraphQLスキーマ設計、速度チューニング用のプロトタイプ実装 etc

・GraphQL設計すると奥が深い

Github API設計が正義

Face book API設計が正義

・Go書き始めた

cobraとgoreleaserでコマンド作った

 

振り返りは以上。

さっと思い浮かんだものだけ書いた。他にも色々やってた気がする。

ロジックの設計、インフラ設計、新しい言語、形態素解析、GraphQLなど色々とできて良かった。

プライベートの時間はだらだらプログラム書いたり、だらだらしたり、tiktok見たりしてた。

自分の事業を立てるサービス内容や計画など全く立てれずに過ごしてしまったのが反省。

 

来年への抱負

・サービスを作る!

・サービスを立ち上げる!

・サービスを作りまくる!

一歩目の立ち上がりの腰が重い。

サービス案の段階で挫けないで、リーンキャンバスを書きまくる。マネタイズにまでつなげたい。

4ヶ月ペースで2022年はサービス3つを立ち上げたい。

エンジニアがサービスを立ち上げるメリットは大きいと思っているので、そのメリットを使い倒す。(システムの外注費がいらないなど)

最近見たツイートで、個人開発から成功するにはサービスを立ち上げまくる方が良いと見た。

たしかに手を動かさないより、ある程度の勝算がある案を作って形にしていく方が良いと思った。

(それに伴って技術力も付いてくると思っている)

 

・React, TSやりたい

・React( or Next) + Golang( or Rails)構成でサービス作る

・VimateのインフラをHerokuに移す

・個人開発のスピードを上げる(ある程度の型を作る)

 

仕事の抱負

・開発頑張る

ユースケースと一致したプロダクト作り etc

 

その他やらない可能性の高い抱負

・基本情報

・筋トレ

アルゴリズム、数学

機械学習

・趣味探し(体を動かすもの)

・禁煙

rubyの文字列を正規化するGem作ってみた

タイトルの通りです。

pythonにはneologdnなど文字列を正規化するライブラリが存在していました。

github.com

Rubyでは存在しないようだったので、作ってみました。

github.com

String型を拡張していて、簡単に使うことができます。

まずはインストール

$ gem install normalize_text

normalizeメソッドで文字列を正規化します。

require 'normalize_text'

'検索 エンジン 自作 入門 を 買い ました!!!'.normalize
=> "検索エンジン自作入門を買いました!!!"

自然言語処理前の正規化などに使えると思います。

現在対応しているのは

  • 記号
  • 絵文字
  • Unicode正規化
  • スペース(文字間含め)
  • 制御文字
  • 改行コード
  • 4バイト以上の文字

などです。

今後対応していきたいのは顔文字です。

正規表現で取得できる顔文字以外も対応したいので、リストをまとめるしかないかなあと思っています。

メタタグの大文字小文字の変更

結構困ったので、残しておきます。

 

メタタグのタイトルを小文字から大文字に変更して、Search Consoleからインデックス登録毎日やって、1週間..

全く変更されない。

 

タイトルの文字列を一部変更してインデックス登録すると、すぐに反映されました。

おそらく、インデックス登録のトリガーに大文字・小文字判定が入っていないようです。

 

その際は、一部の文字列を変えてみると良いと思います。

bootstrap4 field_error_proc

bootstrap3でのfield_error_proc設定はありましたが、bootstrap4の情報がほぼ無く書いてみたので、雑目なアウトプット


———————————-

config.action_view.field_error_proc = Proc.new do |html_tag, instance|

      if instance.kind_of?(ActionView::Helpers::Tags::Label)

        html_tag.html_safe

      else

        class_name = instance.instance_variable_get(:@object_name)

        method_name = instance.instance_variable_get(:@method_name)

        input_error_icon = html_tag.gsub("form-control", "form-control is-invalid").html_safe

        below_error_message = "<div class=\"invalid-feedback\">#{I18n.t("activerecord.attributes.#{class_name}.#{method_name}")}#{instance.error_message.first}</div>".html_safe

        input_error_icon.concat(below_error_message)

      end

    end

———————————-


エラーメッセージが不要で有れば、below_error_message以下は不要です。


これで、バリデーションエラー時にinput配下にエラーメッセージ、inputにエラーアイコンが表示されます。

Rubyのmapとeach、scanの使い方

Rubyのmapとeach、scanの使い方

チェリー本4章に出てきた内容ですが、実際に過程をまとめました。

16進数を10進数の配列に変換するメソッドを作成しています。

  • Rubyのmapとeach、scanの使い方
    • ①each
    • ②map
    • ③doとend省略
    • ④ブロック変数省略
    • 正規表現で多重変数代入
    • ⑥一行にまとめる
続きを読む