FC2ブログ
HOME

時に厳しく。時にゆるーく。 エンジニアの技術録 兼 日記です。

2019年のエンジニアとしての目標

年が明けてすでに3週間が経とうとしていますが、2019年のエンジニアとしての目標を改めて設定します。
これを設定しておかないと、ダラダラと過ごすことになりそうで・・・。

その前に、2018年の目標をどれだけ達成できていたか再確認!
過去の記事では、以下の5つを掲げていました。
①技術的なカンファレンスに積極的に参加
②産能大学通信課程を卒業
③英語と数学の資格取得&受験(TOEFLと数検)
④簿記を受験
⑤機械学習について修める

①技術的なカンファレンスに積極的に参加

年末、JavaのカンファレンスであるJJUG CCCに参加したぐらいですね。。。(汗)
せめて1年に4つ(春夏秋冬の季節ごとに1つ)くらいは参加して、知見と人脈を広げてみたいですが。
継続して目標にします。

②産能大学通信課程を卒業

これは達成できました。
反省点としては、学習のタイムマネジメントがうまくできず、半年ほど後ろ倒しになった点でしょうかね。
仕事が常に定時で終了、土日出勤なしとは限らないのに、その前提で予定を組んだのが間違いです。

③英語と数学の資格取得&受験(TOEFLと数検)

学習は継続していましたが、試験を受験できていません。
さらに、「受験」ではなくて「何点取得」・「何級取得」、という内容にしないと目標として曖昧過ぎですね。
これも継続して目標にする、かつ、内容の細分化と目的の明確化をします。

④簿記を受験

会計に強いSEであることをアピールするつもりだったんですが、ちょっと有効性に疑問が出たため保留しています。
優先度はかなり低いかな。。。

⑤機械学習について修める

これも修められていないですね。
というか「機械学習」という枠組みが大きすぎて、目標として大雑把すぎました。


さて、振り返りを行ってみると、大枠としては1/5(20%)の達成率ということに(´・Д・)
低すぎです。。。

1つ1つのタスクが大きすぎる&目的が不明瞭なので、モチベーションが維持できないんですよね。
並行しての学習が不可能なものもありますし。

かなり細かいですが、以下のようにしてみます。
指針とタスクを分けました。


[2019年の指針とタスク]
---------------------------------
■指針
・インプット、アウトプットのQuality(質)を高く
・長期間の継続が必要なタスクは、優先順を決めて消化する
・休む時は休む

---------------------------------
■タスク
①カンファレンスに年、4回参加
 春夏秋冬、季節が変わる度に、1つのカンファレンスに参加します。
 目的は自身のナレッジを磨くことと、場合によっては人脈形成。
 1~3月、4~6月、7~9月、10~12月に1つずつを目標に、と考えれば良いですかね。

 直近では、「backlog world 2019」というマネジメント系のカンファレンスに参加予定です。
 [backlog world 2019]
 https://backlogworld2019.jbug.info/

 ちょっと迷っているのが、海外のカンファレンス。
 4月にオライリーさん主催でアメリカで開催されるんですが、休み取って渡航できるかな。。。
 内容的には絶対に参加してみたいんですが、これは保留。
 あとは5月のGW中にpythonカンファレンスがある模様。日本では9月開催になるとか。

 今のところ参加してみたいカンファレンスリスト。
 ・オライリー artificial-intelligence conference
 ・pycon 2019 in Cleveland
 ・pycon 2019 JP

 参加したカンファレンスの記録は、このブログで行います。

②海外大学(大学院)の入学資格を得る
 不随するタスクが発生するので、分割して記載。
 ②-1 TOEFLのスコア90を取得する
  以下のLSE graduate diplomaの入学に必要なスコアの取得を目標とします。
  はっきりいって、90って相当に努力が必要なレベルです。
  でも、エンジニアとして生きていく以上、英語も必須なんでこのタイミングで身に着けます。
  English requirements

  一度目の試験は、仮に3/30(土)に定めました。
  英会話、英会話、、、うーんどうしようか。

 ②-2 数学のスキル証明を取得する
  卒業した産能大学には数学系の科目がほぼ無かったため、海外の大学に入学する際、証明が必要です。
  GMATとかだと確実だと思いますが、TOEFLと並行しての受験が厳しすぎるため、一旦保留。
  数学検定くらいしかいまのところ思い浮かんでいないですが、これの準1級取得を一度目標にします。
  機械学習でも線形代数や微積分の学習が必須。。。

  こちらの受験は、6月23日(日)を仮の日程としました。
  独学でいけそうかな。

