2019/09/07

VSCodeのSTSでハマったこと

SpringBootを使ったWebアプリのビルドで手順書を作ることとなった。
サンプルのプロジェクトを見ながら手順書を作りたかったので、メンバーが使っているIDEAであるSTS(Spring Tool Suite)の環境を準備することにした。
STSダウンロード場所
環境構築時に困ったことをまとめる。
結論としては、VSCodeとOracleJDKの最新版(jdk1.8.0_202)で環境構築できた。

Win環境に展開できない

会社で環境構築したときの困りごと。
  • 会社のPCの環境
    • OS:WIn10 64bit
    • JDK:Oracle JDK 1.8.0_xxx ※再確認
  • 導入しようとしたSTS
    • Spring Tools 4 for Eclipse Windows 64-bit
  • 困ったこと
    • ZIPファイルを展開すると、ファイル名が長くて展開できないというエラーが発生し、展開が完了できない
  • 対応策

VSCodeのExtensionの「Language Support for Java by Red Hat」が動かない

自宅で環境構築したときの困りごと。
  • 自宅のPCの環境
    • OS:Mac High Sierra 10.13.6
    • JDK:Oracle JDK 1.8.0_05
  • 発生したエラー
    • VSCodeのダイアログ
      The Language Support for Java server crashed 5 times in the last 3 minutes. The server will not be restarted.
    • Extentionのサイトに行ってみると、JDKの設定が必要と記載があった
    • 記載されている内容を実施してみる
      • VSCodeの設定に「java.home」を追加して、JDKのパスを設定
        // Spring Boot Development
        "java.home" : "/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home"
        
      • JAVA_HOMEを環境変数に追加し、PATHにも追加
        $ vi ~/.bash_profile
        ## JAVA_HOME
        export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
        export PATH=$PATH:$JAVA_HOME
        $ source ~/.bash_profile
        
      • 変更内容を反映
        $ source ~/.bash_profile
        
      • 反映内容を確認
        $ printenv JAVA_HOME
        $ printenv PATH
        $ java -version
        $ javac -version
        
      • VSCodeを再起動
      • VSCodeのダイアログの内容は変わらないが、エラーを見てと言われた
        • エラーログ
          { message:
             'Starting Java server with: /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/bin/java ※※省略※※,
            level: 'info',
            timestamp: '2019-09-07 12:04:46.072' }
          { message:
             'Unrecognized VM option \'UseStringDeduplication\'\nError: Could not create the Java Virtual Machine.\nError: A fatal exception has occurred. Program will exit.\n',
            level: 'info',
            timestamp: '2019-09-07 12:04:46.165' }
          { message:
             'The Language Support for Java server crashed and will restart.',
            level: 'error',
            timestamp: '2019-09-07 12:04:46.171' }
          
      • 2つめのログを見ると、設定は反映されているけど、JVMが起動できていない感じ
      • Quick Startの2つ目に下記の記載があって、JDK1.8であれば良いと思ったけど・・・
        • Download and install a recent Java Development Kit (latest Java 8 is the minimum requirement).
      • 試しに、Oracle JDKの最新版(jdk1.8.0_202)をインストールし、再設定
        • 環境変数
          $ vi ~/.bash_profile
          ## JAVA_HOME
          export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home
          #export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
          $ source ~/.bash_profile
          $ java -version
          $ javac -version
          
        • VSCodeの設定(更新・保存すると、再起動のポップアップあり)
          // Spring Boot Development
          "java.home": "/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home"
          //"java.home" : "/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home"
          
        • 再起動すると、バックグラウンドで処理が実行され、エラーは表示されなくなった!
          • "recent Java Development Kit"とあっただけあって、マイナーバージョンを上げる必要があった

VSCodeでSpringBootの開発を行うために

あとは、下記の記事を参考に開発をしていくと良さそう。

2019/08/16

APIの設計書をMarkdownで書いてみたい

なんでやろうと思ったのか

