e-Taxで確定申告(開業届と青色申告承認申請まで)
概要
毎年、確定申告をするときにどうやってたか調べながらやるのも面倒なので、まとめておくことにした。
長くなったので、このページはe-Taxを利用できるようにして開業届と青色申告承認申請を提出するまでを記録した。
目次
- 概要
- 目次
- 開業届と青色申告について
- 0. 申請の前にやること
- 1. ICカードリーダーの設定をする
- 2. 信頼済みサイト及びポップアップブロックの許可サイトの登録、ルート証明書のインストール
- 3. e-Taxソフト(web版)にログインして利用者識別番号を取得する
- ここまでやったことの確認
- 5. e-Taxソフトをインストール
- 6. e-Taxソフトを起動
- 7. 書類作成
- 申請完了!!
開業届と青色申告について
副業の収入について確定申告するのではなく、フリーランスとかであれば開業届と青色申告した方が控除を受けられるので、やった方がいいです。
正直、面倒で難しそうですが逃げ癖をつけないためにも取り組もう。
こういうのは、何も考えずにやり始めた方がいい。なんかいろいろ考えたり調べたりすると、それで疲れて結局やらずじまいになります。
ただ、税金関係については面倒な手続きをこなすほど控除や助成を受けて自分のお金が増えるので、基本的にやるべきです。
開業届
開業してから1か月以内に届け出る義務があるが、しなくても罰則はないのでちょっとした副業とかでやるのは面倒なのでやらない(開業届を知らない)人が多い。
開業届に記入する開業日は別に1か月より前でも問題ないらしい。
主な収入がyoutubeやフリーランスとかならやった方がいい。
青色申告とのセットのもの思って差し支えありません。
青色申告承認申請
青色申告をするためには、確定申告する前に申請して承認を受けなければなりません。
申請期限が3月15日なので、ふつうに確定申告書を作成する前になったら申請すればいいです。
一度申請すれば、翌年以降は申請しなくても継続します。
0. 申請の前にやること
まず、マイナンバーカードを作成しましょう。
マイナンバーカードを使用しない場合は、税務署に行って利用者番号みたいなのをもらわないといけないので、代わりに役所に行ってマイナンバーカードの交付をした方がいいです。(僕が作ったときはQUOカードが貰えた記憶があります。)
マイナンバーカードを作成したときに、「署名用電子証明書」「利用者証明用電子証明」「住民基本台帳用」「券面事項入力補助用」のパスワードを決めるのでちゃんと覚えておきましょう、使います。
他に必要なものは、ICカードリーダーです。
SONYのPaSoRi(RC-S380)を買いました。
あとは、いろいろとソフトをインストールと設定をしていくことでe-taxから税金に関する様々な申請や申告ができるようになります。
==========
ここから下が実際にe-taxで青色申告承認申請から確定申告が完了するまでの流れ
==========
1. ICカードリーダーの設定をする
まず、購入したICカードリーダーを使用するための設定を行う。
とても分かりやすいセットアップガイドがあるので、そちらに従えば問題なく完了します。
セットアップガイドの「e-Tax、またはeLTAXを使うには」の補足
ダウンロードする利用者クライアントソフト(Windows用)はここ
https://www.jpki.go.jp/download/win.html
クライアントソフトのインストール方法はこれ(第3章JPKI利用者ソフトのインストールのみでok、第4章以降はやらない)
https://www2.jpki.go.jp/download/pdf/install_win3_3.pdf
「ICカードリーダライタ設定」を起動して、「PC/SP対応」を選択し、「Sony FeliCa Port/PaSoRi 3.0.0」を設定。
「ICカードリダーライタ設定」は画面左下から検索するか、もしくは、クライアントソフトのインストール時に何もいじらずに次へを連打すると以下の場所に「ICカードリーダライタ設定」が置かれるので、これをダブルクリックすると起動します。
以上までで、購入したICカードリーダーにマイナンバーカードをピッとできるようになりました。
2. 信頼済みサイト及びポップアップブロックの許可サイトの登録、ルート証明書のインストール
e-Taxを使うために必要な設定です。
ここの「3. ルート証明書等のインストール」を実行します。
マニュアルがあるのできちんと従って行ってください。
https://www.e-tax.nta.go.jp/download/e-taxSoftDownLoad.htm
3. e-Taxソフト(web版)にログインして利用者識別番号を取得する
ここにアクセスします。
https://clientweb.e-tax.nta.go.jp/UF_WEB/WP000/FCSE00001/SE00S010SCR.do
e-Taxソフト(web版)を利用するための事前準備
ここの「4. 事前準備セットアップ」にある事前準備セットアップをダウンロードして、それをダブルクリックして実行します。
https://www.e-tax.nta.go.jp/e-taxsoftweb/e-taxsoftweb1.htm
このインストールマニュアルに従って操作します。
※ 一か所注意。JPK利用者ソフトは、ICカードリーダのセットアップガイドに従ってインストール済みなので「いいえ」を選択
https://www.e-tax.nta.go.jp/manual/manual_web_ie.pdf
インストールマニュアルに従うと途中で以下のchrome拡張をインストールします。
e-Tax(web版)にログイン
ここからログインする。
操作は画面に従っていけば問題ない。
事前準備を飛ばしてしまったりすると、ここで事前準備をするようにアラートが表示されるのでそれに従う。
https://clientweb.e-tax.nta.go.jp/UF_WEB/WP000/FCSE00001/SE00S010SCR.do
この後、利用者識別番号が表示されるのできちんとメモをとって覚えておきましょう。
通知を希望した場合は、メールが届いているかを確認しておきます。
ここまでやったことの確認
ダウンロードしたものたちはこんな感じだと思います。
5. e-Taxソフトをインストール
ここの「4. e-Taxソフトのダウンロード」にあるものをダウンロードする。
手順はマニュアルに従う。
6. e-Taxソフトを起動
e-Taxソフトのアイコンがデスクトップにあるはずなので、それをダブルクリックで起動。
起動時に「申請」から「所得税」を選択してインストールする。(起動時に追加ソフトのインストールを選択するとインストールできます。あとからいろいろ追加もできます。)
起動すると、ログインするように出るので、ICカードリーダとマイナンバーカードを使ってログインします。
毎度のごとくパスワードを求められます。
7. 書類作成
左の「作成」→「申告・申請等」から、右下の「新規作成」をクリック。
表示されたダイアログでは、「申請・届出」、「所得税」を選択して作成します。
開業届
開業届は、「個人事業の開業・廃止等届出書」を選択。
名前にもある通り、フリーランス等をやめて会社員になるときなんかは、廃業届をします。
ここでの入力はしなくてもいいですが、入力しておくとこれから作成する帳票(実際に税務署に送信する書類)へ自動で入力補完してくれるので楽です。
作成する申請が一覧に表示されました。
「状態」は「作成中」になっているかと思います。
青色申告承認申請も作成したので2つ表示されています。
次に、実際に税務署に送信する帳票(郵送で送ったり税務署で書いて直接提出する用紙)を記入していきます。
一覧に表示された申請を選択すると、画面右下の「票帳一覧が」クリック可能になるのでそちらへ進みます。
進むと作成中となっている票帳が表示されるので、右下の「票帖編集」から編集を行います。
先ほどマイナンバーカードの読み取りなどをして記入した基本情報が入力補完された状態となっていると思うので、残りの項目を埋めていきます。
前の申請一覧の画面へは、右下の「申告・申請等一覧」から戻れます。
多くの人が新規だと思います。
そうでなく、株式会社とかちゃんとやる人は税理士とかを雇うべきかと思います。
記入箇所
- 納税地は「住所地」
- 職業は分かれば何でもいいみたいです「youtuber」とか「エンジニア」でも
- 屋号はなければ空欄でよさそうです(屋号名で銀行口座を作ったりしたい人や、取引相手からの印象的には屋号を付けた方がいいらしいです)
- 届出の区分は「開業」にチェックしてあとは空欄
- 所得の種類は「事業所得」
- 開業日は別に申請日1か月以内でなくても問題ないらしいです。ただし、青色申告承認申請の2か月以内でないと青色申告が翌年からになってしまうので、あまり遡らない方がいいです。
- 開業に伴う届出書の有無は青色申告承認申請書の「有」
- 事業の概要は分かりやすく書きます。「動画サイトへの動画投稿」「委託によるソフトウェア開発」「株式等の個人投資」とかでいいかと思います。
「作成完了」をすると、帳票一覧の状態が「作成完了」になっています。
申請一覧の画面に戻ると、状態が「署名可能」に変化しているので、続いて署名を行います。
画面左の「署名可能一覧へ」の「電子署名」で署名可能状態の申請や申告が表示されます。
先ほど作成完了して署名可能になった開業届が表示されています。
これを選択して、画面右下の「署名」から署名を行います。
もちろん、マイナンバーカードを使用するので「ICカードを利用」。
マイナンバーカードをICカードリーダにセットして次へ進みます。
パスワードを求められます。
ログインの時の利用パスワードではなく、署名用パスワードであることに注意。(これもマイナンバーを作成したときに設定したパスワードの一つ)
あとは、画面に従ってOKを押していけば署名が完了します。
最後に申請を送信します。
左の「送信可能一覧へ」「送信」から送信可能な申請等が表示されます。
先ほど署名した開業届が表示されています。
これを選択して、画面右下の「送信」で送信します。
マイナンバーカードをセットしてパスワードを入力したり、画面に従って進めていきます。
途中で出てくる受信通知のフォルダというのはそのままにして進めばいいです。
送信が完了すると、申請書を受け付けましたというメッセージが表示されます。
※ 一応、印刷などしてとっておくべきです。こういう何かしらやったことの証拠となるものは自分の手元で大切に保管しておくべきです。
左の「メッセージボックス」の「メッセージボックス」からいつでも確認することができます。メッセージ内容のダウンロードもできます。
これで、開業届の申請は完了です。
申請一覧画面を見ると、状態が「送信完了」となっています。
青色申告承認申請
やることは開業届と同じです。
帳票が違うだけです。
青色申告承認申請は、「所得税の青色申告承認申請書」を選択。
※ 「現金主義の所得計算による旨の届出書」は控除額が10万円ですくないやつなので、選択しない。
帳票を入力します。
記入箇所
- 納税地は「住所地」
- 屋号は開業届と同じ、なければ空欄
- 事務所の名称は自宅ならば「なし」、住所は納税地と同じ記入
- 所得の種類は「事業所得」
- いままでに取り消したことのある人は「有」、ない人は「無」。たぶん多くの人は「無」だと思う
- 本年1月16日以降でなければ空欄
- 相続がなければ空欄
- 簿記形式は「複式簿記」(控除額が65万円のやつ)
- 備付帳簿名は「現金出納帳」「売掛帳」「買掛帳」「経費帳」「固定資産台帳」「預金出納帳」「総勘定元帳」「仕訳帳」
- あとは空欄
あとは、署名と送信なので開業届と同じです。
申請完了!!
普通に一日かかりました。
申請するよりも、e-Taxを使うまでの準備の方が大変でした。
【C++】AtCoderコンテスト #3
所感
Atcoderコンテストに参加し始めて3回目。
はじめてC問題まで時間内に解くことができた。
今回は解かなかったD, E, Fも問題分だけは確認した。Fは見た感じできるかも?とか思ったけど、全通りやってTLEがたくさん表示された。
始めたばかり特有の毎回の成長を少しずつ感じることができる。
覚えたこと
abs
入力値の絶対値(absolute value)を返す。
絶対値を表せない場合は入力値をそのまま返す。
他には、Combinationの実装方法やBFSの記事を読んでどんなものかを目にした。
ここに記録できるほど詳細は理解できていないが、少しは分かった。
アルゴリズムについては、いろいろと記事を読んでコードを書きながら徐々にやっていけたらと思う。
【考察】一人暮らし野菜Tier
概要
一人暮らしを始めて6年以上が経ち、食事の大半は自炊で済ましてきた。
この経験を踏まえてメジャーな野菜についてまとめておくことにしました。
ルール
-
野菜の評価は、価格、栄養、レシピ量、調理しやすさ、の4つを軸に特筆すべき特徴があれば加味する。
-
価格を重視とかは特にせず、この4項目はどれも大事なので平等にみる。
- 旬に関しては、旬の状態をベースに旬でない状態の悪い部分を減点する思考。
-
味については個人差が大きいのでできるだけ考えないよう気を付けた。
-
すべて未加工として考える。(カット野菜や冷凍、缶詰め等の加工品は未考慮、1/4キャベツ等は考慮)
-
野菜の定義は様々だが、ここではスーパーの野菜コーナーにあるものとする。
-
登場しない野菜はすべて低ランクという訳ではなく、筆者があまり取り扱ったことがなく評価できないもの。
- 地域は関東、店は肉のハナマサについての考察であり、ほかの地域やスーパーにおける価格等の評価は異なる可能性がある。
目安
- Tier1: 常に家にあるべき
- Tier2: 安売りしてなくても買う
- Tier3: 安売りしてたら買う
- Tier4: そんなに買わない
結論
先に結論を示し、後で詳細を記述する。
Tier1
Tier1野菜は嫌いであれば好きになるべきであるほどに優秀であり、常に家にある状態にしておくとよい。ほかの野菜との比較において圧倒する上に、破格の独自スキルを持ち合わせる壊れ性能。
ニンジンとタマネギがTier1入りを果たし、ニンジンは文句なしの野菜全一。
ニンジン
価格: ☆☆☆☆☆
栄養: ☆☆☆☆☆
レシピ量: ☆☆☆☆☆
調理しやすさ: ☆☆☆☆
すべての項目において優秀であり、旬の野菜をも超越する。順位をつけるなら圧倒的1位。
価格は一年を通じて安定しており、一回当たりの使用量を考慮するとかなり安価である。また、満腹感もそれなりに得られる。
栄養価が高いことは周知の事実であり、その栄養価の高さから野菜ジュースの原料でメインを張るほど。
サラダ、炒め物、煮物、すべての料理においてレシピに書いてなくても組み込むことができる万能さ。むしろ、唯一無二な色合いで希少な赤系の色であるため彩として必須とも言える。
扱いにおいては硬さが切りやすく、生ごみはヘタしか出ない。使いかけはラップに包んで冷蔵庫に入れるだけでそこそこ長持ちする。
タマネギ
価格: ☆☆☆☆☆
栄養: ☆☆☆☆
レシピ量: ☆☆☆☆☆
調理しやすさ: ☆☆☆
ニンジンと同様にとても優秀な野菜。
こちらも一年を通して安定して入手でき通常状態でTier1にも関わらず、季節限定で新タマネギというボーナスステージが存在するという壊れ性能。
根っこではないため、土中にある部分を食する野菜の中では火が通りやすく、多層構造でかなり異形であるがそれがプラスに働いている。
唯一、かつ致命的な欠点として切ってる最中に目が痛くなる。また、皮を剥くのが必須で生ごみが出やすいので扱いは面倒。日持ちする点で扱いやすさを評価した。
栄養価は高くはないが世界的に薬用として古くから用いられている。現代においては血液サラサラ効果があまりにも有名。
Tier2
Tier2野菜は多少の高騰では財布の紐が堅くならないほど優れた野菜たちである。ただ、高騰の可能性は秘めており、さすがにニュースで数倍の高騰などと報道されるレベルになると買うことはない。
Tier1、Tier2野菜だけで健康的な食生活は完成する。
キノコ類、キャベツ、トマト、長ネギ、小松菜がTier2入り。
キノコ類
価格: ☆☆☆☆
栄養: ☆☆☆☆
レシピ量: ☆☆☆☆
調理しやすさ: ☆☆☆☆
基本的な、シメジ、シイタケ、エリンギ、マイタケ、エノキあたりの売り場で一緒に並んでいるものをまとめたと考えてよい。絶対にブレることがない価格が安心。
とても優秀なのだが、あれば使うがなくても困ることはない、で評価が頭打ちになってしまうためTier1に入れるか悩んでやめた。
ほかの野菜で替えが利かないという点を加味した。 手で割け、割とどの料理に入っていても違和感がない。 マイタケはレシピを選ぶ節があるので除外かもしれない。
キャベツ
価格: ☆☆☆☆
栄養: ☆☆☆
レシピ量: ☆☆☆☆☆
調理しやすさ: ☆☆☆☆
葉野菜の宿命、価格のブレで涙を吞んだ野菜。ただ、評価の高さから価格が高めの時季があっても一年を通して購入する。高騰しても法外な値段になることは数年に一度程度。
また、やはり栄養面で緑黄色野菜にはかなわないが、有り余る調理面での性能で逆境を撥ね退ける。
胃薬でおなじみのキャベジンはキャベツに含まれる栄養素の名前であり、油っぽい料理のときに最初に食べるとよい。
主戦場はサラダと炒め物、包丁を使わずに処理することもでき、メイン食材ともなりうるポテンシャルを備える。 切った部分から色落ちするが外側から一枚ずつ使うと思いのほか日持ちする。
トマト
価格: ☆☆
栄養: ☆☆☆☆☆
レシピ量: ☆☆☆
調理しやすさ: ☆☆☆☆
野菜の中でも栄養価においてニンジンと張り合える唯一の野菜といっても過言ではない。
人気の高さはトップクラスで評価するうえで全くは無視できないほどであるが、Tier2野菜と比較しても若干高価。むしろ、この価格でTier2に入れる程の怪物級野菜と言うべきか。
レシピに関しては生食と煮込み系統では大立ち回りだが、和食や炒め系統ではたまに見る程度。
加工品の種類の豊富さは随一で、評価基準によっては野菜全一も容易。
長ネギ
価格: ☆☆☆
栄養: ☆☆☆
レシピ量: ☆☆☆☆☆
調理しやすさ: ☆☆☆
食生活におけるQOLを最も容易に向上させる方法は長ネギを購入することである。
メインとしての使い道は普段の料理ではあまりないが、とにかく何にでも使うことができる。万能ねぎ以上の万能さを誇る。
味についての言及になってしまうかもしれないが、薬味としての一面によって料理に少し加えるだけで完成度が段違いになる。これにより、一食一食の満足感が向上し、結果としてQOLの向上へとつながる。 万能さ以外は優秀とは言い難いが、一人暮らしにおいては上記の特性がとても重要であると判断。
小松菜
価格: ☆☆☆
栄養: ☆☆☆☆
レシピ量: ☆☆☆
調理しやすさ: ☆☆☆☆
メジャー野菜の中ではマイナー気味だが、評価は高く助演男優賞の立ち位置。
完全ではないが、ほうれん草の上位互換として扱ってよいと思われる。 似た系統の野菜はいくつか存在するが、その中では一番優秀といって差し支えないだろう。
安価ではないが葉野菜の中でも価格は安定する方で、安売りされる姿がしばしばみられる。 使用される料理は固定気味で、保存は数日しか利かないが、1回で使い切ることも難しくはない。
Tier3
Tier3野菜は安売りしていれば即買いだが、そうでなければ買うことはあまりない。
このレベルになると明確に欠点となる一面が見える野菜も出てくる。
ニラ、もやし、白菜、ほうれん草がTier3入り。
ニラ
価格: ☆☆☆
栄養: ☆☆☆☆
レシピ量: ☆☆☆
調理しやすさ: ☆☆☆☆
意外と栄養が豊富なスタミナ食材。 割とどんなレシピにも組み込むことができ、スタミナと栄養を補うことが可能。
価格については、一回の使用量がさほど多くないためそれほど気にならない。
特筆すべきことはないが、欠点もない。能力値はTier2に値するが、Tier3野菜を差別化するような特別なものはなく、分類に最後まで悩まされた。最終的には数合わせでTier3となった不運な野菜。
もやし
価格: ☆☆☆☆☆
栄養: ☆☆
レシピ量: ☆☆
調理しやすさ: ☆☆☆☆☆
価格、手軽さにおいては右に出るものはいない。 自炊絡みの話題では必ずと言っていいほど名前が挙がり、話題性ではTier1。
一部でみられる1桁価格は紛れもない破格の値段である。 封を切って入れるだけという手軽さで料理のボリューム感を増すことも可能。 豆ということもあり栄養はタンパク質よりであるのだが、最も使用される野菜炒めにおいて肉と被ってしまうため良さを発揮することができず、野菜枠としてはいまひとつである。 日持ちも悪く、長所が目立つが引き換えに短所もかなり目立つ。
白菜
価格: ☆☆☆
栄養: ☆☆☆
レシピ量: ☆☆☆
調理しやすさ: ☆☆☆☆
旬とレシピにおけるシナジー効果が野菜界でもトップクラス。 自身の長所を的確にアピールできており実力以上の評価を得やすい、就活生のお手本のような存在。 ただ、実力派の野菜と比較すると劣っている点が明確となる。
旬は買うべきだが、それ以外は買うべきでない(そもそも売っていない)ので弊社では不採用とした。
ほうれん草
価格: ☆☆☆
栄養: ☆☆☆☆
レシピ量: ☆☆☆
調理しやすさ: ☆☆☆
小松菜の項に記述した様に、ほうれん草は小松菜の下位互換として扱うことが可能。 評価としては小松菜とほぼ同じである。
しかし、シュウ酸の存在や、調理後にカサが3/4程度まで減ってしまうことが大きな問題。 価格も気持ち小松菜よりも高い。
比較によって低く見えるが実際の評価が低いわけではなく、買い物かごに入れる候補には十分なりうる。
Tier4
Tier4野菜は安売りしていても買うことはあまりない。
食べたい料理に必要な材料であれば買う程度。つまり、汎用性がとても低いのである。
一人暮らしは時に栄養以上に利便性や汎用性が求めてしまう。Tier1~3野菜はこれらをある程度維持した上で栄養や価格、その他の性質を持ち合わせていた。
メジャーな野菜から、ごぼう、大根、ピーマン、ナス、かぼちゃ、キュウリを採り上げた。
ごぼう
価格: ☆☆☆☆☆
栄養: ☆☆☆☆
レシピ量: ☆☆
調理しやすさ: ☆
口にした翌日に体調の改善を実感できる、野菜では珍しく健康診断の数値で表現せずに瞬時に直接的な表現をしてくる根菜類。
価格が土付きが丸ごと2, 3本で100円程度と意外と安価である。
細長く、土がついていて、切った後に水にさらすという調理の面倒さが痛すぎる。また、ささがきというごぼう特有の切り方は面倒でむしろ短所である。 レシピの幅もかなり狭い。
大根
価格: ☆☆☆
栄養: ☆☆☆
レシピ量: ☆☆☆
調理しやすさ: ☆☆
野菜の中でも珍しく部位が細かく分けられ、それぞれ適当な調理が求められる。
捨てられがちな葉部分に栄養が多く、煮物に使われがちな本体が熱で栄養素が壊れがちというアンチシナジー。 慣れると生ごみが出なくなるが、皮むきや味染みが必須とやはり扱いが難しい。 冬の1本100円という価格は素晴らしい。
ピーマン
価格: ☆☆☆
栄養: ☆☆☆☆
レシピ量: ☆☆
調理しやすさ: ☆
とにかく種が邪魔である。 種は取り除きずらい上、跳ねて散らかるので面倒。繁殖力とも捉えることは出来るが、家の中で種をばら蒔いたところで無駄である。 汎用性もそこまで高くはない。 価格は普通で、栄養はさすがの緑黄色野菜である。
ナス
価格: ☆☆
栄養: ☆☆
レシピ量: ☆☆☆
調理しやすさ: ☆☆☆
数値は低いが割と人気がある愛すべき存在。
価格はそこそこ高い上、栄養はそれほどではない。wikipediaには「栄養的にはさほど見るべきものはない」と言われ、その後「東洋医学では体温を下げる効果があるとされている」とフォロー。
いろんな調理法に適性はあるものの、どの調理法においてもレシピが多いわけではない。 油との相性は今回の評価においてはほぼ無関係。
かぼちゃ
価格: ☆☆☆☆
栄養: ☆☆☆☆
レシピ量: ☆
調理しやすさ: ☆☆
上級者向けの難しい野菜。 レシピは単体の煮物程度しかない。 非常に硬く、丸っこくて不安定なため、包丁で切るときには危険が伴う。種もある。
栄養価が高く、重量当たりの価格はトップクラスである。それゆえ、容易い調理法や数多のレシピ開発が望まれる。 料理研究家の活動次第では化ける可能性が微レ存。
キュウリ
価格: ☆☆
栄養: ☆
レシピ量: ☆
調理しやすさ: ☆☆☆☆
ビタミンCを壊すと話題になったこともあったが、別に壊しているわけではないので害はない。 ネタにされがちだが、食べる意味がないわけでなはい。食べることは良いことである。 淡色野菜の割に〇〇を多めに含むとフォローされることもあるが、小さい数値同士を比較することはナンセンス。 生食くらいしか用途もない。
考察資料
考察しながらスプレッドシートにまとめていた資料。
考察
あくまで自分でつけた点数であるが、以下の考察は以上のランク付けを終えた後に点数計算の仕方を変えて、Tierとの相関となるものを見つけようと試みたものである。
字が小さくて見づらいが、右端2列が点数(価格x栄養)と点数(レシピ量x調理しやすさ)である。この列を見ると後者との相関はありそうだが、前者とTierに相関があるようには見えない。
これらは、一人暮らしの自炊ではレシピや調理方法などの要因がかなり重要視されるであろう、というなんとなく抱いていた推測を裏付ける結果となった。
次に、さらにその左2列を見てもらいたい。合計点数(和)と合計点数(積)。
注目すべきは、各野菜の積の差である。心なしか和よりも野菜同士を比較したときの差を明確に表している気がする。トマトや長ネギは4項目外で大きな要素があったため外れるが、やはり和よりも積の方がしっくりくる。
これは、今回の評価で〇〇な上にという表現が多かったことと関係ありそうだ。通常、〇〇なら××だろうというのを覆しているからその分のプラスで和よりも積の方が良さげに見えたと考えられる。
評価することは難しいことだが、点数を付けた際はいろんな計算方法で多角的に結果を見てみると何か発見があるかもしれない。
初めはこんな考察するつもりはなかったが、してみるとちょっと楽しかった。
まとめ・感想
考察で話はずれたが、割といい野菜Tierを作れたと思う。
このTierのように野菜に優劣は存在してしまうし、好き嫌いはある。だけど、どの野菜も食べることは体に良いし、あまり手にしない野菜に買って調べながら料理してみるのも結構楽しい。
食材を作ってくれている人たちに感謝しながら毎日楽しく健康的な食生活を送りましょう。
【C++】AtCoderコンテスト #2
概要
先週に引き続き、AtCoder Beginners Contestに参加した。
前回は遅刻したが、今回はちゃんと21時から22時40分まで参加できた。
next_permutationを新たに覚えた。
参加結果
A, Bは楽に解くことができた。
Cがどうしたらよいかまるで分らなかったのがショックだった。
少しわかったつもりでいたけど、まだ全然であることがよくわかった。
今後もできるだけ参加して1コンテスト1個でも新しいことを覚えていけたらと思う。記録をつけた方がモチベーションが保てそう。
ちゃんと21時から参加したからか、前回と同じくBまでしか解けてないのにレートが前回より上がり幅が大きかった。(前回6上昇、今回23上昇)
next_permutation(順列生成)
これ便利ですね。
今回のC問題で知らずに自力で順列を作ろうとして全くできなかった。(Cでこんなに難しいのかって驚いてしまった。)
これを知ってれば簡単そうだったし、next_permissionはかなり基本的なものなんだろうなという感じ。
順列はしょっちゅう出てくるだろうし今回でちゃんと覚えて帰ろう。
#include <iostream> #include <algorithm> #include <vector> using namespace std; int main() { vector<int> v = {1, 2, 3}; do { cout << v[0] << " " << v[1] << " " << v[2] << endl; } while (next_permutation(v.begin(), v.end()); return 0; } # 出力 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1
計算量: (last - first) / 2
順列なので、(last - first)! 個ある
あと、setprecisionも調べなくても思い出せるようにしておく。
まとめ
順列はnext_permutation。
しばらくはC問題までを時間内に解き切ることが目標。
【AWS】Amplifyで作成されたAppSyncのGraphQLを外部から発動したい。(API Gateway → Lambda → AppSync → DynamoDB)
概要
AWS Amplifyを用いるとCLIのおかげで、コマンド実行するだけでAWSのいろんなサービスをよしなに構築してくれて、難しいことはあまり考えなくてもアプリケーションが作れる。
とりあえず公式ドキュメントに倣って、API(GraphQL), Authentication, の機能を作成することが容易にできた。
amplify-cliのコマンドを実行するだけで、Cognito, AppSync, DynamoDBを構築してくれている。AWSでサービスを組み合わせるのをやってくれるのは非常にありがたい。(コンソール画面での設定の仕方とかも入力項目が多くて正直よくわからないから)
https://docs.amplify.aws/lib/graphqlapi/getting-started/q/platform/ios
https://docs.amplify.aws/lib/auth/getting-started/q/platform/ios
そんな中、勝手に構築してくれたAppSyncのGraphQLをCognito認証がない外部アプリからもやりたくなった。
とりあえず、Lambdaを使えばいいんだろうことは想像できたけど詳しいことは調べないとわからなかった。AppSyncでIAMでの認可するのもどうやるのか調べながらだった。
目次
長くなりそうなので目次です。
- 概要
- 目次
- 大まかな流れ
- AppSyncのAPI設定で認証プロバイダーにIAMを設定
- GraphQLのスキーマを変更
- Lambda関数を作成
- API Gatewayを作成
- 動作を確認しよう
- まとめ
- 参考ページ一覧
大まかな流れ
1. まず、AppSyncのAPI設定で認証プロバイダーにIAMを設定する。
(amplify-cliでやった時にcognitoをデフォルトで設定したので、IAMでもいけるようにする)
2. AppSyncでGraphQLのスキーマを変更
(スキーマに追加した認証プロバイダーに関する追記を行う)
3. AppSyncのAPI(GraphQL)にリクエストを送るLambda関数(Node.js)を作成する。
(amplify-cliで作成されたcreateUserとかを実行させてDynamoDBを操作する)
4. 好きなところからLambda関数を呼び出すためにAPI Gatewayを作成する。
(Lambdaを実行するトリガーにAPI Gatewayを設定する)
ほぼ全部AWSのコンソール画面で操作します。
好きな順番でやっていいも大丈夫だと思います。(2の前に1は必須)
AppSyncのAPI設定で認証プロバイダーにIAMを設定
AWS AppSyncより作成したAPIを選択して左ナビの設定から設定画面へ行きましょう。
追加の認証プロバイダーより、Newを押して表示されるダイアログで追加するプロバイダーを設定します。
参考: Cognito認証されているAppSyncをIAM認証で後ろから叩く - Qiita
GraphQLのスキーマを変更
認証プロバイダーにIAMを追加しましたが、このままではデフォルトで設定されているものしか使用されないので、GraphQLのスキーマを変更します。
同じAppSync画面の左ナビのスキーマからスキーマ編集画面へ行きましょう。
外部から実行したいクエリに以下のように追記します。
※ スペースを入力するとエラーが何故かエラーが出ることがありますのでコピペ安定かもです。
# Before type Mutation { createUser(input: CreateUserInput!): User updateUser(input: UpdateUserInput!): User ... }
# After type Mutation @aws_cognito_user_pools @aws_iam { createUser(input: CreateUserInput!): User updateUser(input: UpdateUserInput!): User ... }
記述の意味は、Mutationを実行するのにCognitoとIAMを認証プロバイダーとして使用するというものです。
Beforeのなにも書いてない状態はデフォルトが反映されています。(僕の場合はcognitoがデフォルトなので@aws_cognito_user_poolsがデフォルトでついて記述されているようなもの)
記述しない場合がデフォルトというだけなので、記述する場合はデフォルトのもの含めて設定したいものを全て記述する必要があります。
今回はMutationだけでいいのでこれだけしか編集していませんが、Queryにも同様に設定したり個別に設定できます。
# MutationのcreateUserはCognitoとIAM、updateUserはIAMだけ type Mutation { createUser(input: CreateUserInput!): User @aws_cognito_user_pools @aws_iam updateUser(input: UpdateUserInput!): User @aws_iam ... } # Queryはcognitoだけ type Query @aws_cognito_user_pools { getUsers(id: ID!): User listUsers(filter: ModelUsersFilterInput, limit: Int, nextToken: String): ModelUserConnection ... }
編集後は画面右上の「スキーマを保存」を忘れずに押してください。
参考: Cognito認証されているAppSyncをIAM認証で後ろから叩く - Qiita
Lambda関数を作成
関数を新規作成
一から作成で設定はいじらずに作成します。
関数にポリシーを付与
次に、LambdaがAppSyncのGraphQLを実行できるように、作成した関数にAppSyncのポリシーを付与します。
関数のアクセス権限タブを選択して、実行ロールからロールを以下のように編集します。
関数を実装
ポリシーを付与したら、関数を作成します。index.jsを直接編集してDeployを押せば良いです。
作成した関数は以下のような感じです。
こちらが非常に参考になりました。↓
AlexaのPersistent AttributesをAppSyncからGraphQLで取得する | WP Kyoto
require('isomorphic-fetch'); const aws = require('aws-sdk'); const AWSAppSyncClient = require('aws-appsync').default; const AUTH_TYPE = require('aws-appsync/lib/link/auth-link').AUTH_TYPE; const gql = require('graphql-tag'); const url = 'AppSyncの設定画面に記載されているAPI URL'; const region = 'ap-northeast-1'; const auth_type = AUTH_TYPE.AWS_IAM; // AWS_IAMの部分が認証プロバイダーです。cognitoならば、AUTH_TYPE.AMAZON_COGNITO_USER_POOLS async function createUser(data) { const variables = { "createUserInput": { // ここのcreateUserInputという名前は、以降にあるcreateUserGqlの$createUserInputと同じ名前にする必要があります。 // graphQLスキーマにcreateUser(input: CreateUserInput!): Userとあったので、 // ここにはCreateUserInputと同じ構造で記述する。 // ~~Inputは編集したAppSyncのスキーマに書かれています。 "username": data.username } } const createUserGql = gql(` mutation createUser($createUserInput: CreateUserInput!) { // さっきのvariables内にあったcreateUserInputがここに入る createUser(input: $createUserInput) { username } }` ); const client = new AWSAppSyncClient({ url: url, region: region, auth: { type: auth_type, credentials: aws.config.credentials }, disableOffline: true }); try { const result = await client.mutate({ mutation: createUserGql, variables }); console.log(JSON.stringify(result)); return { status: "OK", result: result }; } catch (err) { console.log(JSON.stringify(err)); return { status: "Error", result: err }; } }; /** * リクエストのbodyは以下のようなものを想定しています。 * { "mutation": "createUser", * "data": { "username": "ユーザーメイ" } * } */ exports.handler = async (event, context) => { let body; let statusCode = 200; const headers = { 'Content-Type': 'application/json', }; try { switch (event.httpMethod) { case 'DELETE': throw new Error(`Unsupported method "${event.httpMethod}"`); case 'GET': throw new Error(`Unsupported method "${event.httpMethod}"`); case 'POST': const bodyJson = JSON.parse(event.body); if (bodyJson.mutation == 'createUser') { const res = await createUser(bodyJson.data); body = res; } else { throw new Error(`Unsupported mutation "${bodyJson}". Invalid request parameters "${bodyJson}"`); } break; case 'PUT': throw new Error(`Unsupported method "${event.httpMethod}"`); default: throw new Error(`Unsupported method "${event.httpMethod}"`); } } catch (err) { statusCode = '400'; body = err.message; } finally { body = JSON.stringify(body); } return { "statusCode": statusCode, "headers": headers, "body": body }; };
node_modulesが必要
ただ、このままでは機能しません。
requireで読み込むモジュールを用意しなければなりません。(npm installしたnode_modules)
この手順のみAWSコンソールの操作ではないです。
まず、適当な場所にnodejsという名前でフォルダを作成。
次に、先ほどのindex.jsでrequireしているものをnpm install する(isomorphic-fetch, aws-sdk, aws-appsync, graphql-tag)
※ aws-appsyncはversionを@^1.0.0した方がいいです。そのまま最新バージョンをinstallしたら
require('aws-appsync/lib/link/auth-link').AUTH_TYPE;
できませんでした。
そして、nodejsを圧縮してnodejs.zipを作成します。
これを作成したlambda関数のレイヤーとして設定します。
こちらが非常に参考になりました↓
node_modulesをLambdaレイヤーにアップロードしてライブラリを使用する - Qiita
API Gatewayを作成
最後にLambda関数のトリガーを追加からAPI Gatewayを設定すれば完成です。
トリガーの追加から設定すると勝手にAPI Gatewayを作成してLambda関数と紐づけてくれます。
API Gatewayが作成され、GET, POST等の全てに対応したAPIが作成されます。
作成されたものを特にいじる必要はないと思います。(リクエストのパラメータとかいろいろ調整したい場合は別)
セキュリティでAPIキーを選択すると、APIキーが作成されAPIとキーを紐付けるのも自動でやってくれています。
動作を確認しよう
APIのURLは、左ナビのステージよりURLの呼び出しと書いてあるのがURLです。
とりあえずcurlなどで動作確認してみましょう。
今回の場合は以下のようになります。
curl -H "x-api-key: 作成されたAPIキー" -X POST -d'{ "mutation": "createUser", "data": { "username": "ユーザーメイ" } }' 作成されたAPI GatewayのAPI URL
まとめ
AWSは一つ一つのサービスを設定するだけならそんなに難しくはならないけど、必ず複数のサービスを紐づけて使用することになるのでポリシー等の設定がよくわからなくなりがちになります。
今回調べたことは直接何かで使えるかは分かりませんが、AWSでよく使われているであろうLambdaとAPI Gatewayを勉強できたのは面白かったです。
よく使うサービスは少しずつできるようになっていきたいです。
参考ページ一覧
Amplify公式ドキュメント
https://docs.amplify.aws/lib/graphqlapi/getting-started/q/platform/ios
https://docs.amplify.aws/lib/auth/getting-started/q/platform/ios
AppSyncの複数認証
Cognito認証されているAppSyncをIAM認証で後ろから叩く - Qiita
AppSyncのGraphQLを実行するLambda実装
AlexaのPersistent AttributesをAppSyncからGraphQLで取得する | WP Kyoto
node_modulesをLambdaレイヤーにアップロードしてライブラリを使用する - Qiita
【C++】AtCoderはじめてのコンテスト
概要
プログラミングの基礎的な勉強をある程度やったから、ついにコンテストに参加した。
参加前に勉強に使ったサイトと参加したコンテストについて記録しておく。
勉強したこと
以上の2つを一通りやった。
「非情報系の学生のためのC/C++ 入門」は、プログラミングとは何かから説明されていて、メモリについてなども書かれていてとても面白かったです。
「AtCoder Programming Guide for beginners」は競プロに必要な知識を無駄なく手に入れることができます。これだけでも練習問題を全部やりながら進めたら十分だと思います。
コンテスト
Tasks - AtCoder Beginner Contest 182
このコンテストに参加しました。
21時~100分間で解けた問題分のポイントがもらえるが、22時から始めて残りの40分だけ参加した。
AとBは時間内に解くことができて、Cは終了後に正解することができた。
Dは計算量を減らせなくて解説を読みながらで解くことができた。
EとFは解いていない。
レートが6増えた。ちゃんと21時から始めていればもう少し上がったのかもしれない。
感想
時間を決めて問題を解くというのがとても楽しかった。
次回以降も続けて参加していきたいと思った。
問題自体は多少勉強すればABくらいは十分解けて、Cも考えることができれば解けるくらいな感じだった。D以上はもう少し経験が必要そうだった。
【C++】visual studio をインストールしてhello worldをだす
概要
最近、競技プログラミングに興味が湧いてきた。
なんだか点数を競うのが面白そうくらいの軽いノリだけどとりあえずやってみたい。
競プロではC++を勧める記述が多く見られたので、まずは所持PCでC++のプログラムが作成できるように準備することにした。初心者はやっぱり形から入りたくなっちゃう。
知識としては、.appや.hのファイルがあることを知っている程度。
やることとしてはvisual studioをインストールするだけ。
AtCoder
とりあえず競プロをするためにAtCoderのアカウントを作った。
今回は作っただけ、問題をやってみるのはまた後日。
はじめに(公式は正義)
この記事のこれ以降を見るよりも公式ドキュメントに従った方が確実。
以下のページ4ページを順番にやるのをまとめてるだけです。
Visual Studio に C および C++ サポートをインストールする | Microsoft Docs
C++ コンソール アプリ プロジェクトを作成する | Microsoft Docs
C++ コンソール アプリ プロジェクトのビルドと実行 | Microsoft Docs
C++ でコンソール電卓を作成する | Microsoft Docs
Visual Studioをダウンロード
プログラムを作成するための無料ツール。
こいつをインストールするだけで、もうすぐにプログラムを作成できるようになる。
面倒でよくわからない環境構築とかいうのはしなくてもよくて、必要なものは全部取り揃えてくれている。
ダウンロード
下のリンク先ページでコミュニティの無料ダウンロードを選択。
Download Visual Studio 2019 for Windows & Mac
インストーラー
無料ダウンロードできたら「~~vs_community.exe」をダブルクリックで実行する。
google chrome ならダウンロードしたら左下に出るからそれをクリックしたらok。
ワークフローの選択
インストールの手順は大体「同意する」とか「次へ」を押して設定とかもそのままで進めればいいけど、選択が必要な手順が一つある。
それがワークフローの選択だ。
選択自体は後で追加とかいくらでもできるからそこまで気にすることはないけど、初心者からすると間違って後で治すのは相当しんどい。
C++であれば「Dekctop development with C++」を選択したらよいらしい。
僕はweb関連のこともする可能性がそこそこあったので「ASP.NET and web development」も選択した。
これら2つを選択してインストールした。
インストールは時間かかるのでしばらく待とう。(10分くらいだった気がする)
Visual Studioを使ってみる
インストールが終わったらvisual studioを起動して新しいプロジェクトの作成をしよう。
次に言語でC++を選択してコンソールアプリを選択する。
プロジェクト名とかは取り合えずデフォルトでいいや。
作成すると、いろいろ用意されたものが与えられる。
この状態で「ctrl +f5」で実行できる。
画面にHello World!と表示されてるし、出力にはビルドの結果が表示されている。
はい、あとはC++を勉強してプログラミングを作成していくだけです。
まとめ
C言語ってコンパイルとか、コードを記述する以前に必要なことがたくさんあって面倒だと思ってずっと始められていなかったのですが、こんなに楽に始められることに驚きました。
もっと早くに知りたかったです。(ちゃんと調べなかったのがいけない)
次に
チュートリアルが用意されているのでそれをやるのが良かったです。
わざわざ手順を書き残さなくても良いほど、とてもわかりやすくて簡単でした。
C++ でコンソール電卓を作成する | Microsoft Docs