simotin13's message

simotin13といいます。記事の内容でご質問やご意見がありましたらお気軽にコメントしてください\^o^/

納付済み所得税の督促状が届いた

所得税の督促状が届きました。

と言っても昨年度の所得税については申告期間中の2月に確定申告も納付もとっくに終わっていたので何が起きているのか理解ができませんでした。

慌てて申告時の書類を色々と漁ってみましたが、私はコンビニで納付をしていたので「払込金受領証(お客様控え)」を領収書代わりに受け取っておりました。
受領証を確認すると確かに督促されている金額と同じ金額で支払っています。

督促状は文字通り、

所得税を払えゴラァ!払わんかったら利子取るからな!」

という案内ですが、私からすると払ったものを払ってないと言われている状態なので気になって税務署に行って確認してみました。

税務署で確認した結果

税務署で納付状況を確認した結果、問題なく納付できていることを確認できました。

職員の方から督促状が届いた経緯を説明頂けたのですが、なるほどと思ったので書いておきたいと思います。

まず、所得税が納付されたかどうかを税務署側では「整理番号」を元に確認しているそうです。
この「整理番号」は確定申告の時期に郵送されてくる申告用の書類に記載されています。

ところで、2019年度の申告より青色申告特別控除の条件が代わり、65万円の控除を受けるには電子申告(e-Tax)をするか電子帳簿保存を行う必要がありました。

このため、私は今回はじめてe-Taxによる申告を行っていました。e-Taxでの申告の際には上記の通り税務署から届いた申告書類に記載されていた「整理番号」を入力していましたのでここまでは特に問題ありません。

申告書の控えを確認して、職員の方も不思議に思ってさらに突っ込んで確認してくださったのですが、調べて頂いた結果「利用者識別番号」と「整理番号」が紐づいていなかったのが原因だったようです。

利用者識別番号とは何か?

e-Taxによる申告を行うためにも本人確認が必要で確認後に「利用者識別番号」という番号が交付されます。
ただし、マイナンバーカードを持っている人はこの番号は不要だったかもしれません。私は申告当時マイナンバーカードを持っておらず、税務署で本人確認をして貰いました。

e-Taxでの申告の場合はこの「利用者識別番号」を使って納付の状況を確認されるようになるそうですが、先に出てきた「整理番号」と「利用者識別番号」の紐づけができておらず結果として税務署側で納付状況が確認できず督促状が届いたということだったようです。
e-Taxの利用申請をした際に「整理番号」が求められたかどうかはもはや覚えてもいないのですが、私の方で記載できていなかったかそもそも書類に記載する欄がなかったかのどちらかのような気がします。
いずれにせよ、職員の方の説明では今回の確認で「利用者識別番号」と「整理番号」の紐づけができたため、本年度分の納付では問題は起こらなくなるはずとのことでした。

上記の通り、青色申告特別控除の基準が変わったので、私のように2019年からe-Taxで申告を行った人は多いのではないかと思います。
同じように、納付済みなのに督促状が届いてしまっている方は

  • 整理番号
  • 利用者識別番号

を問い合わせ時に伝えると恐らくスムーズに確認して頂けるかと思います。

感想

  • 払ったものを払っていないと言われると焦る
  • 申請書や領収書の類はいつ必要になるか分からないので必ず保管しておくべき
  • 平日の昼間なのに税務署は割と混んでいて意外だった

ソニー 非接触ICカードリーダー/ライター PaSoRi RC-S380

ソニー 非接触ICカードリーダー/ライター PaSoRi RC-S380

  • 発売日: 2012/10/10
  • メディア: Personal Computers

カーネルのコンフィグレーションを確認する方法

備忘録です。

Linuxディストリビューションを使っていて、現在のカーネルコンフィグレーションを確認したい場合いくつかやり方があるようです。

/boot/config-* を見る方法


cat /boot/config-4.10.0-38-generic

/proc/config.gz を見る方法


zcat /proc/config.gz

カーネルコンフィグレーションを確かめたくなるケース

組み込みLinuxの環境で、システムコールがエラーになり、errno を確かめてみると ENOSYS (38) "Function not implemented" が返ってきていました。
ENOSYSは文字通りシステムコールの機能が実装されていない場合に帰ってきます。実際には該当する機能が実装されていないのではなく、コンフィグレーションで無効化されていることが多いかと思います。その様な場合、コンフィグレーションの状態を確認する必要があります。

