ニートの言葉

元ニートがやってみたこと・その過程で学んだこと・考えたこと・技術メモあたりを主に書いています。情報革命が起きた後に訪れるであろう「一億総ニート時代」の生き方を考え中です。

買い占め防止システムを作れないか

どうもこんにちはあんどう(@t_andou)です

新型コロナの流行によりマスクが入手困難ですね。

僕はほとんど外出しないので手元にまだ少し残っていますが、知り合いはフリマアプリを使って親のために1万円で買っていると言っていて驚きました。

さらにこの数日はデマが原因であるとは言え、トイレットペーパーも店頭から無くなり困っている人も多いと思います。

今後、流通が混乱して他の複数の商品において同じことが起きる可能性がありそうです。

さらに、コロナの流行を防ぐために人混みは避けるべきなのに毎朝スーパーに並んでるという人も少なくないように見えます。これでは感染がさらに拡大していきます。

買い占め防止のためのシステムを作れないか

さて本題です。

買い占めを防ぎ、必要分だけ多くの人に渡るためにITエンジニアの僕に何かできることは無いかを考えました。

まだまだ思いつきの曖昧なアイディアですし、僕は流通や製造業界に関して知識が無いため、「既にある」とか「現実的じゃない」「これを使えば実現できそう」などご意見いただけるとありがたいです。

解決策のアイディア

すごくざっくりしてますがこんな感じです

1.店員が入荷予定を登録

2.入荷予定を知ることが出来て予約できる

3.店舗で受け取る

機能の案

具体的にはこんな機能が必要かなと考えてます。

  • 店員が自店舗の情報を登録(店名・住所など)

  • 商品情報と入荷予定(いつどれくらい)を登録

  • 購入側はユーザー登録(1人1アカウントにするため、電話番号をキーにするのが良さそう)

  • 予約をして割り当てる

  • 店舗をまたがっても同じカテゴリ(マスク・トイレットペーパーなど)の商品は購入数に制限をつける

想定される課題

具体的な実装案についてはまだまだ固まってないため、機能面における課題は無視するとして

一番大きな課題は店員さんの手間が増えることだと思っています。(入荷予定の入力や予約した人かどうかの確認が必要となるので)

ですので、店舗側にメリットを考えないといけないです。

今回の騒動が収まった後でも、お客さんに知らせて買いに来てもらう目的で使えるように設計してたら良いかも。

最後に

小売店のかたのアイディアをいただきたいです。
最初は入荷予定を知らせる機能だけでも無駄に並ぶ人が減るので良いかもしれないですね。

また、途中で力尽きるかもしれませんがこちらでオープンに開発していきます。

https://github.com/takuya-andou/Prevent-buy-out/wiki

【Kubernetes】1週間かかる処理を1.5時間で終わらせた【並列処理】

こんにちはあんどう(@t_andou)です。

今回はKubernetesを使って並列処理させた記録です。

まだ「とりあえずそれっぽく動くまで試してみた」という段階で、kubernetesを理解できてはいないので自分用のメモを公開しているという認識でご覧ください。

間違っている部分や、よりスマートなやり方がありましたらご指摘いただけると幸いです。

この記事の概要

機械学習に使う特徴量の作成で1週間かかりそうな処理を10分くらいで終わらせられないかと考え、GKE(=GoogleのKubernetes環境)を使い試行錯誤した記録です。

今回は一部失敗して完了時間が1.5時間になったものの、設定を上手く出来れば15分程度で終わる見込みです。

 

対象読者

・Kubernetesの概要は知っているくらいのレベルの人
・KubernetesのJobを使った並列処理をしたい人

