さわらブログ

さわら(@xhiroga)の技術ブログ

Intellij の Convert Code From Java は文法にエラーがあると動かない

TL;DR

このように、 ... でコードを省略するなど、Java的に正しくないコードの場合は動かないので注意。

String expected = "EXPECTED";
...
Assert.assertEquals(expected, test());

むむ?と思ったら、一行づつコピペして試すべし。

文法的にエラーがない場合

設定で機能をオフにしている可能性もあるので要チェック

stackoverflow.com

mysql-connector-pythonはSQLのSyntax Errorを拾ってくれない(ように見える)

いずれPR送って直したい。公式ライブラリのエラーハンドリングを疑ったことはなかったので...

TL;DR

connectionクラスでせっかく例外を投げているのに、
github.com

cursorクラスで雑なキャッチをして台無しにしている。

github.com

詳細

例えば、date型とdatetime文字列を比較しているSQLがあったとする。
クエリはprepared_statementとして処理されるので(Pythonが検証するわけでない)、MySQLからのSyntax Errorが返ってくる。

prepared_statementの生成は一応try-exceptされているが、レスポンスはサーバーから返ってきた文字列次第であるせいか?キャッチの仕方が極めて雑。
ライブラリなので標準出力もしていない。

            try:
                self._prepared = self._connection.cmd_stmt_prepare(operation)
            except errors.Error:
                self._executed = None
                raise

結果、呼び出し側でtry-exceptを忘れてしまい困ることがありました。備忘。

Adobe Acrobat Readerからキーボードショートカットで日英辞書をサッと開く

f:id:hiroga_cc:20191119071440g:plain
英文を辞書で検索

macAdobe Acrobat Readerで、任意のショートカットキー(私の場合はCtrl + M)で日英辞書を開けるようにしました。 参考にしたのはこちら。

apple.stackexchange.com

手順

  1. brew cask install bettertouchtool でBetter Touch Toolをインストール
  2. スクリーンショットのようにショートカットを設定

f:id:hiroga_cc:20191119071751p:plain
Better Touch Tool ショートカット

StackOverFlowで紹介されている設定にプラスして、ショートカットを使ってもカーソルが辞書に持っていかれないような設定を工夫しました。
お役に立てば幸いです。

ホウエン生まれホウエン育ち目線で #ポケモン剣盾 の良さを語る(ネタバレなし)

f:id:hiroga_cc:20191117090739j:plain
はー楽しい。

金曜日に発作的に購入した剣盾をクリアしました。

ストーリー・キャラクター・音楽・システム・ハードの全てが最高で、ポケモン世界にしっかり没入できました。
良さをメモしておきます。

ストーリー

ガラル地方の背景の設定の作り込みを感じました。大筋のストーリーはチャンピオンを目指すものですが、街の人の声がフキダシとして見られるシステム(ブラック・ホワイトにもありましたね)も相まって、ジムを勝ち抜くごとに自分自身が注目されているのが分かってよい。しかも気持ちいい。
ポケモンリーグに集中しているので、これまでのシリーズのように(なんで世界の危機に大人が動かないんだ?主人公は主人公でジム戦やってないで世界の危機に立ち向かうべきじゃないか?)みたいな引っ掛かり、ご都合主義もありません。もちろんガラル地方にもとんでもない危機が迫っていて、主人公も立ち向かって行きますよ!

すべての演出が最後のバトルに向けられていて、最後のバトルは歴代で一番緊張したバトルでした。

キャラクター

サン・ムーンと同じくらい、ちょっと笑えたり、イタかったり、応援したくなるキャラがいて良いです。
それから、子ども世代と大人世代が明確に意識されているのを感じました。主人公やライバルのホップ、マリィ、ビートが10代のプレイヤー目線と同世代です。一方、チャンピオンのダンデ、博士を目指すソニア、ジムリーダーのルリナやキバナは赤・緑〜ブラック・ホワイト世代(20代~30代)に合わせてます。

