batchのブログ

知見の備忘録

Androidで画面のスワイプや物理キーイベントなどを取得する with Kotlin

はじめに

Androidの画面のタッチイベントとかって気になりつつもあまり触れることって少ないですよね.

先日のハッカソンでばりばり触る機会があり,いろいろ調べて実装したので,画面のタップ,2本指タップ,長押し,スワイプなどの実装の仕方の知見を今後自分がまた実装するときのメモと世の中のAndroidアプリエンジニアに共有していくことを兼ねて書いていきたいと思います.

画面タッチ全般

大方,onTouchEventoverrideすることで取得することができます.MotionEvent.****でいろんな画面のイベントが取得できるので見てみると楽しいかも.なんとなくざっと実装した例を載せときます.

override fun onTouchEvent(event: MotionEvent?): Boolean {
        val action = MotionEventCompat.getActionMasked(event)
        return when (action) {
            MotionEvent.ACTION_SCROLL -> {
                motionTextView.text = "ACTION_SCROLL"
                true
            }
            // 2本指以上で触った瞬間呼ばれる
            MotionEvent.ACTION_POINTER_DOWN -> {
                motionTextView.text = "ACTION_POINTER_DOWN"
                true
            }
            // 2本指以上で指を離したとき呼ばれる
            MotionEvent.ACTION_POINTER_UP -> {
                motionTextView.text = "ACTION_POINTER_UP"
                true
            }
            // 1本指で触ったとき呼ばれる
            MotionEvent.ACTION_DOWN -> {
                motionTextView.text = "ACTION_DOWN"
                true
            }
            // 何かしら動かしているとき呼ばれる
            MotionEvent.ACTION_MOVE -> {
                motionTextView.text = "ACTION_MOVE"
                true
            }
            else -> super.onTouchEvent(event)
        }
    }

バイブレーション

これはめっちゃ簡単.
以下のコード書くだけで鳴らせる.
ただ,鳴らせたいとこにContextなかったりとか色々したら実装がちょっとめんどくさくなる.
また,longArrayOf()の中身を色々変えれば好きなリズムでバイブレーション鳴らすことができます.
vibrator.vibrate(longArrayOf(0, 40, 20, 40), -1)vibrateがdeprecatedなっていますが,実装できちゃってるので詳しく調べていません・・・
詳しい方はぜひご教授くださいませ・・・・

val vibrator = getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
vibrator.vibrate(longArrayOf(0, 40, 20, 40), -1)

物理キーイベント

今回は,音量ボタンが押されたことを検知するコードの実装方法を紹介したいと思います.
以下のコードで音量ボタンのキーイベントを取得できます.

    override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
        when(keyCode) {
            KeyEvent.KEYCODE_VOLUME_UP -> {
                // 音量+ボタンが押されたときの処理
            }
            KeyEvent.KEYCODE_VOLUME_DOWN -> {
                // 音量ーボタンが押されたときの処理
            }
        }
        return false
    }

スワイプ

まずは,SwipeDetectクラスとか適当な名前をつけて,スワイプ動作を計算して下にスワイプされたのか,上だったか,右だったか,左だったかを出力してくれるものをつくります.GestureDetector.SimpleOnGestureListener()を継承してあげてください.vib関数はスワイプを検知したときにバイブレーションを鳴らすために書いています.

SwipeDetect.kt

package com.batch.example

import android.util.Log
import android.view.GestureDetector
import android.view.MotionEvent

class SwipeDetect(private val listener: Listener) : GestureDetector.SimpleOnGestureListener() {
    private val MIN_SWIPE_DISTANCE_X = 100
    private val MIN_SWIPE_DISTANCE_Y = 100
    private val MAX_SWIPE_DISTANCE_X = 2000
    private val MAX_SWIPE_DISTANCE_Y = 2000

    interface Listener {
        fun vib()
        fun swipeMotion(swipe: String)
    }

