nikkie-ftnextの日記

イベントレポートや読書メモを発信

LT報告 | 『Djangoにモザイクアート』 @みんなのPython勉強会#34 #stapy

はじめに

だんないよ、nikkieです。
みんなのPython勉強会#34でモザイクアート作成のソースコード
Djangoで動かせるようにしたというLTをしてきました。
イベントレポートは近日中にあげます。

 

LT報告:Djangoにモザイクアート

gitpitch.com

かいつまんで言うと。。。

  • モザイクアートとは:画像を寄せ集めて別の1枚の画像を作る(下の関係資料参照)
  • これまでPillowという画像処理のライブラリを使ってPythonで実装していた。今回それをDjangoで動かしてみた。
  • Djangoは初めてだったので、まずモザイクアートの一覧を表示することを目標にし、徐々に機能を追加していった。
  • 表示機能はDjango Girls Tutorialを読み替えながら進めた。テンプレートの<img>タグを動的に作る際に get_static_prefix を使うのがポイントだった。
  • 機能追加としてモザイクアートが作成できるフォームボタンを実装した。
    (押すとモザイクアートが作成されてから、モザイクアート一覧が再表示される。そのため作ったばかりのモザイクアートが見られる)
  • フォームにモザイクアートにする画像を選べるプルダウンを実装した。フォームは引き続き機能追加していく
  • Djangoを初めて触った感想としては「賢い」に尽きる。設定不備があるとき、実行するべきコマンドがコンソールに出力される
  • Django Congressにいけなくなった人がいらっしゃったらチケット譲っていただけるとうれしいです。

 

関係資料

speakerdeck.com

 

感想

Fintech回にDjangoネタを持っていったのは選択ミスのような気もしましたが、
Pillowの頃から知っている方からフィードバックもいただけ、ありがたかったです。

NaoY_pyさんのPyCon JPスタッフ募集LT、コミュニティに多少なりとも返していきたいので応募考えてみよう。

[ GitPitch ] NaoY-2501/GitPitch-Slides/master

LTされたアプリ、UIまわり(ルビの出方など)がきれいだった!
3万語をレベル分けして辞書作ったのはすごすぎる。
ディープラーニングで5万枚の画像を一人でアノテーションして、誤差5.1%達成した話を思い出す)

【新感覚】辞書を引かずに英語がサクサク読めちゃうアプリ『英読』がすごい!

 

stapy運営の皆さま、出席者の皆さま、LTの機会をいただきありがとうございました。
100人参加者の場でLTできる機会はそんなにないので、貴重な機会です。

継続してLTできるよう個人開発を頑張ります。

イベントレポート | 第26回Pythonもくもく会 #mokupy

はじめに

だんないよ、nikkieです。
#mokupyに行ってもくもくしてきました。

 

勉強会の概要

第26回 Pythonもくもく会 - connpass

この勉強会について

主にPythonに関するやりたいことを各自持って来て、進めていく感じのゆるい会です。 もくもく開発をして情報共有したり、交流を深めることができればと思っています。 是非お気軽にご参加ください。(Python初心者の方でも大歓迎です!)

 

取り組んだこと

来週の#stapyでLTしようと、「Djangoにモザイクアート」を進めていました。

  1. モザイクアートにする画像を指定するフォーム作成
  2. フォームを動かすためにモザイクアートのソースコード修正
  3. LT準備(スライドに盛り込む項目考える)

 

フォーム作成:済

Django Girls Tutorialには「Django フォーム」のセクションがありましたが、
フォームからDBにレコードを入れたいわけではないので、HTMLタグでformを作りました。
(今にして思うとCakePHPみたいなフォームヘルパーがあるのか調べてみればよかったな)

やりたいことはプルダウンからモザイクアートにしたい画像を選択して
サブミットボタンを押すとその画像でモザイクアートが作成されるようにすることです。

フォームのactionにURLが紐づくビューのメソッドには
request.POSTという形式でPOSTの内容が渡ってきます。
指定された画像の取得は意外と簡単でした。(request.POSTをdictのように扱えばよい)

(余談)プルダウンの内容は決め打ちにしたのですが、
ビューでモザイクアート対象画像の一覧を取得、
それをテンプレートに渡し、テンプレート内でfor文でプルダウンのタグを作る。
これで動的なプルダウンが実現できるんじゃないかと帰り道に気づきました。

 