個人的にクスッとしたのはビートです。勘違い若手コンサルみたいなキャラで、サン・ムーンのグラシオが中二病でウケたのに味をしめたのかなと思いました。
カブさんも好きだなぁ...ホウエン出身って書いてあるけど、アスナと関係あるのかな?

音楽

ジム戦(スタジアム戦と言ったほうがいいかも知れない)の音楽がマジで最高です。ループするだけBGMではなく、戦いの状況に応じてダイナミックにBGMが変化します。これがスタジアムの観客の盛り上がりを反映しているようで最高。

普通のBGMだとライバル戦が好きです。 街のBGMも好きですね。ナックルシティの久石譲みたいな音楽とか。クリア後のToby Fox作曲のBGMはまだ聴けていません。

システム

ひでんわざの廃止は前作からですが、今回は更に進んでます。 まず、そらをとぶの演出(サン・ムーンならリザードンを呼び出す)がありません。単にマップから行きたい場所を選ぶだけ。
しかも冒険の超序盤(1時間位)で呼び出せるのでストレスがない。フィールドの行き来をいわくだきやかいりきで制限していたご都合主義のシリーズとは違って、ジム戦を順番にクリアするという軸があるから成立してるシステムとも言えるかもしれません。
波乗りもなくて、自転車が変形して海を走ります。これが超シームレスでストレスが無くて良い。

ポケモンシンボルエンカウントになってるのも良いです(ピカブイからかな?)
スプレーがなくてもポケモンをよければ無駄な野生バトルがないので、ストレスなくマップを移動できました。

オートセーブも良いですね。ただ、特別なイーブイを厳選なしで受け取ったのは迂闊だった... ストーリー上どうしても捕まえなければいけないポケモンは存在するので、気になる人は終盤はオートセーブをオフにして進めてもいいかも知れません。

ハード

大画面でプレイできるのいいなぁ!!!
あとは要所要所でコントローラーが振動するのも良い。それから、Switchの機能でいつでもスクショ撮れるのも良いです。

まとめ

予約してなかったんですが周りの盛り上がりを見てまんまと購入しました。大変良かった。
サントラ発売を心待ちにします。

dotfilesをアップデートしました(zsh導入/ 複数シェル対応/ raspbian対応)

f:id:hiroga_cc:20191110095246p:plain
dotfiles (2019-11-10)

インフラの冪等性に少しこだわりがあるので、開発環境はdotfilesで管理しています。
この度Raspberry Piで作業するのと、あとCatalinaになって標準シェルをzshに切り替えた関係で、dotfilesを大幅に改良しました。

github.com

アドバイスなどいただければ嬉しいです。

zsh対応

zshに対応しました。プラグインは正直調べきれていない。

~/.bash_profile~/.zshrc~/.profile を読み込むことでパスの設定を共有しています。
ファイル名は ~/.common_profile とかでも良かったんだけど、shで利用されている ~/.profile にしておけばシンタックスハイライトが効いて都合がいい。

raspbian対応

ラズパイ用の設定をしています。パッケージ一覧を packages ファイルに書き込み、cat→grep→apt install で導入するのがお気に入り。

macと共通なのはvimVSCodeの設定くらい。シェル設定も共有しようかと思ったけど、共通点より違いが大きい(そもそもインストールしてるソフトウェアが違うし)でパス。

LinuxBrew(HomeBrew)に対応するかは検討中。aptで事足りなくなったら使うくらいでいいと思う。Linuxは(特に普段使いとしては)初心者なので!

#1人目のデザイナー = やりきり力

f:id:hiroga_cc:20191024090058p:plain

スタートアップで未経験から1人目のデザイナーになった方々のパネルディスカッションがあり、デザイナーさんが普段何をしているのか気になったので参加してみました。 beuidesigner.peatix.com

TL;DR

  • スタートアップの1人目デザイナーはやりきり力が大事
  • 自走できて、自分からフィードバックをもらいに行ける人
  • 半年〜1年後にフルスタックデザイナーとして活躍していそうな人を採用したい

フルスタックデザイナーって言葉があるか知りませんが、グラフィック・CI・ロゴ・Web・UI/UX全部、ってことです)