目次

  • この記事の概要
  • 対象読者
  • 目次
  • 背景
    • どのくらい時間がかかっていたのか
    • どうやって処理時間を短縮するのか
    • なぜKubernetesなのか
  • やってみたこと その1:処理部分を独立させた(失敗)
    • 構成
    • 処理の流れ
    • 困ったこと
      • MySQLへの接続部分
  • やってみたこと その2:データをGCSにダンプした(失敗)
    • 構成
    • 処理の流れ
    • 困ったこと
      • デフォルトではGCSへの書き込み権限が無い
      • Nodeの容量不足
  • やってみたこと その3:永続ボリュームにデータを配置した(成功)
    • 構成
    • 処理の流れ
    • 困ったこと
      • 永続ボリュームの読み書き権限周り
      • 使えるvm数に制限がかけられていたのでリクエストが必要だった
  • 完成したymlとシェルスクリプト
    • クラスター作成
    • 永続ボリューム
    • ジョブ実行
  • かかった料金
    • Kubernetesのマスター管理料金:無料
    • データ転送料:ほぼ無料
    • データのストレージへの保管料金:数円
    • VMの料金
      • VMの料金見積もり
    • 合計金額
  • 分からないこと 
    • ReadOnlyManyでPVCを作成する時に最初のデータ配置をどうするのか
    • jobsのCOMPLETIONSが途中で減ることがあった
    • 処理から抜けているものが複数あった
    • GKEのアップデートが始まって時々接続できなくなった
  • 参考にした資料
    • Webページ
    • 書籍
  • 最後に
    • 処理時間について
    • 用途について
  • おまけ:試行錯誤のツイート
続きを読む

高精度でテキスト分類を行えるAIの環境を用意しました【BERT】

 

こんにちは、あんどう(@t_andou)です。

最近、自然言語処理のAIの一種であるBERTをよく触っています。

今回はBERTのソースを読まなくてもサクッと試せる環境を用意しましたので、メモとして残しておきます。

BERTとはどういうものか


画像引用:https://arxiv.org/pdf/1810.04805.pdf

凄くざっくりと説明すると、BERTとは2018年末にGoogleの人たちが開発した自然言語処理において汎用的に使えて精度の良いAIです。

自然言語処理において精度を測るためにいくつかのタスクがあるのですが、発表された時点ではダントツの成績でした。

仕組みなどの詳細については論文を読むか解説記事をググってください。

2019/09/22時点で既により精度の良い手法がどんどん発表されていますが、BERTの情報量と比べるとまだ少ないため、入門としてはBERTを触ってみるのが良いと思っています。

どんなものに使えるか

詳細は書けませんが、僕は実際の仕事で

  • ある文書からその業種を推定する
  • 面接時の受け答えのテキストから面接の評価スコアを付ける

と言ったことに使っています。

他にも、今回の学習方法では使えませんが

  • 質問を投げると答えを抽出してくれるシステム*1

などにも利用されているようです。

作ったもの

繰り返しになりますが、今回はBERTのソースを読まなくても試せる環境を用意しました。公式のソースを少し修正し、実行環境を用意しただけですが。→github , Google Colab

出来ること

自前のデータセットを用意することでテキスト分類をしてくれる人工知能を作れます。

使い方

1.データセットの用意

データセットの形式としてはtextとlabelの2カラムのtsvで
学習用、検証用、テスト用にそれぞれtrain.tsv , dev.tsv , test.tsvというファイル名で用意してください。

2.GoogleDriveにアップロード

1で用意した3つのファイルをGoogle Driveにアップしてください。

※Colab上にアップしても良いですが、ランタイムのリセットで消えてしまうためDriveがオススメです

3.Google Colabを自分のドライブにコピー

今回用意したGoogle Colabはそのままだとコメントしか出来ない状態にしているため、ご自分のドライブにコピーしてください。

4.自分のデータセットに合わせてパス・ラベルを修正

下記の箇所を修正してください。

  1. DATADIR:学習させたいデータセットを置いたディレクトリのパス*2
  2. FINETUNE_OUTPUT_DIR:学習したモデルを出力するディレクトリのパス
  3. LABEL:学習させるラベル一覧
5.学習開始