会社で基本設計書といえば、ExcelとかWordとかPPTとか、Office系のアプリを使って作成することが多い。
その場合、下記の点でいつも悩ましい状態になる。
  • バージョン管理
  • バージョン間の差分管理
    • レビュー指摘票と行数のマッピングのズレ(指摘が複数ある場合に行数や連番がずれて、どこの指摘の修正がどこに行ったのかわからなくなる)
  • レビューのクローズ状況の追跡
最近はMarkdownとPlantUMLを組み合わせて、シーケンス図やシステムコンテキスト図の概要を作ってみている。
(最終的には画像化してPPTに貼っているけど。。。)
なので、上記の悩ましい状態の解決方法として、最近慣れてきているMarkdownでの基本設計書の作成をしていきたいと考えていた。
ということで、試してみたので、その備忘録です。

で、どうだった?

記述ルールは簡単で、モックサーバをローカルに立てみて、
  • 設計と実装意図があっているか確認できる
  • 実コードが無くてもローカルでAPIを利用して、利用者側の実装ができそう
というところまで確認できたので、かなりいい感じ、という印象でした。
HTML出力したレイアウトも結構きれいで、好みでした。
ただし、レビュー指摘票の行数のマッピングのズレについては、GithubのPullRequestを利用しないと解決できないので、今後の課題ということで。。。
あれ?VSCodeに入れたExtentionを使っていない。
ま、いっか〜

実装内容の公開

今回作成したMarkdownのファイルは下記のGithubで公開します。
不備などありましたら、ご指摘いただけますと幸いです。
o310yusuke/APIBlueprint_Tutorial

何を使うのか

  • テキストエディタ:VSCode
    • 理由:使い慣れてきたし、軽いし。
  • エディタ拡張機能:vscode-apielements
    • 理由:公式サイトapiblueprintに乗っていたから
  • 設計書記述方法:API Blueprint
    • 理由:参考サイトを参考に(記述ルールがシンプルそうだったから)
  • レンダリング:Aglio
    • 理由:参考サイトを参考に(node.jsでnpmで導入できるから)
  • モックサーバ:Drakov
    • 理由:参考サイトを参考に(node.jsでnpmで導入できるから)

参考サイト

やったこと(環境構築)

実施したOSはMacです。
Node.jsは7.10.0です(古かった。。。)。

VSCodeに拡張機能をインストール

  • apielementで検索してインストール
  • workspaceとして、「apiblueprint_trial」のディレクトリ作成

npmのインストール状況を確認

$ npm ls --depth=0 -g
/usr/local/lib
├── generator-code@1.2.0
├── npm@4.2.0
└── yo@3.1.0
generator-codeとyoは、VSCodeのExtensionを作ってみたくていらたものなので、関係無し。

Aglioをインストール

参考サイトではグローバルにインストールしていたけど、今回はローカルのみにインストールを行う。
# node.jsのグローバルにインストールする場合
npm install -g aglio
# 特定ディレクトリにインストールする場合
cd 特定ディレクトリまで移動
npm install aglio
# インストール確認(直下のものだけ)
npm ls --depth=0
npm ls -g --depth=0
結果
$ npm ls --depth=0
/apiblueprint_trial
└── aglio@2.3.0
$ npm ls --depth=0 -g
/usr/local/lib
├── generator-code@1.2.0
├── npm@4.2.0
└── yo@3.1.0

Drakovをインストール

こちらもローカルのみにインストール
npm install drakov
結果
$ npm ls --depth=0
/apiblueprint_trial
├── aglio@2.3.0
└── drakov@1.0.4

$ npm ls --depth=0 -g
/usr/local/lib
├── generator-code@1.2.0
├── npm@4.2.0
└── yo@3.1.0

やったこと

API Blueprintの公式サイトにチュートリアルがあったので、そちらを参考に実施。

