ぽんこつ備忘録

自分用のWatsonやらAndroidやらやったことの備忘録 さぼりがち

久しぶりに振り返り

就職活動が終わってもう一年近く経ちました。
無事に一般企業に入社をすることができ、順調に社会人へのスタートを切ることができました!
そんな社会人としての生活が始まって研修もようやく一区切りついたのでこうして久しぶりに筆を走らせているわけで。

このブログもアウトプットの練習、ということで始めたものですが三日坊主の癖が抜けずすぐにサボってしまいもう一年近く更新していない始末。
この話久しぶりに更新するたびに言っている気がするな!?
いかんいかんと思いながらも積み本はいまだに積み上がっており、いつか聴こうと思って購入した音声書籍もいまだに途中で止まっているんだなぁ。
最後に聞いたの3月?え、もうどんな内容の本だったか覚えてないよ!?こんなことになるともう聴くモチベーションを失ってしまうわけで。
もっと自分をコントロールできるようになりたいわ。。。

自分の考えていることを活字に起こすことで思考を整理することができるし、文章を書き起こす訓練にもなると思いたまにはこうやってノートPCを開いてみるのもいいのかなと思ったり思わなかったり

さて、去年の7月にKotlinを触り始めて、Kotlinの素晴らしさを全身で体感したのでKotlinを使ってアプリケーションを作成、修論の執筆をしてみました。
モダンな言語というのに初めて触ったこともあって、コテコテのJava,C++の記述からハイソでお洒落なコーディングへステップアップしている!とテンションが上がるとともに
技術力の高まり(虚無)を感じていましたね。ライブラリが充実しているため繰り返し使うようなもの(Http通信とか)がめっちゃくそ簡潔にかけるのは新しい物好きとして興味をそそられましたね。

そんなこんなで卒業することができて新居へ引っ越して新たな世界に飛び込んで勉強三昧の日々。
人としての成長ができるように気張らない程度に頑張ってまいります。

Kotlinに触れてみる

Androidのアプリを個人で作ることになったので、Kotlinで作ってみようと思い立つ。
今までずっとJavaでしかアプリを作ったことが無かったのでほかの言語に触れてみる、挑戦してみるいい機会だと感じたので
前々から気になっていたKotlinで一つアプリを作ってみることにしました。

なぜKotlin?

就活の時、Androidのアプリを作っていることを話す機会が多く、何で作っているのかと問われることが頻繁にあった。
話をしていくと、最近はKotlinで開発を行っているところが増えつつあるらしいとのことで興味を持った。
React Nativeでクロスプラットフォームのアプリケーションを作ってみることにも興味があったけどそちらはまた追々やろうと思う(やらないやつ)

Kotinを触ってみて

Wikipediaさんによると静的型付けのオブジェクト指向プログラミング言語であるらしい。
静的型付けのプログラミング言語って最近よく聞くよね。型推論ってやつ?わざわざ記述しなくても勝手に整数型とかそれぞれ適した型の配列にしてくれるってこと?

var value = 0;

これで済むってやべぇな・・・すげえな・・・

とりあえず、これを触っていこうかと思いますっていう宣言でした。

GradleのDuplicate class ... のエラー

WatsonのNLUを新しいバージョンのものを使いたくて
Gradleに下記の依存関係を宣言した(って言い方でいいの?プラグイン??)

implementation 'com.ibm.watson:ibm-watson:7.1.1'

Syncは無事に完了し、ビルドしたら下記のエラーが出た