その後、上から順に実行していくと「4.Train」の箇所で学習が開始されます。

学習完了までの時間はデータセットの量によって変わってきますが、10万件弱のデータセットで2~3時間でした。

※TPUを使うことでより高速に終わらせることが出来ましたが、その場合はGoogleColabとGoogleDriveだけでは完結できず、Google Cloud Storage(有料)を使う必要が出てくるようですので、今回はパスしています。

6.予想の計算

「5.Predict」を 実行するとテストデータに対して予想を計算してくれて、データセットのディレクトリにtest_results.tsvというファイルで出力されます。

最後に

BERTを使い、テキスト分類のタスクを簡単に行えるようにしました。

今回は多言語モデルという日本語を含む色んな言語に対応したモデルを利用しましたが、日本語モデルを公開してくださっている方もいらっしゃいますので、日本語に特化した問題であればそちらを利用した方が良いかもしれません。

参考

https://github.com/google-research/bert

*1:https://www.pragnakalp.com/demos/BERT-NLP-QnA-Demo/

*2:もしもアップロードしたデータセットのパスが分からない場合はGoogleDriveをマウントした後でパスをコピーするとわかりやすいです

【解決】MacOSをCatalinaにしたらFireFoxが開けない

こんにちは、あんどう(@t_andou)です。

最近発表されたMacのOS「Catalina」にしてみたところ、FireFoxが開けなくなって困ったので、その対策をメモしておきます。

以前のバージョンまでは

以前のバージョンまでは右クリックして「開く」→「開く」を選択すれば開けた*1のですが、今回はFireFox自体は開けているのかもしれないですが、Updateでエラーが出て開けなくなってました。(冒頭の画像の状態)

解決策

泣きながらググっていたら解決策を見つけました。

Firefox Developer Edition [and others] not opening in macOS Catalina - Ask Different

  1. terminalを開いて
  2. sudo spctl --master-disable と入力
  3. パスワードを入力
  4. FireFoxが開けた!
  5. sudo spctl --master-enable でセキュリティを戻す

以上です。

最後に

iPad OSとCatalinaを使えばiPadをサブディスプレイに使えてすごく便利です。(sidecarという機能)

以前、duetという有料アプリを購入していたのですが、これよりも反応速度も良く、無線でも使えるのですごくオススメです。さようならduet。

エンジニアになりたい人のためのベーシックインカムハウスを作りたい

 

こんにちは、あんどう(@t_andou)です。 

今回は最近ボンヤリと考えている「やりたいこと」について書きます。

まだ構想段階なので抽象的ではありますが、もしも何か関わりたいという人がいらっしゃいましたらTwitterまたはこちらからご連絡ください。

 

1. 背景:個人的にやりたかったこと

まずは経緯として、僕自身が数年前にやりたいと考えていたことを書きます。

僕は数年前、「ニートハウス」を作りたいと考えていました。
ニートハウスとは「最低限の生活費を貰いつつ好きなことをして生きていける家」という漠然とした構想です。

ニートハウスをやりたかった理由は大きく二つあり

  1. 僕自身がニートだった時期があり、人生に絶望した挙句、自殺未遂を起こしたこともあったため、似たような状況にある人の苦しみを軽減したかったから
  2. 世の中の生産性はどんどん上がっており「人が働く必要性」は減っているにも関わらず「全員が働かないといけない」とか「失業率を下げないといけない」という考えに違和感を覚えていたから

です。

「ニートハウス」に似たものとして「山奥ニート」や「ニート株式会社」のように、ニートが集まった活動はありますが、僕がやりたいこととは何か違うと感じていました。
うまく言語化できないのですが、僕は「人と関わりたくない」とか「何もしたくない」という理由から積極的にニートになろうとする人たちではなく、「今は苦しい状況だけど人生を好転させるために努力をしている人」の力になりたいのだと思います。*1
とは言え、当時は具体的な案もなく、ハウスを運営できるほどの資金も無かったので、漠然としていた「ニートハウス構想」は放置されていました。