    override fun onFling(
        e1: MotionEvent?,
        e2: MotionEvent?,
        velocityX: Float,
        velocityY: Float
    ): Boolean {


        val deltaX: Float
        val deltaY: Float
        if (e1?.x != null && e2?.x != null && e1?.y != null && e2?.y != null) {
            deltaX = e1.x - e2.x
            deltaY = e1.y - e2.y
        } else {
            deltaX = 0.0f
            deltaY = 0.0f
        }
        val deltaXAbs = Math.abs(deltaX)
        val deltaYAbs = Math.abs(deltaY)

        if ((deltaXAbs >= MIN_SWIPE_DISTANCE_X) && (deltaXAbs <= MAX_SWIPE_DISTANCE_X)) {
            if (deltaX > 0) {
                Log.d("batchSwipe", "Swipe to left")
                listener.vib()
                listener.swipeAnim("LEFT")
            } else {
                Log.d("batchSwipe", "Swipe to right")
                listener.vib()
                listener.swipeAnim("RIGHT")
            }
        } else if ((deltaYAbs >= MIN_SWIPE_DISTANCE_Y) && (deltaYAbs <= MAX_SWIPE_DISTANCE_Y)) {
            if (deltaY > 0) {
                Log.d("batchSwipe", "Swipe to up")
                listener.vib()
                listener.swipeAnim("UP")
            } else {
                Log.d("batchSwipe", "Swipe to down")
                listener.vib()
                listener.swipeAnim("DOWN")
            }
        }
        return true
    }
}

これができたら,Activity側でSwipeDetect.ListenerimplementしてswipeMotionoverrideしてwhenを使って上下左右どの向きにスワイプされたのか受け取り,それぞれに応じた処理を書いてあげます.たしか,スワイプされたときのバイブレーションはSwipeDetectクラスでやりたいけど,getSystemService(Context.VIBRATOR_SERVICE) as VibratorするときにContextが必要で,SwipeDetectにはContextがなくて実装できないのでSwipeDetectvibinterfaceとして書いて,ContextがあるMainActivityで実装した形にしたと思います.(ちょっと忘れてる)

MainActivity.kt

package com.batch.example

class MainActivity : AppCompatActivity(), AniMoSwipe.Listener {

    private lateinit var gestureDetectorCompat: GestureDetectorCompat

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_controll)
        val vibrator = getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
        val aniMoSwipe = AniMoSwipe(this)
        gestureDetectorCompat = GestureDetectorCompat(this, aniMoSwipe)
    }

    override fun onTouchEvent(event: MotionEvent?): Boolean {
        gestureDetectorCompat.onTouchEvent(event)
        return super.onTouchEvent(event)
    }

    override fun swipeMotion(swipe: String) {
        val animoView = findViewById<ImageView>(R.id.animationView)
        when (swipe) {
            "RIGHT" -> {
                // 右にスワイプしたときの処理
            }
            "LEFT" -> {
                animationType = "Rotate"
                // 左にスワイプしたときの処理
            }
            "UP" -> {
                animationText.text = "なし"
                // 上にスワイプしたときの処理
            }
            "DOWN" -> {
                // 下にスワイプしたときの処理
            }
            else -> {
            }
        }
    }

    override fun vib() {
        val vibrator = getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
        vibrator.vibrate(longArrayOf(0, 30), -1)
    }
}

さいごに

なにかコードに間違いや,こうしたらもうちょっとスマートに書けるよなどあればぜひ教えていただきたいです.
Android開発は本当に楽しいです.
みんなでAndroid開発もっと楽しんでいきましょう.

Coroutine+Retrofit2+Moshiを使ってAPI叩いてみよう!もちろんKotlinを添えて〜〜2019

どうもこんにちはミニマリストエンジニアbatchです.


最近は,ミニマリストに関することばかりブログに書いていましたが日常的にAndroid開発は続けていて日々進化しております.


最近は自分が作りたいと思うアプリが見つかり,それを実装していたり先日JP HACKSというハッカソンに参加していたりで,色々な知見が溜まってきていました.
batch.hatenablog.com



ようやく,世の中のAndroidエンジニアのためにもOUTPUTできる体制が整ってきたので今回はタイトルどおり,CoroutineとRetrofit2とMoshiを使ってAPI叩くやり方を世の中のAndroidエンジニア(想定としては自分と同じくらいのレベルの最近Android始めたよという人)に共有したいと思います.


やり方については動画に撮ってNanaTechDojoチャンネルに投稿いたしました.
そのリンクも下に貼ります.

作ったものとしては,ボタンを押してGETリクエストを送り,返ってきたJSONを画面に表示するというものです.
叩いてるAPIが何かは,動画を見てからのお楽しみ.

GitHubとかQiitaとかみんなが使ってるAPIでやっても面白くないと思ったのでかなり面白いAPI叩いてます.

僕は今まで外部のAPI叩いて情報を取得するということをやったことはあったのですが,最近流行っているCoroutineを使った実装はやったことがありませんでした.

色々調べながらやっていたのですが,なんだかんだ3週間ほど悩んでいました.