モザイクアートのソースコード修正:済

新たな技術的負債を発生させながら、内在する技術的負債に取り組んでいました。。

今回返済した技術的負債は、モザイクアートにする画像と、
作成したモザイクアートのファイル名をソースコード内に直接書いているというものです。
以下のように修正しました。

  • モザイクアートにする画像は引数で渡せるようにする
  • 作成したモザイクアートはファイル名に日時情報を入れて区別できるようにする
    (作成したモザイクアートが全て同じファイル名だとDjangoで一覧にしたときにまずい。モザイクアートどうしは区別する必要あり)

前者の修正は既に終わっていたため、もくもく会中は後者の作業が主となりました。

Bugfix/#21 モザイクアートのファイル名の区別 by ftnext · Pull Request #24 · ftnext/mosaic-art-python · GitHub

3パターンのモザイクアート作成処理が統合できていない
(平均の色を使う場合、中央の色を使う場合、一番使われている色を使う場合それぞれのファイルが存在している)
という超弩級の技術的負債(DRY原則違反)がソースコードにあります。
今回の修正も同一の関数をやむなく各ファイルに埋め込む形になってしまいました。。

この負債を早く返済しないとソースコードがメンテナンスしにくくていけないです。。
(釈迦に説法だと思いますが、DRY原則マジで守りましょう)

本日の作業後のDjangoにモザイクアートのソースコードはこちらです。

GitHub - ftnext/mosaic-art-on-django at develop

 

LT準備:途中

急ぎGitPitchでスライドを作り、成果発表で練習LTしました。
staticフォルダの配置の情報が2つ見つかったという質問を盛り込んだところ
好みの問題だが、プロジェクトの下に1つだけ設けることが多いという回答をいただきました。
独学の身には参考になります。ありがとうございます。

3日まで日がないので、明日完成度80%まで持っていきます。

 

感想

お昼のときにPythonもくもく会にはそれぞれ色があるという話を聞いてなるほどと思いました。
個人的には

  • #pyhack:もくもく中、猛者の会話が多いが、勉強になるのでありがたい。作業しつつも耳は研ぎすませている状態がベター
  • #rettypy:もくもく中の会話は中程度。最初の自己紹介で困っていることを共有するので教え合いやすい
  • #mokupy:もくもく中の会話が少なめ。皆さん作業に没頭している感じ

というようなグラデーションかなあと思います。それぞれ色があるのも私は好きです。

 

FlaskとKerasでNBLのプレーヤー分類を作った方がいらっしゃいました。

The Keras Blog - Tutorials

こちらかな? pillow使ってるようなので興味あります。

 

紹介(宣伝?)されたDjango連載など時間を作って読まなくちゃ。

 

もくもく会関係者と出席者の皆さま、本日はありがとうございました。1日お疲れ様でした。

イベントレポート | MANABIYA DAY2 2限「2018年のWeb標準」#MANABIYA

はじめに

だんないよ、nikkieです。
MANABIYAはもう1週間前なんですね。
2日目のメルカリ 泉水さんによる「2018年のWeb標準」の聴講メモです。

 

講義の概要

【国内最大級のエンジニア向け技術祭典】MANABIYA -teratail Developer Days-

進化を続けるWebプラットフォーム、
それを支えるのがHTML、CSSJavaScriptなどをはじめとしたWeb標準です。
本セッションでは昨今のWeb標準の変遷を振り返ると共に、
今後のWebアプリケーションの動向を予測します。

機械学習に取り組む前はサーバサイドに携わっていたのでWebの話を聞きに行きました。
屋上から移動してきたら教室はすごい人数でしたが、床枠で聞けました(笑)

2018年のWeb標準

speakerdeck.com

私のまとめツイートを掘り下げていきます。

 

Service Worker
  • ブラウザにインストールされるWeb Worker
    キャッシュがあったらキャッシュを返す、なかったらネットワークへ。
    オフライン対応が注目されるが、それだけではない
  • JSで実装できるネットワークプロキシ
  • オンライン復帰を検知できる
    チャットアプリなどでユーザには送信完了と表示し、裏でネットワークが復旧したら送る
  • プッシュデータ受信できる
    生放送アプリでの利用例 ↓

developers.cyberagent.co.jp

Service WorkerはPWA(Progressive Web Apps)にも寄与する。