それからしばらくして、カイリュー木村さんという方がベーシックインカムハウスというものを始めたことを知りました。
どんなものかというと、アーティストやクリエイターが自身の活動に集中するための環境として、家賃・光熱費無料、さらに毎月1.5万円を支給してくれるシェアハウスというものでした。
このベーシックインカムハウスは「やりたいことがあって、それに集中したい」という人たちを応援するようなコンセプトになっていて、僕がやりたかったのはこれだと気づきました

ところが残念なことに、このベーシックインカムハウスは一年?で終わっていました
詳しい理由は分からないですが、カイリュー木村さんが「趣味でやっている」という発言をされていたようですので、収支の面をあまり考慮していなかったのかもしれないです。アーティストやクリエイターというのは「影響力」という面では良さそうですが、ハウスを運営するための費用を生み出すには厳しかったのかもしれないですね。(勝手な予想ですが)

そこで、収支の面をもう少しシビアに捉えつつ、「ニートハウス」改め「ベーシックインカムハウス」を作れないかを考えました。

働きたくない時は働かなくても生活が出来て、働きたくなったら仕事をして、働いた分だけ収入がアップするような場所。

↓こんなイメージ

 

さて、ここまでは僕の個人的な欲求の話でした。
ここからは上の話を踏まえて、世の中の一般的な課題に結びつけてエンジニア向けベーシックインカムハウスの提案(たたき台)を書いていきます。

2.世の中の流れ

1.エンジニア不足

三年前の資料になりますが、経産省の調査結果によると2030年には79万人のIT人材が不足する可能性があると報告されています。*2

たしかに僕(ITエンジニア)にも仕事の相談がたくさん来ますし、肌感としても人が不足している印象を受けています。

2.エンジニアになりたい人は多そう

そんな調査結果を受けてか、プログラミングスクールやプログラミングの学習サービスは乱立し、プログラマになりたいという人も増えているような印象を受けます。(統計情報などは調べていないので実際の数字は不明ですが)

3.課題感

この世の中の流れはとても良いことだと思っています。
しかし、スクールなどを卒業したからと言って、すぐに現場で活躍できるレベルになるのは稀です。

おそらくスクールを卒業された方々は「未経験者歓迎」と書かれた企業へ応募するでしょうし、スクール卒業生を受け入れる企業は教育すること前提で採用すると思います。

しかし、エンジニアを求めている企業の大半はすぐに活躍してくれる人…言い換えると目の前にある課題を解決してくれる人を探しています(=新規サービスの開発・過去のサービスの保守運用・自動化などの効率化をやってくれる人などなど)

この求める条件の不一致でエンジニア不足が起きているのだと思いますし、この「学習者は多いのにエンジニアが不足している状況」は時間が解決してくれる問題だとしても、いきなり就職して現場に入るのは学習者・企業のお互いにとってリスクが高そうだと感じています。

と言うのも、

  • プログラミングの素質は分かったとしても業務の遂行能力は見極めるのが難しい(プログラムを書けることと仕事をこなせる力は必ずしも一致しない)
  • 試用期間ありで採用したとしても現実問題その数ヶ月で辞めてもらうことは難しい

からです。

 

一行にまとめると

一連の学習を終えた人たちにとって、就職の前にもう1ステップがあった方が良くない?

という感じです。

5.解決案の提案

そこで、現役エンジニアのもとでOJT・インターンシップのように動ける環境を作るのはどうだろう?と考えています。

  •  学習者にとって:現役エンジニアのもとで就職の前のステップとして軽めの案件をこなせる
  •  企業にとって:ちゃんと出来る人がサポートしてくれる状況なので安心して仕事を頼める

6.初めに戻ると

(だいぶ話が飛躍しますが)ここで最初の話題に戻り、先ほどの解決案に書いた環境として、エンジニアになりたい人のためのベーシックインカムハウスを作ろうと思っています。