やっぱり,一発でエラー解決したりやり方わかる記事ってそうそうないですよね.情報古かったりしますし.
僕みたいな時間を無駄にしてしまう経験は他のAndroidエンジニアの方にしてほしくないので,一発でわかる記事を目指して今回OUTPUTしました.こういうのやり方知りたかったという方にはぜひ見てもらいたいです.

www.youtube.com


動画では話し忘れましたが,返ってくるJSONをKotlinでパースするためのdata classを作るとき,Android Studio側で用意されているJSON To Kotlin Classというpluginを使うと一瞬で複雑なJSONの構造もdata classに変換することができます.オヌヌメです.

ちなみに動画で開発しているものはただいまAvgleClientとしてオープンソースで絶賛開発中です.
github.com



何かわからないことや,僕もまだまだ未熟Androidエンジニアなので教えてくださると嬉しいです.
baaaakkrad@gmail.com までお待ちましております.


また次もAndroidに関して溜まっている知見を記事にしたいと思います.

お楽しみに.

JP HACKS2019に参加してきた

ミニマリストエンジニアと最近勝手に名乗り始めたbatchでございます.

先週末にJP HACKSというハッカソンに参加してきました.

これは全国で行われるハッカソンでまず地方予選みたいなものがあってそこから勝ち上がったチームは後日開催される全国大会的なものに招待されて行けるという感じのハッカソンです.

詳しくはこちらご覧下さい.

jphacks.com

僕は北海道に住んでいるので,札幌予選に参加してきました.

チーム編成は以下の通り.

  • チームマネジメント神でプレゼンうますぎリーダー @wata_tec
  • 無駄なこと大嫌いWebフロントできるやつ @Wakeupsloth
  • インフラとかバックエンド好きなメンヘラ野郎 @kmdkuk
  • センサ大好きおじさん @mottydaXe
  • ラグビー経験者ゴリゴリデザイン大好き野郎 @yamannnu637
  • ラグビー現役ゴリゴリデザイン大好き野郎 @yamannnu637
  • ミニマリスト(おれ)@b4tchkn

個性的なみんなで,ほんとにバランスのとれたいいチームだったなと思っています. 6人は当初,多すぎるかなと思いましたがちょうどいい人数でした.

チームマネジメント神でプレゼンうますぎリーダー が全体のファシリテートと最終発表資料作りと最終発表をしました.僕たちは1時間おきに休憩も兼ねて全体で進捗や困っていることを共有してスプリントを回すような感じで進めました.
自分が詰まっているとこを他の人からアドバイスもらったり,アイデアもらってひらめくことも多く,とても良かったです.
そして,無駄なこと大嫌いWebフロントできるやつが,WebフロントをReactで開発し,TypeScriptでバックエンドも作ってくれました.
インフラとかバックエンド好きなメンヘラ野郎は,デプロイ周りと通信処理をしたときにリクエストが100倍くらいに増えてしまうバグの原因を夜中ずっと考えてくれて原因を突き止めてくれました.
センサ大好きおじさんは,Android側でスマホセンサを処理してスマホが縦に振られたのか横に振られたのか,また縦でも上に振られたのか下に振られたのか,右なのか左なのかという部分の処理を実装してくれました.
ラグビー現役ゴリゴリデザイン大好き野郎は,WebアプリとAndroidアプリのUIとAfter Effectsでプロモーションビデオの作成をしてくれました.
ちなみに僕はAndroidのUI実装や,通信処理を実装しました.

僕らは,Airbnbで宿をとってみんなでそこに泊まって夜な夜なあーでもないこーでもない言ったりしながら開発をしました. Airbnbかなりいいですよ.ビジネスホテルだとちょっと高かったり,作業するテーブルがなかったり,そもそも6人も一緒に泊まれる部屋がなかったりしますが,Airbnbは誰かの家に行くみたいな感じなので家具も揃っていてかなりいい開発環境です.Wifiもホテルより絶対早いと思うし.

夜はみんなでピザ頼んで食べたりしました.ちなみにこの写真僕らが泊まった宿です. ダイニングテーブルみたいのあってみんなで開発できてよかったです.

ちなみに僕らが開発したプロダクトはこちらです.

github.com

僕はAndroidアプリ開発を担当しました.

結果としては,賞などは取れませんでしたが,僕は開発したものに対して自分が作ったとは思えないクオリティとサービス自体の良さを感じているのでかなり満足です.ちゃんと通信してるし.

あ,賞は取れませんでしたが,Slackの社員の方が来ていて僕らのサービスをとても評価してくれてSlack Tシャツもらいました.うれしい.