Chromeは対応済み。SafariはiOS11.3から。FirefoxMicrosoftもPWA対応に追従。

 

Web Components

HTML要素を自分で定義できる。CSSのスコープを汚染しない

  • Custom Elements:HTML要素を自分で定義できる
  • Shadow DOM:カスタムHTML要素がグローバルスコープに出ないようにする
  • ES Modules:再利用のための外部ファイル(export、import)

Web Componentsを使えば、ビルドがシンプルになる。(Reactなどのライブラリは多段ビルドを要求する)

描画パフォーマンスが気になる場合はlit-html。差分描画を担ってくれる

github.com

ChromeSafariが対応しているのでモバイルWebでは使える。

泉水さんブログ:

1000ch.net

 

Web Payments

ECサイトでクレジットカード情報を扱わない決済を可能にする。(スライド55, 56)

  • ECサイトから決済代行業者の画面に遷移する従来のユーザ体験と比べてストレスレス。
    トークンはカード情報ではないので、万が一漏れてもリスクは小さい
  • フォームUIの統一=決済のユーザ体験を統一

ChromeとEdgeは対応済み。SafariはiOS11.3から

参考:

クレジットカード取引におけるセキュリティ対策の強化に向けた実行計画2017(「実行計画2017」)を取りまとめました~国際水準のクレジットカード決済環境の整備を進めます~(METI/経済産業省)

 

感想 

久々にWebの話を聞いたら浦島太郎状態でした。こんなに進んでいるとは。。

最近PWAの動きが出てきているのはSafariがService Worker対応するからなんですね。
Web Componentsは触ってみたいです。(GitPitchにも載せられたりしないかな)
Web Paymentsを聞いて、AppleGoogleを通さずに支払いを受ける仕組みを作ろうとしているという話(2017年5月のHTML5感。)を思い出しました。

積読リスト

Service Workerってなんなのよ (Service Workerのえほん) - Qiita (2017年1月なので古いかも)

ライブラリを使わずここまでできる!Web Componentsで近未来のフロントエンド開発 | ヌーラボ

 

泉水さん、並びにMANABIYA運営スタッフの皆さま、
貴重なお話とそれを聞く機会をありがとうございました。

LPIC Lv.1学習メモ | パッケージ管理(rpmとYUM)

はじめに

だんないよ、nikkieです。
パッケージ管理の整理の続きとして、
RPMパッケージを管理するrpmYUMについてまとめました。

注意:動作については未確認です。vagrantcentos環境で確認予定です。

rpm

Linux - RPMおよびYUMパッケージ管理の使用

一般的にはYUMが使われ、rpmはあまり使われないと想定しています。

引数
用途
例文
パッケージファイル名 パッケージインストール
rpm -i nmap-5.51-2.el6.i686.rpm
(注:wgetでダウンロードしてある前提)
 
パッケージインストール
(詳細情報表示:v、進行状況表示:h)
rpm -ivh nmap-5.51-2.el6.i686.rpm
 
パッケージインストール(依存関係無視)
rpm -ivh --nodeps emacs-23.1-21.el6_2.3.i686.rpm
 
パッケージアップグレート
インストールされていない場合は新規インストール
rpm -U nmap-5.51-2.el6.i686.rpm
rpm -Uvh nmap-5.51-2.el6.i686.rpm
 
パッケージアップグレート
インストールされていない場合は何もしない
rpm -F nmap-5.51-2.el6.i686.rpm
rpm -Fvh nmap-5.51-2.el6.i686.rpm
パッケージ名 パッケージ削除
rpm -e nmap
 
パッケージ削除(依存関係無視)
rpm -e --nodeps emacs
 
指定したパッケージからインストールされたファイルを検査
rpm -V nmap
なし
インストールされている全パッケージについて
インストールされたファイルを検査
rpm -Va
照会モード(-q)
引数
用途
例文
なし
インストール済み全バッケージ一覧表示
rpm -qa
ファイル
ファイルがどのパッケージからインストールされたか表示
rpm -qf /usr/bin/nmap
パッケージ名
パッケージがインストールされているか照会
rpm -q nmap
 
パッケージの情報表示
rpm -qi nmap
 
パッケージに含まれるファイルの表示
rpm -ql nmap
 
