早くなんとかしないと…

社会人としてもシステムエンジニアとしても駄目になってしまう…

備忘録:EclipseからAndroid Studioへの移行で直面した問題とその解決

この記事のその後の話。
dosomething.hatenablog.com

EclipseからAndroid Studioへの移行、直面した問題の解決法が分かりました。

動作対象APIをかなり跳ね上げてしまった問題

EclipseからAndroid Studioに移行する際の設定で、ライブラリを自動でgradleファイルに書くよ!というオプションのチェックボックスを2つ外しました。
そして、Android Studioのプロジェクト化した後、ライブラリフォルダを切って、Eclipseプロジェクトでも利用していたjarファイルを配置。
さらに、gradleファイルでそのフォルダを見に行くよう記載して解決しました。

文字化け問題

xmlファイルの日本語が全部文字化けしてました。
文字コードも改行コードもAndroid Studioの設定と一致しているはずなんですが。
これはstrings.xmlに定義してからAndroid Studioへ移行することで解決する予定。
strings.xmlに定義分は問題なかったし、こちらが推奨されているはずなので、移行を機に改善しちゃおうかな、と。

特定機能でクラッシュ問題

ファイルの配置場所が間違ってただけだった。
Using Android Studio with Vuforia - Stack Overflow
↑の記事の通り、↓の構造になるようにフォルダ切って"libVuforia.so"ファイルを配置したらちゃんと動いた。
/app/src/main/jniLibs/armeabi-v7a/libVuforia.so

Android端末実機2台ともに共通で出ていたワーニングログがこれ↓
The library libVuforia.so could not be loaded
だったのに気づいてから、なんとなく配置場所が臭いと思ったらドンピシャの記事が見つかったという…。
そもそもクラッシュの原因が分からなくて、かなり時間がかかってしまいましたが、なんとか解決。

調べてるうちに気になったけど、Vuforia、ポケモンGOでも使われてるってホントかな?

初めてのAlexaスキル申請で得た知見まとめ

個人で開発したAlexaスキル後出しじゃんけんクラブが公開されました。
本記事は、初めてのAlexaスキル(カスタムスキル)申請で得た知見のまとめです。


Amazon開発者アカウント作成

1/10の記事にも追記して書いたのですが、見事にハマリました。結果、開発者名に「HAL」が使えなくなり、別名での公開となっております。

本件、Amazonさんも把握しており、Alexaハンズオントレーニング参加者に、以下の記事が案内されています。
Alexa 開発者アカウント作成時のハマりどころ : Alexa Blogs
が、中身をあまり読まない人はどうもこのいちばん上の誤ったやり方で取り組んでしまうようです…。

下記の手順で作成するのが分かりやすいはず。
Amazon.co.jpでアカウントをつくる(AmazonEcho実機を使う場合はこのアカウントに紐付ける)
→居住国を日本にする
Amazon 開発者ポータルAmazon.co.jpのアカウントでサインイン
サインイン後の画面右上に「AMAZON CUSTOMER」と表示されていればOK。


スキルID

"alexa.APP_ID"から"alexa.appId"に変更になったようですが、一部のLambda設計書に反映されていません。
直さなくてもAlexaスキルは動作しますが、ワーニングログが出力されます。
github.com
上記の設計書を利用する場合、41行目を変更してください。

exports.handler = function(event, context, callback) {
    var alexa = Alexa.handler(event, context);
    alexa.appId = APP_ID;
    alexa.registerHandlers(handlers);
    alexa.execute();
};

【参考】Alexaのスキル開発中、Warning: Application ID is not set - Qiita


申請から公開までの経過

4/3(火) 初申請(新規作成)
4/6(金) 取り下げ
4/7(土) 再申請
4/9(月) 公開

バグ(後述)を見つけたため、審査申請を取り下げて修正し、再申請しました。
私が申請した時は5営業日でフィードバックする旨が審査申請受付メールに記載されていました。
※この日数は時期で変わるかと思います。(7営業日のキャプチャをどこかで見たため)
再申請したのでフィードバックは4/13(金)かと思っていたのですが、初申請からの日数で審査していただいたようです。
先人の記事をたくさん拝見させていただいていたからか、一発で審査に通り、その旨のメールが届いた数時間後に公開となりました。
※公開タイミングは開発者で決めることはできないようです。