まだこれからオンライン審査というものがされて,そこから評価されれば全国大会的なのに行けるそうなので,行けたらいいなあと思います.

チーム開発ってめっちゃいいですよね.僕はすごく大好きです. 限られた時間の中で自分が任されたことをやり,並行してプレゼン資料作る人がいて,バックエンドつくるひとがいて,UIとかプロモーションビデオつくる人がいてみたいな.

最後時間が終わったときにすべてが出揃って一緒になる感じがかなりエモくて好きです.

みんなで頑張るっていいですよね.

ミニマリズム近況報告

ここ数ヶ月で季節が変わり,冬服の制服化や部屋のモノを更に見直してアップデートなどを行っていました.


それらの近況報告を残すとともに,自分に最適なミニマルな生活を目指していく過程を記録しときたいと思います.

冬服の制服化

夏はHanesのBEEFY クルーネックTシャツという白Tを5枚購入し,着回していました.
batch.hatenablog.com


冬もそれを着続けて寒さはアウターでしのげたら最高なのですが,さすがに北海道では無理があります.


そこで冬服の制服を購入しました.


購入したのはUNITED TOKYOというブランドのモックネックの長袖です.
united-tokyo.com



夏は白っぽい服を着ていたので,冬はなんとなく黒っぽくいきたいなっていうのとなんとなく私服の制服化をしていたことで有名なスティーブ・ジョブズ的な格好をしたいなと思い,選びました.

UNITED TOKYOは価格はやや高めですが,価格以上にクオリティの高い服がたくさん売っています.


僕は中途半端な服を買って毎年買い換えるより,質の高いモノを長く着たいという考えなのでこのブランドの服は結構買っていました.


今回のモックネックも同じブラックのものを5枚購入して現在着回しています.


生地がかなりしっかりしていて,すでに10回弱ほど洗濯しましたが全くよれるような感じはしません.


ちなみに,ボトムスはLuisというブランドのウルトラスキニーデニムパンツを履いています.
zozo.jp

かなり伸縮性があり,しゃがんだりしても全くきつくなったりしないのでかなり気に入っています.


そして,いままでスッキリしたデザインで無印のアルミ洗濯用ハンガーを気に入って使っていたのですが,今回購入したモックネックでは肩の部分にかなり負担がかかり服が傷んでしまいそうだったので,無印のポリプロピレンハンガー・紳士用に買い替えました.

このポリプロピレンハンガーは肩の部分が大きく作られているため,服の肩の部分に負担がかからなくなりかなり良さげです.
www.muji.net

muji.net

自分自身ミニマリズムな生活を目指して半年も経っていないので,このようにいろいろ試しながら最小限に持つモノを最適化していこうと思っています,

部屋のアップデート

一度,以前に大きく部屋をミニマムにした記事を書きました.
batch.hatenablog.com

そしてその後,壁にベターッと飾っていたCDたちを処分しました.
batch.hatenablog.com


そして今回,主にデスク周りをアップデートしました.
全体はこんな感じ.

かなり自分に最適化されてきていて,大きく布団,キャビネット,デスクといった感じです.
それ以外は写真左下に見える掃除機,ギターなどがある感じです.


そして写真に見えている通り,今まで使っていたデスクを以前まで食卓テーブルに使っていたローテーブルに変えました.


理由は,今まで使っていた高さのあるデスクだとオフィスチェアのようなものが必要でそれをフローリングの上で転がすのが床が傷みそうと思ったり,単純にモノが大きくて引っ越しなどするときに大変そうだと思ったので折りたためてコンパクトになるローテーブルに変更しました.

座椅子も以前まで使っていたものを隣の倉庫として使っている部屋から引っ張り出してきました.

デスクの全体はこんな感じ.



そして充電周りをモニターの下にSatechiというメーカーのトラベルチャージャーというものに集約して端末ごとの電源アダプタは処分しました.

https://www.amazon.co.jp/gp/product/B07M97XGNZ/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1


写真一番右のポートがType-CでPD対応の60W出力できるポートなので普段使っているMacbook Proを充電しています.
その一つ左もType-CでPixel Standに繋がっていてPixelを充電しています.
その次がType-Aのポートでモバイルバッテリーなどを充電する用で,その隣のType-Aのポートでワイヤレスイヤホンを充電しています.

Macbook Proには同じくSatechiのアダプターを繋げていて,モニター2枚,HHKB,スピーカーなどをすべて繋げてクラムシェルモードで使っています.