パッケージの依存関係表示
パッケージファイル名
インストール前のパッケージの情報表示
(インストール前にバージョン情報を知る)
※-qiと同じ情報
rpm -qip nmap-5.51-2.el6.i686.rpm
 
インストール前のパッケージに含まれるファイルの表示
※-qlと同じ情報
rpm -qlp nmap-5.51-2.el6.i686.rpm

 

YUM

Linux - RPMおよびYUMパッケージ管理の使用(YUMツールの紹介)

DebianパッケージのAPTに相当するのがYUMという認識です。

引数
用途
例文
なし アップデート対象のパッケージリスト表示
yum check-update
 
インストールされている全パッケージをアップデート
yum update
 
リポジトリの全パッケージ情報とインストールの有無を表示
yum list
パッケージ名
パッケージのインストール
yum install nmap
 
指定したパッケージをアップデート
yum update nmap
 
パッケージのアンインストール
yum remove nmap
 
パッケージ情報を表示(インストールされていないパッケージについても表示可能)
yum info nmap
キーワード
キーワードを含むパッケージの検索
yum search nmap

 

終わりに

頭の中は整理できたと思うので、次は手を動かす時間ですね。
ちなみに、dpkgとAPTの整理はこちらです。

nikkie-ftnext.hatenablog.com

以下の教材で学習しています。(ネット上のリソースは必要に応じて使っています)

 

イベントレポート | MANABIYA DAY1 2限「DeNAにおけるAIの取り組み」#MANABIYA

はじめに

だんないよ、nikkieです。
MANABIYA 1日目のDeNA 内田さんによる「DeNAにおけるAIの取り組み」の聴講メモです。

 

講義の概要

【国内最大級のエンジニア向け技術祭典】MANABIYA -teratail Developer Days-

DeNA AIシステム部では「先端AI技術を活用して事業を成功に導くこと」をミッションとし、
AI研究開発と事業貢献の両立を目指して様々なビジネスでのAI活用に取り組んでいます。
本セッションでは、コンピュータビジョン、自然言語処理、強化学習の分野を中心に、
現在取り組んでいる新たな価値提供へのチャレンジについて紹介します。

機械学習に取り組んでいるので、興味を持って聞きに行きました。
事前知識として、オセロニアのバランス調整を強化学習を使ったAIで行っていることは知っていました。
(先日のrettypyで強化学習の話題になったときに教えていただいた) 
強化学習をバランス調整に活用。『逆転オセロニア』が目指す、ゲーム開発の近未来 – フルスイング

 

DeNAにおけるAIの取り組み

講義後の私のまとめツイートはこちら。項目ごとに掘り下げます。

組織

研究開発と事業を両立させていく
研究開発の目標はサービスへのコミット 論文を書くことが目的ではない
 研究開発の人間がサービスに入っていく
 ビジネスの立ち上げから研究開発の人間がプロジェクトチームに入っていける

先端技術のキャッチアップのために

  • 情報発信、社外発信
    ・社内勉強会 →ブログ見つけました:アーカイブ - Technology of DeNA
    ・国際学会聴講
    ・30%の工数はkaggleに取り組める kaggle実績は分析者の実績の証明という考え
     データサイエンティストは「kaggle枠」と呼ばれる ありとあらゆる手段でKPIを達成する
    ・今後:AIプロジェクトマネジメント(AI研究開発のマネジメントとは)
      ML Ops 安定したモデルのアップデート、安定稼働
  • 論文の再現検証のリソースが供給される
  • キャッチアップができなくならないようにアサイ

 

ドライバーモニタリング(コンピュータビジョン)

www.slideshare.netこちらのスライドの内容でした。

基礎タスクは画像分類。畳み込みニューラルネットワーク(CNN)により実現

CNNは2015年のResNetがデファクトスタンダード
内田さんがまとめたCNNのサーベイ論文はこちらだと思います。

mprg.jp

特徴マップ
4×4の例
(1,1)の特徴ベクトルは元の画像のある範囲(1,1)〜(3,3)の特徴を集約した情報が入る
 信頼度が0.9以上で物体がある→(1,1)を見てどんな物体か=1クラスの物体検出
+どういうクラスかという次元を追加(C次元)→これは車、人と検出できる(Cクラスの物体検出)
:ランドマーク検出(目や鼻などの特徴点の検出)
 まず顔があるか検出→ランドマーク座標を見る