Markdownで書いてみる

  • tutorial.mdを作成する。
  • まず、API名とメタデータを決める。
    FORMAT: 1A ←Blueprintのバージョン
    
    # Polls ←API名
    サンプルAPIの名前を「Polls」にします。 ←APIの説明
    
  • リソースグループを「# Group」で記載する。
    • チュートリアルでは、「質問」に関する複数のAPIの章立てのイメージみたい。
    # Group 質問 ←グループ名
    「質問」に関するAPIのリソースを集約する。 ←グループの説明
    
  • リリースを定義する。
    ## 質問コレクション [/questions] ←「質問」のリソースグループ内の質問のリスト。[]内にURLテンプレートを記述可能。
    
  • アクションを定義する。
    • 1つのリソースに必ず1つのアクションを定義すること。
    ### 一覧取得 [GET] ←リソース内の1つのメソッド。[]内にHTTPメソッドを記載する。
    - Response 200 (application/json)
     [
      {
       "question": "Favourite programming language?",
       "published_at": "2014-11-11T08:40:51.620Z",
       "url": "/questions/1",
       "choices": [
        {
         "choice": "Swift",
         "url": "/questions/1/choices/1",
         "votes": 2048
        },{
         "choice": "Python",
         "url": "/questions/1/choices/2",
         "votes": 1024
        }
       ]
      }
     ]
    
    ※チュートリアルでは、2つめのアクションを記載しているが割愛
    ※チュートリアルでは、2つめのリソースを記載しているが割愛

Markdown→HTML変換してみる

  • 作成したtutorial.mdから、aglioを使ってHTMLを作成する
    • aglioをローカルインストールしたので、下記のコマンドでは実行できなかった。
      $ aglio -o tutorial.md -o tutorial.html
      
    • 下記のコマンドを実行し、npxをグローバルインストールし、npmの初期化を実施した(デフォルト値で実行した)。
      $ npm install -g npx
      # 結果
      $ npm ls --depth=0 -g
      /usr/local/lib
      ├── generator-code@1.2.0
      ├── npm@4.2.0
      ├── npx@10.2.0
      └── yo@3.1.0
      # 初期化
      $ npm init
      
    • npxを利用することで、ローカルインストールしたパッケージも利用可能にできた。
      $ npx aglio -i tutorial.md -o tutorial.html
      
    • 表記のエラーがあると、コンパイルエラーとなり、修正方法も提示してくれる。それに合わせて修正することで、コンパイルしてくれる。
  • 下記コマンドを実行しておけば、mdファイルを保存したタイミングでリアルタイムで変換してくれる。
    npx aglio -i tutorial.md --server
    # 結果
    Server started on http://127.0.0.1:3000/
    Rendering tutorial.md
    # 終了方法
    Ctrl + C
    

Mockサーバを試してみる

  • drakovでMockサーバを起動する。
    npx drakov -f tutorial.md --watch
    # 結果
    [INFO] No configuration files found
    [INFO] Loading configuration from CLI
       DRAKOV STARTED
    [LOG] Setup Route: GET /questions 一覧取得
    [LOG] Setup Route: POST /questions 新規投稿
    [LOG] Setup Route: GET /questions/:question_id 質問詳細取得
    [LOG] Setup Route: DELETE /questions/:question_id 削除
       Drakov 1.0.4      Listening on port 3000
     FILE SPY   ACTIVE
     # 終了方法
     Ctrl + C
    
  • ブラウザで、一覧を取得してみる。
    • URL: http://localhost:3000/questions
    • 結果(コンソール)
      [LOG] GET /questions
      [MATCHING] by url pattern: /questions/:question_id NOT_MATCHED
      [MATCHING] by url pattern: /questions MATCHED
      [DRAKOV] GET /questions 一覧取得
      
    • 結果(ブラウザ)
      [
          {
              "question": "好きな開発言語はなんですか?",
              "published_at": "2014-11-11T08:40:51.620Z",
              "url": "/questions/1",
              "choices": [
                  {
                      "choice": "Swift",
                      "url": "/questions/1/choices/1",
                      "votes": 2048
                  },{
                      "choice": "Python",
                      "url": "/questions/1/choices/2",
                      "votes": 1024
                  }
              ]
          }
      ]
      
  • cURLを使った確認
    • 入力画面
      # 一覧取得(HeaderとBodyを表示するため「-i」を付与)
      $ curl -i http://localhost:3000/questions
      # 新規登録
      $ curl -i -X POST -H "Content-type: application/json" -d '{"question":"好きな開発言語はなんですか?","choices":["Swift","Python"]}' http://localhost:3000/questions
      # 削除
      curl -i -X DELETE http://localhost:3000/questions/1
      
    • ウォッチ画面(Drakovを起動したコマンドプロンプト)
      # 一覧取得
      [LOG] GET /questions
      [MATCHING] by url pattern: /questions/:question_id NOT_MATCHED
      [MATCHING] by url pattern: /questions MATCHED
      [DRAKOV] GET /questions 一覧取得
      # 新規登録
      [LOG] POST /questions
      [MATCHING] by url pattern: /questions/:question_id NOT_MATCHED
      [MATCHING] by url pattern: /questions MATCHED
      [MATCHING] by request content type: application/json actual: application/json MATCHED
      [MATCHING] by request body content MATCHED
      [DRAKOV] POST /questions 新規投稿
      # 削除
      [LOG] DELETE /questions/1
      [MATCHING] by url pattern: /questions/:question_id MATCHED
      [DRAKOV] DELETE /questions/{question_id} 削除
      