https://www.amazon.co.jp/gp/product/B07RH8L9GV/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1


他に充電するようのType-Cのポートに有線LANを刺すポートも付いていて,これ1つで全てまかなえる感じです.



以上,ミニマリズム近況報告でした.


次はデスクの隣に置いているキャビネットが見えない収納となっていて,モノを詰め込める巣になっているのでこの中に収納しているものを確認してモノを減らしてキャビネットを処分できないか考えていこうと思います.

Joined In Rakuten Summer Internship

f:id:batch08:20190930110053p:plain

Introduction

I joined in Rakuten from August 20th to September 27th.

It was a very valuable experience.

I was using English all day for a month and a half.

Since this was a very rare experience, I would like to write about it for my future self.

Background to joining in Rakuten

Do you know Rakuten?



Rakuten is one of the leading Japanese companies that everyone knows.


It's great to have an internship in such a place but it is famous story that Rakuten uses English as its official language.


I think there are many people who feel the wall there but I think I wanted to dare to jump into that world.

Originally I was very interested in English.


I have wanted to speak, write and listen to English.

However, it is very painful and boring to study by reading the reference books alone.


I think English is not something to study because English is a language that humans use for communication.

So, I'm not very good at English, but I have wanted to learn English by going to an environment where I could use English compulsorily.

By the way, regarding my English skills, before joining in the Rakuten internship, I got 530 points in the TOEIC test that I was interested in.


This was the first TOEIC test I took in my life. This is also introduced in an article I wrote in the post but it's Japanese.
batch.hatenablog.com
batch.hatenablog.com



As for Rakuten, my friend in the laboratory loved Rakuten and often used and talked about Rakuten's services.


I like mobile app development, so I installed and used all the mobile apps from Rakuten.


Then there was a great difference in app quality between services. I'm interested in UI/UX, but there ware many apps that felt difficult to use.


Rakuten is developing business in various fields such as Rakuten Ichiba, Rakuten Beauty, Rakuten Card, Rakuten Bank and so on and I think Rakuten is no other company that develop ecosystem.

However, I think that when user used all Rakuten's services, the quality of all services is not uniform and user don't like these and feel something is wrong.

I wanted to change such Rakuten services and wanted to learn English at Rakuten.

It was reason I thought that I want to join Rakuten Internship.


I met Rakuten at a reverse job event, received an offer, and joined.

What I experienced

I joined in the department called Rakuten Beauty. This department offers booking services for hair salon, nails and relaxation shops.


Competing services include Hot pepper beauty.


Therefore, I joined Rakuten Beauty's iOS app development team and I was in charge of Rakuten Beauty iOS application development.


Mentors were of course non-Japanese.



It was very hard because it was a month and a half, but this was exactly what I wanted to do.


The environment where I had to use English was great.





All the teams I joined in were active and friendly.




During the internship I was mostly developing iOS.


As many people know, Rakuten has a free cafeteria as a welfare program.


Internship students able to eat for free.


Rakuten's meal is high quality and very delicious, unlike university meal.

The contents of ramen, set meals and etc change every day.


I was wondering what to eat every day.


I could eat as many vegetables as I wanted as side dish everyday.


I took lunch photos almost every day, so I would like to introduce some of them.





These are all free.



I went to lunch with various Rakutenians.


Most of them were invited by Rakutenians, but I was interested in UI / UX, so I was able to invite two UI / UX designer employees in the same arrangement to lunch.


It was a lot of fun to ask me anything I was interested in.

Impression

After all mobile application development is fun.



I'm interested in Android app development now, but I also enjoyed iOS app development.


It was a very good experience to join to a department where I could use English actively.




I was very happy because I wanted to interact with people from various countries.


It is wonderful to be able to use English.


I like talking to people.


I like talking to various people, listening to other people's thoughts and incorporating them into myself.


If we can only speak Japanese, we will have the opportunity to speak with only about 100 million people at most.


But if we can speak English, we can engage billions of people and communicate in a common language.

This will give us the opportunity to learn not only about Japanese culture but also about other cultures around the world.


It's a shame that you can only talk to 100 million people on the earth, where billions of people live because our life is only once.


I would like to continue to learn English using English on a daily basis and create opportunities to speak with billions of people.


Rakuten Life is a very big and valuable experience in my life.


I will never forget it.


Thanks to Rakuten Beauty Team.







ARIGATOU GOZAIMASHITA!

メドレーのインターンシップに参加してきた

メドレーとは

f:id:batch08:20190916204528p:plain