イベントの様子

f:id:hiroga_cc:20191024091020j:plain

CocodaとTomoshibiが主催している初学者デザイナー向けのイベントで、会場はだいたい50人くらい参加者がいました。6割くらいが女性で、ITエンジニア向けのイベントとは雰囲気が違いました。

イベントは前半と後半に分かれており、前半では未経験から(みんな初めは未経験だと思いますが...)スタートアップの1人目デザイナーになった人たちのパネルでした。いくつか気になったこと。

  • 自走力だけでなく、フィードバックをもらう力も大事。DailyCocodaのフィードバックを自分からもらう人は、就職しても周囲(ときには社外)の人に意見を求められる。
  • @623px さんが「実際に仕事を請けるのが一番勉強になる」(要約)とおっしゃっていたが、これはITエンジニアでも同じだと思う。
  • @maima_1107 さんはDailyCocoda経由で初めてのオファーをもらい、それから転職活動に踏み切ったそう。採用側としては、DailyCocodaやDailyUIをウォッチしない手はないと思う。

それから後半の懇親会では、Cocodaの @greatest_hiroki さんとお話し。「メッセージもらえれば、いつでもデザインのフィードバックしますよ!褒めて、気になるところがあれば言って、最後は褒めで締めます」(要約)とおっしゃっていたのが印象的でした。 Cocodaの方々はコミュニティへの意識が強いのかな?素敵だなぁ...!

その他

イベントに触発されてサムネイルをGIMPで作ってみたんですが、パスで絵を書くのを諦めてフリー素材のアイコンを使いました。
本業じゃなくても、こういうちょっとしたところでデザインができるといいよね!

【読書RTA】 #技術書典 7で購入した31冊レビュー 【自己最速】

f:id:hiroga_cc:20190924072302p:plain
#多分これが一番早いと思います

日曜日の #技術書典 7の熱が冷めないうちに、購入させて頂いた31冊をレビューします!
(実は35冊購入しています。理由は最後に書きますが、いくつかRTA対象から除外しました。)

31冊読み切っての感想はこんな感じです。

本は実質無料!!!!!

※まずは脳内でインデックスを作るのが大事!という考えから、チュートリアルや詳細等を読んでいない本もあります。ご了承ください。

茶々○ - Amplify と AppSyncで作るサーバレス開発入門

AppSyncと言わずGraphQL入門書として素晴らしいと感じました。私がAWS慣れているのはあるかもですが。
GraphQLサーバーを構成する要素の図解が良かったです。俯瞰があるとその後の知識の吸収が楽!

Amplifyちょっとキャッチアップできたのも良かったです。Cognito本を出していながらAmplify経験がほぼなかったのですが、なるほどUserPoolもCLIで作ってくれるのか、というのが勉強になりました。

yamacraft - Androidアプリで始める Firebase Authentication 導入ガイド

Firebase Authentication めっちゃ手厚くないですか? Cognitoはどうなのだろう(Amplifyキャッチアップしないと!)、時になってしまいました。個人開発アプリ、頑張ってください!

佐々木拓郎 - AWS IAMのマニアックな話

今回の #技術書典 で一番楽しみだった本です。マニアックな話、というよりはIAM入門、という感じだったので、チームメンバーにも広くオススメできると思いました。(もちろんマニアックな話もあります!)
個人的にはIAMグループの切り方のパターンが学びでした。他のプロジェクトではどうしているか、もっと知りたいですね!

いくつか気になったポイントがあったので、ぜひ佐々木さんとお話したいです。

  • アプリケーション開発で、AWS-SDKを利用する機能を開発するならローカルにIAMのクレデンシャルがないと厳しいような。セキュリティ的には心配なので、環境のVDI化(Workspace)などと組み合わせた対策が要りますかね?
  • ユーザー認証をOktaやG Suitesなどで行い、そこからスイッチロールするパターンに注目しています。特に言及がなかったですが、いかがでしょうか?
  • IAMユーザーをCloudFormationで作成するのは、たしかに更新時のことを考えるとメリットが薄いですね...で、CDKどう思いますか?(新メンバー追加時に、テンプレートをコピペせずにユーザーを追加できるのでは、と思ってます)

