「割り勘オンライン」をリリースしました

趣味で作っているAndroidアプリ

「割り勘オンライン」を728日にGoogle Playで公開しました。

https://play.google.com/store/apps/details?id=com.jp.acchan.groupdutch

 

「割り勘オンライン」は

立て替えが何度か発生する関係の人との間で役にたちます。

領収証をとっておく必要がなく、

何をいくら立て替えたのかをスマホで共有することができます。

 

また誰がいくら多く払っているのかを

ボタン1つで計算することができます。

こんなときに使ってほしい

友達と旅行中に立て替えが発生するとき

旅行をしていて、

「今回ガソリン代払っとくよ~」とか

「今回レンタカー代払っとくよ~」と、立て替えをして

旅行が終わってから精算。ということがないでしょうか。

 

そんなときに、「割り勘オンライン」を使えば

誰が何を支払ったのかのメモをアプリで共有することができます。

 

また、立て替えた結果、誰がいくら多く払っているのかを

すぐに計算することができます。

恋人とお財布を分けてて、きっちり精算したいとき

私自身がそうだったのですが、

恋人と例えば

「今日スーパーで買い物してきたよ」とか

「コンビニまとめて払っておくね」とかしているけど

きっちり精算したい人はいませんか?

 

1ヶ月分のレシートを残しておいて

1でレシートを計算して精算、ということは面倒ですが、

「割り勘オンライン」があれば、レシートを取っておく必要も

電卓で計算する必要もありません。

 

まだリリースしたばかりで
至らない点が多いと思いますが、
気になった点や改善点があればレビューに書き込んでいただけると
幸いです。

【食事&景品付き】エンジニアの為の合コン(エジコン)に行ってきました。

【食事&景品付き】エンジニアの為の合コン(エジコン)

https://engineer-quality-life.connpass.com/event/93073/

に行ってきたので、そのときのレポート

エンジニアトークしていい前提なので話しやすい

日頃僕はエンジニア以外の方と話すときは

エンジニアの話題をしても話が広がらないので

頑張って他の趣味の話をするのですが、

技術の話のほうがいろいろ話せたり興味があります。

 

エンジニアトークしていい前提なので

自己紹介のときから「どんな言語・技術を触ってます」と言えるので

エンジニアな話ができてとてもよかったです。

 

また、これは偶然だったのかもですが、

私のテーブルには

  • Webのサーバーサイド
  • Webのフロントエンド
  • インフラ
  • 組み込み系

の人がいて、いろんな話が聞けて楽しかったです。

運営の方がいろいろしてくれている

現地に着いてから聞いた話だったのですが、

もともと用意していた会場が使えなくなり、急遽新しい会場で開催してくれたとのことでした。

少しバタついてしまっていましたが

急な対応をしてくれた運営の方には感謝です。

 

また、歓談の途中に、みんなで行うエンジニアクイズを企画してくれていました。

httpの意味は?」という問題だったり

「フォン・ノイマンがコンピュータを作ったときに言った言葉は?」

というちょっとトリビア的な問題だったりして

みんなで盛り上がってクイズ大会ができました。

 

またクイズに正解すると景品ももらえました。

偶然私が正解したクイズの景品が、映画のギフトカードだったのですが、

それを口実に女性に「一緒に行きましょう」と誘うことができました。

誘う口実になる景品を考えてくれた運営の方には感謝です。

まとめ

とても楽しかったです。

 

あまり合コンという意識をせずに

単純に集まった人で歓談を楽しむような雰囲気だったので

私も緊張せずに楽しむことができました。

 

ただ、connpassの予定では女性は6名の参加だったのですが、

当日になると欠席が多く、実際に集まってくれたのは2名でした。

 

このあたりは、運営の方が次回にむけて改善していきたいとおっしゃっていました。

 

あと強いて言うなら

僕がいないほうのテーブル(入り口から遠い方)のテーブルで

運営の方が喋りすぎてなかったかなとちょっと心配になりました。

参加者同士の会話よりも、運営の方の話を参加者が聞いているような時間がながく思えたので、

そこだけちょっと心配でした。

 

エンジニアはやっぱりエンジニアトークで盛り上がりやすいので

それができる人で集まる合コンはいいものですね!

ソフトスキル4章まとめ

まず始めに、私達は人との良い接し方をとらないといけないということを認識しよう

私達はコードのために働いているわけではなく、人のために働いている

私達は一日中コードを書いていたいと思うかもしれない

人との調整ごとなどできればしたくないと思うかもしれない

 

だが、そこについては一度考えなおしてみるとよい

私達が書くコードは、コンピュータから「この実装をしてくれ」と言われて書くものだろうか。

 

いや、違う。