③機械学習について修める
 こちらもタスクを分割して記載。
 ③-1 pythonを学習する
  基本構文と、numpyやscikit-learnなどのライブラリについて学習します。
  基本構文については終わらせているので、あとはライブラリの利用方法の習熟ですかね。

 ③-2 データ分析の基本を学習
  機械学習の前に、データ分析の基本を学習します。
  いきなりディープラーニングとか無謀…。
  まず以下を一通り終わらせます。
  Pythonによるあたらしいデータ分析の教科書

 ③-3 機械学習の初歩を理解
  実務で利用できるように理解を深めるため、以下の書籍で学習します。
  以下の内容が理解できないと、入り口にすら立てないと考えるため、喰らいつきます(笑)。
  仕事ではじめる機械学習

 機械学習に関してはここまでを終えて、その後の学習計画を見直すことになるんですかね。
 最終目標はAndrew Ng先生のMachineLearning(Coursera)のコースを終えて、内容を身に着けることなんですが、英語の学習がある程度進んでからになると思います。

---------------------------------

以上ですが、相当にモリモリですね(笑)。
本当はチームビルディングについても学びの内容に入れたいんですが、タスク化すると手が回らなくなるので今回は省きました。

6月の末あたりに、上記タスクの達成具合の振り返りなんかをやってみようかと思っています。

スポンサーサイト

産能大学の通信教育部を卒業しました

9月の卒業判定で、無事に124単位(スクーリング30単位含む)の単位認定が済み、産業能率大学の大学通信教育を無事に卒業することができました。
長かった・・・!
でもやり切りました。

1546178350998.jpg

うれしい気持ちはもちろんあり、正直ホッとした気持ちもあり、また今後はレポート作成やスクーリングなど無くなるのかと思うと不思議と寂しくもあります。
どんなに時間がかかっても、何かやり切るということは大事なことですね。
いくつになっても、本当に良い自信につながります。

学位記をもらってまずやったことは、スキルシートの自身の学歴を書き換えたことと、家族でちょっとリーズナブルな回らないお寿司を食べに行ったことですが(笑)。
休みの日に大学で時間を使うのは自分自身ですが、家族も色々サポートしてくれました。
スクーリングの日に弁当作ってくれたりね。
感謝しかないです。

自分の中では、さらに上を目指すことも考えています。
情報系、かつ仕事を続けながらという条件で進路を取ると、あまり選択肢は多くありませんが。
今はOnlineで学位も取れる時代ですし、悲観することは無いのかなと。

新年明けてそう時間の経たないうちに、次の一歩を踏み出せるよう準備していきたいと思います。

JJUG CCC 2018 Fallに参加しました

先日、JJUG CCC 2018 Fallに参加してきました。
(Javaのお祭りです!)
午後は別件で埼玉まで行く必要があったため、午前中しか参加できずでしたが、3年越しの初参加を叶えてきました。

DubSOL8U8AA1Ck4.jpg

ドメイン駆動設計の話など色々聞いてみたかったんですが、今回はSpringハンズオンのみに参加。
30~40名くらいは参加者がいたんですかね。
席はほとんど満席の状態でした。

満席だとスペース的にマウスは利用できないですね。
持っていきましたが、なんとかパッドで操作しました。

Springハンズオン自体は、2時間程度で演習を終わらせなければいけないためかなりハイペースでした。
最初の20分程度でSpringの機能説明が行われ、すぐ演習に入ります。
ただ、この演習、製造する機能の説明とかが省かれており、これから自分がどんな機能を製造していくのかが見えにくかった印象。
もちろん、ソースコードと演習問題を読んでいくと理解はできますが、Spring機能と演習内容の解読を両方、短時間で行うため結構ハードな内容となりました。

年明けには、持ち帰ったサンプルコードや演習内容を再キャッチアップしてSpringをさらに理解しようと思っています。
新しい技術体系への第一歩を踏み出す切っ掛けには、こういった演習形式のセッションを活用するのも良いですね。

私自身、JJUG CCCに参加した経験がなかったため不安でいっぱいだったんですが、よくわかったことがいくつか。
・Wifiは可能な限り自分で用意する
・マシンはWindowsでもなんとかなる
・参加予定のセッションは事前準備をチェックする必要あり

当日、運営が用意してくれたWifiが最大接続のキャパを超えて大混乱してました。
私はモバイルWifiを持ち歩く人なので、事なきを得ましたが。
できることなら、これは自分で用意した方が良いですね。

あと、こういった技術系カンファレンスってMacbookを持った人ばかりの印象で正直腰が引けてました。
今回はWindowsノートの方もチラホラ見えたので、あまり気にしなくて良いのかなと。

一番重要なのは、参加希望のセッションが、事前準備が必要なセッションかどうかチェックすることだと思いました。
(特にハンズオンの場合)
私は講師の方のツイッターアカウントをフォローしておいたので、Qiitaにアップされた事前準備用の記事にあらかじめ気付くことができました。
当日、かなりの人数の方が環境構築をせずに参加したようで、、、。
2時間のうち1時間以上を環境構築に取られていた方もいたようです。
せっかく休日に参加するのに、これは時間がもったいなさすぎます。