@t-funaki - AWS IoTでつくるお手軽スマートホーム

AWSのマネージドMQTTはAWS IoT、ってことが分かったので満足です。他のリソースとの連携も手厚いですね。
ところで、センサー→ラズパイ→サーバー、のように、データの保存を中継するだけのコンポーネント(ラズパイ)がある場合、データ受信と送信を別プロセスにするデザインは興味深いと思いました!いろいろ応用が効きそうですね。

かろてん - AWSなのに、エモい。

まえがきに「読後感が映画を見終わった後のよう」って書いてあって、「いやそんな訳ないでしょ」と思って読んだらマジでした。

minamo - CodePipeline でお手軽ブログ運用

CodeStar と CodePiplineはじめCode兄弟の関係性を図で整理してくださったのが超良かったです!

Cookpad Inc. EngineersCookpad Tech Book

AWSのセキュリティについて整理してもらえたのが嬉しかったです!自分の中でGardDutyとSecurity Hubがごっちゃになっていたのを自覚しました。定番CloudFormationテンプレートみたいなのを作って、新アカウント作成時に速攻で監視体制をばらまけるようにしたい所存です。

graneed - curlコマンド 完全に理解する

curlでできることってこんなに多かったんですか?と驚きました。メール送ったりとか...。
出力やURLにいろんなオプションがあることを把握しておくと、今後テストエビデンス取るのが楽になったりするかも、と思いました。

それから、dockerエンジンってRest APIがあるのを初めて知りました。知っていると応用が効きそう。

yoshihir - Datadogで始めるモニタリング基盤

チームのスケールごとにデータ監視基盤がSaaSから内製に移っていくんだ、というのは納得です。
ところで、合同誌じゃなくて一冊ごとになっているのはお目当てのトピックが探しやすくて助かりました!(書くのは大変だったと思いますが...!)

ゆるふぁい - Delphiで作るスマホアプリ

Object Pascalって言語を初めて知りました。シンプルに書けていいですね。
Windowsクロスプラットフォームアプリを作ろうとするとこんな選択肢があるのか、と勉強になりました。

服バカ - GoとAWS CDKで作る本格SlackBot入門

技術書典7で唯一のCDK本ですよね?利用者の広がりを感じています。
CDK利用部分はTypeScriptで記述されてましたが(正直想定外でした)、今後はGoに統一したいですよね!やっぱり!

ひかる黄金わかめ帝国 - GraphQLスキーマ設計ガイド

GraphQL触ってないのに勢いで購入しちゃいました。主張が明確で良かったです。今後触る時に思い出します。

@kazuph - IoTの本 なぜからはじめるプロトタイピング

BLEデバイスで遊ぶことに興味があったんですが、素直にラズパイ使えば開発できることが分かって敷居が下がりました。
リアクティブプログラミングについて初めて調べました。普段のプログラミングと考え方が違って面白かったです。

Minami Kobayashi - Java to Kotlin to Better Kotlin Handbook

Kotlinにより親しみを持てたのでとっても感謝しています。チームでKotlinを利用しているのですが、インフラばかり触っているせいでなんだか苦手意識がついてしまって...よい復習の機会になりました。
Kotlinの機能それぞれに対して、Javaとの比較を、現場目線で解説した本、って、実は初めて読んだかもです。すぅっと入ってきました。

あと表紙可愛いですね!!!自分で書きたくなるの超わかる。

パステルレインボー - Ktor によるREST API の開発

Springとの比較で書かれていたので、Ktorの嬉しいところが理解できて良かったです。

LINE API Export - LINE API HANDBOOK

LIFFとLINE THING関連の章を読みました。vConsoleを初めて知って感心しました。異なるプラットフォームの開発・デバッグの工夫の話って面白いですよね。
前述のIoTの本と合わせて、BLEで遊ぶならラズパイかLINE THING、という考えを持てたのが良かったです。

himanago - Microsoft AzureでつくるクロスプラットフォームAIアシスタントスキル