Duplicate class javax.annotation.CheckForNull found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)
Duplicate class javax.annotation.CheckForSigned found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)
Duplicate class javax.annotation.CheckReturnValue found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)
Duplicate class javax.annotation.Detainted found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)
Duplicate class javax.annotation.MatchesPattern found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)
Duplicate class javax.annotation.MatchesPattern$Checker found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)
Duplicate class javax.annotation.Nonnegative found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)
Duplicate class javax.annotation.Nonnegative$Checker found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)
Duplicate class javax.annotation.Nonnull found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)
Duplicate class javax.annotation.Nonnull$Checker found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)
Duplicate class javax.annotation.Nullable found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)
Duplicate class javax.annotation.OverridingMethodsMustInvokeSuper found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)
Duplicate class javax.annotation.ParametersAreNonnullByDefault found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)
Duplicate class javax.annotation.ParametersAreNullableByDefault found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)
Duplicate class javax.annotation.PropertyKey found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)
Duplicate class javax.annotation.RegEx found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)
Duplicate class javax.annotation.RegEx$Checker found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)
Duplicate class javax.annotation.Signed found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)
Duplicate class javax.annotation.Syntax found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)
Duplicate class javax.annotation.Tainted found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)
Duplicate class javax.annotation.Untainted found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)
Duplicate class javax.annotation.WillClose found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)
Duplicate class javax.annotation.WillCloseWhenClosed found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)
Duplicate class javax.annotation.WillNotClose found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)
Duplicate class javax.annotation.concurrent.GuardedBy found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)
Duplicate class javax.annotation.concurrent.Immutable found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)
Duplicate class javax.annotation.concurrent.NotThreadSafe found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)
Duplicate class javax.annotation.concurrent.ThreadSafe found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)
Duplicate class javax.annotation.meta.Exclusive found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)
Duplicate class javax.annotation.meta.Exhaustive found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)
Duplicate class javax.annotation.meta.TypeQualifier found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)
Duplicate class javax.annotation.meta.TypeQualifierDefault found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)
Duplicate class javax.annotation.meta.TypeQualifierNickname found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)
Duplicate class javax.annotation.meta.TypeQualifierValidator found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)
Duplicate class javax.annotation.meta.When found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jsr305-3.0.2.jar (com.google.code.findbugs:jsr305:3.0.2)
Duplicate class net.jcip.annotations.GuardedBy found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jcip-annotations-1.0.jar (net.jcip:jcip-annotations:1.0)
Duplicate class net.jcip.annotations.Immutable found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jcip-annotations-1.0.jar (net.jcip:jcip-annotations:1.0)
Duplicate class net.jcip.annotations.NotThreadSafe found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jcip-annotations-1.0.jar (net.jcip:jcip-annotations:1.0)
Duplicate class net.jcip.annotations.ThreadSafe found in modules annotations-3.0.1.jar (com.google.code.findbugs:annotations:3.0.1) and jcip-annotations-1.0.jar (net.jcip:jcip-annotations:1.0)

Go to the documentation to learn how to Fix dependency resolution errors.

いや長い。意味わかんない。
Duplicate class ・・・?クラスの複製?あ、重複ってこと??
Jarファイルが重複してんのかーとかつらつら調べても原因は分からず対処方法もわからず

そもそもGradle周りの理解がゼロなのでこれが果たして何のエラーなのか皆目見当つかずにひたすらにググってると全く同じ症状のGithubのIssueを見つけた

github.com

sidvenuさん、ありがとう…!!
ってことで下記のように書き直したらなおりました

 implementation ('com.ibm.watson:ibm-watson:7.1.1'){
        exclude group: 'com.google.code.findbugs', module: 'annotations'
    }

備忘録の意味も込めてメモしておきます。

ってか就活記事の続きを書いていませんでしたね
さぼり癖、抜けず。

就活のそうかつ インターンから年末まで

就活の備忘録です。
備忘録をつけようかなーと思ってエディタを開いてみたけど振り返る記憶がおぼろげ。
人間辛いことはすぐ忘れるようにできてるし何なら定期的に振り返らないと昔の記憶とかも全部消えてしまうしメモ代わりに。だらだら書きます。

私は学部で2カ月くらい就活のまねごとをしながら院進学を迷っていて
入りたい企業とか達成したい目標とかまるでなかったしもっとダラダラ過ごしたい世間を知る必要があるなーと思って院進学を決めた。
こんなふざけた理由で院進学したって知られたらいろんな方面から怒られそう。
んで、なんだかんだしてたらM1も半分くらい過ぎて、さすがに就活を意識しなきゃ死ぬな?と焦りを感じ動き出すことに。

ちな、就活の活動期間はM1の8月~M2の6月です。なかなか決まるのが遅かった。

インターン

就活って何したらええんやと右も左もわからないのでとりあえずインターンに行ってみるかと思い立つ。
しかしここは田舎。インターンを受け入れてくれる企業などほとんどなく、都心までいく必要があるものばかり。
研究とかバイトとかあるし1か月の長期インターンは無理そうだなとか思って短期インターンを探してた。
今思うと大きい企業やベンチャーの長期インターンを無理してでも行くべきやったなぁとは思った。だいたい旅費とか宿泊費は出してくれるし。
ほんで目についたのは、面白そうなプロダクトを多く持ってるめちゃくちゃデカくて強い会社が2日で行うインターン(?)。こんなとこFラン大学のド田舎院生がいけたらいいよなぁと記念受験的な感覚で応募したらまさかの合格。しかも気になってたサービスを触らせてくれるとのことでワイ、ウッキウキ。しかし行ってみると東大、早慶がワラワラいて委縮するワイ。そんなすごい人が集まる中ですごいことしてるすごいエンジニアの人の話を聞いて、すごいなーと思った。楽しそうにサービスを語ってる姿が誇らしげでこういう人になりたいなと思い始めました。

逆求人イベに参加