実応用のためにはニューラルネットワークの高速化が重要
 枝刈り、畳み込みの分解、蒸留、早期終了(スライド21)

危険運転の前にアラートを出したい 例:「運転が荒い」→行動変容
どういう運転をしているのかは外の環境+ドライバーの状態

  • ドライバーの状態・・・ランドマーク検出:どこに目があるか→顔の向き
  • 外の環境・・・走っているレーンやまわりの車の情報
     画像のどこにレーンがあるか1次元(点)で出す

スマホやエッジデバイスで動かすには軽量化が必要。ここを頑張ったそうです。

 

オセロニアのバランス調整(強化学習)

www.slideshare.netこちらのスライドの内容でした。

ゲームの新鮮さを保つために、キャラクターやスキルを定期的に導入する。
熟練プランナーが設計するが、テストしてみないとバランスが崩れているかわからない。
→そこで、ゲームAIを使ってバランス調整

取り組んだこと:

  1. 教師あり学習
    そもそも教師ありとして学習できるのか検証。
     教師あり学習はDQNに着想。
     盤面を画像としてCNNに入れる。
     盤面の特徴ベクトルと特徴量の組合せ
    学習できそうとわかったので先に進んだ。
  2. 表現学習
    one-hotベクトルではキャラクター増えたら学習し直し
    似たようなキャラクターが同じようなベクトルになるような表現学習
    (=固定長のベクトルで表現できるようにした)
  3. 強化学習
    自己対戦を繰り返して強くなれるか
  4. 先読み機能
    手を打った後の盤面をランダムにプレイアウトし、どのくらいの確率で勝つかを打つ手の価値とする

強化学習はゲームが一番適用しやすい。
ただし、ゲームに限らず応用しようとしているとのこと。

 

感想

1限の染谷さんに続いてkaggleへの言及がありました。やっぱりkaggleなんですね!
DeNAのチーム体制は先端技術までカバーできているので、
どんな要望にも対応できそうな理想的なチームだと思います。


ここまでの体制を作ってもキャッチアップと案件のバランスには気を使うようなので、
一介のエンジニアが空き時間にディープラーニングを勉強したとしても
簡単には業務で利用できるようにはならないと覚悟したほうがよさそうです。
大変というのはやらない理由にならないですし、心躍る分野なので
私は取り組んでみようと思います。
当面の私の課題は、kaggleでの探索的データ解析の勉強(優先度高)と
ディープラーニングのキャッチアップになりますね。

内田さん、並びにMANABIYA運営スタッフの皆さま、
貴重なお話とそれを聞く機会をありがとうございました。

LPIC Lv.1学習メモ | パッケージ管理(dpkgとAPT)

はじめに

LPICの勉強を再開しました、nikkieです。
パッケージ管理が4種類あってぐちゃぐちゃなので、整理してみました。
今回はDebianパッケージを管理するdpkgとAPTです。
アクションだけでなく、引数のタイプ(パッケージファイル名なのか、パッケージ名なのか)も合わせて覚えるのがいいのではないかと考えています。

注意:動作については未確認です。今後環境構築し、確認予定です。

dpkg

Linux - Debianパッケージ管理の使用

一般にはAPTが使われるそうなので、資格をとるためにしか使いみちのない知識のような気がします。

引数 用途 例文
なし インストール済み全バッケージ一覧表示
dpkg -l
(注:アクションは小文字のL)
dpkg --list
 
パッケージのインストール状態を検査
dpkg -C
dpkg --audit
パッケージファイル名 インストール
dpkg -i tree_1.6.0-1_i386.deb
(注:wgetでダウンロードしてある前提)
dpkg --install tree_1.6.0-1_i386.deb
 
インストール
(インストールしようとしているものより新しいバージョンがインストール済みなら、インストールを行わない)
dpkg -Gi tree_1.6.0-1_i386.deb
 
パッケージファイルの情報を表示
dpkg -I tree_1.6.0-1_i386.deb
(注:アクションは大文字のi)
 
パッケージに含まれるファイルの一覧を表示
dpkg -c tree_1.6.0-1_i386.deb
パッケージ名 パッケージからインストールされたファイルを一覧表示
dpkg -L tree
dpkg --listfiles tree
 
指定したパッケージの詳細情報を表示
dpkg -s tree
dpkg --status tree
 