クロスプラットフォームAIアシスタントスキルってなんだろう?と思ったんですけど、なるほどWebサーバーとAPIサーバーを分けるんですね。Azure Logic Appsを初めて見ましたが、高機能だと思いました。

あとちょまどさんのイラストは家宝にします。

まねふぉ執筆部 - Money Forward Tech Book #1 マネーフォワードを支える技術

OpenAPI Generatorの知見が気になって買いました。Railsはサポートのライブラリがたくさんあっていいなぁ...
YAML書くのしんどくないですか?というのはぜひ著者さんと話したいです。弊社はRestLetってサービスを使ってますが、もうすぐクローズするんですよね...。

あ、ECS入門は一冊にしても買う人いたと思いますよ!次回はぜひ!!!

@pco2699 - Nuxt.jsとFirebase でつくるアルゴリズムミニアプリ1

アルゴリズムとっつきづらいな〜。普段そこまで関係ないからな〜。と思っていたので前半からめっちゃ頷いて読んでました。
フロントエンド普段触らないのですが、この本スイスイ進めますね。チュートリアル半分終わっちゃいました。

細かいんですが、 jestnpm -g install jest している人じゃないとコマンドラインからたたけないと思うので、記述を npm test に差し替えるとベターだと思います。

@_sakaryu - Oculus QuestではじめるVP創造主

UnityだけでOculus Quest環境が作れるんですか!やるしかない!!!!!

ik-fib - SSH Handbook

LinuxへのSSHにMFAが利用できる設定を知らず、勉強になりました。PAM認証についてキャッチアップせねば...!

メンチコロッケカレー - Starting Istio

macでさくっとチュートリアルを進められそうなのが嬉しかったです。手を動かす時にもう一度読みますね!

電気羊 - YubikeyとOpenSSLで作る電子認証局

認証局を自分で作るとインターネットの仕組みがよく分かりそうだな、という感想を得ました(つまり私はこの本の対象読者ではない...!)
Yubikieyにこだわらずオレオレ認証局を作ってみようと思います。

竹原 涼 - くいっく プロトコル解説シリーズ HTTP/3編

魔法と妖精でOAuthを解説しようかなと思ってたら先人がいてびっくりしました。

ゆー - 楔形文字ユニコードの出会いにまつわるエトセトラ

楔形文字ユニコードに収録されるまでの過程が歴史書みたいに書かれていて、むしろ著者が何者か気になりました。

日本PlayCanvasユーザ会 - 実践PlayCanvas

ブラウザだけで3DのWebアプリが作れちゃうんですね。すごい!

ギーつくの友利奈緒 - ゼロから作るBLEデバイス

タイトル通りデバイスをゼロから作っている本です。私はラズパイから始めようと思いました。

DJ SHARPNEL - なれる!バーチャルDJ

著者紹介が面白かったです。完全に勢いで買ったんですが、バーチャルDJいいな、VRChatのクラブ空間行くぞ、と思いました。

seiyab - 破門 Java

Nullチェックを久しぶりに見て、Null非許容言語っていいものなんだな、と認識を改めました。

関満徳 - プロダクトオーナーになる前に読む本1 & プロダクトオーナーになる前に読む本2

プロダクトオーナーのための参考文献があったのがよかったです。
OKRが出てきたのは意外でした。それって経営者のカバー範囲で、プロダクトオーナーが設計するところではない、って先入観があったので。

ωうさぎ - 綿を育てて布を作る【栽培編】

簡易ハウス栽培セット自作してみた、って感じの本でした。
インドネシアからコーヒーの苗をもらってきたことがあったんですが、こうすれば枯らさず育てられたのかな、と思いました。

RTA対象外の本について

じっくり読まないと分からんな...というものはRTA対象外にしました。じっくり読みます!

  • kuberneko - DeNA Kubernetes わいわい会の本
  • @yuki476 - 大事なセキュリテイの話をしよう
  • Secure旅団 - 時計じかけのセキュリティ
  • @hamano - マイナンバーカードと電子署名の本