ひとり暮らしのための甘々と稲妻(アニメ)メシ
どうも,まるさ@maruuusa83です.
アニメ甘々と稲妻,見てますか.
メシ好きのまるさとしては堪らないですね・・・良い・・・
自分で作らないと食えないような回は自分で作ったりしてるんですけど,
せっかくなのでメモ代わりにいくつか紹介します.気を付ける点を中心にメモしていきます.
ノリで作ってるのでそれぞれうまくアレンジしてください・・・
ぼくは一人暮らしなので,一人で作ってちょうどよかった分量で書いていきます.
第8話 明日もおいしいイカと里芋の煮物
8月はするめいかの旬ですから,見た瞬間に速攻で作ることを決意しました(笑)
「イカと里芋の煮物」
食材
一回つくれば2~3日食べられる分量です.
- するめいか : 1ぱい
- さといも : 4~5個くらい
- おくら : 食べたいだけ(1食2~3本かな)
- 水 : 300ml
- 醤油 : 大さじ1.5
- 泡盛(なければ芋焼酎) : 大さじ1.5
- みりん : 大さじ1.5
- だしの素 : ちょっぴり(味整える感じで)
醤油とみりんにはこだわりましょう.
ところで!
作中ではイカがこんな感じでした.
ぼくイカの専門家じゃないですけど,これするめいかでいいんですよね・・・?
するめいかであれば,茶色っぽい方が(比較的)新鮮です.真っ白だとだいぶ鮮度が悪いということになります.
まぁ今回生食ではないのでそれほど心配はいらないと思いますが.
もっと鮮度がいいともっと透明感のある色になります.
1.いかをさばく
胴に親指を突っ込んでみると,筒になってる部分と体がつながってる部分があります.
親指でブチッとちぎってしまいましょう.そしたらゆっくり引き抜いてください.
引き抜いたわたの大部分はキモなので,ゲソと肝和えにすると美味しいです.
(写真は肝和え用に仕込んだもの)
2.先にいかだけ煮る
いかをいもと一緒に似てしまうと締まって美味しくなくなるので別で煮ます.
ゲソもエンペラも全部やっちゃいましょう.いろんな食感が楽しめて良いです.
筒は輪切り,それ以外は一口大くらいに切ってしまってください.
先に水と調味料をすべて鍋に入れて火にかけます.
沸騰してきたらエンペラと筒を入れましょう.
エンペラ・筒が煮えて来たら「王冠」とゲソを放り込みましょう.ポイポイッ.
1分くらいで引き上げてしまいます.煮すぎると固くなってしまいます.
アクもちゃんと取りましょう.
3.いもを煮る
いかを取り出した煮汁にいもを放り込んで落し蓋をして20分くらい煮ましょう.
煮てる間暇なのでオクラの下準備もこのタイミングでやっておくとよいです.
4.食べたい気持ちになってくる
いもが煮えたら味を調えて,その時食べる分だけのおくらを投入します.
おくら入れっぱなしで置いておくとネバネバで美味しくなくなってしまいます.
ひと煮たちしたらイカを放り込んでイカを温めて完成!!!
王冠も映り込んでますね.おいしいおいしい.パクパク.
第10話 夏休みとねことアジ
先生からの連絡でよろこぶ小鳥ちゃんがかわいかった.
富山出張の帰りで海産物食べたい欲が高かったので見た日に作っちゃいました.
今の季節はさんまが美味しいので,あじの代わりにさんまを使ってもいいと思います.
「なめろう/さんが焼き」
食材
あじを一匹まるごと食べる感じです.
- あじ : 1匹
- 大葉 : 5~6枚くらい
- 小ねぎ : 2本くらい
- みそ : 小さじ2くらい
- おろししょうが : 小さじ1くらい
良いみそを使いましょう.みそとしょうがはお好みで.
1.あじを三枚におろす
三枚おろしにしますが,頭はあら汁,中骨は骨せんべいにするので取っておきます.
ぐっちょりしちゃうのでキッチンペーパーでよく拭いてください.
前の手入れで出刃の刃つけ忘れてて悲しかった.
皮を引いて,腹骨をすいて,小骨も取っちゃいましょう.
刃物屋さんの小骨取りすごく捗るのでおすすめ.
2.たたく
身を5mmくらいの荒みじん切りにしたら,みじん切りにした大葉・小ねぎ・調味料を混ぜます.
手で軽く混ぜたらエイエイッと包丁でたたいていきます.
個人的には食感を残したいのであまりたたき過ぎないようにしています.
これでなめろうの完成!!!!
3.さんが焼き
なめろうを少し取って,それっぽい形にまとめて焼くだけです.
油を敷いたフライパンで中弱火くらいで焼きましょう.
表面に焦げ目が付いたら返します.ふたはしません.
「アジのあら汁」
食材
- あじの頭 : 1匹ぶん
- みそ : 大さじ1くらい
- 乾燥白えび : 4~5匹くらい
- みつば : 良い感じで
- 昆布(だし用) : 2~3gくらい
- 水 : 250mlくらい
富山帰りだったので白エビがありました.具はご自由に.
大根が入るととても美味しいと思います.
適当に作っちゃったので全然分量がわからない・・・
1.下準備
昆布でダシをとるならはじめのうちに準備しておきます.
あじの頭は適当に割って,えらを取って内臓を残さないようにします.
きれいに拭いたら塩を振って10分放置して,霜降りしておきます.
2.あら汁にする
だし汁ができたら具を放り込んで,味噌をときます.
みつばは茎だけ煮て,葉は生のまま乗せるのが好きです.
できあがり!(雑)
「骨せんべい」
食材
- あじの中骨 : 1匹ぶん
超簡単なのでやるといいです.ぼくはさんまを大名おろしにしたときもよくやります.
1.揚げる
適当にカリカリになるまで揚げてしまえばいいです.
ぼくは揚げはじめは油がはねるのが嫌で低温で揚げ始めています.
そのあと中温くらいでササッとやっちゃいます.
完成!(はやい)
加賀茶とほたるいかの黒作りも手に入れていたので付け合わせました.
加賀茶でなめろう茶漬けもやりました.超美味しかった.
あじ一匹でも結構食えます.さんが焼き初めてやったけど超美味しい.
さんまたべたい.
それでは
今回はこのへんで! ノ
まるさ
Linuxで動かすswiftからC++のコードが呼びたい
どうも,まるさ@maruuusa83です.
xcodeを使わない,CLIのswiftからC++コード呼び出すのにちょっと困ったのでメモします(初心者丸出し)
Linuxとかでswift書いてて困った人どうぞ
知っておくべきこと
- swiftからはC/Objective-Cしか呼び出せない
swiftc
を使うと-import-obj-header
でブリッジヘッダが指定できる
適当にググるとxcode使ってる場合の情報ばかりなので困りましたが,なんとかなりました.
ブリッジするときC++成分があるとSwiftが怒るので注意します.
C++のコードのオブジェクトファイルを用意する
Cとくっつけるためにextern "C"
したC向けWrapperを用意する必要があります.
HelloSwift.cpp
#include <iostream> class HelloSwift { public: void hello_swift_from_cpp() { std::cout << "Hello Swift from C++!\n" << std::endl; } }; extern "C" void helloswift(void) { HelloSwift hs = HelloSwift(); hs.hello_swift_from_cpp(); }
オブジェクトファイルつくりましょう.
$ g++ -c HelloSwift.cpp
ブリッジヘッダファイルを用意する
Swfitで読み込むCかObjective-Cのヘッダファイルを用意します. ここでC++成分が残っていると文句を言ってきますので注意.
具体的には,C++のときにextern "C"
しておいたWrapper群を列挙します.
bridge.h
void helloswift(void);
swiftをかく
ここまでくるとC++コードがswiftから呼べるようになります.うれしい.
ヘッダはコマンドオプションで直接指定するのでimport
の必要はありません.
test.swift
// bridge.h is imported
helloswift()
swiftcする
先ほど書いたブリッジヘッダファイルを-import-objc-header
で指定しておくのがミソ.あと,C++のオブジェクトファイルも渡しておきます.
$ swiftc -import-objc-header bridge.h test.swift HelloSwift.o $ ./main Hello Swift!
動いた!
それでは,今回はこのへんで ノ
まるさ
JavaとPythonでFPGA回路設計をするための開発環境作ったよ
どうも,まるさ@maruuusa83です.
ひさしぶりに真面目に技術っぽい記事かきます.
現在ぼくは,コンピュータ・アーキテクチャあたりの単語をキーワードとしている研究室で活動をしています.
もともとずっとソフトやってたのでヒーヒー言ってます.
高位合成(HLS, High Level Synthesis)という技術がホットだそうで,色々あってツールを統合するツールを作りました.
PyJer: JavaとPythonでサクッとZedBoardアプリを設計するよ!なフレームワーク
Java言語ベースの高位合成ツールSynthesijerと PythonベースのIPコア合成フレームワークPyCoRAMを組み合わせていい感じにサクッとZynqアプリがつくれます.
まだREADME雑にしか作ってないですがご勘弁を.
今回作ったフレームワークの嬉しいところは,JavaとPythonでロジックを書いたらあとはBOOT.binの生成まで勝手にやってくれるところです.
ぼくはこいつをGitlab CIに食わせてDropboxに出来上がったBOOT.binを投げ込んでくれるようにしています.
OS載せたZynqを想定しているので,ビルドをフックさせて自動デプロイまでできると思います.
どんなもの?
次のようなアーキテクチャのハードウェアの構築のためのフレームワークです.
ハードウェアの概略構成
このような構成に限定しているために,BOOT.binの生成まで勝手にやってくれます.
赤枠が自分で実装することになる部分です.
IoTデバイスのような,外部回路(センサなど)からデータを受け取ってインターネットへ出力するデバイスの プロトタイピングのためのツールとして作成しました.
User Logicの領域は主にJava言語のフツーのプログラムとして記述します.
Synthesijerを用いた高位合成によってハードウェアが合成されます.
ぼくは外部回路との通信などクロックレベルのタイミング管理が必要な部分はVerilogで書いてJava側から呼び出しています.
PSとPLの間のデータ共有は,PyCoRAMが生成するCoRAMアーキテクチャを使って行ないます.
そのため,Data Flow ControllerはPythonによって記述することになります.
User Logicで処理したデータはDRAMに転送できるので,Linux上のプログラムから自由にデータを使うことができます.
つかいかた
(v0.2.1時点での使い方です.この後変更の予定があります.詳細な使い方はまた別にまとめます.)
1.前提
- Linuxディストリビューション上で動作させる
- Java SE 8, python3, jinjer2が入っている(Synthesijer,PyCoRAMに必要な環境)
- 高前田先生のPyCoRAM導入の資料の「Linuxカーネルイメージ作成」~「SDカードへの書き込み」の準備を行ったZedBoardがある
- Vivadoが導入されていて,コマンドラインからbatchモードが使える
- Vivado SDKもコマンドラインからbatchモードが使える
2.導入
とりあえずGithubからcloneしてきます.
cloneが済んだらmake init
してみてください.
このコマンドでSynthesijerとPyCoRAMがプロジェクト内にクローンされます.
いちおう,make test
というコマンドを用意しています.サンプルプロジェクトを展開してビルドしてcleanするというもので,
きちんと導入できているか確認するのに使えます.が,マシン次第でとても時間がかかることがあるので注意してください.
3.ハードウェアの開発
テスト用に作ったサンプルプロジェクトがtestディレクトリ内にあります.
testフォルダをルートに読み替えた感じでコードを配置することになります.
すなわち,
- Synthesijer関連:プロジェクトルート直下
- PyCoRAM関連:pycoram直下
- Vivado関連:vivado-autobuilder下
となります.
シンプルなプロジェクトならば,PyCoRAM周りはtestのプロジェクトをコピペで作るのが楽かと思います.
4.ビルド
ルート直下のMakefileの最初のほうに設定項目があります.
- TOP:Synthesijerのトップモジュールのファイル名
- MODULES:Synthesijerで書いたモジュールのファイル名一覧
- WRAPPERS:Verilogコードを使っている場合,SynthesijerによるそのWrapperのファイル名一覧
- VERILOG_MODULES:Verilogで記述したモジュールのファイル名一覧
たとえば,testプロジェクトだと次のような記述になります.
TOP=SumTestTop.java MODULES=SumTest.java Dummy.java WRAPPERS= VERILOG_MODULES=
PyCoRAM関連のソースコードのファイル名はtestプロジェクトと同様にしていれば特に設定の必要はありません.
もし必要があれば,Makefileのマクロを書き換えてください.
開発途中,Javaの合成だけしたい!とかそういう場合はsynthesijer_build
,pycoram_build
などの
makeコマンドを使うとよいです.
さいごに
PyJerではJavaとPythonで簡単なヘテロジニアスなプロセッシング環境のプロトタイピングができます.
複数のセンサやモータを取り回すようなものづくりに使えるように書いてみました.
サクッと書けてCIも回せるので良い感じだったと思います.(締めが雑)
Synthesijerの三好さん,PyCoRAMの高前田さん,お世話になりました.ありがとうございます!
というわけで,ツールを書いたお話でした.
それでは,今回はこの辺で ノ
まるさ
新宿御苑以外にもよい公園はたくさんあるんだよ!!!!
どうも,まるさ@maruuusa83です!
自然の多いところにいきたい
どうでもいいことですが,ぼくはよくぼっちで自然のある場所を探し求めます.
でも都会の有名なところはカップルがいっぱいでぼっちでいるぼくは少なからずヘコみます.
ぼっちでは手をつないだり知らない植物見てキャイキャイしたりできないわけです.
新宿御苑とか神代植物公園とかいいところだけど若干ぼっちには厳しい.
まわりのみんなが「新宿御苑!新宿御苑!」としか言わないので御苑以外に東京都心から電車一本で行ける個人的に好きなところをボソリとつぶやきます.
もちろん新宿御苑も素晴らしい.秋のモミジバスズカケノキ並木は最高.
神代植物公園
最近大温室がリニューアルしたので行きたくてウズウズしています.
タイミングによっては人がちょっぴり多いのでぼっちだとつらいことがあります.気を付けましょう.
基本的には植物を鑑賞するための公園で,遊んだり寝転んだりする場所はありません.
個人的に好きなのはバラ庭園.
バラシーズンの直前には藤のカーテンがキレイでした.
甘い香りで甘い気分に(?)
神代植物公園は高い木が多くて涼しい
参拝するのもよし,深大寺そばを食べるのもよし.
このあいだ一人で行ってそば饅頭を2つ買ったのですがカップルで食べるものだと思われてなんかツラかったです.
ぼくは歩くのが好きなのでこのまま野川沿いに武蔵国分寺公園向きに北上していくのが好きです.(見どころがたくさんある)
逆に南下していくと二子玉川のほうまで行けるようです.
なんか自分で撮った写真が少ない・・・
武蔵国分寺公園
じ,じつを言うと武蔵国分寺公園のほうに入ったことはありません.
が,野川遡上をしていくとお鷹の道~真姿の池のほうに出ることができます.ここいいんですよね.
お鷹の道
武蔵国分寺公園のほうまで入ったことはないのですが,芝が広がってて良いところっぽいです.
友達も「ダンケパーク」と呼んでいました.
この公園,旧国鉄中央鉄道学園跡地だということは前から知っていて,廃線/軌道跡めぐりをしたくて仕方がないです.
武蔵国分寺公園Webサイト
昭和記念公園
この記事の真打です.新宿御苑の対抗馬ですね.
だいたい新宿御苑の倍くらいの広さがあって,自然を残したエリアから巨大な芝生エリアまでなんでもアリです.
新宿御苑と似てこそいますが,もうちょっとカジュアルな感じの公園です.
冬の暖かい日の昼寝は最高
春には色々な桜が見れる
日本庭園も整備されていて,盆栽の展示なんかもやってます.
雪吊りもやってます.
昭和記念公園の日本庭園は個人的な穴場.お抹茶が頂ける.
ここは案外ぼっちでもつらくない.ぼっちである事実を除けば.
武蔵野はたくさん公園があって良い
ここまでで紹介しませんでしたが,武蔵野にこればまだまだたくさんの公園があります.
武蔵野の森を残したような公園で,広場があって,というかむちゃくちゃ広くて・・・的な.
今の時期はハケの保存区でホタルが見られます.
武蔵野には自然公園が多い
中央線から北上すると多摩湖があります.
徒歩だと好きじゃないとキツいですけど,自転車好きならこっちもアリです.
多摩湖近辺は森が残っていて野鳥観察が楽しい
東京の公園ってデカくていいですよね.
都心の公園だと外の喧噪とのギャップがなんだか不思議です.
浜離宮恩賜庭園まだ行ってないので行ってみたい.
それでは,
今回はこのへんで ノ
まるさ
上三依水生植物園でメコノプシスのお花見てきた
どうも,まるさ@maruuusa83です!
植物大好きマンのぼくが「日本では育たないという幻の青いケシ」を探し求めた話です.
大自然を駆け巡り,スピリチュアル体験をし,蛇に囲まれながらも幻の花を見るスペクタクルストーリー(?)
このあと30分森で迷子になった
好きな花
ぼくはケシが好きです.アヘンはいらないです.
食べるほうじゃないです.花のほうです.
可愛いですね.かわいい.
というかキンポウゲ系の花が好きなんですよね.
いやー,キンポウゲって良くないですか?????
Anemone coronaria 16/3/22
こういう雄しべ雌しべがワーッとあるような花が好きです.
最近よくSalvia guaraniticaを見かけるのでトリカブトの花の時期が楽しみになっています
(まだみたことない)
百合のほうではなく花のほうです.花のユリはカタカナにすることにしましょう.
筑波実験植物園に咲いてたなんだか珍しいオオミスミソウ
(これ同定大変だったし本当に正しいのか)
二重咲のオオミスミソウ.葉の斑と紫もかわいくて一目ぼれ.
Hepatica nobilis Schreb. var. japonica 16/4/1
閑話休題.
メコノプシス・ベトニキフォリアってご存知ですか?
ぼくはご存知です(?)
日本では「ヒマラヤの青いケシ」などと呼ばれているそうで,中学生の頃からずっと見たくて仕方のない花です.
なかなか日本では栽培困難らしくぼくの中では幻の花,伝説の花と位置付けられています.
でも通販でならなんとか買えるみたいだし・・・どっか見れるんちゃうのん・・・
ということでメコノプシスを見る旅に出る
日光市の北のほうにある植物園で見れるらしい情報をGETしたので,いざ日光へ.
ぼっちで.
目的地は日光のはるか北ということで,きぬがわで鬼怒川温泉駅まで.
ここまで2時間半ぐらい
この後東武鬼怒川線と野岩鉄道会津鬼怒川線に乗るのですが,本数が少ないのでここで一時間ほど休憩することになります.
出発のとき切符がうまく買えなかったのですが,駅員さんが「あー忙しいからこれあげる」と言って着駅清算券なるものをくれました.ご迷惑おかけしました・・・
着駅精算券.このすぐ隣でカップルがイチャイチャしててつらかった.ぼっちなので.
野岩鉄道線内に進入するとトンネルだらけでハァー電波も無エ,景色も無エ,電車もそれほど走って無エって感じです.
さらにもう40分くらい電車に乗ります.
上三依塩原温泉口駅に到着
あーっ山奥~~~みたいなところでとても良い
電車が少ないので,この辺まで来ると日帰りが厳しくなってきます.
空気がキレイで気持ちいい.
この駅にはパワースポットがありました.
自らパワースポットだと名乗るパワースポットは初めて見ました.
自己主張するパワースポット
よくわかんないですが,知らないおじさんがこの上に立って上を見上げながら「そうか・・・」とつぶやいて何かを感じているようでした.
花を見る前に何かに連れていかれるのは困るのでぼくはやりませんでした.
このあとまたほんの少し歩きます.
上三依水生植物園に到着
家からどえらい遠かったですが,ようやく植物園に到着しました.
まだ花見てないのにすごい達成感です.
見切れている案山子は遠くから見ると「二人組の何かを構えた農民」なのでとても怖い思いをした
すごいところに来てしまった感.滝とかある.
新宿を発ってからここまで4時間かかりました.
日帰りをしようと思うと場合によっては20分しか見れません.秘境.
植物園の中は山草,水辺の草が中心でした.
こういう雰囲気の植物園は楽しい.
ニッコウキスゲ.ユリみたいな花だけどユリ科じゃない(とはいえ旧ユリ科).
Hemerocallis dumortieri var. esculenta 16/6/11
ニリンソウかなあ.看板にはミヤコワスレとあったけどちゃうよな・・・
(たぶん)Anemone flaccida 16/6/11
この植物園なんかヘビさんがたくさんいる
この植物園スゲーたくさん蛇いるんだけど pic.twitter.com/FnDScdfDNZ
— ジジがおうちにやってきた (@maruuusa83) 2016年6月11日
ヘビには詳しくないけど,アオダイショウかなあ.
Elaphe climacophora(いちおう調べた)
このときどうもカエルさん狙ってたのか,ぼくに驚いたヘビさんに驚いたカエルさんが一目散に逃げていきました.
ヘビさんたち水辺のやぶとか橋の下とかでうにょうにょしてました.
ずいぶん奥のほうに注意書きがありました.ておくれ.
そして幻の花を・・・
中学生の頃から見たいみたいと思っていた花にようやく,8年の念願かなってお目にかかることができました.ぼっちで.
これが探し求めた幻の花だ!!!!!
Meconopsis betonicifolia 16/6/11
いやぁ,なんか思ってたよりたくさん咲いてる.
赤が入るのもいるらしい.
Meconopsis betonicifolia 16/6/11
同定が怪しい.看板には「ヒマラヤの青いケシ(メコノプシス属)」としかなくて種名がわからない.
写真からじゃ同定しにくいですね・・・
現地はヘビが怖くて一か所にとどまれなかった←
さいごに
ようやく長年の夢だったメコノプシス属の花を見ることができました.
いやぁ,たくさん咲いててよかった.
この後当然帰れなくて日光で一泊しました.
電車移動にものすごく時間がかかるので観光も温泉もお預けでした(笑)
これまで行った植物園の中でも結構おもしろいところでした.
1時間くらいたっぷり見て回れてボリュームも満点でした.
満足満足.
特急に遅れそうで「仕方ないのでこれで行ってください・・・」と発行してもらった二回目の着駅精算券
それでは
今回はこのへんで ノ
まるさ
Google Spreadsheetでチケット駆動生活をするはなし(タスク追加アプリ編)
どうも,まるさ@maruuusa83です.
Google Spreadsheetでチケット駆動生活をするはなし(スプレッドシート編)に引き続き,
スクリプトとアンケートフォームを使ってタスク追加アプリを実装していくぞ編です.
タスク追加アプリ?
スプレッドシートでタスク管理するってよくあることだとおもいます.
でもタスクの追加って面倒じゃないですか・・・?
ぼくはセルひとつひとつにいちいち打っていくのが面倒ですく投げ出してしまいます.
というかスマホからタスク追加したい
というわけで,今回はスマホから楽にタスク追加できるように前回のスプレッドシートを拡張していきます.
1. タスク登録ページをGoogleフォームで作る
Googleフォームを使えば,一発でクロスプラットフォームなタスク追加アプリが作れそうな気がします.
というわけでタスク管理スプレッドシートに関連付けてアンケートフォームを作ります.
1.1 新しいフォームの作成
まずはスプレッドシートから新しくフォームを追加します.
メニューバーから 挿入 > フォーム を選択してください.
新しくフォームを追加
すると新しいフォームの編集画面が表示されるかと思います.
新規フォームの編集画面
1.2 フォームの編集
必要な項目をガシガシ追加していきます.
今回は次の項目を用意します.
質問 | 必須 | 入力方法 |
---|---|---|
タスク名 | Yes | 記述式 |
締切日 | 日付 | |
タスクの詳細 | 記述式 | |
メモ | 記述式 | |
タグ | 記述式 | |
親タスク | 記述式 | |
継続タスク | 記述式 |
まずはタスク名の登録フォーム
質問の追加
設定を進めていく
編集が完了したら右上の「送信」のボタンを押してURLのタブを開いて,フォームのURLを取得しておきましょう.
1.3 状況の整理
これでフォームの作成ができました.クラスプラットフォームなアプリの完成(!)
スマホでも見られる(これは自分で実際に使っているタスク管理アプリ)
スプレッドシートには「フォームの回答1」という新しいシートが追加され,質問に回答するとここに反映されるようになっています.
回答一覧のシート
2. スクリプトを使ったフォームの回答のコピー
先ほどのフォームの回答はタスク管理のシートに登録したいわけなので,「フォームの回答1」からタスク管理のために作ったスプレッドシートに自動的にコピーするようにしていきます.
2.1 下準備
スクリプトを書くときに設定しやすいように,シートの名前を統一しておきましょう.
フォームの回答が保存されるシートを「フォームの回答」,タスク管理のために作ったシートを「タスク一覧」とすることにしました.
シートの名前の変更
2.2 コピーするスクリプト
2.2.1 新しいスクリプトの作成
ここからはスクリプトを書いていくので,スクリプトエディタを開きます.
スクリプトエディタを開く
スクリプトエディタ
新しいスクリプトを作成します.
新規スクリプト
名前はcopyFromFormとでもしておいてください.
最初から追加されているコード.gsは削除してしまって構いません.新しいスクリプトを作成するかわりにコード.gsをリネームするのでも構いません.
2.2.2 列をコピーするスクリプト
次に示すスクリプトは,せっせと列の内容をコピーするものです.
ところでスクリプトの最初のほうの<スプレッドシートのID>というのは,スプレッドシートを開いているときのURLの中に含まれているIDです.
入力する必要があるので,記録しておいてください.
https://docs.google.com/spreadsheets/d/<スプレッドシートのID>/edit#gid=<シートのID>
スプレッドシートのIDの位置
あ,あと,スクリプトを保存しようとするとプロジェクト名を決めろと言われるので,適当にtask_managerなど名前をつけておいてください.
function copyFromForm() {
var spreadsheet = SpreadsheetApp.openById("<スプレッドシートのID>")
var sheets = spreadsheet.getSheets();
for (var i in sheets){
if (sheets[i].getSheetName() == "フォームの回答") {
formans = sheets[i];
}
if (sheets[i].getSheetName() == "タスク一覧") {
tasks = sheets[i];
}
}
var newtaskrow = formans.getLastRow();
var taskslastrow = tasks.getLastRow();
// タスクID
tasks.getRange(taskslastrow + 1, 1).setValue(tasks.getRange(3, 2).getValue() + 1);
// 状態
tasks.getRange(taskslastrow + 1, 2).setValue("未着手");
// タスク名
tasks.getRange(taskslastrow + 1, 4).setValue(formans.getRange(newtaskrow , 2).getValue());
// 締切
tasks.getRange(taskslastrow + 1, 3).setValue(formans.getRange(newtaskrow, 3).getValue());
// タスク詳細
tasks.getRange(taskslastrow + 1, 5).setValue(formans.getRange(newtaskrow, 4).getValue());
// メモ
tasks.getRange(taskslastrow + 1, 6).setValue(formans.getRange(newtaskrow, 5).getValue());
// タグ
tasks.getRange(taskslastrow + 1, 7).setValue(formans.getRange(newtaskrow, 6).getValue());
// 親タスク
tasks.getRange(taskslastrow + 1, 8).setValue(formans.getRange(newtaskrow, 7).getValue());
// 継続タスク
tasks.getRange(taskslastrow + 1, 9).setValue(formans.getRange(newtaskrow, 8).getValue());
// 最終更新
tasks.getRange(taskslastrow + 1, 10).setValue(formans.getRange(newtaskrow, 1).getValue());
}
フォームの回答をコピーするスクリプト
<スプレッドシートのID>で指定したスプレッドシートからフォームの回答シートとタスク一覧シートを探し出し,フォームの回答の最終行をタスク一覧の最終行へ追加する.という処理をおこなっています.
sheet.getRange(row, col)は,シートの左上:A1を(1, 1)とした位置で指定します.
タスクIDは,スプレッドシート上でカウントしているタスク数に1を加えたものを設定するようにしています.
2.2.3 スクリプトのデバグ実行
きちんと動作するか確認するために,デバグ実行してみます.
デバグボタンを押してスプレッドシートを確認してみてください.
デバグ実行
テストタスクが自動的にコピーされた!
もし正しく動作しなければ,エラーメッセージなど見ながらデバグしてみてください.
2.3 トリガの設定
先ほどのスクリプトをフォームが入力された時点で動作するように設定します.
2.3.1 トリガの設定 ツールバーからトリガ設定を開いて,[copyFromForm」に対して「スプレッドシートから」「フォーム送信時」を設定してください.
トリガ設定を開く
トリガの設定
トリガを設定すると許可を求める画面が表示されるので,許可してください.
2.3.1 トリガのテスト
これでタスクの自動登録ができるようになったハズなので,フォームに入力してタスク一覧のシートを見ながら送信してみます.
フォームを記入して送信すると
自動的にコピーされた!
3. 最終更新日時の自動更新(おまけ)
せっかくスクリプトを作っているのでおまけスクリプトを追加します.
最終更新日時を自分の手でアップデートするのはなんだかあほらしいので自動更新するように設定します.
function insertLastUpdated() {
var spreadsheet = SpreadsheetApp.getActiveSheet();
var currentrow = spreadsheet.getActiveCell().getRow();
if (spreadsheet.getSheetName() == "タスク一覧" && currentrow >= 6){
spreadsheet.getRange(currentrow, 10).setValue(new Date());
}
}
最終更新日時を更新するスクリプト
トリガを更新時にしたとき,getActiveSheetやgetActiveCellを用いて更新されたセルを特定することができます.
更新されたタスクの最終更新のセル(J行)に現在の日にちを自動的に書き込みます.
(自動更新されたセルをクリックするとわかりますが,更新時間まで記録されています.)
シートやタスクを書き込む範囲をきちんと設定しておかないとややこしいことになるので条件分岐しています.
これでタスク追加アプリを作成することができました!!!!やったね!!!
これでタスク一覧の操作のしやすさと登録のしやすさが両立できるようになりました.
では
今回はこの辺で! ノ
まるさ
Google Spreadsheetでチケット駆動生活をするはなし(スプレッドシート編)
どうも,まるさ@maruuusa83です.
最近なんだかタスクが多くて生活が木っ端みじんになりそうです.
ひとまず大きな案件が片付いたので,Google Spreadsheetを使ってタスクを整理するためのツールを作りました.
今回はそのおはなしです.
この記事ではスプレッドシート上での設定について,
次回記事ではスクリプトを使ってタスク登録アプリの作成を行います.
チケット駆動生活(?)
ぼくはタスクをそのまま放っておくと忘れて締め切りを逃してしまうタイプの人間です.
しかたがないですから,ふせんにタスクを書いてペタペタディスプレイの周りに張り付けることでタスクを管理する,「リアルチケット駆動生活」を実施していました.
常に見えるところにタスク一覧があれば嫌でも仕事するわけです.
まぁでもタスクが増えてくると管理しきれない!
RedmineとかサイボウズLiveとかチケット管理システムとか使うにしても一人だと面倒でだんだん遠のいていく.
スプレッドシートで管理しようと思っても入力が面倒で嫌になってくる.
どうしたものか・・・
便利で便利なスプレッドシートを作りたい
最近あれこれスプレッドシートで作るのにハマっています
というわけで,スプレッドシートでチケット管理するための仕組みを作ることにしました.
まず必要な項目を整理します.
- タスク名
- 締め切り
- タスクの進行状況
それと,あったらいいなあという項目.
- 詳細
- メモ
- タグ
- 親タスクナンバー(サブタスクであることを表す)
- 継続タスクナンバー(あるタスクの続きであることを表す)
必要な機能をまとめます.
- 状態・締切に応じた色分け
- タグによる整理と検索
- タスク番号の自動割り当て
- タスク登録アプリの作成
目玉はタスク登録アプリですね.
スプレッドシートいちいちポチポチしなくてよくなります.
スプレッドシートを作っていく
とりあえずスプレッドシートを書いていきましょう.
とりあえず項目を入力していく
1.データ検証の設定
項目ごとに「日付」だとか「ドロップダウンリスト」だとかの設定をしていきます.
1.1 日付入力の設定
まずは簡単な日付の設定をやっていきます.
範囲を指定して右クリックで「データの検証」を開く
条件を「日付」「有効な日付」に設定
これで入力を日付に制限して,かつ簡単に日付が入力できるようになります.
「最終更新日時」の項目も同様に日付を入力することになりますから,同様に設定しておいてください.
セルをダブルクリックすればカレンダーが現れるようになった!
1.2 ドロップダウンリストの設定
「状態」の項目について,
- 未着手
- 作業中
- チェック待ち
- 完了
- 破棄
という項目からドロップダウンリストで選択できるようにしていきます.
日付の設定と同様の手順で範囲を指定して「データの検証」を開きます.
今度は条件を「リストを直接指定」に設定してカンマ区切りで項目を入力します.
条件を設定していく
状態の項目のセルの右側に▼が現れるようになります.
これをクリックすればドロップダウンリストが現れます.
ドロップダウンリストが現れるようになった!
2.シートの整形と自動色付け
シートの整形と色付けの設定を行っていきます.
2.1 シートの整形
適当な値を入力して様子を見つつセルの大きさを決めたり項目の行に色を付けてみたりししてください.
こんな感じに設定してみました
2.2 表示領域の固定
タスクが増えてくるとスクロールしたとき項目名が見えなくなったりすると嫌なので,常に表示されるように固定しておきます.
項目名の行を選択して,「表示」>「固定」>「現在の行まで」で行の固定を設定できます.
固定行の設定
項目名の固定に加えてタスク名なども固定した
これで上下左右のスクロールでも必要な項目は常に見えるようになりました.
2.3 自動色付けの設定
まずは締め切りを超えてしまったとき色が付くようにします.
「条件付き書式」を開いて「次より前の日付」「本日」を設定します.
今回はセルの背景が赤くなるように設定しました.
「条件付き書式」を開く
条件付き書式のルール設定
締め切りを超えたら目立つようになった!
つぎに,完了したタスクの行は全体が灰色になるように設定します.
こういう感じにしたいなあ
次の写真のように,実行したい範囲全体を選択して,先ほどと同様の手順で「条件付き書式のルール」で「カスタム数式」の設定を行います.
設定を行う範囲
行ごと色を付ける設定
「完了」を設定すると自動でブラックアウトするようになった!
ところで,締切を迎えてしまっている場合にブラックアウトの上から色が変わってしまっています.
これは条件付き書式のルールの適用順を変更することで解決できます.
適用すべき範囲
赤丸の部分をつかむと順番を入れ替えできる.書式は下から順に適用される
3.フィルタの設定
最後のスプレッドシート上での作業として検索と並べ替えができるように設定していきます.
項目名も含めて範囲選択し(ぼくはその他の設定もA5:J1000くらいにしています),ツールバー内のフィルタボタンを押します.
選択範囲とフィルタ
この設定で項目名にプルダウンメニューのアイコンが表示され,各列ごとに並べ替え,フィルタリングの設定などができるようになります.
並べ替えや条件フィルタ,値フィルタが使えるようになる
「状態」の項目について,完了したタスクや破棄したタスクは見えなくなるようにしておくといい感じです.
値フィルタはすでに存在する値からしかフィルタの設定ができません.とりあえず一通りすべての状態をスプレッドシートに入力してから「完了」と「破棄」のチェックを外し,OKを押します.
「状態」の項目のフィルタ設定
特定のタグを含む行のみを表示するような場合は,「タグ」の項目の値フィルタを使います.
はじめに「値でフィルタ」の直下にある「クリア」で全てのチェックボックスを外しておき,そのあと検索ボックスで必要なタグを含むセルを検索しておきます.
そののちに「すべて選択」をクリックしてOKを押せば,検索したいタグを含む行のみが表示されるようになります.
タグの検索
4.統計情報の表示
この後タスクの自動登録に「登録したタスクの数」が必要になるので,ほしい統計情報を設定しておきます.
今回は未着手のタスクの個数とこれまでに登録したタスクの数の二つを設定しました.
それぞれ,セルに次のような数式を入力しています.
=COUNTIF(B6:B997, "未着手") //未着手タスクの個数
=COUNT(A6:A996) //全タスク数
統計情報
スプレッドシートを使った設定はここまでになります.
次回の記事ではスクリプトとアンケートフォームを用いてタスク登録アプリを作成します.
では,
今回はこのへんで ノ
まるさ