株式会社メドレーさんとは,東京の六本木にある2009年に設立された企業です.
www.medley.jp

事業内容としては,人材採用プラットフォーム事業と医療プラットフォーム事業の2つがあります.

事業の名前でわかるように医療分野を対象にした数々の事業を行っています.

メドレーさんは医療ヘルスケアの未来をつくる
ということを目指しており,医療ヘルスケア分野の課題を解決するために設立されました.

少し変わった企業で代表取締役が2人います.

そのうちの1人である豊田剛一郎さんは代表取締役医師という名前を持った代表取締役を担っている方で,もともと脳神経外科医として働いていた方です.

メドレーさんはそのような実際に医療現場で働いていた方が現在の日本の医療に対して課題に思ったことを解決しようとしている企業です.

インターンシップに参加する前に課題図書として読んだ本で,豊田さんが書かれた本を読みました.お時間ある方は絶対読んだほうがいいと思います.
皆さん,国民皆保険制度とか社会保障について暮らしていて気にしたことは特にないと思います.この本には現在の日本が抱えていて皆が気にしてない課題が山程書かれています.
そして,メドレーさんが日本の医療が抱えるどのような課題に向き合っているのかということが書かれています.

ぼくらの未来をつくる仕事

ぼくらの未来をつくる仕事


医療の問題は法律や政府との関係と切り離せず非常に難しい分野で,IT技術を駆使すれば簡単に解決できるという分野ではありません.


その難しい問題を,メドレーさんは自分たちがやらないといけないという強い意志を持って解決しようと真正面から向き合っている企業です.
実際に提供しているサービスを是非紹介したいので,紹介したいと思います.

人材採用プラットフォーム事業の中の医療ヘルスケア分野の人材不足の解決アプローチである「ジョブメドレー」
job-medley.com


医療プラットフォーム事業の中の日本最大級のオンライン診療システムである「CLINICS」
clinics-cloud.com
アプリもあります
clinics.medley.life

同じ医療プラットフォーム事業の中にある患者のための医療情報サービス「MEDLEY」
medley.life

同事業の中にある市民のための介護情報サービス「介護のほんね」
www.kaigonohonne.com


参加した経緯

僕がこのインターンシップに参加した経緯のスタートは,逆求人イベントでメドレーさんの方とお会いしたことからでした.

就職活動や夏のインターンシップに向けて,自分が将来やりたいことはなにか,自分が就職活動する中で大切にしたい軸はなにかなどを模索しているところで,医療という難しい分野で事業展開をしているメドレーさんを知りました.

医療という分野はとても広いし,社会貢献度も高く,医療の中の1つの課題を解決するだけでも日本全員が関わることでみんなをハッピーにできると思いました.

そんなことを色々思って参加しました.

やってきたこと

インターンシップは2日間という非常に短い時間でした.

参加したのは16名ほどで全員がエンジニア志望の学生でしたが,コードを書くようなインターンシップではありませんでした.

社会課題を解決するを考える〜医療をとりまく課題とアプローチ〜

というタイトルで日本の医療が抱える課題を4人〜5人のグループで考えてその課題を解決するアプローチまで考えようというものでした.

そしてインターンシップには代表取締役医師の豊田さんも来てくださり,疑問に思ったことはなんでも直接聞くことができ,非常に貴重な経験をすることができました,


僕がいたチームでは,日本の医療が抱えている課題をまずブレインストーミングのような形でみんなで出し合い,その中でも解決すると社会的インパクト(削減できる金額など)が大きいものを選択し,その解決アプローチを考えました.

具体的には,ジェネリック医薬品の普及率を日本で100%にするというもの.


みなさんそもそもジェネリック医薬品とはなんぞやとうことはご存知でしょうか?

そしてそのジェネリック医薬品が日本でどれくらい普及しているかご存知でしょうか?

そしてジェネリック医薬品とはまた別にAG(オーソライズジェネリック)という存在があることをご存知でしょうか?

そんなこと気にしたことも調べたこともないですよね.僕もそうでした.

国民皆保険制度といってみんなで平等にお金を出し合って,保険料を集めて自分が病気にかかったときの医療費を減らそうという制度をしているのにも関わらず,医療や制度についてリテラシの低い日本国民が大勢いるのも日本の医療の大きな課題であると僕は思っています.

このインターンシップでは社会保険を払っている日本国民であるからこそ知らないといけないはずなのに気にしたことがなかったり,考えたこともなかったようなことを短期間で大量に調べました.


結論をいうと,日本のジェネリック医薬品の普及率は74%です.