2019/06/30

VSCode環境構築:設定変更

VSCodeをインストールしてから行っている設定変更の内容をまとめる。

随時更新予定。

テキストファイルを開くときの文字コード

設定理由

デフォルト設定では、テキストファイルの文字コードによらず、UTF-8で開こうとする。
そのため、Shift-JISのテキストファイルは、ちゃんと文字化けされて開かれる。
文字コードを指定して開き直せばよいが、毎回は面倒。

文字コードを変更して開き直す方法

  • コントロールパネルを開く
  • Change File Encodingを選択
  • Reopen with Encodingを選択
  • 文字コードを選択

設定方法

  • 設定画面を開く
    • Win: Ctrl + ,
    • Mac: Command + ,
  • 検索窓で「encoding」を検索
  • Files: Auto Guess Encoding にチェックを入れる

ターミナルからVSCodeを起動する

設定理由

GitとかをCUIで使っていて、lessコマンドとかで見るのではなく、テキストエディタでみたい。
※Winも同じように設定可能?

設定方法

  • コマンドパレットを開く
    • Win: Ctrl + Shift + P
    • Mac: Command + Shift + P
  • 検索窓で「shell」を検索
  • Shell Command: Install ‘code’ command in PATH を実行
  • ターミナルで下記を入力するとVSCodeが起動できる
    • $ code → 通常起動
    • $ code . → 現在のディレクトリをルートとして起動

2019/06/29

VSCode環境構築:いつも入れているプラグイン

2017年ごろはAtomを使っていたのだけれども、いろいろとプラグイン(拡張機能)をどんどん入れすぎたせいか、どんどん重くなってしまった。
そのころ、VSCodeが無料で使える、という情報がTwitterで流れてきた。
入れてみると、、、
  • 軽い!
  • 今となっては、Atomと負けないくらいプラグインが豊富
ということで、最初はちょこちょこ困惑はしたものの、完全に引っ越ししてしまった。
(今となっては何に困惑したのか、覚えていないけど。。。)
いつも初期導入時に入れているプラグインを備忘録として記録する。
※適宜更新はしておこうと思います。
なお、URLは「作成者」ピリオド「ツール名」で表現される。

Markdownのため

IDEなしでのソースコードレビューのため

何かと便利

VSCodeのデザイン関連

編集後記

便利な使い方とか説明する記事を別に書こうかなと思っていますが、いつになるかな。。。

2019/01/27

FusionTablesからFirebaseCloudFireStoreへ

FusionTables -> Firebase