ディストリビューションや使用しているLinux環境によっては/boot以下にconfig-*のファイルが配置されていない場合もあるようなので/proc/config.gz を見るが確実なようです。

複数画像を選択できる multi image picker を使ってみる~flutter try a wiget evryday #2~

flutterの記事2回目。

今日はスマートフォンのアルバム・ギャラリーに保存されている写真を選択するパッケージ multi_image_picker を使ってみました。

flutterでの画像選択には公式のパッケージであるimage_pickerがあります。

pub.dev

このパッケージでは1枚の画像しか選択できないため複数の画像を選択するには他のパッケージを利用する必要があります。

画像の複数選択用のパッケージにはいくつかありますが、 multi_image_picker以外はあまりメンテナンスがされていないようです。

手順

パッケージの詳しい説明はこちらのページに記載されています。
sh1d0w.github.io

インストールとインポート

パッケージのインストールとインポートはこちらに記載されている通りです。
pub.dev

ソースコード

基本的な使い方のソースコードがこちらで公開されていました。main.dartに全て張り付けるだけで動作を確認できます。
sh1d0w.github.io


2019年1月9日時点では、このbasic Usage のページのコードでは1か所エラーがでます。

    try {
      resultList = await MultiImagePicker.pickImages(
        maxImages: 300,
      );
    } on Exception catch (e) {
      error = e.message;
    }

のe.message;の部分がエラーになります。
とりあえずですが、e.toString();としておきます。

設定

続いて、各OS向けの設定が必要です。

こちらのページに書かれている通り、iOSの場合はInfo.plistに、Androidの場合はAndroidManifest.xmlに権限設定の記述をする必要があります。
sh1d0w.github.io

注意事項

気を付けないといけない点として、flutterのプロジェクトフォルダ内には

3つのAndroidManifest.xmlが存在します。
私はまだそれぞれの使い分けについては把握していないのですが、permissionの設定はandroid/src/main/AndroidManifest.xmlに記載しないと実行時にpermission deniedと表示され例外が発生します。

Androidでの注意事項

android/app/build.gradle のminSdkVersionを 19以上にする必要があります。flutter createで作成される minSdkVersionは16になっていますが、multi_image_pickerは sdkVersion の19以上に依存しているため。

iOSでの注意事項

ターゲットがiOSの場合は、ios/Podfileに


platform :ios, '9.0'
の記述が必要です。

画面イメージ

multi image picker Android版の画面イメージ
Android版の画面イメージ

multi image picker iphone版での画面イメージ
iphone版での画面イメージ

まとめ

上記手順を試したレポジトリです。
github.com

感想

permissionを記述するAndroidManifest.xmlが間違っていたため数時間嵌ってしまいました...
イメージの選択ができたのでHTTPでサーバに画像をアップロードするプログラムを書いてみたいと思います。

参考書籍

基礎から学ぶ Flutter

基礎から学ぶ Flutter

  • 作者:石井幸次
  • 出版社/メーカー: シーアンドアール研究所
  • 発売日: 2019/12/25
  • メディア: Kindle

ListViewとCardを使う~flutter try a wiget evryday #1~

2020年にアプリ開発の仕事をする予定があるので2019年の年末からflutterを触り始めました。

沢山あるウィジェットの使い方を覚えないと、UIの構築が思い通りにできないのでとりあえず毎日1個以上のウィジェットを使ったコードを書いて体で覚えていきたいと思います。

とりあえず第1回目はListView,CardとNewWorkImageによるイメージ表示です。