一見高いようにも見えますが,アメリカは90%ほど普及しているので少し遅れを取っています.この普及率を100%まで持っていけると2.8兆円ほど医療費を削減できる期待があります.

僕たちのチームはここに目をつけて解決策を考えました.


豊田さんの話によると,まだまだ患者やそして医師の中にジェネリック医薬品に対する印象を悪く持っている人たちがいるそう.

一応,ジェネリック医薬品は今まであったオリジナルの薬と同じ効能を低下価格で提供できるという薬です.

ですが,薬剤師さんが患者さんに「今までと効き目が同じで安いですよ」と言っても安いのにはなにか副作用や実は飲むとなにかあるのではという不信感があったり,医師の中でも効能が信用できないと思っている方々が平成29年度の調べて9.1%いることがわかりました.
ちなみに,患者さんでジェネリック医薬品に対する品質に疑問を持っている人は同年度の調べで25%ほどいることがわかりました.

この9.1%を多いと見るか少ないと見るかは人それぞれですが,医学部などの高学歴で日々医療について調査し,詳しい医者の10人に一人程は「ジェネリック医薬品は効かない」と思っているんです.


これはまだまだ序の口で医療分野はこのような人の心理的な部分が障壁になっていたり,大人の事情でみたいな部分が大量にあってとても難しい分野であることを実感しました.

参加しておもったこと

まず,思ったことは2日間で課題をみつけてその解決アプローチを考えるというだけでもかなり大変でした.しかし,その難しい分野のアプローチととして数々のプロダクトを結果としてアウトプットしているメドレーさんは本当にすごいと思いました.


そして豊田さんをはじめ,社員の方々みんなが本気で日本の医療を変えようと熱意をもって日々試行錯誤していることを実際に体感することができました.


本で読んだ豊田さんの言葉全てが,疑っていたわけではありませんが,本心で思っていることを書かれていて,その熱意を実際に色々お話することで感じることができ,そのような方々が本気で日本の医療が抱える課題を解決するという難解なことにチャレンジしていることに非常に可能性を感じ,感動しました.



風邪をひいたりすると,コンビニのように近くに何かしら病院があり,診療費は全体の3割だけ払えばよく,薬もたくさん出してくれて使っている分には非常に便利で不満のない日本の医療制度ですが,様々な課題を抱えていてこのままでは危険な状態です.


それにも関わらず,自分も含め,日本国民が日本の医療に関心がないのは問題だと思います.


今回のインターンシップを通してそう思えるようになったのは一つ大きな収穫だと思っています.
日本にはまだまだIT技術を使って変えていかなければいけない社会問題が大量にあります.

さいごに

株式会社メドレーのみなさん,準備も含めて休日にも関わらず本インターンシップを開催してくださり本当にありがとうございました.
普段考えることのないことを,専門の方々のお話を聞きながら真剣に考えられるとても貴重な経験をすることができました.
この経験を今後,何かしらの形で活かしていけたらいいなと思います.
メドレーさんの事業に対する熱い思いに本当に感動しました.
本当にありがとうございました.

私服の制服化をしてみて1ヶ月経って思ったこと

はじめに

久しぶりにライフスタイル系のことを書こうと思います.



最近はイベントなどを通じてAndroidについての記事が多かったですが,無駄なことを省いて自分の本当にやりたいことに時間を使うため,ミニマリズムな生活を目指しています.



具体的には部屋のもの(テレビ,ソファ,本棚など)を一気に減らしてみたり色々と実験中です.



その実験の1つとして私服の制服化を行っていました.




行っていましたというか現在も進行中です.



今,夏のインターンシップで8月上旬からずっと東京におり,9月末までいる予定です.



そこで,8月になる少し前くらいから私服の制服化を始めて,インターン中も服を極限に減らして持って行って実験してみようと思い,開始しました.




具体的に僕が今着ているものを紹介します.



まず,トップスはHanesのBEEFY クルーネックTシャツという白シャツ5枚です.同じ白Tを5枚持っています.







ポケットありなしがありますが,なんとなくポケットついているものを2枚,なしのものを3枚持っています.なので毎日白Tを着ています.



ボトムスはどこで買ったか忘れましたが,GRAMICCIというブランドのめちゃめちゃ伸縮性があってシャカシャカした生地の夏には涼しさを感じられる黒のボトムスと,UNITED TOKYOというブランドで買った黒の半ズボンを持っています.



少しそれでは肌寒いときのために黒のスキニーも持っています.