サンプルフレーズ

この項目は、利用者に対して確実に応答するフレーズを提示するもの、という認識です。
設定するとスキルがフレーズに応答するようになるわけではないはず。
カスタムスキルであれば、下記のドキュメントを参考になります。
developer.amazon.com


スキルアイコン

フリー素材を使用させていただこうかと思ったのですが、規約確認が面倒になり、ペイントで自作しました。作成時間5分。


テストの手順

クイズゲームスキルのサンプル(https://github.com/alexa/skill-sample-nodejs-quiz-game/tree/ja-JP)をベースに作成した、後出しじゃんけんゲームのスキルです。
アカウントリンクやアクセス権限は使用しておりません。
審査のほど、よろしくお願い致します。

4/3 初申請(新規作成)
4/6 取り下げ
4/7 再申請

【初申請から再申請までの修正内容】
・「後出しじゃんけんクラブで、○○を××して」で本スキルを起動した場合に応答不具合となるバグを解消
AMAZON.HelpIntentで本スキルを起動した場合、その次の発話で応答不具合となるバグを解消
・エンドポイントの変更(Lambdaバージョン管理のため)

後出しじゃんけんクラブで、○○を××して」で本スキルを起動した場合に応答不具合となるバグ

サンプルフレーズを決めるために色々な呼び出し方法を試していた時に、「後出しじゃんけんクラブのゲームをやろう」と言うところを、誤って「後出しじゃんけんクラブで、ゲームをやろう」と言ったことで発覚。
テンプレートのstate管理をなくした状態で作っていたため、UnhandledからAnswerIntentへ遷移するものの、問題を作成していないため答えなどあるわけなく、応答不具合となっていました。

state管理については下記参照。
Alexaスキル開発トレーニングシリーズ 第3回 音声ユーザーインターフェースの設計 : Alexa Blogs

AMAZON.HelpIntentで本スキルを起動した場合、その次の発話で応答不具合となるバグ

ヘルプ周りの設計が漏れまくってました。

いきなりヘルプを呼び出すルートを失念

開発ドキュメントのヘルプの提供を読んで気づきました。
ヘルプから起動してしまうと、問題を出題するルートが「最初に戻って」しかなくなるという…。
上記の問題共々解決するため、state管理を追加しました。

ヘルプ応答発話の見直し

「スマホアプリはオワコン。今開発するならスマートスピーカーで!」スキル「旬の食材」開発者 立花氏に聞く。 – SmartHacks Magazine
上記のインタビュー記事内の

ヘルプの返答の後は質問で終わる必要がある

という記述を見て修正しました。
『(前略)終わりたい時は、「ストップ」と言ってください。(終)』だったんです、初申請時。
これを、下記の内容で直しました。
・いきなりヘルプを呼び出した時→問題出題
・ゲーム中に呼び出した時→問題をもう一度言う

エンドポイントの変更(Lambdaバージョン管理のため)

開発者アカウント側だと、スキル公開後は開発バージョンと公開バージョンに分かれるのですが、LambdaはAWSでバージョン管理しないといけません。
バージョン管理できることはAlexaハンズオントレーニングに参加した際に教えていただいたので知っていたのですが、やり方は知りませんでした。
申請前に調べてやろうと思ってたのに忘れてたので、再申請時に対応しました。
下記の記事をそのまま参考にさせていただきました。
qiita.com


特典

Alexaスキル開発者向けの特典があるので、ちゃっかり申し込んでおきましょう。
AlexaのAWSプロモーションクレジットのご紹介 | Amazon Alexa | アレクサ
スキルを開発して、特典をもらおう | Amazon Alexa | アレクサ



node.jsもAWSも初めてだったけど、アイデア出したりベターな方法考えたりするの楽しかった!

「14杯目セキュリティうどん(かまたま)」に行ってきました #secudon

2018年2月10日に、「14杯目セキュリティうどん(かまたま)」に行ってきました。初参加でした。


勉強会

  • 自己紹介にあらわれる個性
  • 県内より県外からの参加者が多そう?
  • 久しぶり(2017年7月末以来)のPython
  • AnacondaはPromptしか使ったことなかった(自学でやった時はEclipseで書いてPromptで動かした)
  • Navigatorがなかなか起動せず初っ端から焦る
  • その後Navigatorが3個起動してさらに焦る
  • ダウンロード・解凍したフォルダをjupyter notebook上で見つけるのに手間取ってますます焦る
  • 写経でいっぱいいっぱいになって(typo多すぎ)説明がまともに聞けず
  • だんだん気になる工事音
  • 確かにCTF for ビギナーズのハンズオンでexeファイルのhead情報を読むのやったような
  • 本格的に機械学習をやってみたくなったらKaggleに取り組んでみよう

おやつ


ふわふわで軽い口当たりでした。


ごはん


竹清で食べました。これで370円。天ぷらサクサクで美味しかった。
ちくわの天ぷらはそのままかぶりついたり、だしにつけてからかぶりついたり。
半熟卵の天ぷらはあとからうどんに投入して真っ二つにしてだしと混ぜながら。



豊浜サービスエリアのオリーブ豚かつ丼。ボリューム満点でした!



運営スタッフの皆様、発表者の皆様、参加者の皆様、お疲れ様でした。

東大式エゴグラムをやってみた

結果。

最も高かった心:A

 ◇A(Adult)大人
   現実的である、冷静沈着である、客観性を重んじる、といった特徴と関係があります。

最も低かった心:NP

 ◇NP(Nurturing Parent)養育的な親
   思いやりがある、世話好き、受容的である、といった特徴と関係があります。

【引用】新版TEG®II - 株式会社 金子書房

TEGパターンの特徴はW型が最も近かった。
【参考】新版TEGII 解説とエゴグラム・パターン - 株式会社 金子書房
※Webの目次には載っていないが、本にはW型も記載されている

W型はこんな特徴。

24.W型

CP,A,ACが同程度に高く、NP,FCが相対的に低い。義務感、責任感、批判精神は高く、周囲への気遣いも強いうえに、十分に自己主張できないので、葛藤をため込む傾向がある。その怒りが自分に向いて自虐的になりやすいこともある。これも、U型と同様に自他否定のあまり望ましくないパターンの一つ。何事にも怒りっぽく、その怒りが自分に向いて計画的に自己破壊に向かうとしている。

【引用】エゴグラム の見方 |AGカウンセリングオフィス

所感

結果を見て、当てはまりすぎているなあと思った。

2017年7月末に全国スキル調査を受けた際にも、この手の診断結果について呟いていた。



(ストレス耐性の数値も低かった)

概ねこの頃と傾向も変わっていなかった。

長年の性格なので向き合おうとは決めていたが、十分に意識してストレス発散をしないと、自分で自分を潰しかねないことを再認識した。
メンタルヘルスも興味はあったので、本買って読んでみようかな。

『コピー1枚とれなかったぼくの評価を1年で激変させた7つの仕事術』を読んで思ったこと

『コピー1枚とれなかったぼくの評価を1年で激変させた7つの仕事術』を読み終えた。

www.diamond.co.jp

なぜ読んだのか

著者のブログをたまたま見かけた頃に、本書の発売告知を見て気になって購入。
初心に戻ってこの手の類の積読本を読み漁ろうと思い、読んだ。


読了にかかった時間

合計50分


意識したいこと

  • タスクの目的を確認する→付加価値の提案に繋げる
  • 目標の設定レベルは現在の実力の1.3倍
  • 1週間に1度、行動をチェック
  • 1か月に1度、数値化した目標(行動の成果が出ているかどうか)をチェック
  • 具体的には?(詳細)
  • 理想は?(方向性)
  • そもそも?(本質確認)
  • 一言で言うと?(要約)
  • なぜそう言えるのか?(理由)
  • 現状把握→原因究明→打ち手の立案
  • クローズドクエスチョン(YESorNOやAorBで答えられる質問)をする。質問の仕方をテーマにした本を積んでいるのでそちらも読んでおきたい。

セルフ振り返り+所感

2017年3月30日に書いた記事の振り返りを交えつつ、所感を述べたい。
dosomething.hatenablog.com

「指摘のドラフトメール一元化」は私が、やっていた

週末はノートを確認し、今後も必要そうな内容はふせんに書いてまとめ直してた

ただ、まとめるなら業務で使用しているPCにも電子ファイルとして残した方がよかったかもしれない

を解決した行動だなあと思った。

本書は著者のとった行動が具体的に述べられているので、真似しやすいところが良い。

Excelを使ったTODOリスト&スケジュールもそのひとつ。
本書を読み終えた後このExcelを作ったところ、使い勝手が良く、出社したらまずTODOリストを書き出し、スケジュールに落とし込むようになった。
ただ、これからこのExcelを作るのであれば、本書とにらめっこしてタイプするよりも、著者のブログから数式をコピペしてきた方が手っ取り早いということを伝えておきたい。
Todoリストの超具体的な活用方法を紹介するよ | Outward Matrix

「スケルトン」については、以前読んだ『職場の問題地図』でいうところの「ポンチ絵」に該当するだろう。
dosomething.hatenablog.com

学生時代、テストは問1から取り組んで、最後に時間が足りなくなってしまうタイプだった。
上司に報連相が少ないと怒られたため進捗報告を兼ねた資料を作るのも兼ねて、タスクを振られたら、まずやることをファイルにざっと書き出し、全体作業の洗い出しを徹底するようにしている。こうすることで、ひとつひとつの作業を潰していき、すべて潰せばタスク完了ということを明らかにすることができる。また、作業順序が影響しないのであれば、取り組む順序を臨機応変に対応することもできる。
しかし、いつまでにタスクが終わるかという見積もりができていないというのが現状である。いつまでに終わらせてほしいのか期限を提示してほしく、上司に確認をとるのだが、「じゃあいつまでに終わるの?」と返されると、言葉に詰まる。ここで宣言すると、それまでに終わらせないといけないという枷をはめることになるのは明白。『エラスティックリーダーシップ』でいうところの学習モードであり、コミットメント言語の実践ということが分かっているのであれば、言い切れるのかもしれないが。
dosomething.hatenablog.com
とりあえず、まず全体を把握し、それから個々の作業に取りかかることの徹底に努めていて、タスク終了見込み時間が提示できないというのが課題である。

ただ、提示できないことについて、心理的な問題もある。「宣言通りに終わらせることができなかったら、上司に怒られるのでは?」という不安がつきまとうのである。

上司とのコミュニケーションについては賛同できなかった。
私自身も以前の記事に、

・嫌われるより好かれた方がよい
媚ではない。
嫌われていなかったおかげで仕事がしやすかったな、と思った場面が多々あった。
信頼関係を築いておくに越したことはない。

とは書いている。
ただ、仕事の上で、上司と異なる意見を持った時、最初の頃は伝えていたのだが、曖昧な理由で却下されることが多くなったため、次第に意見を伝えることがなくなってしまった。経験年数が少ないからという理由で却下されているんだろうと思うようになってしまっていた。
そのため私は最近、「上司部下、年上年下、男女、そういったバイアスを除いて対等に意見を扱ってもらえるかどうか」が大事なのではないかと思うようになった。
好かれるというより、心理的安全性が保たれているか。
gendai.ismedia.jp

本書は、新社会人や仕事での成長に悩んでいる人におすすめしたい。行動が具体的に述べられていて、真似して取り組もうと思えるところが非常に良かった。

Androidアプリ開発初心者の苦戦記録

本記事は、初めてのAndroidアプリ開発で苦戦した時に助けてもらったリンク集です。

開発の流れ

ドットインストールの入門がとっつきやすくて良かったです。
Android Studioのインストールから、onClickのイベントを作ってシミュレーションで動かすところまで通せます。
個人PCの環境構築はこの手順で行いました。
Androidアプリ開発入門 (全11回) - プログラミングならドットインストール

Android Studioのインストール

業務PCの環境構築はこちらを参考にしました。(シミュレータは使わず実機で動作確認するため)
[Android] Android Studio をインストールする手順(Windows) | nyanのアプリ開発

SVNから現行コードが落とせない

業務PCがsvnコマンドに対応していないせいだった。
Android Studio SVNの取り込みがうまくいかない -でじうぃき

設定変更

Eclipseに慣れきっているせいで、ショートカットに苦戦。ctrl+kでコミットウィンドウ上がったんですけど!?うわあ覚えないと…と思ってたら、変更できますよって教えてもらった。
Android StudioにEclipseのショートカットを効かせる - Qiita

あとはスペースの表示と
Android Studioのコーディングエディタに行数 & スペースを表示する方法 | 株式会社Youfit

フォントサイズの変更と、Logcatの文字色変更を実施しました。
[Android Studio] 快適にコーディングできるように設定をカスタマイズしてみた | Developers.IO

EclipseからAndroid Studioへの移行

初期の頃にEclipseで開発していたアプリをAndroid Studioに移行したいとのことで取り組んでいましたが、未だに解決していません。
Gradleをグラドルと読むと思ってた私が、試行錯誤でGradleビルドを通し実機で動くところまでは持っていったのですが、動作対象APIをかなり跳ね上げた上に起動がめっちゃ遅い。
久々にAndroidプロジェクトを起動したらエラー発生:Error:(1) Error retrieving parent for item: No resource found that matches the given name ‘android:TextAppearance.Material.Widget.Button.Borderless.Colored’. – lineocean.com
↑この解決については影響少ないと思ってはいるのですが
↓この解決アプローチがそもそも良くなかった。上限無視してるし、ライブラリの読み込みおかしいの無視してるし…
Enable Multidex for Apps with Over 64K Methods | Android Studio
Android Gradle Pluginでduplicate files during packaging of APKエラー - Qiita
このままでは移行ができないので、ライブラリのエラーの潰し方を見直していきます…が、目処がついてないので正直頭抱えてる…。

SVNから落としてきただけの現行プロジェクトでビルドエラー

昨日までちゃんとビルド通ってたのになんでなん!?って調べてみたらAndroid Supportのチェックが外れてた。どゆこと?
android studio unable to apply changes」でググって行き着いた下記のブログ記事の通り、赤くなってるの全部チェック外して、再度入れ直したら解決した。
うめの記録帳: 9月 2014



Androidアプリをやり始めてから行き当たりばったりな対応ばっかで情けない…。

API仕様書の項目を考える

API仕様書を書くことになったものの、外部のツールは規定で使えない。
これといったテンプレートも用意されていないため、どうしたもんかなあ。API開発したことないし…。
ってことで、いろいろと調べてから考えてみた。


はてなブックマーク済み

そういえばはてなブックマーク済みの中にAPIに関するものがあった。

speakerdeck.com
speakerdeck.com
speakerdeck.com

すでに作成されているAPIは、取得でも全部POSTメソッドだったから、REST思考ではないってことを理解した。
内部向けのAPIだからなんだろうな。


api 叩く url」でググる

"GET /search/API仕様書"と"/search?q=API仕様書"は同じ呼び出し方???とかこの辺で混乱したので「api 叩く url」でググった。

下記の記事、内容が充実してた。
WebAPIについての説明 - Qiita

あと、HTTPの知識が弱いってことを自覚した。雰囲気しか分かってない。アカン…。


api 仕様書 サンプル」でググる

そして本題をググった。

下記の記事がパッと見で分かりやすかった。
API仕様書に書いて欲しい内容 - @peccul is peccu


API仕様書の項目

これでイケるかなあ。

  • 処理概要
  • アクセスURL
  • (プロトコル)
  • メソッド(GET/POST/PUT/DELETE)
  • リクエス
    • (形式(JSON など))
      • No.
      • 名前(例:article_id)
      • 型(数値/文字列 など)
      • 長さ
      • 必須(必須/任意)
      • 内容(例:記事ID)
      • 備考
  • レスポンス
    • 形式(JSON など)
      • No.
      • 名前(例:author)
      • 型(数値/文字列 など)
      • 長さ
      • 繰返し(○/回数/空欄 など)
      • 内容(例:記者)
      • 備考
    • (サンプル)

URLとURIの違いも調べたけどぼんやりとした感じ。
積んでる「Webを支える技術」と、「Web API: The Good Parts」を読んで知識を身につけるべきだな…。