イメージ図

最初は僕が受けている案件の一部をお手伝いいただくような形が良いかなと思っていますが、最終的にはBIハウスで案件を受けて内部で業務遂行、そこでハウスの運営費や住民の生活費を差し引いて仕事をした人へ報酬が渡るような仕組みを作れたら良いなと思っています。

BIハウス案たたき台

まだすごくざっくりした案ですが下記のように考えています。(変更になる可能性は十分あります。)

  • 家賃・光熱費は無料です
  • 生活費(1.5万)支給します
  • 都心から1時間くらいのところに作りたい
  • 1人1部屋の個室
  • (おそらく期限付きになります)仕事しなくても大丈夫ですが、出来れば勉強または何かしらアウトプットしてもらえるとありがたいです。
  • 現場へ出勤しなくても出来るリモート可能な軽めの仕事をいくつか提供できるよう努力します

7.住人・関係者を募集します

以前ツイートした内容からすでに数人の方からご連絡をいただいていますが、BIハウスに興味を持っていただけた方は

  • 住みたい
  • 仕事を頼みたい
  • 使えそうな物件を提供するよ(もちろん家賃は払います)

という方は是非Twitterまたはこちらからご連絡ください。

最後までご覧くださってありがとうございました。

 

追記 2019/6/24 07:30

公開して一晩ですが

仕事を依頼したいという方:2名
住みたい・関わりたいという方:5名
からご連絡をいただきました。

全員の希望に沿うことは難しいかもしれないですが小規模な状態からスタートできるように調整して行きたいと思っていますので、もう少々お待ちください。

*1:理想を言えば、僕や 僕が仕事を頼んでいるエンジニアさんのように「好きなことをやっていて働いている意識は持っていないけれど、世の中に価値を提供している」=「好きなことで生きていく」みたいな状態の人が増えると良いなーと考えています。

*2:人材の最新動向と将来推計に関する調査結果

世界一辛い「ブート・ジョロキア」を水耕栽培してみる その1

こんにちは、あんどう(@t_andou)です。

辛いものといえばハバネロだと思っていたのですが、2007年に世界一辛い唐辛子として認定されたブート・ジョロキアというものがあります。*1

今回、そのブート・ジョロキアを3本(3株?)買いました。

こちらのお店で購入しました。

www.rakuten.co.jp

育て方

さて、この子達をどうやって育てるかですが、土を使わない「水耕栽培」という育て方があります。

以前、水耕栽培でレタスを育てたことはありますが、レタスだとなんだか面白みに欠けるので、今回は世界一辛いと言われている「ブート・ジョロキア」の苗にしました。

水耕栽培の構想

こちらの記事を参考に水耕栽培のキットを作っていこうかと思います。→最初はホームハイポニカプクプクというキットにしました(理由は後述)

【超初心者向け】ベランダのゴーヤ水耕栽培で100個以上収穫を狙う人に書いた育て方まとめ | ベランダゴーヤ研究所

  • 発泡スチロールの入れ物を使う
  • 根っこに対して空気を送る・水流を作る
  • 液体肥料のハイポニカをあげる
  • 肥料の濃度を適切に保つ → ECメーターというのを作る
  • IoT化する

キットを買いました

前述の設備を自作すると5000~6000円くらいになるようで、初心者向けのホームハイポニカプクプクというキットと値段があまり変わらなかったので、まずはこちらを購入しました。

続く

*1:2019年現在ではさらに記録が更新されているようですが

24時間生放送をし続ける人工知能youtuberを作る その4「顔を作る」

↑今回の成果

こんにちは、あんどう(@t_andou)です。

24時間生放送をし続ける人工知能Youtuberを作る企画、第4回目の記事です。
前回はコメントを取得をして返信をしつづけるというものが完了しました。

今回は少しだけ見た目に手を加えていきます。

続きを読む