人から「こういうことを実現したい」と言われてコードを書くのだ

コードに落としこむ内容を決めるために会議に出るし、ビジネス的な戦略を練ったりするだろう

 

このように、私達がコードを書く理由は人からきているのだ

自分の仕事はコードを書くことだと思い込むのではなく、

他の職種同様、人と接する職種だと認識しなくてはならない

このことから、私達は人との良い接し方をとらなければならない

人との接し方を学ぼう

「大切にされている」と誰もが感じたい。

人と接するときに最も重要にしたいことは、相手がどうされたいかを意識することだ。

 

では、相手はどうされたいか?

要望はいくらでもあるだろうが、最も根本的な要望は「大切にされたい」ということである。

この最も根本的な要望を常におさえたまま、人とは接しなければならない。

 

仮に、人を見くびったり、存在を否定するような接し方をしてしまった場合、

相手は自分に対して反抗的な姿勢になってしまうことを肝に銘じよう。

決して批判してはならない

人は大切にされたいという心理が理解できると、

批判が目的の結果を生み出さないことも理解できるだろう。

 

また、良い行動を褒めるほうが、悪い行動を懲らしめるよりはるかに効果的だということは、

数々の研究成果で示されている。

 

リーダーである人なら、メンバーにベストを出させたいときには、

余計なことは言わずに褒める言葉を繰り返すのがよい。

 

一つ例を出すと、あなたのこれまでの上司で、

失敗に対して叱責を繰り返す人がいたら、そのときのことを思い出してほしい。

叱責されて、やる気が出ただろうか、モチベーションが上がっただろうか。

多くの人は、あなたと同じようにモチベーションはあがらない。

他人の立場になって他人主体で考えよう

相手の立場になって物事を考えたり、話し方を変えるようにしよう。

そうすることで、相手のことを軽んじたりしたり批判したりすることを避けることができる

 

相手の立場になるうえで重要なことが、相手が何を望んでいるか、

何を大切にしているかを把握することだ。

自分が話をする番になっても、相手の立場になって、相手中心の話題になるようにしよう。

 

例えば

ある機能をある特定の条件で実装したいとなった場合、それをそのまま上司につつえるよりも、

その実装をすることで相手(上司)にどんないいことがあるのかを伝えるほうが、

承認をもらえる可能性がグッと高くなる。

議論は避けなければならない

ソフトウェア開発者の我々は、論理的な議論によって最適な解を得られると思っている。

 

しかし、それは間違いだ

議論する人は、思ったほど論理的になれない。

 

見た目は大人であっても、時には感情を剥き出しにするし、何か反論されたときなどには感情的な意見を言ってしまったりする

そういった理由で、議論によって最適な解を導き出せるわけではないので、避けなければならない。

 

泣き叫ぶ子供に正しいことを論じても通じないように、

あなたに冷たくされて人は、あなたの言うことに賛同しないだろう。

 

何かのやり方について賛同できないとき、特にそれに人が関わっているときは

命をかけてまで反対するべきかどうかを考えよう。

自分の意見を諦め、相手の意見を尊重した実績を積み上げれば

いずれ相手は自分の意見に耳を傾けてくれるかもしれない。

 

社交術のために時間を使ったことがなければ、いますぐ始めたほうがいい。

そうすれば自分の人生がもっと楽しくなり、それは値段がつけられないほど価値のあるものだ。

「毒」のある人の扱い方。

他人を蹴落とすことばかり考えていたり、自分を犠牲にして悪いことを集めたりする人はいるものだ。

そういう人に出くわしたら、できる限り早く距離をとったり、逃げ出したりしよう。

それが最善だ。

もし、どうしてもその人と関わらなければならない場合の選択肢は

  • 相手のご機嫌をとる
  • 異動を検討する
  • 感情的にならないように最小限の範囲で接する

ことだ。

【集まれKotlin好き!Kotlin愛好会 vol2】に行ってきました

集まれKotlin好き!Kotlin愛好会 vol2

https://love-kotlin.connpass.com/event/91710/

に行ってきたので、その時のレポート

談義: 「JavaからKotlinにコンバートする際にj2kコンバータをカスタマイズした話」by paraya3636さん

資料

以下、談義を聞きながらのメモ

Java から Kotlin に変換する際に苦労した点

通常、Android Studio で変換すると思う。このとき、j2k コンバータが使われている。

ただ、この j2k コンバータは問題がある。

それは、強制的にnon null 変換されること

これを調べてみると、

引数や戻りの型に non null のアノテーションがついてないと、

nulableな変換にしてくれない。

そのため、そのまま実行するとクラッシュしてしまう。

解決案1

目視で全部チェックする

解決案2

