無駄かもしれない足掻き

github : https://github.com/zer0-u

2018/01/14までの記録

週1回ブログを更新するにあたって、考えるのが面倒なわりに得るものが少なさそうなのがタイトルだと思う。だから「書いた日までの記録」で統一する...予定。

今週のやっていき

  • 仕事始め
  • 資格勉強
  • Udacity受講

仕事始め

仕事は好きだが通勤がつらい。TODOやスケジュール管理に難があり続けているのでどうにかしたい。

資格勉強

問題集についていた模試を解いたところ、合格はできそうだった。ただ、先週も書いたとおり「お金についての知識を得る」という目的に合致しているかというとそうでもないので、勉強に書ける時間がちょっともったいない...でも理解しないまま受検するのも...と迷っている。

資格というのは、自分が知識を身に着けたかどうかを測りやすい基準だ。ただ、何を測りたいかをもう少し明確にしたほうがいいかもしれないなーと気づいた。とはいえ勉強しながら「これはちょっと違うかもしれない...」と思っても、すでに申し込んだ後だと引き返せないのも難しい。試験と試験の間もあいてるから、ちょっと試しに勉強してみてから考えるというのもやりづらい。OCJPみたいに随時開催してればいいのにな~。

来週は、試験に向けてほどほどに追い込みつつ、勉強時間のバランスは見直していくつもり。

Udacity受講

資格勉強を優先しているのであまり進んでいない...。今日はこの記事を書いたら続きを受講する。

雑感

何をしたかだけを書いていくとあんまり意味が無いように思う。だから、次の週はこういうことを目標にしよう...みたいなことを決めたいのだけれど、どうやって決めたらいいかがよくわからない。明確な締切(試験日とか)があるとそこから逆算して今日はこれをやろう、というのが決められる。だから自分なりに締切を設定すればどうにかなりそうなんだけど...どうしたらいいんだ?

ひとまず、来週中には↓のコースが受講し終わっていればいいなぁ

https://classroom.udacity.com/courses/ud834

ではー!!

2018年の目標

あけましておめでとうございます。もう6日ですがそのへんはスルーします。

2018年の目標は週に1回ブログを更新することです。基本的に土曜日または日曜日に1記事書きます。目指せアウトプット駆動生活!

仕事では散々アウトプットしてます。教材(の下書きなど)がアウトプットですね。でもそれだけだと、学ぶことの幅が狭まってしまうかもしれない。アウトプットの方式も決まってるので、乗り切らない部分の学びが浅くなってしまうかもしれない。ということで、自分の引き出しを豊かにするためにも、ジャンルを問わずいろいろと勉強していきます。

最近学んでいること

FP3級

今月末に試験なので追い込み中です。なかなか難しい...。規則というよりは、細かい数字(たとえば相続税配偶者控除の条件や控除額)を覚えなければならなくて苦戦しています。そういうのを覚えなくていいようにシステムってものがあるんだろう...?!とちょっとイライラすることもあります。人のお金に関わる仕事なんだから、なおさら万全を期して確認しながら進めるはずです。であれば資格取得時に数字を覚える意味とは...? まぁ問題形式から考えてもそういった細かな部分を問うのが一番やりやすいのかもしれないなぁ、と自分を説得しながら進めています。

自分が教育を仕事にしているから、こういう問題の出し方はやめよう、とか、説明はこっちの順番にしたほうがわかりやすいかもしれない、などと、本来の知識とは別のところでも学んでいます。ひとまず言えるのは「その知識を実務で活かしている様子」が見えるようにしたほうがいいかもしれないなぁということです。さきほどの「万全を期して確認しながら進めるはず」というのもそうですね。学んでいる知識がどのように活かされるか、それをイメージできればより効率よく学べるような気がします。

ところで、自分の金銭周りの感覚を正したいという動機で学び始めたものの、あまりそっち方面の成長は期待できなさそうです…。投資や相続について詳しくなりました。その前に金銭面から見た生活設計の方法とかを知りたかったはずなのですが...うーん。みんなそのへんは身についてるってことですかね?

