ずっと家でアプリ作っていたい

業務効率化小ネタなど

【Flutter】今日の日付を「○年△月×日」形式で表示する方法

実装したい内容

  • 「○年△月×日」と表示したい

方法

String _todayFormated =  DateFormat(" y年 M月 d日 ").format(DateTime.now())
  • 型はStringで返る
  • 任意の日付で表示したい場合は DateTime.now() の部分を変えれば良い
  • yが年、Mが月、dが日に対応するが、Mが大文字になる点に注意。小文字で記述をすると、”分”の意味になる。(詳細は「その他リンク」参照)

f:id:chang_app_dev:20210530010433p:plain
caption

その他リンク

DateFormat class - intl library - Dart API

【Flutter】エラー「BOTTOM OVERFLOWED BY xxx PIXELS」が出る時の対処方法

エラー内容

Flutterで作成したアプリを実機でデバックする際に発生する。 入力フォームをタップして出現するキーボードが、表示されるウィジェットにかぶると このエラーが生じてしまう。

f:id:chang_app_dev:20210530004715p:plain
error

解決方法

Scaffoldで以下の様にアトリビュートを設定すれば良い。

Scaffold(
      resizeToAvoidBottomInset: false,
...
)

明確な目標とは

最近の流行でもある「未経験からエンジニアへジョブチェンジ」。 現在私もその目標を達成するために日々アプリ開発を個人で行っている。 しかし最近どうも開発のスピードが落ちている。

理由は明らかで、「本業が忙しくなっている」からだと考えていた。 しかし最近どうも問題はそちらでは内容な気がしている。 理由はわからないが漠然と「忙しい」ということを理由にして 開発を先延ばしにしている気がする。

何日か考えて思い至った。 それは「転職をすることに対して明確な目標が自分の中で確立していない」こと。

なのでまずはそこから考えたい。

【Flutter】pubspec.yamlにおけるバージョンの明記方法

flutter

説明すること

Flutterでの開発における、パッケージバージョンの明記方法の読み方・書き方

明記方法

Flutterでは使用する外部パッケージの情報をpubspec.yamlファイルにて管理する。 この時にバージョンを記載する場合があり、一般的な記法とキャレット記法の 2種類の明記方法でバージョン管理ができる。

例として1.2.32.0.0 のバージョンを基準に記載する。 また[package名]にはパッケージが入る。 自身が用いるパッケージとそのバージョンに適宜読み替えること。

一般的な記法

[package名]: any

特にバージョン指定をしない場合に用いる。空白と同じ意味になる。 非推奨の記法とされている。

[package名]: 1.2.3

バージョンを厳密に指定する場合に使用する。 記載されたバージョンのみが使用される。 この場合は1.2.3が必ず使用される。

必ず必要な場合以外は、基本的に避けるべき。 他のパッケージの依存性を解消できなくなる場合があるため。

[package名]>=1.2.3

1.2.3以上のバージョンを使用する。使用することが多い

[package名]>1.2.3

1.2.3より大きいバージョンを使用する。1.2.3は使用しない。

[package名]<=1.2.3

1.2.3以下のバージョンを使用する。あまり使う場面はない。

[package名]<1.2.3

1.2.3より小さいバージョンを使用する。基本的にはこれを使用する

例えば1.2.3で大きな修正が加えられた場合、他のパッケージとの依存性に問題がある可能性があるため。

[package名]>= 1.2.3 < 2.0.0

1.2.3以上、2.0.0未満のバージョンが使用される。 こちらは後述のキャレット記法で簡潔に書ける。

キャレット記法

キャレット記法とはAsciiで表示できない文字を、表示できる文字で代替して表記する記法。 キャレットとは「 ^ 」のこと。

[package名]^ 1.2.3

これは先述した[package名]>= 1.2.3 < 2.0.0と同じ意味になる。 より詳しい説明としては、「一番左にあるバージョン番号は変えない範囲で許容する」。 ただしキャレット記法は若干わかりづらく、必要がない限りは一般的な記法を用いた方が 保守性も高いと思う。

Web開発の超重要用語『API』とは?【知識ゼロから理解】

f:id:chang_app_dev:20210207201841j:plain

目次

Web APIとは「Webサービス開発を効率化するツール」です

APIApplication Programming Interfaceの頭文字をとった言葉です。

Wikipediaなどを見てみると

ソフトウェアコンポーネント同士が互いに情報を やりとりするのに使用するインタフェースの仕様である。

と書いてあります。

ja.wikipedia.org

なのでWeb APIの説明は

Webにつながっているソフトウェアコンポーネント同士が互いに 情報をやりとりするのに使用するインタフェースの仕様である。

と言えそうです。

ただし全く知識のない方からすると「は?」という感じですよね。

ものすごく簡単にWeb APIを説明すると、『公開されているWebアプリの機能の一部を使用できるツール」』です。 つまり開発を効率化するツールです。

ただしこれでは若干抽象的なので、折角ならきちんと理解したいですよね。

この記事では

  • Web APIを使う理由
  • 構成要素
  • Web APIの具体例

を紹介します。 是非最後まで読んでWeb APIの理解を深めてください。

Web APIを使う理由

f:id:chang_app_dev:20210207204206j:plain

Webサービスを開発する際、「こんな機能が実装できたらいいな」 と思う時があります。