Kotlin 化して全部テストする

ただ、この2つの案だと、やる際に手作業で辛すぎる。

さらに考えて、

コンバータを改造すればいいのではないかと考えた。

Java から Kotlin に変換するツール「j2kコンバータ」をカスタマイズした話

ステップ

  1. Kotlin を build する環境を整える
  2. typeConverter.ktを編集
  3. チャイルド IDEA を実行
  4. コードをコンパイルする。

Kotlin の build 環境は長くなるので割愛。

資料のURLとかをみてね!

カスタムコンバータの使い心地は?

クラッシュの確率が激減した。

信頼感がupして、レビューを簡素にすることができた。



談義: 「Java で書かれた Android アプリを Kotlin で書き直すまでの話」by Ryutaro Miyashitaさん

資料

以下、談義を聞きながらのレポート

書き直す際に

最初は部分的に使えるところで使っていこうという形だった。

次に、既存の画面を書き換えてみた。

次に、新しい機能追加の際には Kotlin を使い始めた。

チーム内に Kotlin が浸透してきた。

Javaとつなぎこみたいときどうすればいいの?

Javaとの共存はもちろんできるが、このコードは Java から呼ぶとか Kotlin から呼ぶとか意識づけが必要。

Kotlin 側に、Java からアクセスさせるためにアノテーションをつけてあげたりする。

ここは Java からアクセスするんだねっていうのを意識する必要がない。

Java には Unit 型はないので、 Java 側に Unit を返すような実装をしなければいけない。

このように、Java 側に Kotlin の都合が侵食していったりする。

Kotlin の旨味を100%引き出したいとなると

Java と Kotlin がお互いに都合をお互いに考えなければいけなくなる。

いっそのこと、Kotlin に書き換えたほうがいいのでは?となり、

ただ、Kotlin の習熟度レベルはバラバラ。

なので、レビューをしたり、チャットでクイズを出したり、説明したりして、

理解を深めて行った。

結果、5.3万行くらいあった、コードが4.3万行くらいになった。

手作業でやりきったのはいい思い出。

10ヶ月で全部 Kotlin 化した。

その間に機能追加やリファクタリングもできた。

効果

可読性はあがった。

Null Pointer Exception の撲滅。ほぼ出会っていない。

最後に

既存のアプリも段階的に Kotlin 化して行けた。

中途半端に導入するぐらいであれば、全てを書き換えたい。

 → Java と Kotlin 間でそれぞれを意識する手間を省けた

他チームから見た、想定外の効果

 → iOS エンジニアや Scala のエンジニアが Kotlin のコードを読んで交流が生まれるようになった。



談義: 「低レベルな Kotolin 」by tomoya0x00さん

資料

以下、談義を聞きながらのメモ

Kotolin のbyte型の話。

符号なしで処理をしたいことがある。

kotlin の byte 型に 0x80 を突っ込むと

-128になってしまう。

そこで、

符号なしとして扱ったときの最大値が十分に表現できる型に変換する。

そして、マスクをする。

やり方は、

toInt()して、0xffでandをとる。

チェックサムの話

2の補数表現を考慮して実装をする。



談義: 「webエンジニアが 2ヶ月Kotlin(Android)開発して思ったこと」by achanさん

私の談義です。

資料

以下、概要

日頃はサーバーサイドを触っている

  • サーバーサイド
  • インフラ
  • Kotlin(Android)

ができると、一人でオンラインアプリが作れるようになる。

webもできてアプリもできるって人は少ないように感じる。

webの現場で「それ、アプリでできますよ」って言えるようになりたい。

Kotlin楽しい

これから始める人はぜひ実機デバッグで欲しい。

動いたときの感動がある。

型に厳密な言語は楽しい

IDEが叱ってくれる

型を書くのは頭の整理になる。

webだといろいろ複雑な要素が多いし、環境が違うこともあるが

Kotlinだと、同じ問題に当たっている人が同じ解決策で乗り切れることが多い。

Kotlinの世界を見て思ったこと

  • viewとロジックの分離が難しい
  • クライアントにインストールされている古いバージョンへの対応
  • 端末依存問題

まとめ

サーバーサイドを日頃触っているが、

Kotlinを触って新しい世界に触れるのは良い。



談義: Property Getterby scacheさん

資料



談義: 「完全に理解した気になる Kotlin Coroutines」by takahiromさん

資料

apiが多いが、基本的なところから理解したい。

coroutinesはスレッドの上で動く、動きは確認できる。

中断もできる。



談義: 「KotlinJs でも Coroutines」by Ryo Sakaguchiさん

資料

react wigh kotlinのインストールは簡単

npm で数コマンドたたくだけでできる!