Androidアプリの作り方

業務でKotlinやSwiftといった新領域に進出するにあたって、まずはAndroidアプリを作れたらいいなぁと思ったからです。ひとまず公式のチュートリアルを終えた後、Udacityで無料のAndroidアプリ作成コースを受講しています。

developer.android.com

ところでこのページにあるUdacityへのリンクが切れているのはどこへ報告すべきですかね...?

Udacityのコースはこちらです。基本的に英語です。映像にはだいたい日本語字幕がついているので、調べながら進めれば今のところは大丈夫です。英語ももう少しすらすら読めるようになりたいなー。

作りたいなーと思っているアプリの題材について

俳優のおたくのための貯金アプリです。

2016年の年末頃から、とある舞台俳優を応援してます。出演作品を見に行ったり、イベントに参加したり、グッズを買ったりってことです。俳優のおたくをしてると、同じようなおたくたちの仲間ができます。推し(応援している俳優)の顔の良さを褒め称える会とかできます。あとノリでピューロランド行ったりする。意外と楽しかったです。基本的に男性中心かつ年上の多い世界で生きてきたので、おたくたちの世界はなかなか新鮮です。JKと友達になれる。すごい。

それはともかく、俳優のおたくたちはお金がありません。舞台俳優の応援ってめっちゃお金かかる...。チケット1枚で8000円がザラだし、何回か行くならその分かかるし、チケットだけじゃなくてグッズやらDVDやらでお金が軽率に吹っ飛んでいきます。あと雑誌か。雑誌意外と高いんです...。だからこそ生活設計しなきゃなって思ったんですけどね。でも推しが見たいのでしょうがない。

で、考え出されたのがこちらの方策です。

  • それぞれの推しTwitterアカウントをチェック
  • 推しが何かpostしたらその度に100円を貯める
    • 写真付き・動画付きなどはボーナスあり
    • このへんのさじ加減は人それぞれ(自撮りなら+500円、という人もいる)
  • 貯めた分だけを使ってグッズを買う

結局推しのためにお金を使うんです!!!!!!それがおたく!!!!!!

この「貯金額」を管理するアプリがあったらいいなぁ~と思い、ゆるゆると勉強しているところです。推しがpostした時にちょうどよく100円玉を握ってるっていう状況はあんまり思いつかないので、月末などのちょうどいいタイミングでまとめて貯金できたらなぁ...みたいな。

推し駆動開発です。乞うご期待。ただTwitterの検索APIの仕様がよくわからなくて早くも挫折しそうなんですけどね...。おたくたち(自分含む)の財布のために頑張ります。

ではー!!

はじめて転職する人へ

どうも、ぜろゆです。

退職者アドベントカレンダー、12月22日分です。

adventar.org

続きを読む

Enumと定数の差

についていろいろな知見を得たのでメモしておく。

ことの発端

発端はこちら。

もう少し詳しく言うと、

こうなる。Enumについて解説しようと思ったところ、ふと「定数と何が違うんだろう?」と思ったのがきっかけです。いつもご意見ありがとうございます。

Enumと定数の違い

簡単に言うと、値が取りうる範囲をどこで保証するかという点が違う。

定数クラスの場合

定数だけを持つクラスを宣言したとする。こんな感じ。

public class BloodType {
    public static final int A = 1;
    public static final int B = 2;
    public static final int O = 3;
    public static final int AB = 4;

    private BloodType(){} // インスタンス化防止
}

でも、BloodTypeを受け取るメソッドというのは引数をint型にせざるを得ない。

public int hogeMethod(int bloodType){
    return 0; // 実際には血液型に応じて何かするメソッド
}