意識高い後輩(学部)におすすめされて行ってみた逆求人イベント。某支援サイトの逆求人イベで、そもそも逆求人とは何だ?ってところから飛び入りで参加してみたのでいろいろ大変でした。
企業の(しかも強いベンチャー企業の)人事とたくさんお話ができたので自分自身の考えの浅さと知識の無さ、自己分析の甘さを痛感できた。

就活の軸

逆求人イベで「就活の軸は何?」って聞かれて「エンジニアとして成長できる」「信頼されるエンジニアを目指す」などとさっき考えたようなふわふわした回答をしてました。そもそも就活の軸って何?ってレベルだったので面接官の人からしたら何しにここに来たんだコイツってなったでしょうね。
取ってつけたような考えで出したこの回答も、ほとんどの企業で当てはまるようなことだったり、そもそも何がしたいのかさえ分からないので、よいこのみんなはちゃんと考えてから行動しようね!
こんな舐めた態度で就活してたら上手くいくはずもなく、何も考えていないことが露呈するだけにもかかわらず考え方が分からないため、しだいに焦りだけが募っていきました。

さよならベンチャー

そんなこんなでご縁があったWeb系のベンチャー企業の面接、面談を1月あたりまで集中して受けてきました。Web系に強い興味があったわけでもなく、選考が始まっているからとの理由と面接の練習をしたいとの理由でダラダラと受けてました。失礼極まりない。
逆求人イベで出会った企業の人事とたくさんお話をさせていただいて、考えの指針となるようなアドバイスをくれた人事も居て良い方たちが多かったのでそこそこ楽しみながら就活を進めてきました。けれども何となくコレジャナイ感を抱えながら行動していたので煮え切らない態度のまま選考を進めていきました。
そんな中、某アプリ開発を行う会社の人事とお話ししていて、自分のキャリアの考え方やリーダー像を話したところこう言われました。
「君、ベンチャーに向いてないね!」
・・・なるほど!!!!!僕はベンチャーに向いていなかったのか!!!!!!

ということで、進んでいた選考を全部辞退してベンチャー企業への就活を辞めたのでした。

年始から内定までに続く。

AtCoderのABC参加してみた

就活も若干落ち着いたのでAtCoderに登録してみました。
競技プログラミングICPCにふわっと参加したことがある程度だったので
自身とか全くなかったけどとりあえずどこまでできるか腕試し

結果

ABは解けてCの解き方が全く分からず轟沈。
並みの情報系学生レベルですかね・・・できる人なら完答余裕なんでしょうけど・・・。

とりあえず解いた問題を整理していきます。

A問題

ビスケット生成装置を使って増産するシンプルな問題。
てっきりババァを増やして反物質を生成する問題かと思いました。クッキークリッカー久しぶりにやりてぇなぁ?
与えられる入力値はA B Tで、
A秒毎にB枚のビスケットをT+0.5秒間で何枚作れるか、とのこと。
単純にTをAで除算して出た結果×Bでいいのかな

#include<stdio.h>

int a[3];
int aa, b, c;
 
int main(void) {
	for (int i = 0; i < 3; i++){
		scanf("%d", &a[i]);
	}
	aa = a[2] / a[0];
	b = aa * a[1];
	printf("%d", b);
	return 0;
}

B問題

N個の宝石の中から価値が高いやつを任意の個数選んだり選ばなかったりして
最強のコスパを叩き出せ!って問題
最初は全通り計算する奴かな?とか頓珍漢な考えだったけど
普通に 宝石の価値 > コスト なものを全部選んで足せばいいだけやんってなるとあとは簡単
たぶん配列使ってうまく計算するんだろうけどその辺よくわからんからゴリラプレイ。

#include<stdio.h>
 
int a[20], b[20], c[20];
int asum = 0;
int bsum = 0;
int n;
int result;
 
int main(void) {
	scanf("%d", &n);
 
	for (int i = 0; i < n; i++) {
		scanf("%d", &a[i]);
	}
	for (int i = 0; i < n; i++) {
		scanf("%d", &b[i]);
	}
	for (int i = 0; i < n; i++)
	{
		if (a[i] > b[i])c[i] = 1;
		else c[i] = 0;
	}
	for (int i = 0; i < n; i++)
	{
		if (c[i] == 1) {
			asum += a[i];
			bsum += b[i];
		}
	}
	result = asum - bsum;
	printf("%d", result);
	return 0;
}

あとがき

C,D問題はまだまだ歯が立ちませんでした・・・。
最大公約数を出すアルゴリズムを考えるところからだったのでまぁ無理だよね()
調べてみたら再起を使って2~4行できれいにまとめてるアルゴリズムもあってほえ~~~世界って広いなオラ、ワクワクすっぞ!
累積gcdとかぱっと思いつく発想力と既存の知識をうまく当てはめる柔軟性とが必要だなって思ったり
純粋なアルゴリズムを考える力だったり構造を把握する力をつけておかねばなぁと思うところ