GoogleのDriveのアプリのFusionTablesを使ったアプリを個人利用で作ってみた。
しかし、FusionTablesのサービスがクローズする事となったため、下記のTweetをしたら、Googleの「Firebase Realtime Database」というものを友人が教えてくれた。
その備忘録である。
https://twitter.com/o310yusuke/status/1078644337422913536

Firebaseとは

いろいろな方が説明されているので、割愛させていただき、私が個人的に抑えておきたい特徴は下記の通り。
  • Googleが運営しているmBaaSである
    • mBaaS(mobile backend as a service ):モバイルアプリ向けに汎用的な機能を提供するバックエンドのサービス、ってところ
  • 無料でも使える
  • データの同期を自動でやってくれる
  • Googleの認証を使える
  • Android/iOS/Webサービスのいずれでも利用できる

Firebaseのデータベースの種類

利用できるデータベースには、現時点では2種類ある。
比較の詳細については、公式サイトを参照のこと。
下記には、個人的は要約を記載する。
今回は「Cloud Firestore」を利用してみる。

Realtime Database

  • 従来からあるFirebaseのデータベース
  • リアルタイムのクライアント間の同期が必要なモバイルアプリ向け
  • 1つの大きな保存領域(CloudFirestoreのドキュメントに相当)があり、JSON型でデータを保存する(1つの大きなJSONツリーとして保存)

Cloud Firestore

  • 2019/01/26時点ではベータ版
  • Realtime Databaseより効果的らしい
  • 複数の保存領域(ドキュメント)をまとめて(コレクション)、そこにデータを保存する
    • コレクション:フォルダのようなもの
    • ドキュメント:一つのファイルのようなもの
    • データ:ドキュメントにかかれている情報

設定手順

基本的には、Cloud Firestoreのスタートガイドのサイドに従って設定を行った。
下記には、私が行った設定内容を備忘録代わりに記載する。

プロジェクトを追加

プロジェクトの追加

  • プロジェクト名
    • 自分が管理しやすい名称をつけるのが良さそう
    • firebase用のプロジェクトとわかる名前を設定
  • プロジェクトID
    • URLとして公開されるとのことなので、注意が必要そう
    • プロジェクト名を入力すると自動入力されるが、アプリの名称に変更
  • 地域/ロケーション
    • アナリティクス:日本
    • ロケーション:asia-northeast1
  • Firebase向けGoogleアナリティクスのデータ共有にデフォルトの設定を使用する:チェックOn
  • アプリでFirebaseサービスを使用することに・・・:チェックOn
上記の設定を行い「次へ」ボタンを押下すると、プロジェクトが作成される。
プロジェクトが作成されると、プロジェクトのページへ自動遷移する。
なお、作成されるプランは、「Spark」で無料$0/月である。

Databaseの設定

開発タブの中から「Database」を選択し、設定を行う。
Cloud Firestoreを作成するボタンを押下する。

Cloud Firestore セキュリティルール

  • テストモードで開始を選択
    • 本来であれば、認証必須にすべき
    • 今回はテスト開発のため、テストモード(参照権限を有するユーザは読み書き可)を選択
  • 作成が完了したら、ルールタブを選択し、ルールを変更
    • 下記のように認証必須の設定に変更し、公開ボタンを押下
    • if ~の部分を追加
      // Allow read/write access on all documents to any user signed in to the application
      service cloud.firestore {
        match /databases/{database}/documents {
          match /{document=**} {
            allow read, write: if request.auth.uid != null;
          }
        }
      }
      

開発環境の設定

Cloud Firestoreを利用するAndroidアプリを開発するための設定を記載する