これだと、引数のbloodTypeがA,B,O,ABの4つのうちどれかであることを保証するのは実装した人になる。if文で分岐するなり、switch文を書くなりして、elseなりdefaultでどうするか(nullを返すとか、例外投げるとか、デフォルト値的なものを返すとか)を考えなきゃいけない。呼び出す側も、取りうる値を確認する必要がある。BloodTypeクラスの定義を確認して、A型なら1を入れることを知らなければならない。全然関係ない値を入れて「思った通りに動かないじゃん!」と言うこともできちゃう。困る。

Enumの場合

Enumで宣言すると、取りうる値の範囲を保証するのはコンパイラになる。

public enum BloodType {
    A,B,O,AB
}

こうすると、BloodTypeの取りうる値が4種類に限定される。呼び出す側も、BloodTypeまでタイプすれば候補の4つが予測変換?に表示されるからいちいち定義を見なくていいし、関係ない値を渡そうとするとコンパイルエラーになる。引数に取る側も、違う値が来たらどうしよう...と悩む必要がない。とても便利。

雑感

書いてみるとこれだけのことなんだけれど、意外とするするっと説明できなかった。選択肢?はいはいEnumね~わかるわかる、でなんとなく過ごしていたのかもしれない。自分で説明しようとすると、これがわからない・あれどういう理由だっけ...?となるので、理解を試すためには自分が説明できるかを基準にすることはいいと思う。

というか「わかったふり」って自分も騙せるから怖いなぁ。こういう風に「なんとなくわかってるけどほんとはわからないこと」がたくさんあるんだろうと思うとちょっと怖い。

JJUG CCC 2017 fallに登壇してきた

登壇した関係の話と、いち参加者としていろいろなセッションを聞いた感想を上げておきます~。

登壇まわり

ありがたいことに満員でした。初心者~中級者と自分で決めたターゲット層にマッチする方が多かったのもうれしかったです。

資料はこちら

speakerdeck.com

資料に入っていないこぼれ話

購入したもの

スライドからURLがうまく踏めないのでこちらにもリンク載せておきます。

オラクル認定資格教科書 Javaプログラマ Silver SE 8

オラクル認定資格教科書 Javaプログラマ Silver SE 8

オラクル認定資格教科書 Javaプログラマ Gold SE 8 (EXAMPRESS)

オラクル認定資格教科書 Javaプログラマ Gold SE 8 (EXAMPRESS)

あと問題集はこれを使いました。

徹底攻略 Java SE 8 Silver 問題集[1Z0-808]対応

徹底攻略 Java SE 8 Silver 問題集[1Z0-808]対応

徹底攻略 Java SE 8 Gold 問題集[1Z0-809]対応

徹底攻略 Java SE 8 Gold 問題集[1Z0-809]対応

OCJPの教科書・問題集について

本筋ではないから削除したんだけれど、書籍を元に勉強する際は必ず正誤表を確認してください。ほんとに。Amazonで買うと初刷が届く可能性が高いので特に。問題文のミス、解答の選択肢に同じものがある、説明がしっちゃかめっちゃか…などなど、わりと苦労しました。これで苦労したからJLSやAPIリファレンスを読む力が伸びたといっても過言ではないくらいです。見つけた間違いは2刷では直ってるのがほとんどなので、余裕があれば書店で実際に確認してから買ったほうがいいとも言いたいです。

正誤表はWeb上で公開されています。それぞれの書籍の冒頭にURLがあるので確認してから始めてください。

試験問題について

終了後に質問されたのでこちらでも補足します。

試験問題は日本語・英語が選べます。他の言語もあるかもしれませんが、ここでは需要がないし調べてもいないので省略します。申込時に選びます。試験時間中に切り替えることはできません。なんか公認資格にするには日本語を選ばないと…みたいな話もどこかで見かけましたが、自分の学習のために受けるなら慣れた言葉で大丈夫だと思います。職場などで受ける場合は事前に確認してください。

ただ、日本語特有の翻訳にまつわる問題なのか、一部の問題は非常にわかりづらいです。原文を見たらわかるかもしれないけれど、本当におまえこの答えで合ってるって言うのか?!?!?!みたいな逆ギレ案件がたまに紛れています。教科書作る人の間違いかと思ったら、全く同じ問題が本番にも出たので思わずチベスナ顔しました。