就活でコーディングテストやったときは引っ掛け問題にうまく引っかかったとか
言われたから悔しかったしそれがどこかも教えてくれなかったから一生恨むわ御社ェ
こんなしょうもないところで躓いてお祈りとかほんとにもったいないから最低限のコードは書けるようになっておこうな!
・・・ワイのお祈りの理由はもっと別のところにあると思うけど・・・

現状整理

ブログでのアウトプットを増やそうといったのが100日前.
その間あげた記事の数は1個だけ.
まったく進歩してないというか有言不実行というか...
自分のサボり癖のひどさを再確認しました.これは外部の環境や締め切りに終われない限り実行しない学生症候群の一種と考えてもいいのだろうかそれとも自分の脳のスペックが著しく低いのだろうか...?

現状

作成しているアプリケーションの完成がまだ.待ちの状態ってこともあるけどやることはいろいろあるし整理してから実行に移す必要がある.
論文発表もまた年度末に控えているため,その発表資料を作って読み練習をしなくちゃいけない.
就活も年末から始めてはいるものの未だに著しい成果を上げることはかなわず.
自分が考えなければいけない部分や足りていない部分がだいぶ分かってきたものの,実際どう考えたらいいのかが全く分からない.
自分がベンチャー企業に向いていないってことはよ~~~~~~くわかったよ.向いていないというか人間的にそんな高尚な考え方ができてないというか,自分の中に燃え上がるようなパッションが全くなくて,夢とかそういうものが全然わからないからかね.
ふわふわと忙しさにかまけて時間だけがいたずらにすぎていくような感覚の中でもう2月も中ごろに差し掛かってきた....焦りだけはいっちょ前にあるけど危機感が全くないってのがやばい.やばすぎる.

これから

まずはアプリケーションを完成させてリリースする.まずはこれが第一.
論文発表も準備をしっかりしなきゃならんから週末使って考えるようにしよう.
就活をほんとうにどうするかねぇ...自己分析をしてちゃんと信頼できる人に(重要)相談,評価してもらってブラッシュアップと深堀りを進めていく.
自分の手持ちの研究も2月末までにもう一段階先に進めなきゃいけないし,上の二つを片づけてから取り掛かるとしよう.
あと自分でアプリゲームとかも作ってみたいとは思うから簡単な物を作ってみるか.そして二人で何かアプリを作ってみたいな.

国際学会発表

某国際学会に行ってまいりました.
簡単にその振り返りをつらつらと.

準備

初めての国際学会発表で発表の空気感や暗黙のルール,テンプレートなどが分からなかったためひたすら調べていった.
この調べる段階で3,4日消費してしまっていたためこういう前準備はパパっと済ませなきゃダメですね.

https://www.library.osaka-u.ac.jp/doc/TA_20160624_EN.pdf
Availability of Mobile Augmented Reality System for Urban Landscape S…
上記のスライドを参考に構成を考えていった.

作成

論文自体はすでに書き終えていたため,その内容に沿って簡単な絵と動きをいろいろつけながら組み立てていきました.
書き言葉をそのままスライドに貼り付けていたため主語を抜いたり簡単な表現に書き直したりしてスライド内の情報量を簡潔にしていった.
読み原稿もそれに合わせて調節を行い,追加で説明を加えるところはGoogle翻訳を駆使して追記していった.Googleさん強すぎるわほんま.

発音練習

読み練習で,こってこての日本人英語で発音してしまい留学生にダメ出しをめちゃくちゃ食らう.書き上げたばかりで通し読みもしていないから発音が難しい単語とか全く読めずひたすら練習.
Google翻訳を使った発音確認も便利っちゃ便利ですけど如何せんスピードが速すぎるためマネするのが大変.
もっと便利なものはないかと探してみたところ
www.naturalreaders.com
このサイトを使って読みの練習は徹底的に行いました.
豊富な読み上げボイスとスピードが段階的に調節可能,指定したところからの読み上げなどかゆいところに手が届くサイトで非常に助かりました.
有料会員になれば音声をmp3にしてダウンロードできるらしいのですが,そこまでする程ではなかったので無料版でお世話になりました.

発表当日

もうやれるだけやったしどうにでもなれっ!と開き直って,根拠のない自信を引っ提げて発表に臨みました.
ゆっくりしっかり,大きな声で発表できたため,ベストを尽くせたように感じた.
質疑応答に関しては(察し)
質問の意味は分かるけど,回答を言語化できませんでしたね.これは英会話の訓練が必須ですわ...

以上.