必要な依存関係とクライアントのライブラリを追加する

  • AndroidStudioでFirebase用のプロジェクト(カラのActivity)を作成する
  • 作成したAndroidアプリのプロジェクトに、Android アプリに Firebase を追加するに従って、Firebase Assistantを使用して、設定を追加する
    • Firestoreを探して、「Read and write documents with Cloud Firestore」のリンクを押下
    • 表示された手順に従い、先程作成したプロジェクトを選択
    • 接続したら、Cloud Firestoreを利用するためのGradleの設定変更を取り込む
      • 下記のwarningがapp/build.gradlenに対して出たが一旦は無視(implementationになっているから)
      Configuration ‘compile’ is obsolete and has been replaced with ‘implementation’ and ‘api’.
      It will be removed at the end of 2018. For more information see: http://d.android.com/r/tools/update-dependency-configurations.html
  • Firebase Assistantで設定したGradleのバージョンが古いので変更
    • 変更前: 11.8.0
    • 変更後: 15.0.0
  • Cloud Firestore を初期化する

まだまだ先は長い・・・

文量が多くなってきたので、今回はここまで。
次回は、Cloud FirestoreをAndroidアプリで利用するための具体的な実装を行っていく。

ハマったこと

プロジェクトの再利用はしないほうが良さそう

FusionTablesを利用する際に作成したプロジェクトを利用して、Firebaseを利用しようとした。
スタートガイドのページに、下記のように記載されている通り、FusionTablesのために作成したプロジェクトは、Firestoreのプロジェクトとして利用できないそうな。
Cloud Firestore と App Engine: 同じプロジェクトで Cloud Firestore と Cloud Datastore の両方を使用することはできません。両方を使用すると、App Engine を使用するアプリが影響を受ける可能性があります。別のプロジェクトで Cloud Firestore を使用してみてください。
※Firebaseでのプロジェクトの作成のタイミングでエラーを出してくれればいいのに。。。
データベースを作成しようとしたさいに、エラーを出すなんて。。。

関連サイト

2019/01/02

2018年を振り返って

2018年を振り返って

あけましておめでとうございます。
2019年(平成31年)になりました。
2018年で、自分がどのくらい成長できたのか、振り返ってみたいと思います。
一部2017年の出来事も振り返りたいと思います。

あったこと

  • 2017年9月:グループ会社への出向から自社への帰任
    • 出向開始は2013年4月(岡山→東京転勤)
    • 帰任理由
      • 2014年度から特定のサービスの開発・運用を継続しており、新しいことをやりたいと思ったから
      • 2017年8月の夏休み前に、自社の部長面談でその旨を伝え、夏休み明けたら「帰任決まったから」と部長からいきなり言われた
  • 2017年12月:部署異動(東京→岡山転勤)
    • 異動理由
      • 担当案件の主幹部門が岡山拠点の部門だったから
      • 帰任の面談のときにも言われていたからOK
      • 該当案件が終了したら東京に転勤させてほしいとは伝え、聞き入れてくれたのでOK
    • 対応案件
      • 出向中に対応していたサービスのサーバ移行開発支援(あれ?w)
      • 出向中に対応していたサービスが利用するためのAPI新規開発(あれれ??ww)
      • Androidアプリ・MDM開発支援(あれ?特定サービスで使っていたタブレットと同じ??ww)
  • 2018年4月:担当案件変更(岡山勤務)
    • 終了案件
      • サーバ移行開発支援:チームから離脱
      • API新規開発:2018年3月にリリース済み
    • 対応案件
      • Androidアプリ・MDM開発支援(メンバーからリーダへ。。。)
  • 2018年8月:部署異動(岡山→東京転勤)
    • 異動理由
      • 担当案件の客先が東京部門のため
    • 対応案件
      • Androidアプリ・MDM開発支援
  • 2018年9月:担当案件変更(東京勤務)
    • 対応案件
      • Androidアプリ・MDM開発支援(リーダからメンバーへ!)
      • サーバ移行 業務要件定義支援(リーダ)