そういった問題は深追いせず他の問題で点数を稼いだほうが良いです。試験のテクニックでした。

参加したセッション

午前中は自分のセッションに向けてそれどころじゃなかったので何も聞いてないです。よこなさんのセッション聞きたかった…。あとで資料読みたいけどどこかでまとまっていますか?(他力本願)

午後からは解放感に浸りつついくつか参加しました。

ccc_g3 Java 9を迎えた今こそ! Java本格(再)入門

J2SE1.4の時代からJava SE 9までを駆け足で振り返った感じでした。最初のコードは過去のトラウマをいい感じにえぐられましたねw

5で入った変更は「より安全に書ける仕組みの導入」、Stream APIは「今後必要になる考え方が含まれている」新機能、といった、なぜその機能が導入されたかをまとめる言葉があったのが印象的でした。

ccc_e4 Java SE 9の紹介:モジュール・システムを中心に

Java SE 9でモジュールシステム(jigsaw)が来たぞ!と言われつつも何が変わるのかわからなかったので参加しました。やっぱ難しいわ…リフレクションについての知識がなかったので後半はほぼ置いてけぼりでしたね。クラスやメンバの可視性がより細かく設定できるだろう、ということはわかりました。

業務として開発の際に使うわけではないものの、知っておかないと教えることができないってのが他の方とは違う悩みどころです。広く深く知っておかなければならない。勉強時間もきちんと確保しないとな~OCJP受かったからって慢心しちゃだめだな~と思いました。

ccc_a5 JDKの新しいリリースモデル

まだ確定情報じゃないらしいので細かい内容は伏せておきます。ガラッと変わるみたいでほんとにこれでいけるのか??????確信が持てないぞ??????というのが正直なところです。現場はJDKのアップデートやサポートを検討してどこに移行するか考えつつ、教える側としてはどこまで最新の文法事項などを追っていくかがポイントになりそうでした。ほんとに実現するとしたらSE 8以前とそれ以降とで大きく二分されそうでそれもそれで怖いなぁ…。早く確定情報がほしいです。

ccc_g6 新しいプログラミング言語の学び方

新しい言語を学ぶときにHTTPサーバを作ると、本当に学びたいこと(新しい言語)に集中できるよ!という話でした。ただ、ネットワーク周りの基本的な知識がないと、そもそも「俺は今何を作ってるんだろうか…?」状態になりそう(というか私は途中からそうなってた)です。だから、1つの言語にある程度習熟した人が、新しく何か学ぶときの手段としては確かに的を射ていると感じました。ネットワーク周りは苦手なんですよね…。応用情報取るときも捨ててかかった部分です。

この部屋の後ろの方だとスライドがほとんど見えないですね…。遠すぎるのと、前の人の頭と被って下半分がほとんど見えないままでした。特に、コードを写すときに背景が黒いとまじで何も見えません。自分が登壇する時は気をつけます。ちなみにエディタは白背景派です。

会場よもやま話

一方通行が導入されたお陰でものすごく移動しやすくなりましたね…。前回までのもみくちゃ状態がなくて快適でした。誘導もしっかりしているし、地図に動線書いてあるしわかりやすかったです。参加人数も少し絞ったのかな…? CfP通った時点で参加人数などは把握しなくなったのでちょっとわからないです。

アンカンファレンスの仕組みもよさそう…とは思ったのですが、いつ何をやっているか把握できなかったので結局参加せずでした。早めに把握しないと、その時間に見たいセッションがあった場合に動きづらいなぁと…。Room Lのドアの他に、ロビーのところ(テーマ募集時のホワイトボードの場所)にもあると見やすかったかな―と思いました。Lのドアまで行くと戻ってくるのに大回りしなきゃだし。

そんな感じです!今日はゆっくり休むぞ~