パッケージ削除
(設定ファイル残す)
dpkg -r tree
dpkg --remove tree
 
パッケージ削除
(設定ファイル削除)
dpkg -P tree
dpkg --purge tree
ファイル ファイルがどのパッケージからインストールされたか表示
dpkg -S /usr/bin/tree
dpkg --search /usr/bin/tree

 

APT

Linux - Debianパッケージ管理の使用(APTツールの紹介)

apt-get
引数
用途
例文
なし 最新のパッケージ情報を取得する
apt-get update
(/etc/apt/sources.listに設定したサイトに接続)
 
全パッケージを最新版にアップグレード(ただし、他のパッケージを削除しないものに限る)
apt-get upgrade
 
ディストリビューションを最新版にアップグレード
apt-get dist-upgrade
パッケージ名 パッケージのインストール
apt-get install apache2
 
パッケージのアンインストール
apt-get remove apache2

 

apt-cache

apt-cacheは対象のパッケージがインストールされていなくても動作する。

引数
用途
例文
パッケージ名 パッケージについての情報表示
apt-cache show apache2
 
パッケージの依存関係を表示
apt-cache depends apache2
キーワード キーワードを含むパッケージの検索
apt-cache search apache2

 

aptitudeについては優先度を下げています。
今回まとまったサイトを見つけられたので、今後の勉強が捗りそうです。

追記(3/28):以下の教材で学習しています。(ネット上のリソースは必要に応じて使っています)

 

イベントレポート | MANABIYA DAY1 1限「成長を止めない機械学習のやり方」#MANABIYA

はじめに

だんないよ、nikkieです。
MANABIYA 1日目の「成長を止めない機械学習のやり方」(クックパッド 染谷さん)の聴講メモをまとめました。

 

講義の概要

【国内最大級のエンジニア向け技術祭典】MANABIYA -teratail Developer Days-

2016年7月の発足以来、クックパッドの研究開発部は機械学習を用いた様々なプロジェクトに取り組んで来ました。
本セッションではまず機械学習を取り入れた組織における価値創造を阻害あるいは鈍化させる幾つかの要因を指摘し、
それらの要因について開発基盤やエンジニアリング、チーム構成様々な角度から考察します。
またさらに、そのような課題に対するクックパッドの取り組みを紹介します。

案件で機械学習をやっているので聞きに行きました。(MANABIYAを通してAI枠の講義に積極的に行っています)
2月のPyDataで登壇された方だったので、その時のスライドを確認してから講義に臨みました。

PyData.Tokyo Meetup #17 - データ分析の現場 - connpass 

 
 

成長を止めない機械学習のやり方

speakerdeck.com

第3次AIブームの後の幻滅期を乗り越えていくために:『成長を止めない機械学習のやり方』
クックパッドの知見を中心に『成長を止めない機械学習のやり方』を考えていく

 

組織編

問題:サービス開発とモデルの開発/デプロイのスピード感にギャップがある
モデル開発/デプロイの効率化 
  • デプロイ:API化、そのための共通基盤整備
    →詳しくは前掲のPyDataスライド

 

個人編

  • 個人にとって、目標/目的の具体化が重要
  • 実務でやるのが一番の近道
    現場でやるべきことは多く、これをやれとは言えない状態。
    1冊1冊の本で学べないことが多い
  • データ分析系のコンペもよい
    与えられた問題が明確というのが現場と違うが、
    限られたデータと時間でスコアを上げていくのが実務に近い
 

感想

個人にとっての成長を止めない機械学習のやり方は、やはりkaggleに行き着くんですね。
これはやるしかないな、kaggle!(kernelを覗いて勉強する予定)
幻滅期を見越した上で、地に足をつけて価値を生み出し続けるという姿勢を見習い、
一歩一歩機械学習を進めていきたいと思います。
 
自社サービスでの機械学習の利用については、こんな世界なのかと聞いていました。
私の機械学習の取り組みの中では色々と失敗がありましたが、
クックパッドさんも機械学習でやりたいことと現場の成熟度にギャップがあり、
多少の失敗をしつつも進めているのかもという印象です。
(どこも機械学習で苦い経験をしているんじゃないかと思います)

お話しいただいた染谷さん、並びにMANABIYA運営スタッフの皆さま、
貴重なお話とそれを聞く機会をありがとうございました。