JSONをPOSTしてGoogle SpreadSheetに書き込む
はじめに
- GAS(Google Apps Script)でPOSTを受け付けて、SpreadSheetに書き込む手順です。
- 認証はありませんので、URLがわかれば誰でもPOSTできてしまうので注意。
- GroovyからSpreadSheetに書き込みたかったが、GData APIを使用するためのライブラリである、gdata-java-clientをGrapeで入れようとしたら、うまく入らなかったのでやめたという経緯があったりします。
仕様
{ "id":"abcdef", "user":{ "name":"tarou", "age":20, "email":"example@example.com", "result":true } }
手順
function doPost(e) { var jsonString = e.postData.getDataAsString(); var data = JSON.parse(jsonString); var id = data.id; var name = data.user.name; var age = data.user.age; var email = data.user.email; var result = data.user.result; // シート取得 var ss = SpreadsheetApp.openById(SpreadsheetApp.getActiveSpreadsheet().getId()); var sheet = ss.getSheetByName("シート1"); // データ入力 sheet.appendRow([id, name, age, email, result]); }
- 保存
- 公開 → ウェブアプリケーションとして公開
- プロジェクトバージョン
- 新規作成
- コミットコメント
- 次のユーザとしてアプリケーションを実行
- 自分
- アプリケーションにアクセスできるユーザー
- 全員(匿名ユーザーを含む)
- ↑に設定することで認証が行われない。
- 「承認が必要です」というダイアログが表示される。
- 許可を確認 → 許可
- 「現在のウェブアプリケーションのURL」をメモ。
- POST(URLは↑で確認したURLに置換してください。)
- GroovyでPOST
- curlでPOST
curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"id":"abcdef","user":{"name":"tarou","age":20,"email":"example@example.com","result":true}}' https://script.google.com/macros/s/xxxxxxxxx/exec
- 確認
参考
We Are JavaScripters! @6thに参加してきた #WeJS #21cafe
はじめに
4月27日(木)に「We Are JavaScripters! @6th」という勉強会に参加してきた時の自分用メモです。*1
全てLTなので、資料見たほうが早いかと思いますw
概要
「JSの勉強会って、登壇する人がハイレベルな人ばっかりだな〜」 と思ったのがきっかけで作った勉強会、「We Are JavaScripters」! 自分が学んだこと/気づいたこと/面白かったこと/失敗したこと/ハマったこと/挑戦したこと/デバッグテクニック/オススメツール・開発環境/お気に入りのライブラリ/オレオレライブラリ/実はこうだった言語仕様/tips などなど、 お酒を片手に、気軽に発信できる場を目指しています^^/ ※誰でも怖がらずに登壇できる空気を作りたいだけだけなので、もちろん玄人のみなさんも登壇大歓迎です!!
- イベント申込時の主催者アンケートだと、JavaScript初心者が半分くらいだったらしいです。
- 個人的には怪しいと思ってますがw
LT.1:JSの基本的なことをちょっと掘り下げてみる話 prototype編(やっと) @ta__miyan
- JSの基本的なことをちょっと掘り下げてみる話シリーズ Chapter04. 〜 prototype編(やっと..!) 〜
- 発表資料
- 図で理解するJavaScriptのプロトタイプチェーンを参考にしたとのこと。
- protoってES2015まで非標準だった。
- protoはプロトタイプチェーンを辿るためのオブジェクト。
LT.2:Elmの話(仮) @boiyaa
関連ツイート↓
さきほどのElmコードです。https://t.co/oG7z3sCegs
— boiyaa (@YamaHilo) 2017年4月27日
Try Elmでみてみてくださいー https://t.co/j1D1teSPcX #wejs
移植元のJSコードつけ忘れましたhttps://t.co/CjEtpvcn1Q#wejs https://t.co/hHFjRmxcPC
— boiyaa (@YamaHilo) 2017年4月27日
LT.3:==と=== @IganinTea
- ==と===を調べてみた
- 発表資料
- JavaScriptの==の中身を知る
- 発表者による補完資料
- 曖昧な比較と厳密な比較
- 1 == ‘1’
- まとめると「==」を使うなって話。
関連ツイート↓
これをリツイートしろって言われている気がした #wejs https://t.co/FbdMk6EfYq
— zuckey (@zuckey_17) 2017年4月27日
LT.4:そろそろwebpackと真剣に向き合ってみる。 @Nao-bt
- 公式ページ
- 大量のJSを書くと死ぬ。
- 大量のJSのコードをモジュールごとに分ける。
- 言語仕様としてはモジュールをサポートしていない。
- ↓の4個を覚えとけ
- Entry
- アプリの中で最初に読み込むファイル
- Output
- ビルドの結果を出力する設定
- Loaders
- ビルドの際にモジュールのソースコードに適用される変換を指定する。
- testって書かないとエラーとなるのがハマりどころらしい。
- Plugins
- ビルド時の設定を行う。
- ビルドの際にファイルの圧縮だったり、コンパイルエラーを無視?するとか。
LT.5:TypeScriptでDDD~RepositoryとEntity編~ @mrdShinse
- リポジトリ
- TypeSctipt公式
- DDD = ドメイン駆動設計
- LineのBotを作成するのに、Bot作成用のフレームワークを使わず、あえてExpress.jsを使用して開発。
- TypeScriptのGenericsはいい
LT.6:jsのGCについて @brn0227
- Javascript Garbage Collector overview
- 発表資料
- 関数は会議
- Stackはホワイトボード
- 関数単位で割り当てられるので、終了すると自動で廃棄
- Heapは議事録
- プログラムで制御
LT.7:はじめてのReact: ES2015の実用 @Jay
- はじめてのReact
- HelloWorldの代わりになる自分のやったことの発表
- セミコロンレスで書いたらしい。
LT.8:オブジェクトの作成とコンストラクタの話 @chikoski
- An implementation of new operator in JS
- 発表資料
- Gist
- サンプルコード
- newは何をしているのか。
- newを使わないでnewを再現する。
*1:公開が遅れて申し訳ありません。(書いたとばっかり思ってました。。。)
JJUGナイトセミナーに参加してきた(4/24) #JJUG
4/24に開催されたJJUGナイトセミナーに参加してきた際のメモ。(後で追記予定
概要
- 名前
- 【東京】JJUG ナイト・セミナー 「テスティング特集」
- 日時
- 2017-04-24(月)19:00 - 21:00
- 会場
- 募集ページ
- 概要
今回はテスティング特集と称しまして、JUnit他についてその道のプロの方々にお話いただきます!
「Modern unit testing with JUnit 5」
概要
JUnit is the tool of choice when it comes to unit testing in Java. The current version JUnit 4 has been working reliably for many years but despite some advancements it has now reached its limits. JUnit version 5 is a complete rewrite and will be released soon. In the session, we will discuss what is new in JUnit 5 and what needs to be considered when upgrading.
- 発表者
メモ
- JUnit5の説明。英語セッション。
- JUnit4と互換性がとられているらしい。
- そのままで動くとのこと
- パラメーター渡すテストや、DisplayNameはかなり便利そう。
- ParameterizedTest
- 直接値渡す以外に、CSVで渡すこともできる。
- 逆にタグ付けや、繰り返しは使うタイミングは少なそう。
- インターフェイスのテストの箇所はよくわからなかったので後で復習。
- IDEは対応してくれているみたい。
- NetBeansは?ってなってたw後で誰か補足してくれるかな?
- Maven、Gradle共にJUnitチームがプラグインを開発しているらしい。
- Jenkins対応は?ってなってた。XML出力すれば勝手に読んでくれるような気がするけど。。。
- カバレッジという言葉もしゃべっていた気がした。
- 現時点ではM4
- 7月にリリース予定?けど遅れそうなのかな?(笑いが出てた)
「アジャイルテスティング -バグ埋め込みを年間1件にまで減らした戦略-」
概要
アジャイル開発におけるソフトウェアテストへの態度に関する発表です。4年間開発しているチームにおける品質向上の取り組みで、次のスライドの再演になります https://speakerdeck.com/kyonmm/aziyairutesuteingu-bagumai-meip-miwonian-jian-1jian-nimadejian-rasitazhan-lue-number-nagoyatesting
メモ
- バグの数を年1件にした話。
- バグの根源はムリからきている。そのバグをテストで取り除こうとするのはムダ。
- やったこと
- バグの分析
- チームの分析
- 理想像を構築
- チームを帰る情熱と理論を構築、共有
- ↑の普通のことをどう進めるのか。
- ビジョンをはっきり持つ。
- そのためのリスクは許容する。
- なんども伝える。(400ー800位言う
- 基本に立ち返る。
- 失敗しているなら、まずは基本と違うところを基本に戻してから考える。
- 基本に立ち返ると比較しやすい。
- 積極的な暗黙知
- これはちょっと同意できないけど、どうなんだろうか?
- チームメンバーのレベルが高いといけるのか?
- 凄い高品質なドキュメントがあった(作成した)としても、それをうまく使う方法論はない。
- 最小6分、最大1時間の単位でタスクを全て書き出している。
- 12ー18分のタスクが多いらしい。
「pact-jvmではじめるコンシューマー駆動契約」
概要
マイクロサービスアーキテクチャーの普及を始めとする近年の開発トレンドの風潮により、サービスのコンポーネントをテストする上でサービス間の依存関係を考慮することが必要とし、テストの難易度が増してきています。このセッションではサービス相互のインターフェースの仕様と実装の妥当性を検証する方法としてコンシューマー駆動契約にスポットをあて、その実装であるpact-jvmを例にして解説します。
発表者
スライド : pact-jvmではじめるコンシューマー駆動契約
メモ
GrailsアプリケーションをTravis CI、Herokuと連携する
アジェンダ
概要
- タイトルの通りの事をやろうとしたら、結構戸惑ったためメモ。
- 尚、Herokuの設定については公式にドキュメントがあった上、サンプルリポジトリまである事に全部終わってから気づきました。こちらを参照した方が良いかと思います。
- 特に難しいことはしていませんが、誤っている点、もっと簡単な方法等がありましたらコメント、ブコメ、Twitterなどで教えてください。
環境
前準備
- Javaのインストール
- Grailsのインストール
- Herokuアカウント作成
- Heroku CLI(Heroku Command Line Interface)のインストール
- travis CIアカウント作成
- travisのインストール
- rubyが必要。
gem install travis
- Gitのインストール
- 手順は割愛
- GitHubの登録
- 手順は割愛
Grailsのデフォルトアプリを作成
- grailsコマンドでアプリケーションを作成。
grails create-app grails-heroku-example2
- アプリケーションを起動
cd grails-heroku-example2
./grailsw run-app
- http://localhost:8080にアクセス
- 以下のような画面が表示されればOK
Herokuで動作させる
build.gradle
にstageタスクを追記
task stage { dependsOn build }
- Procfileをカレントに作成。
- herokuでアプリケーションを実行するコマンドを記載する。
- 今回の場合、javaコマンドで作成されたwarを起動する。(Scriptとしてwarを起動する方法もあるらしい。)
web: java -Dserver.port=$PORT $JAVA_OPTS -jar build/libs/grails-heroku-example2-0.1.war
- Gitで管理する
git init git add . git commit -m "first commit"
- Heroku CLIでログイン
heroku login
- メールアドレスとパスワード入力。
- Heroku上にアプリケーションを作成
heroku create grails-heroku-example2
- アプリ名は省略も可能。
- アプリ名はHeroku全体でユニークである必要があるので注意。
- リモートリポジトリが追加されていることを確認。
git remote -v
heroku https://git.heroku.com/grails-heroku-example2.git (fetch) heroku https://git.heroku.com/grails-heroku-example2.git (push)
- Herokuへデプロイ
git push heroku master
BUILD SUCCESSFUL
的なメッセージが表示されればOK
- 確認
heroku open
- ローカルで実行時と同じ画面が出ればOK
GitHubにpush
git remote add origin git@github.com:yamap55/grails-heroku-example2.git
git push -u origin master
Travis CIと連携
touch .travis.yml
.travis.yml
を設定travis setup heroku
.travis.yml
に設定を追加language: groovy
- ファイルの先頭に追加。
- 設定例
language: groovy deploy: provider: heroku api_key: secure: (略) app: grails-heroku-example2 on: repo: yamap55/grails-heroku-example2
- GitHubにpush
git add . git commit -m "comment" git push origin
- 確認
heroku open
- herokuのログを確認
メモ
- GrailsのwarをScriptとして起動する方法もあるらしい。
参考URL
- Deploying Gradle Apps on Heroku
- Herokuの公式ドキュメント
- Heroku Deployment
- Gravis CIの公式ドキュメント
- Grails入門して、travis-ciとherokuの連携をしたった
- Java1.7のplay2.2でTravis CIからherokuデプロイまでやった
- Gradleでherokuアプリケーションを作成する
退職します。
はじめに(っというか概要
- エンジニアとして、人として、自分が得たもの、反省点とか、忘れないようにメモ。
- 基本ポエム。
- 2017/03/17が最終出社
- 在籍は3月いっぱい
- 退職にあたり、特に大きな不満があった訳ではなく、転職先に大きな魅力があった。
- この辺りは別記事で書ければいいなぁ
- 今後についてはそのうち。
- 多分4月はニートしてるので声かけてください。
私はそれなりにコード書けるという自信。
- 逆に凄いできる訳ではない。
- ↓とも関係するが、人にコードを見てもらう事が殆どなかったので、できない訳ではない事に気づけたことが重要。
- 最後の方は割りと技術的なことを相談されることが多かった気がする。
会社やアプリケーションに依存している事に対しての気付きと変化を与えることの難しさ。
- 正直、前職でも感じてはいたが、改めて実感。
- エンジニアとしてレベルが高いにも関わらず、仕事に閉じているのは勿体無いと感じた。
- 外部勉強会への参加、blogやQiitaへのアウトプットなどが必須とは思わないが、楽しいし褒められるし評価されるし、いいことだらけなのになぁと思った。
- 自作ツールが社内で評価されていて、自身もかなり便利だと感じたなら公開すればいいのにとか。
- プライベートは個人個人なので、強制するものではないが、エンジニアとして頑張っていきたいと思っているなら多少はっとも思った次第。
- 外部の勉強会へのお誘いや、社内勉強会の開催、GitHubとQiitaでOrganaizationの登録などなど色々やってみましたが、結局あまり盛り上がらず。
- 自分の力不足も多分にあったと思う。
- 自分は初回は半分無理やりだったので、初回はある程度強制で体験してもらうのもありだったかも?
自分の書いたコードを人にレビューしてもらうという経験。
- 私は細かいミスが多いという事実。
- 昔から言われていたので知ってはいたけど、コードとして見せられるとわかりやすい。
- 人に指摘される事に加えて、人に説明することで気づく事実も多い。
- レビューされるという事実自体が緊張感を持ってコードを書ける。
非エンジニアの方に数分-1時間程度で作成できる程度のツールをプレゼントすることで、何十時間もの工数を削減できるという事。
- 非エンジニアの方は行っているやり方が効率的でない事に気づいていないことが多い。
- 非エンジニアの方の仕事に積極的に関わっていくことで、ちょっとした手伝えることが結構ある。
- そして、それは往々にして凄い喜ばれ、褒められる!
- 使用工数に対する効果、満足度(使用者作成者共に)がかなり高いので、これは今後も実践していく予定。
人に教えること
- 社会人経験で直接教える後輩がいた事が殆どなかったため、経験できたのはかなりの収穫。
- より多くの事を教えた?伝えた?のが、エンジニア歴数年の後輩1名、非エンジニアの新卒2名(メンター)。
- 私は人に教えることは向いてるっぽい。
- 私は人に教える事がかなり好きらしい。
- 私は人に教えると結構好かれるっぽい。
- 自分の知識の再確認になり、あやふやな事が明確になる。
- 自分が伝えたいことを伝えるのは難しい。
- 自分の語彙力が乏しい。
- 伝えたいときには自信を持って。
何事も自分から動かなければいけないということ
- あれを使いたい、あれをやりたいと言えば、ある程度は何でもできる職場だったにも関わらず、○○を作った!○○を行った!と、胸を張って言えるような事はできなかった。
- 最後の辺りには自ら簡易的なWebアプリケーションなども作っていたが、まだまだ積極性が足りていない。
- 自分が興味ある、知識のある事はまず作って見せる事が大事。
まとめ
- いい人に囲まれ、いい職場だった。
- 良い所は継続し、反省点は意識して直していく!
KotlinでHelloWorld
はじめに
先日、私の送別会の場でKotlinやるという話を聞いて、悔しかったので少しは触っておこうと思った次第です。
で、忘れないようにとりあえずblog書く。
Kotlinとは
- InteliJ IDEAで有名なJetBrainsが作成したJVM言語。
- JavaScriptに変換や、Androidでも動く。
環境構築
- Windowsの場合
- GitHubのリリースページから取得。
- 解凍して好きなとこに置けばOK。
- 好みで
bin
をPATHに追加する。
- SDKMAN
sdk install kotlin
HelloWorld
- 以下のコードを
hello.kt
として保存。
fun main(args: Array<String>) { println("Hello, World!") }
公式に乗ってた
- jarを作成
kotlinc hello.kt -include-runtime -d hello.jar
- 実行
java -jar hello.jar
classにして実行
- コンパイル
- kotlinc hello.kt
- 実行
kotlin HelloKt
REPL
kotlinc-jvm
script
- 以下のコードを
hello.kts
として保存。
println("Hello World")
- 実行
kotlinc -script hello.kts
はじめてMacを使って困ったことまとめ
はじめに
年末にはじめてMacを購入しました。(MacBook Pro 2016 13インチ)
10年以上ずっとWindowsのみだった*1私がMacを触ったら困ったことだらけだった上、基本的な事がわからない場合には、調べても出て事ないという事が結構ありました。
WindowsからMacを触る方の役に立つかもしれないので、私の経験を記載しておきます。
基本操作
- ctrl + space 日本語切り替え
- 英字キーボードの場合は英数、かなキーがない*2
- ctrl + クリック 右クリックメニュー
- 2本指でスクロール
- アプリケーションのメニューバーは最上部
- Windowの上ではなく、画面の最上部
- FinderがWindowsでいうExplorer
- 特定のディレクトリを開きたい場合は、メニュー → 移動 → フォルダへ移動
超基本ショートカット
- command + c コピー
- command + v 貼り付け
キーの読み方?
- command ⌘
- shift ⇧
- option ⌥
- control ⌃
- caps lock ⇪
Windowsと比較した場合の修飾キーについて
Spotlite検索
- command + space Spotlite検索
- これさえ覚えておけばアプリケーション名入れれば呼び出せる
- これを知るまでターミナルの開き方すらわからず。。。(terminalを入力すれば出てくる。)
インストール
- 何かアプリケーションをインストールする場合、Windowsのようなインストーラーが出た場合は問題ないが、↓のようなのが出る場合があります。
- これが出たら、アイコンをドラッグしましょう。
- アプリケーションフォルダにバイナリを移動している?
エスケープ文字
Option + ¥
- Macでは円マーク(¥)とバックスラッシュ(\)はちゃんと区別される。
英字キーボードで英数、かなキー
Karabiner-Elements
Gitのインストール
- Homebrewインストール時に必要となるXCodeのCommandLine Toolsでインストールされる
- が、バージョン低かったりと使いにくいのでHomebrewで別途インストールがオススメ
brew install git