なので今の僕は基本上は白T,下は黒のズボンといった感じです.





そして,前までは下着と靴下は自分がいくつ持っているのか把握できないほど数と種類を持っていましたが,今は下着も靴下も5つずつ持っています.





以前までは服が好きで定期的に1ヶ月に3着くらいは買っていたんじゃないかなと思います.




そんな僕が,紹介した服だけで生活して1ヶ月が経過しました.





僕のクローゼット in 東京のホテル

1ヶ月経ってどう感じているか

まず,私服の制服化をして懸念されることが1つ.



周りに「あの人いっつも同じ服着てない?」と思われるのではないか,ということだと思います.



自分もどうなんだろうと思って,実際に実験して試してみようと思いました.



8月上旬の2週間はCyber Agentさんでインターンをしてきました.
batch.hatenablog.com



その時,僕も含めて16人の学生たちと毎日会ってインターンシップをしていたわけですが,相変わらず僕は毎日白Tに黒ズボン.



最終日に周りの学生に「毎日同じ白T着てたんだけど気づいた?」と聞きました.



みんなからの答えは「たしかにそうだったかも.気づかなかった」というような返事でした.




意外と他人って自分の服装なんか気にしてないということが実験の結果わかりました.



きっとみんな自分のおしゃれのために気を使ってそれで精一杯なのかなとかって思います.



そして,僕が私服の制服化をした理由として,1日の無駄な選択を減らしたかったからです.



朝,たくさん服のかかっているクローゼットを眺めて脳内でトップスとボトムスを組み合わせたイメージを思い浮かべて,実際に着てみて姿鏡の前でイメージ通りかどうか確認して…



これって結構な思考の手間であり,時間も奪われているのではないかと思いました.



あ,ちなみに服が好きでその悩む時間が楽しいという人を否定しているわけではありません.自分も元はそうだったので気持ちはすごいわかります.



でも今の自分は,Androidの勉強だったり,ビジネス書読んだり,英語も勉強したいなと思ったり,大学で研究だったりやりたいことがたくさんある中で少しでも時間を作って本当に自分のやりたいことに時間を使いたいと思いました.



それで私服の制服化を始めたわけですが,想像以上に効果は良かったです.



朝,脳死状態でハンガーから白Tを取って来て出かけるだけです.


めちゃめちゃ楽で,今までは服をハンガーから取るときに「これあのボトムスと合うかなあ」とか考えながら取っていましたが,今は「今日はとりあえずあれやって,これやって…」など今日のTODOを思い浮かべながら服を着ています.



なんか個人的にすごい生活が効率化されていて気持ちがいいです.



さらに,僕が来ている白Tは一枚1200円くらいでわんちゃん汚れたりしたらまた買い直せばいいやという気楽な気持ちで着ています.



お気に入りの高い洋服だと汚さないように大事に気を使って着てしまいませんか?僕はいまそんなことはないです.いつでもZOZOやAmazonでポチればいいので.



そして,着る服が固定なので,前みたいに定期的にZOZOを眺めていい服がないか調べて,その服が今自分が持っているボトムスやアウターに合うかどうかなど試行錯誤する時間もなくなりました.



そして,服を基本的に汚れたときなどにしか買わないのでかなりのお金の節約にも繋がっています.




私服の制服化はこれだけのメリットが有るなと実際に実験をして体感しています.




ぶっちゃけ,デパートなどに行くと他には見ないデザインの服が置いてあったりして目移りしそうなときもありますが,「一度手をだすとまた色々な服を買ってしまって取り返しのつかないことになる」だったり「他にないデザインだからこそ,1枚汚したりよれてきたときに替えがない」ということ,今のままで得られているメリットのほうが大きいなと思って他に服は一切買っていません.



今後

今後もこのスタイルを続けていこうと思っています.




得られているメリットがとても大きいので.




しかし,今迷っているのが冬どうしようかということです.



僕は普段北海道に住んでいるので,あの極寒を耐え抜かねばなりません.



そのためには必ずアウターは必要ですし,白Tにアウターを羽織るだけではやっていけません.


そのために冬用の新しいトップスをどうしようか,そもそも今の白Tを着続けて羽織るものを増やそうかなど色々考えています.




ちなみに,冬用の新しいトップスを買う場合も同じものを5枚買って着回そうと思っています.




今なんとなく考えているのは,黒のタートルネックのニットを買ってスティーブ・ジョブズスタイルで冬乗り切ろうかなと考えています.




定まった頃か,また時間が経ったときにそれらについて記事書こうと思います.