そんなこんなで無事に参加できたSpringハンズオンならびにJJUG CCC 2018 Fall。
時間的都合でお試し体験みたいな感じでしたが、来年に向けてワクワク感が増しました。

来年のJJUG CCCは誰かと一緒に参加できたら、さらに楽しいでしょうね。
会社の同僚でも誘ってみようか。。。

デザインパターン TemplateMethodパターン

自分なりに解釈したデザインパターンの概要と実例を記載していくシリーズを突然開始。
第1回目はTemplateMethodパターンです。
基本、Javaで実例を挙げていく予定です。

【概要】
TemplateMethodはオブジェクト指向プログラミングの継承を利用します。
各サブクラスに共通で実装したい機能を通常のメソッドとして実装し、
各サブクラスに固有に実装させたい機能をabstractメソッドとして空のメソッド定義を行います。
(抽象メソッド)

本パターンには以下のメリットがあります
・機能の大枠は変わらないが、各サブクラスで微妙に独自の実装が求められる場合に、各サブクラスに同じような実装が記載されることを避けられる

【実例解説】
JSP/サーブレットを利用して実装しようとする場合、以下のような実装のサーブレットクラスがいくつも作成されるはずです。



public class Sample extends HttpServlet{
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
// 認証処理(ログインユーザの検証含む)や各画面固有の処理を実装もしくは呼び出し

}

protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
// 認証処理(ログインユーザの検証含む)や各画面固有の処理を実装もしくは呼び出し

}
}



TemplateMethodパターンを適用した場合、以下のような実装となります。

■AbstractServletクラス(基底サーブレットクラス)
・クラスをabstractとする
・サブクラスに実装を委譲したいメソッドを定義(ここではdoExecuteGet、doExecutePost)
・基底クラスから実装を委譲するメソッドを呼び出す



public abstract class AbstractServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

public AbstractServlet() {
super();
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("milestone 000");
// 認証処理(ログインユーザの検証含む)などを実装もしくは呼び出し

// 画面固有の処理を呼び出し
doExecuteGet(request, response);
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("milestone 100");
// 認証処理(ログインユーザの検証含む)などを実装もしくは呼び出し

// 画面固有の処理を呼び出し
doExecutePost(request, response);
}

protected abstract void doExecuteGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException;

protected abstract void doExecutePost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException;

}



■LoginServletクラス(サブクラス)
・基底クラスを継承し、実装を委譲されるメソッドを定義する



@WebServlet("/Login")
public class LoginServlet extends AbstractServlet {

@Override
protected void doExecuteGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 各画面固有の処理を実装
System.out.println("milestone login get.");
}

@Override
protected void doExecutePost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 各画面固有の処理を実装
System.out.println("milestone login post.");
}
}



認証処理が基底クラス側に実装され、各画面のサブクラスでは画面固有の処理のみを実装する形となりました。
各画面の実装者はシステムのアーキテクチャに共通する事項をそれほど気にすることなく実装することが可能になり、認証機能の呼び出しの記載が基底クラスのみに実装されることで保守性もやや上がります。
サーブレットを例に挙げましたが、1つの基底クラスから似た機能を持つ複数のサブクラスを派生させる場合、TemplateMethodパターンが役に立ちます。

産能通信 半期の留年が決定しました

今年の3月卒業を目指していた産能通信ですが。
スクーリング1科目、他に科目習得1科目分、計4単位を残し留年が決定しました(笑)。

今年に入ってから急激に業務が忙しくなり、徹夜・残業続きで2月のスクーリングを1つ欠席し。
さらに2月の単位習得試験で経済学の単位を落としたためです。
前向きに考え、これから半期は卒業に向けてGPAを上げるための期間ととらえることにしました。

しかし経済学、ムズいですね。。。

4月の試験でリベンジなるか。
やっぱり数学はネックだなぁ。

1月(12月だったか?)に受講したスクーリングの記事はまた今度上げておきます。
カウンター
現在までの訪問者数
(2011 3/1~)
プロフィール

Kens30

Author:Kens30
2030代の業務・WEB系SE、プログラマー。
最近はアーキテクトっぽいことも少しずつやっています。

座右の銘 : 我以外皆我師

最新記事
カテゴリ
月別アーカイブ
最新コメント
最新トラックバック
kens30_twitter
  2015.3 アカウントを再開
  気軽にツイート、フォローしてやって
  下さい。
広告スペース


検索フォーム
ブログランキング
以下のブログランキングに参加中です。
リンク
RSSリンクの表示
QRコード
QR
ブロとも申請フォーム