ただし自分達で全てを作るにはお金と時間がかかります。 一から全ての機能を開発していては効率が悪いです。

そこでもし使用可能な公開されているサービスがあれば、 使用することで開発期間を短縮できます。 既に稼働しているサービスは運用実績があるので、 セキュリティ面でも一から開発するよりも信頼できます

そこでWeb APIが登場します。

Web APIを利用することで、他のプログラムが提供している サービス機能の一部を自分たちのサービスでも利用することができます。

結果としてその機能を開発する期間を省略することができます

ここまで抽象的な話でしたので、もう少し具体的に説明しましょう。

【具体例】株価表示Webサービスを作る

f:id:chang_app_dev:20210207204829j:plain

例えば最新の株価を表示するWebアプリを作るとします。

この時、株価のデータをどうやって集めると効率的でしょうか?

例えば1分ごとに自分で全ての株価を調べて、データベースを更新するのでしょうか?

またはわざわざ株価が表示されるサイトをスクレイピングして情報を取得するのでしょうか? その場合、参照しているサイトの構成が変更されたら情報を取得できなくなるリスクがあります。

この様に、自分たちで情報を取得するというのはあまり効率が良くないことが多いです。

そこで株価を取得できるWeb APIを使用します。 そうすればプログラムを定期的に実行するだけで、 Webアプリに表示される株価が更新できます。

株価を取得することのできるWeb APIですとYahoo Financeなどがあります。 ドキュメントに記載されている手順でリクエストを出すことで、株価の情報を取得できます。

この様にWeb APIを用いて他のサービスを利用することで、 処理の自動化・開発の効率化が実現できるのです

ではWeb APIとは実際どの様な要素で構成されているのでしょうか?

Web APIの構成要素

f:id:chang_app_dev:20210207205617j:plain

ここでは簡単にWeb APIの構成要素について説明します。

基本的に登場する要素は以下の2つです。

  • クライアント(Web APIを使用する側)
  • サーバー(Web APIを提供する側)

クライアントはサーバーが決めた通信ルールに則ってリクエストを送ります。 この時使用したい機能や取得したい値を指定します。

リクエストを受けたサーバーは要求された情報を クライアントにレスポンスとして返します。

基本的なやりとりの流れは以上の様にシンプルです。

ただしセキュリティ面から、たいていのAPIはデータのやりとりの前に 認証作業等が入りますが、ここでは割愛します。

Web APIの「エンドポイント」とは

f:id:chang_app_dev:20210207210047j:plain

Web APIには必ずドキュメント(使い方が書いてある説明書の様なもの)が存在します。

そこでは度々エンドポイントという用語が登場します。

これはWeb APIを使用するためのURIです。

Web APIを使用する際には特定のコマンドを叩く必要があります。 その時にインターネット上ではサーバーを特定するためにURIを指定する必要があります。 Web APIではこのURIをエンドポイントと読んでいます。

ですのでエンドポイントという単語に出会ったら、 「このURIを使ってWeb APIを使うんだな」と思ってください。

Web APIの具体例

f:id:chang_app_dev:20210207210536j:plain

世の中には数え切れないほどのWeb APIが公開されています。

ここではそんなWeb APIの中でも日本で特に人気のAPIをいくつか紹介します。

Google Maps Geocoding

Google Maps Geocoding:ドキュメント (googlecloud) | Rakuten RapidAPI

地図を表示するアプリですと結構使われています。

地図表示機能を一から作成するというのはかなり大変ですので、まさにWeb APIを使うべき機能ですね。

ぐるなびレストラン検索

ぐるなびレストラン検索 API Documentation (gurunaviws) | Rakuten RapidAPI

Web APIを使うことで、ぐるなびに掲載されている飲食店の情報を取得できます。

ぐるなびは割と古くからあるサービスですので、掲載されている飲食店舗数も多く、利用価値の高いWeb APIと言えます。

またこういった情報を公開することで、飲食店の宣伝にも繋がりますね。

amazon-price

amazon-price API Documentation (ebappa1971) | Rakuten RapidAPI

国内で訳5000万人が使用していると言われるAmazonに掲載されている商品の価格などの商品情報を取得できます。

Google Translate

Google Translate:ドキュメント (googlecloud) | Rakuten RapidAPI

翻訳は現在Googleの一人勝ちという印象の分野ですが、そのGoogleの翻訳機能を使用できるのはすばらしいです。

翻訳などの機械学習で実装される機能は情報量が多くないと中々精度が上げられず、また実装難度もかなり高いと思いますので、翻訳機能を実装する際には積極的に使用したいWeb APIです。

Yahoo Finance

Yahoo Finance API Documentation (apidojo) | Rakuten RapidAPI

前述の説明でもチラッと出てきたWeb APIです。

株価や相場などを取得することができます。

この様にWeb APIには様々なものが公開されており、 サービスを実装する際には「公開されているAPIで使用できるものはないか?」 と考えることで開発効率を上げることができます。

まとめ

最後にこの記事で紹介した情報をまとめます。

Web APIについて理解は深まりましたでしょうか?

実際にWebサービスを開発する上でWeb APIの知識は必ずと言っていいほど必要になりますので、早い段階で身に付けて、開発を効率的に進めましょう!