やったこと・できるようになったこと

  • サーバ移行開発支援を通して
    • 対象サービスや仕様のナレッジの共有
    • Azure SQL Databaseでのパーティション設計・実装
  • API開発を通して
    • Markdownを用いた設計書作成(atomを真面目に使った)
    • RESTfulなAPIの設計・開発
    • データストレージとしてAzure Table Storageを使用(ローカル開発環境構築が大変だった。。。)
    • SpringBootでのサーバアプリ開発(仕事で)
    • Gitを使ったソース管理(仕事で)
  • Androidアプリ・MDM開発支援を通して
    • Androidアプリのデコンパイルからの変更箇所の特定
    • PHPのソースを読み込み、設計書を作成(PHPを初めてちゃんと触った)
    • PlantUMLを使ったシーケンス図の作成(atomを入れててよかった)
    • MS Projectを使ったWBS作成・管理
    • Androidアプリの要件の実現性検証のためのサンプルアプリ実装
      • QRコードのリーダ
      • 音声レコーダ

思ったこと

  • サーバ移行開発支援を通して
    • サービスに対する関与の仕方は変わったから良かった(実開発をするチームだし)
    • 経験したことのない技術を利用した開発だったから良かった(アーキを考えたり)
  • Androidアプリ・MDM開発支援を通して
    • 良かれと思ってネゴをしたつもりが、”開発ベンダに利用される”ということがあり、がっかり。。。
  • サーバ移行 業務要件定義支援(リーダ)
    • Twitterとかでも誰かがつぶやいていたけど、「進捗どうですか?」という聞き方ではなく、「困りごとありますか?」という聞き方をすると、聞き出したい進捗が確認できる気がする
  • 全体を通して
    • これまでの経験が強みとなり、自分への仕事となることを実感
    • 一方で、これまでに技術にトンガッた仕事をしていないし、年齢も上がっているため、技術をトンガラせれるような仕事ではなく、管理や育成の仕事を求められる
    • 技術をトンガラせておくためには自分で勉強・実装する時間を設ける必要がある
    • やっぱり設計・実装は楽しい。
    • けど、スケジュールも大事。。。
    • そして、タスクの優先順位を理解することも大事。。。
    • タスクの優先順位を伝えて、スケジュールを作らせることが大事

もうひと踏ん張りなこと

  • チームのタスク管理と進捗管理(WBS作成と更新)
    • 「議論できたから良かった」となりがちだけど、「次に何をするのかをその場で明確にする」ということが大事と思ったから
  • チーム内外のコミュニケーション
    • 自分ひとりでは限界があるから、誰かにやってもらう必要があるので、やってもらうためのコミュニケーションが大事と思ったから
    • チームメンバが迷走しないために、WBSを作って理解してもらってから動いてもらうことが大事と思ったから(相手の年齢に関係なく)
  • 上長への報連相の仕方(上司の使い方)
    • コミュニケーションにも関連するけど、他の誰かに動いてもらうためには、相手に応じたコミュニケーションの仕方があると思ったから
  • Android技術者認定試験の勉強
    • やろうと思って全然できていないから。。。

2019年に向けて

2018年を振り返ってみると、普段は「何もできていない」とかって考えやすいけど、仕事として新しくできるようになったことが、思っていたよりあったな、と思えた。「反省」ではなく「振り返り」をすることで、ダメだった点もポジティブに考えられるような気がしています。
そして、2019年は下記のことをやってみたいな・頑張らないとかな、と思っています。特に自分の強みを明確にするためにもOutputとか資格取得が大事と思ったので、そのことを意識して動きたいと思います。

  • Androidアプリをちゃんと作ってみる
  • ソースコード・設計書をGithubで公開する
  • 実装時に調査したことを、Blogとかで発信する
  • k8sも勉強してみたいな
  • Android技術者認定試験の勉強をちゃんとする
  • PMBOK的な勉強もしなきゃ。。。得意じゃないけど。
  • 悩み事・困りごとをもっと周りに伝える(特に上司に)
  • 仕事でもプライベートでも相方を作る
  • チームメンバとのコミュニケーションのときは、「困りごと」「悩みごと」をまずは聞くようにしてみる
    • 進捗確認ができる
    • リスクも確認できそう
    • スケジュールを本人に決めてもらえそう
  • 自分の売り込みポイントを探す(ヒアリングする)
  • 履歴書を作る
    • 自分の強みを明確にするために(自分を好きになるために)