コード

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text(widget.title),
        ),
        body: ListView(
          children: <Widget>[
            Card(
                color: Colors.cyan,
                child: Row(
                  mainAxisAlignment: MainAxisAlignment.spaceBetween, // 右寄せ
                  children: <Widget>[
                    ConstrainedBox(
                        constraints: BoxConstraints(minWidth: 180),
                        child: Text("Black Hacker", style: TextStyle(fontSize: 20))),
                    Container(
                      width: 80,
                      height: 80,
                      decoration: BoxDecoration(
                          shape: BoxShape.circle,
                          image: DecorationImage(
                            fit: BoxFit.fill,
                            image: NetworkImage(
                                "https://3.bp.blogspot.com/-h4UYMCiTEyE/V5NEX5yryYI/AAAAAAAA8iw/WUwgEpey8HIkqZVXa4JRfDX_TZlPoor1wCLcB/s800/computer_hacker_black1.png"),
                          )),
                    )
                  ],
                )),
            Card(
                color: Colors.cyan,
                child: Row(
                  mainAxisAlignment: MainAxisAlignment.spaceBetween, // 右寄せ
                  children: <Widget>[
                    ConstrainedBox(
                        constraints: BoxConstraints(minWidth: 180),
                        child: Text("White Hacker", style: TextStyle(fontSize: 20))),
                    Container(
                      width: 80,
                      height: 80,
                      decoration: BoxDecoration(
                          shape: BoxShape.circle,
                          image: DecorationImage(
                            fit: BoxFit.fill,
                            image: NetworkImage(
                                "https://1.bp.blogspot.com/-fv0PKULcS_g/V5ND3noPfdI/AAAAAAAA8fM/0vqkeF1n-6kUguj3IWff3hDOh5KwzmqBwCLcB/s400/computer_hacker_white1.png"),
                          )),
                    )
                  ],
                )),
            Card(
                color: Colors.cyan,
                child: Row(
                  mainAxisAlignment: MainAxisAlignment.spaceBetween, // 右寄せ
                  children: <Widget>[
                    ConstrainedBox(
                        constraints: BoxConstraints(minWidth: 180),
                        child: Text("Black Company", style: TextStyle(fontSize: 20))),
                    Container(
                      width: 80,
                      height: 80,
                      decoration: BoxDecoration(
                          shape: BoxShape.circle,
                          image: DecorationImage(
                            fit: BoxFit.fill,
                            image: NetworkImage(
                                "https://1.bp.blogspot.com/-ROuqbvPP9hU/VpS_WyfsDXI/AAAAAAAA20c/njnLHayiM_M/s450/company_black_kigyou.png"),
                          )),
                    )
                  ],
                )),
            Card(
                color: Colors.cyan,
                child: Row(
                  mainAxisAlignment: MainAxisAlignment.spaceBetween, // 右寄せ
                  children: <Widget>[
                    ConstrainedBox(
                        constraints: BoxConstraints(minWidth: 180),
                        child: Text("Money", style: TextStyle(fontSize: 20))),
                    Container(
                      width: 80,
                      height: 80,
                      decoration: BoxDecoration(
                          shape: BoxShape.circle,
                          image: DecorationImage(
                            fit: BoxFit.fill,
                            image: NetworkImage(
                                "https://2.bp.blogspot.com/-HFJ8MiYApXw/WWNAsr57I7I/AAAAAAABFV4/p7bzCwUpoTkebuS485i_rr9bvyVg_iHNgCLcBGAs/s800/fuutou_yen.png"),
                          )),
                    )
                  ],
                )),
          ],
        ));
  }
}

動作イメージ

ListViewとCardを使ったイメージ
リストの要素数が少ないのでこの状態では確認できませんが、ListViewは上下にスクロール可能です

解説

コメントと画像みたいな使いどころがありそうな雰囲気のUIを作ってみました。
Cardの使い方として適切なのかどうかはよくわかりません。

画像はいらすとやさんの画像を参照させて頂いております。
コードの例では分かり辛いかもしれませんが、BoxDecorationで丸型のアイコン風の表示をしています。
また画像の右揃えはRowに対して mainAxisAlignment: MainAxisAlignment.spaceBetween を指定することで実現しています。

レポジトリ

github.com

おすすめの書籍

手元においてウィジェット名やクラス名で逆引きしながら読んでいます。
Widgetについて突っ込んだ解説は少ないですが、機能的な実装に関しては網羅されている印象です。

基礎から学ぶ Flutter

基礎から学ぶ Flutter

  • 作者:石井 幸次
  • 出版社/メーカー: シーアンドアール研究所
  • 発売日: 2019/12/25
  • メディア: 単行本(ソフトカバー)

明日の予定

http通信、Image.memoryとかを試す予定。