Mac Java + Kotlin 環境

Java インストール

いくつか方法あるみたいですが Java 15 の場合、homebrewから入れてしまうみたい。

$ brew cask install oracle-jdk

例のごとく、バージョン確認してみる。

$ java -version
> java version "15.0.1" 2020-10-20
> Java(TM) SE Runtime Environment (build 15.0.1+9-18)
> Java HotSpot(TM) 64-Bit Server VM (build 15.0.1+9-18, mixed mode, sharing)

Kotlin インストール

Kotlincを使うためkotlinをインストール

$ brew install kotlin

例のごとく、バージョン確認してみる。

$ kotlinc -version
> Java HotSpot(TM) 64-Bit Server VM warning: Options -Xverify:none and -noverify were deprecated in JDK 13 and will likely be removed in a future release.
> info: kotlinc-jvm 1.4.10 (JRE 15.0.1+9-18)

Spring Initializr でひな形

https://start.spring.io/

MongoDB 入門

Install

MongoDB v3, v4 でインストール方法が異なっているみたい。
現在はv4なので公式にある方法で導入する。

// brew tap経由っぽい
$ brew tap mongodb/brew

// MongoDB 4.4 を指定
$ brew install mongodb-community@4.4

// バージョン確認
$ mongod --version

起動と停止

// 状況の確認
brew services list

> Name              Status User Plist
> mongodb-community stopped
// 起動
brew services start mongodb-community@4.4

// 停止
brew services stop mongodb-community@4.4

データベース操作

ターミナルから接続

// コマンドライン
mongo

// モードから抜ける
exit

各種操作

// データベース一覧
$ show dbs
> admin   0.000GB
> config  0.000GB
> local   0.000GB

// データベース作成、または切替
$ use lesson_db
> switched to db lesson_db

// 現在選択しているDB
$ db
> lesson_db

// コレクションの一覧
$ show collections

// コレクションの作成
$ db.createCollection("users")
> { "ok" : 1 }

// ドキュメントの作成
$ db.users.insertOne({ name: "John Doe", age: 30})
> {
>    "acknowledged" : true,
>    "insertedId" : ObjectId("5fb7f67c9caec3a143e45ffa")
> }

// ドキュメントの表示
$ db.users.find()
> { "_id" : ObjectId("5fb7f67021db23266ebc39a2"), "name" : "John Doe", "age" : 30 }

docs.mongodb.com

静的型付けの言語

各社の採用情報等で選定している技術などを拝見していて思う。

徐々に増えていて「静的型付け」ってデファクトスタンダードになりつつあり、その中でどの言語を選定するか、でいろいろ情報がでてくるがいまのところは以下が多い感じ。

  • Python (with type annotation)
  • Go
  • Swift
  • Kotlin
  • TypeScript
  • Scala

バックエンド Kotlin

これは、この状況は把握していなかった。
かなり驚きだった。

qiita.com

LeetCodeとは

LeetCodeとなるものがあり、エンジニアの人はやっているみたい。これは知らなかったのでまとめてみる。そして個人でも勉強がてらやってみる。

LeetCodeとは

GAFAなどの世界トップレベルのIT企業のエンジニアの面接で実際に使用された過去問がたくさん掲載されており、自分で書いたコードを提出し、その内容をチェック、評価してくれる。

leetcode.com

アカウント作成

無料でアカウント作れます。
GithubやKaggleのようにsubmissionsの表があり、実績や活動が見れるようですね。

https://leetcode.com/snjssk/

参考にした記事

leetcode時代の外資コーディング面接対策 - Qiita

flutter 音声認識アプリ

音声認識のアプリを作ってみたい。
いくつかパッケージがあり、いくつか試してみる。

flutter_tts

入力テキスト → そのテキストを発音する

tts は Text To Speech のことみたい。 pub.dev

この動画で作ってみる https://www.youtube.com/watch?v=WnJZOi57oTY

speech_to_text

React Redux 入門

React hook以前は、React+Redux+Redux Saga で開発していたがここ1年くらいずっとVueだったので、改めて最近のReactを再び入門する。

Set up

Create React App

Node.jsはV14にて実行。
このコマンドは昔から変化はないか。

cd project-folder
npx create-react-app .

Redux

reduxでわかりにくいポイント。何をインストールしたらいいの問題、いまだにあるな。

yarn add redux react-redux @reduxjs/toolkit
  • redux : Redux本体
  • react-redux: ReactにReduxを組み込む
  • @reduxjs/toolkit: Reduxのtoolkit本体

ディレクトリ構成

一般的なパターン

action, reducer, type をディレクトリーに分ける。関数の種類に分けることで統一されてる感じではあったが、それぞれの機能がバラバラにあるのでわかりずらかった。

actions
├ articles.js
└ users.js

reducers
├ articles.js
└ users.js

types
├ articles.js
└ users.js

ducksパターン

関数で分類されていたのを1つのファイルにactionやreducerをまとめる方法。1ファイルに処理がまとまること変更しやすく、読みやすくなる。

modules
├ articles.js
└ users.js

Re-ducksパターン

ducksの1つのファイルにまとめることで肥大化していくことがつらくなってくるため「関数の種類ごとの分類」と「機能ごとの分類」を取り入れる。

ducks
├ articles
│   ├ index.js
│   ├ types.js
│   ├ actions.js
│   ├ reducers.js
│   ├ operations.js
│   └ selecors.js
│
└ users
    ├ index.js
    ├ types.js
    ├ actions.js
    ├ reducers.js
    ├ operations.js
    └ selecors.js

Redux Toolkit