LINEミニアプリ(LINE Mini app)とは?

f:id:wecodeinc:20211112160927j:plain

Line Mini App

現在、スーパーアプリの登場でよりスマホアプリが大転換期を迎えています。

スーパーアプリとは「1つのスマホアプリ内で、サードパーティ製の様々Webアプリを起動できるプラットフォームアプリ 」です。

皆さんが普段利用している「LINE」もスーパーアプリのひとつです。
スーパーアプリの中で起動できるアプリのことを日本では「ミニアプリ」と呼びます。

そんな最中、2019年にLINE株式会社が新たにリリースしたのがLINEミニアプリ(LINE Mini app)です。

しかし、まだまだLINEミニアプリ(LINE Mini app)というサービスを知らない方も多いと思います。

そこで今回は、LINEミニアプリ(LINE Mini app)の出来ることや特徴、機能開発やメリットなどをわかりやすく解説いたします。

ミニアプリ(Mini app)が注目されている理由

最近では、カスタマーサービスの一環として、メンバーズカードやクーポン配信などの機能のネイティブアプリを開発する企業が増えています。

しかし、せっかく開発してもアプリをダウンロードする手間などもあり、企業は宣伝コストをかけてもダウンロードされにくいという課題がありました。

そこで、多くのユーザーが日常的に使用するプラットフォームアプリの中で、DLせずにアプリを利用できるミニアプリ(Mini app)が注目を集めています。

ミニアプリ(Mini app)とネイティブアプリの違い

ミニアプリ(Mini app)と通常のネイティブアプリの一番の違いは、「Apple Store」や「GooglePlay」からのダウンロードが不要なことです。

一般的にアプリは「Apple Store」や「GooglePlay」からダウンロードが必要となりますが、ミニアプリ(Mini app)はその必要がありません。

日常的に使うプラットフォームアプリ(スーパーアプリ)内で、企業が開発するアプリと同じような機能をダウンロード不要で利用することができます。

LINEミニアプリ(LINE Mini app)とは

LINEミニアプリ(LINE Mini app)とは公式アカウントとは別のサービスで、「LINE」上からモバイルアプリのダウンロードを必要とせずにアプリの機能が利用できるサービスです。

2020年7月から一般に開発申請が開始されました。

LINEミニアプリ(LINE Mini app)とLINE公式アカウントの違い

「LINEミニアプリ」と「LINE公式アカウント」は、それぞれ役割が異なります。

「LINE公式アカウント」の場合、友だち登録が必要ですが、「LINEミニアプリ」の場合は友だち登録の必要もなく「サービス」のエリアから通常のWebサイトと同じようにすぐにサービスが利用できます。

頻繁に利用するがダウンロードするのが手間」「毎回WEBブラウザから起動するのが面倒」というアプリを利用するのに向いているサービスです。

ただし、サービスの利用のみなので、ユーザーへのメッセージの配信はできません。

また、「LINE公式アカウント」は友だちになった利用ユーザーをリピート化させることができます。

メッセージ配信やチャットボットを利用し、自社サービスの利用、商品の購入を販促することができます。

それぞれターゲットが異なるため、どちらかを選ぶというよりは必要に応じて両方の利用をおすすめします。

「LINEミニアプリ」と「LINE公式アカウント」はともにLINEが提供しているLIFF(LINE Front-end Framework)という技術を使用しWebアプリの機能を開発することできます。

組み合わせた使い方としては、下記のようなものがあります。

・「LINEミニアプリ」を利用する際に「LINE公式アカウント」も自動で友だち追加されるように認証設定を行う。

・LINE公式アカウントのリッチメニューから、LINEミニアプリ(LINE Mini app)が起動できるようにする

上記のような使い方をすることで、プッシュ通知等のユーザーに対する発信ができるようになります。

LINE公式アカウントを利用しているユーザーがLINEミニアプリ(LINE Mini app)の存在を知らなかったとしても利用してもらえるきっかけづくりになります。

更に既知のユーザーにとってもユーザビリティ的に利用しやすくなります。

LIFF(LINE Front-end Framework)とは

LINEのトーク画面で、ブラウザを開くことができる機能です。

LINEのトーク画面でブラウザを開くだけならば以前から可能でしたが、そのブラウザを開いているユーザーのLINEのユーザーIDを取得することができます。

つまりLINEのアカウントに紐づけたアンケートの取得などが可能になります。

LINEミニアプリ(LINE Mini app)を使うメリット

ここまではミニアプリ自体の特長を説明してきました。

ここからはLINEミニアプリ(LINE Mini app)の優れているところをユーザー(顧客)側のメリットと企業側のメリットに分けて説明します。

ユーザー(顧客)がLINEアプリ(LINE Mini app)を使うメリット

1. アプリのダウンロードが必要ない
LINEさえあれば利用したいサービスのミニアプリをLINE内で選択するだけで簡単に使用ができます。

2. スマホのホーム画面をすっきりさせられる
ユーザーは自身のスマホのホーム画面には、普段使うアプリ以外は残しておきたくないため、買い物の時などに一時的にダウンロードしたアプリは削除されてしまいます。

LINEミニアプリ(LINE Mini app)であればLINEに集約されるため、そのような心配もなく、すっきりした画面を維持することができます。

3. スマホの容量を圧迫しない
ミニアプリは新たにアプリのダウンロードが不要なためスマホの容量を圧迫しません。

4. ネイティブアプリに近い機能が利用できる
LINEミニアプリ(LINE Mini app)は、企業や店舗が提供している予約フォームやクーポン、ポイントカード、お支払い機能、お知らせ機能、などのサービスをLINEのプラットフォーム内で使うことができます。

企業がLINEミニアプリ(LINE Mini app)を使うメリット

ユーザーメリットだけでなく、企業にとってもミニアプリで開発することは大きなメリットがあります。

1. 約8,900万人のアクティブユーザーが利用しているため自社サービスの展開が容易で使用してもらいやすい
ユーザーのメリットでLINEミニアプリは簡単に使用できると記載させていただきましたが、それ自体が企業にとってのメリットの一つになります。

LINEミニアプリ(LINE Mini app)自体利用ハードルが低く削除されにくいだけでなく、アプリも自動バージョンアップされるためユーザーにとっての負担も少なくなります。

2. ユーザーにメッセージ配信しやすく圧倒的な開封率・既読率でユーザーの反応が分かりやすい
通常のネイティブアプリの場合、ダウンロード後に削除される可能性があるためプッシュ配信が届きにくい問題がありました。

LINEミニアプリ(LINE Mini app)とLINE公式アカウントを連動させれば、開封率が100%近く既読率がメルマガと比べ遥かに高く圧倒的に読まれやすいLINEのメッセージ配信を行うことが可能になります。

これまで、DMやメルマガでユーザーにしっかりと届いたか、どのような反応があったかイマイチ分かりづらかったというケースが多くありましたが、LINEミニアプリ(LINE Mini app)の活用により相互コミュニケーションの活性化が期待できます。

3. ネイティブアプリに比べ開発費用抑えることができる
ネイティブアプリの場合、iOSAndroidの両方を開発する必要がありますが、LINEミニアプリ(LINE Mini app)の場合LINEプラットフォームに対応するように1つのwebアプリを開発すれば済むので、開発費を約半額に抑えることが出来ます。

またアップデートも自動で反映されるためアジャイルアプリ開発にも向いています。

4. 課金型のサービスの場合、30%の手数料がかからない
アプリ上で課金が発生する場合iOSAndroidともに売上の30%の手数料がかかります。

LINEミニアプリ(LINE Mini app)の場合はかからず、企業側はクレジットカードでもLINE Payでも、自社で自由に決済手段を設定することが出来ます。(※決済事業社が設定する通常の決済手数料はかかります)

ミニアプリの今後の展望

今後、スーパーアプリが盛り上がりを見せ、ますますLINEミニアプリの需要は向上していくと考えられます。
ただし、ネイティブアプリという存在は決して消えるわけではありません。

今後は、状況やターゲット、より高度な機能をアプリに盛り込む際には必要になってくるため、各企業に合ったアプリの活用法を検討し利用していく必要があるがあります。

まとめ

ここまでLINEミニアプリ(LINE Mini app)について簡単にまとめてみましたが、いかがでしたでしょうか?

SNSの中でもLINEならインストールされている・できるという方は多いと思います。

LINEの月間アクティブユーザー数は、約8,900万人、日本の人口の70%以上が利用しているSNSだからこそ、LINEミニアプリ(LINE Mini app)のサービス提供は価値があると言えるでしょう。

LINEミニアプリ(LINE Mini app)のサービスはまだ提供を開始したばかりで、その存在や名称、仕組みなどを知らないという方がほとんどです。

しかし、そんな今だからこそ、企業はLINEミニアプリ(LINE Mini app)を取り入れて、他社との差別化を図り一歩リードしようとしています。

以下に今回の要点を簡単にまとめました。

・LINEミニアプリ(LINE Mini app)はLINEからアプリを起動できる新しいサービス

・ユーザーはアプリのダウンロードが不要で、友だちに追加するだけで利用できる

・企業はメッセージ配信しやすく課金型のサービスの場合、30%の手数料がかからない

・ 今後は多くの企業でLINEミニアプリ(LINE Mini app)の開発と活用が進んでいくことが予想される

LINEミニアプリ(LINE Mini app)はまだまだ新しいサービスのため、開発会社や開発事例は多くありません。

現在は、LINE公式パートナーを通さない形でもLINE社の審査を通れば開発することが可能です。

WeCodeでは、LINE公式アカウント/LINEミニアプリ(LINE Mini app)の開発実績と豊富なノウハウがございます。

LINEミニアプリの開発を検討されている方や要件がはっきりしていないがミニアプリを開発したいという方はお気軽にWeCodeにご相談ください。

Source : WeCode

Amazon 量子元帳データベース (QLDB)

f:id:wecodeinc:20211102133145j:plain

Amazon 量子元帳データベース

台帳とは?
台帳は、記録管理システムです
業務記録を保持するためのシステムには、情報のキャプチャ、チェック、記録、レビュー、および情報の処理が含まれます。

 

量子台帳データベース (QLDB) とは?
Amazon QLDB は、信頼できる中央機関が所有する、透過的で不変で暗号的に検証可能なトランザクション ログを提供する完全マネージドの元帳データベースです。

QLDB は、分割できない離散変化のように「量子」と呼ばれます。 すべてのトランザクションは、各ブロックが個別の状態変化を表す透過的なジャーナルに記録されます。 Amazon QLDB を使用して、すべてのアプリケーション データの変更を追跡し、時間の経過に伴う完全で検証可能な変更履歴を維持できます。

 

ビジネスユースケース:

製造業:
多くの企業はほとんどの場合、製品の完全な製造履歴を追跡するために、自社のサプライチェーン・システム間でデータを調整する必要があります。 台帳データベースを使用して、各トランザクションの履歴を記録し、施設で製造された製品の各バッチの詳細を提供できます。


製品のリコールが発生した場合、メーカーは QLDB を使用して、製品の生産および流通ライフサイクル全体の履歴を簡単に追跡できます。

 

人事と給与支払い:
多くの場合、人事システムは給与、ボーナス、福利厚生、業績履歴、保険など、従業員の詳細の記録を追跡および維持する必要があります。 QLDB を使用して記録システム アプリケーションを実装することにより、顧客は従業員のデジタル履歴の信頼できる完全な記録を 1 か所で簡単に管理できます。

 

小売業及びサプライチェーン
多くの小売業者は、製品がどこから来たのか、製品の何品目が出荷されたのか、誰に、誰が出荷を処理したのかなど、製品のサプライ チェーンのすべての段階に関する情報にアクセスする必要があります。 QLDB を使用すると、小売企業は製品のすべての物流段階で、在庫とサプライ チェーン トランザクションの完全な履歴を遡り確認、追跡できます。

 

AWS の他の目的で構築された DB は何ですか?

 

リレーショナルと QLDB の用語:

 

その仕組みは?

 

Amazon QLDBは、各アプリケーションデータの変更を追跡するジャーナルを使用し、時間の経過とともに変更の完全で連続した履歴を維持します。 ジャーナル上のデータは削除や修正ができません。 データベースの完全な履歴にアクセスすることができ、履歴を照会・分析して、データが時間の経過とともにどのように変化したかを確認することができます。

 

Amazon QLDBを使用すると、アプリケーションデータの変更履歴が正確であることを信頼できます。 QLDBは、暗号化ハッシュ関数(SHA-256)を使用して、データの変更履歴の安全な出力ファイル(ダイジェストと呼ばれる)を生成します。 このダイジェストは、データの変更履歴を証明するものとして機能し、データ変更の整合性を振り返って検証することができます。

 

Amazon QLDBは、高可用性を目指して設計されており、1つのアベイラビリティーゾーン(AZ)内だけでなく、AWSリージョン内の3つのAZにまたがって複数のデータコピーを複製することができ、追加のコストや設定は必要ありません。

 

QLDB テーブル
QLDBデータは、ドキュメントのテーブル、より正確にはドキュメント・リビジョンに整理されています。 ドキュメントリビジョンとは、ドキュメントの全データセットの1回の反復を表す構造であり、ユーザーデータとシステムが生成したメタデータの両方を含みます。 文書がテーブルから削除された場合、同じ文書IDを持つ文書を同じ台帳で再び作成することはできません。

 

QLDBのドキュメントは、Amazon Ion形式で保存されています。 Ionは、JSONのスーパーセットであり、有効なJSONドキュメントは、有効なIonドキュメントでもあるということです。 Ionには、追加のデータタイプ、タイプアノテーション、コメントが含まれています。 Ionは、構造化データと非構造化データの両方を保存することができる抽象的なデータモデルに基づいています。

 

QLDBジャーナル
アプリケーションがドキュメント内のデータを変更する必要がある場合、データベース・トランザクションでそれを行います。 QLDBのトランザクションはACIDに準拠しており、最高レベルの分離性である完全なシリアライズが可能です。 トランザクションでは、データが元帳から読み込まれ、更新され、ジャーナルにコミットされます。 ジャーナルは、データに対するすべての変更の完全かつ不変の履歴を表します。 QLDB は、1 つのトランザクション内で、1 つ以上の連鎖したブロックをジャーナルに書き込みます。 各ブロックには、挿入、更新、削除したドキュメント・リビジョンを表すエントリ・オブジェクトと、それらをコミットした PartiQL ステートメントが含まれます。

 

トランザクションがジャーナルに書き込まれると、暗号化されたダイジェストが計算され、トランザクションの一部として保存されます。 トランザクションがシステム内を移動するたびに、ダイジェストが破損していないかどうかがチェックされます.

 

QLDBでは、各元帳は正確に1つのジャーナルを持ちます。 現在、ジャーナルは、ストランドと呼ばれる1つのパーティションのみを持ちます。

 

Amazon QLDB の機能:

  • 不変で透過的
  • 暗号化された検証可能性
  • サーバーレス
  • 高可用性
  • ストリーミング機能

 

価格:
Amazon QLDB元帳で消費されるストレージはGB月ごとに、消費されるIOは100万リクエストごとに請求されます。 Amazon QLDB元帳が消費するストレージとIOに対してのみ支払います。 ストレージには、お客様が書き込んだデータに加えて、履歴、インデックス、システムが生成したメタデータが含まれます。 これらに加えて、標準的なデータ転送料が適用されます

 

  • 書き込み I/O 100 万リクエストあたり $0.799
  • 読み取り I/O 100 万リクエストあたり $0.155 ジャーナル
  • ストレージ レート $0.034/GB/月
  • インデックス付きストレージ レート 1 GB あたり $0.285

 

実践:

お客様のアカウントに “myBankLedger “という名前のLedgerを作成します。

それでは、クエリエディタを使ってテーブルとインデックスを作成してみましょう。

CREATE TABLE Accounts
CREATE TABLE AvailableBalanceCREATE INDEX ON Accounts (AccountId)
CREATE INDEX ON AvailableBalance (AccountId)

デモデータを読み込んでみましょう。

INSERT INTO Accounts
<< {
'AccountId' : 'LEWISR261LL',
'AccountType' : 'Savings',
'FirstName' : 'Raul',
'LastName' : 'Lewis',
'DOB' : `1963-08-19T`,
'Address' : '1719 University Street, Seattle, WA, 98109'
},
{
'AccountId' : 'LOGANB486CG',
'AccountType' : 'Savings',
'FirstName' : 'Brent',
'LastName' : 'Logan',
'DOB' : `1967-07-03T`,
'Address' : '43 Stockert Hollow Road, Everett, WA, 98203'
},
{
'AccountId' : 'PENAB486CG',
'AccountType' : 'Business',
'FirstName' : 'Alexis',
'LastName' : 'Pena',
'DOB' : `1974-02-10T`,
'Address' : '4058 Melrose Street, Spokane Valley, WA, 99206'
},
{
'AccountId' : 'P626168765',
'AccountType' : 'Business',
'FirstName' : 'Melvin',
'LastName' : 'Parker',
'DOB' : `1976-05-22T`,
'Address' : '4362 Ryder Avenue, Seattle, WA, 98101'
} >>INSERT INTO AvailableBalance
<< {
'AccountId' : 'P626168765',
'Balance': 1000.00,
'Currency': 'JPY'
},
{
'AccountId' : 'PENAB486CG',
'Balance': 1000.00,
'Currency': 'JPY'
},
{
'AccountId' : 'LOGANB486CG',
'Balance': 1000.00,
'Currency': 'JPY'
},
{
'AccountId' : 'LEWISR261LL',
'Balance': 1000.00,
'Currency': 'JPY'
} >>
SELECT * FROM Accounts

それでは、お金を送ったり受け取ったりしてみましょう。

-- P626168765 → LOGANB486CG 300 JPYUPDATE AvailableBalance ab
SET ab.Balance = 700.00
WHERE ab.AccountId = 'P626168765'UPDATE AvailableBalance ab
SET ab.Balance = 1300.00
WHERE ab.AccountId = 'LOGANB486CG'-- LOGANB486CG → LEWISR261LL 100 JPYUPDATE AvailableBalance ab
SET ab.Balance = 1200.00
WHERE ab.AccountId = 'LOGANB486CG'UPDATE AvailableBalance ab
SET ab.Balance = 1100.00
WHERE ab.AccountId = 'LEWISR261LL'-- CASH ADD PENAB486CG 100 JPY
UPDATE AvailableBalance ab
SET ab.Balance = 1100.00
WHERE ab.AccountId = 'PENAB486CG'
SELECT * FROM AvailableBalance

履歴機能:

履歴関数は、アプリケーション データと関連するメタデータの両方を含む、テーブルのコミットされたビューのリビジョンを返します。 メタデータには、各リビジョンがいつ、どの順番で、どのトランザクションでコミットされたかが正確に示されています。

 -- History Function
SELECT * FROM history(AvailableBalance) AS ab
WHERE ab.data.AccountId = 'LOGANB486CG' 

View as Ion — リビジョンを見ることができます

台帳のドキュメントを検証する

 SELECT * FROM _ql_committed_AvailableBalance AS a
WHERE a.data.AccountId = 'PENAB486CG' 
  • 元帳 — myBankLedger を選択します。
  • ブロック アドレス — 上記のクエリによって返される blockAddress 値
  • ドキュメント ID — 上記のクエリによって返される ID 値
  • ダイジェストを取得 — QLDB Ledger -> ダイジェストを取得ボタン

最後に。

読んでいただきありがとうございます😃

Source: WeCode

AWS Amplify — 3分でわかる静的ウェブホスティング

f:id:wecodeinc:20211014150947p:plain

AWS Amplify

3分でわかる SSL 証明書を使用する静的 Web ホスティング用の AWS Amplify

AWS Amplify とは何ですか?

AWS Amplifyは、モバイルやフロントエンドのWeb開発者が、AWSを利用して安全でスケーラブルなフルスタックアプリケーションを構築し、デプロイすることを可能にするエンド・ツー・エンドのソリューションです。

Amplifyでは、数分でアプリのバックエンドを設定し、数行のコードでアプリに接続し、3ステップで静的なWebアプリをデプロイすることができます。

AWS Amplifyで市場投入までの時間を短縮しましょう。

このブログでは、AWS Amplifyの「Static Web Hosting」オプションについてご紹介します。

AWS Amplify スケーラブルなウェブホスティング

・フィーチャーブランチの導入
・カスタムドメインの設定
・ワークフローの継続(CD)
・グローバルに利用可能
・インスタント+アトミックデプロイメント
・パスワードによる保護

どのように機能するのか?

1.リポジトリへの接続
2.ビルド設定
3.アプリのデプロイ

価格について:

静的 Web ホスティング — 無料利用枠*

ビルド & デプロイ

・1 か月あたり 1000 ビルド分

ホスティング

. 1か月あたり5GBの保存・1か月あたり
. 15GBのサービス
*無料利用枠は、12 か月の AWS 無料利用枠期間の終了時に期限切れになります。

静的 Web ホスティング — 従量課金制

ビルド&デプロイ

・ビルド分あたり$0.01

ホスティング

・1 か月あたり 1 GB あたり 0.023 ドル保存
・1 GB あたり 0.15 ドル

プロジェクトごとに複数のサイト、追加費用なしでパブリック SSL 証明書が含まれています。

ハンズオン — 3 分以内の静的 Web ホスティング

前提条件:

1.  AWS アカウントにログインします (アカウントを持っていない — アカウントを作成します)
2. AWS Amplify アクセスの IAM ロールと権限

開始:

AWSアカウントにログインして「AWS Amplify」を選択

・「デプロイ→開始」を選択

・ここでは「GitHub」を使用しますが、必要に応じて他のオプションを使用できます。

GitHubにログイン

GitHub に対して AWS Amplify を認証する

リポジトリ ( https://github.com/skynet86/aws-amplify-static-webをフォークできます) とブランチ (このブランチにコミットすると、新しいバージョンの自動デプロイが開始されます) を選択します。

・ビルド設定を構成し、デモではデフォルトのままにします。

確認して「保存してデプロイ」をクリックします。

・数秒で完了です。

完了です。私たちはアプリで生きています。

・カスタム ドメインを追加:

ドメイン管理→ドメイン追加」を選択

ドメインの指定 (続きを読む) — Route 53 にすでにドメインがある場合は、ワンクリックですべてのセットアップが数分で自動的に行われます。

アクセス ログを表示します。

HTTP から HTTPS へのリダイレクト:

「ブランチのデプロイとチームのワークフローの機能」や「アクセスの制限」など、他にもたくさんの機能があります。AWS Amplify でさらに探索することをお勧めします。

最後に。

読んでいただきありがとうございます

Source

Container Images with AWS Lambda

Image : Fiver

Container images for your serverless functions

Lambda Support Container Images

You can package your code and dependencies as a container image using tools such as the Docker CLI. You can then upload the image to a container registry such as Amazon Elastic Container Registry. You can now package and deploy Lambda functions as container images of up to 10 GB in size. In this way, you can also easily build and deploy larger workloads that rely on sizable dependencies, such as machine learning or data intensive workloads.

AWS provides a set of open-source base images that you can use to build the container image for your function code. Lambda provides base images for the following runtimes:

You can also use alternative base images from other container registries. AWS also provides an open-source runtime client that you add to your alternative base image to make it compatible with the Lambda service.

Base Images for Custom Runtimes

AWS provides base images that contain the required Lambda components and the Amazon Linux or Amazon Linux2 operating system. You can add your preferred runtime, dependencies and code to these images.

Docker Hub: amazon/aws-lambda-provided

Before going hands on with Container Image with Lambda, Let’s clear some basic understanding about Lambda.

AWS Lambda Execution Environment

Lambda invokes your function in an execution environment, which provides a secure and isolated runtime environment. The execution environment manages the resources required to run your function. The function’s runtime communicates with Lambda using the Runtime API. Extensions communicate with Lambda using the Extensions API. Extensions can also receive log messages from the function by subscribing to logs using the Logs API.

Lambda Execution Environment Lifecycle

  • Init — In this phase, Lambda creates or unfreezes an execution environment with the configured resources, downloads the code for the function and all layers, initializes any extensions, initializes the runtime, and then runs the function’s initialization code (the code outside the main handler). The Init phase happens either during the first invocation, or in advance of function invocations if you have enabled provisioned concurrency.
  • Invoke — In this phase, Lambda invokes the function handler. After the function runs to completion, Lambda prepares to handle another function invocation.
  • Shutdown — This phase is triggered if the Lambda function does not receive any invocations for a period of time. In the Shutdown phase, Lambda terminates the runtime, alerts the extensions to let them stop cleanly, and then removes the environment. Lambda sends a Shutdown event to each extension, which tells the extension that the environment is about to be shut down.

Why we need Runtime Interface Client?

“To implement the Lambda Runtime API

The runtime interface client in your container image manages the interaction between Lambda and your function code. AWS have open-sourced a set of software packages, Runtime Interface Clients (RIC), that implement the Lambda Runtime API, allowing you to seamlessly extend your preferred base images to be Lambda compatible. The Lambda Runtime Interface Client is a lightweight interface that allows your runtime to receive requests from and send requests to the Lambda service.

Why we need Runtime interface emulator?

“For local testing of container image and Lambda”

Lambda provides a runtime interface emulator (RIE) for you to test your function locally. The AWS base images for Lambda include the RIE. For other base images, you can download the Runtime interface emulator from the AWS GitHub repository.

mkdir -p ~/.aws-lambda-rie curl -Lo ~/.aws-lambda-rie/aws-lambda-rie https://github.com/aws/aws-lambda-runtime-interface-emulator/releases/latest/download/aws-lambda-rie chmod +x ~/.aws-lambda-rie/aws-lambda-rie

Let’s build custom image for Node.js

  • our app.js (save under “./myFunction” folder)
"use strict";exports.handler = async (event, context) => { return 'Hello World!'+'Event:'+JSON.stringify(event)+'Context:'+JSON.stringify(context); }
  • our Dockerfile
# Define custom function directory
ARG FUNCTION_DIR="/function"FROM node:12-buster as build-image# Include global arg in this stage of the build
ARG FUNCTION_DIR# Install aws-lambda-cpp build dependencies
RUN apt-get update && \
apt-get install -y \
g++ \
make \
cmake \
unzip \
libcurl4-openssl-dev# Copy function code
RUN mkdir -p ${FUNCTION_DIR}
COPY myFunction/* ${FUNCTION_DIR}WORKDIR ${FUNCTION_DIR}# If the dependency is not in package.json uncomment the following line
RUN npm install aws-lambda-ricRUN npm install# Grab a fresh slim copy of the image to reduce the final size
FROM node:12-buster-slim# Include global arg in this stage of the build
ARG FUNCTION_DIR# Set working directory to function root directory
WORKDIR ${FUNCTION_DIR}# Copy in the built dependencies
COPY --from=build-image ${FUNCTION_DIR} ${FUNCTION_DIR}ENTRYPOINT ["/usr/local/bin/npx", "aws-lambda-ric"]
CMD ["app.handler"]
  • Now let’s build image or download from dockerhub
docker build -t myfunction:latest .
docker pull bhargavshah86/myfunction:latest
  • Install RIE in local for local testing
mkdir -p ~/.aws-lambda-rie && \
curl -Lo ~/.aws-lambda-rie/aws-lambda-rie https://github.com/aws/aws-lambda-runtime-interface-emulator/releases/latest/download/aws-lambda-rie && \
chmod +x ~/.aws-lambda-rie/aws-lambda-rie
  • Run our container image in local
docker run -d -v ~/.aws-lambda-rie:/aws-lambda -p 9000:8080 \
--entrypoint /aws-lambda/aws-lambda-rie \
myfunction:latest \
/usr/local/bin/npx aws-lambda-ric app.handler
  • Test our function using curl
curl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}'

We have succesfully created image which support Lambda.

Now lets use same container image with Lambda using AWS console

  • Test our lambda in console.
  • Same logs can we found in AWS Cloudwatch Logs

Source : shahbhargav

 

ブロックチェーンとは?

ブロックチェーンとは、分散型ネットワークを構成する複数のコンピューターに、暗号技術を組み合わせ、取引情報などのデータを同期して記録する手法のことです。
一定期間の取引データをブロック単位にまとめ、コンピューター同士で検証し合いながら正しい記録をチェーン(鎖)のようにつないで蓄積する仕組みであることから、ブロックチェーンと呼ばれます。
別名「分散型台帳」とも言われています。
ビットコインなどの仮想通貨(暗号通貨)に用いられる基盤技術でです。

ブロックチェーンの仕組み

ブロックチェーンでは、ネットワーク内で発生した取引の記録を「ブロック」と呼ばれる記録の塊に格納します。
個々のブロックには取引の記録に加えて、1つ前に生成されたブロックの内容を示すハッシュ値※と呼ばれる情報などを格納します。
生成されたブロックが、時系列に沿ってつながっていくデータ構造が、まさにブロックチェーンと呼ばれる理由です。

ハッシュ値とは:
ハッシュ値とはアルゴリズム(ハッシュ計算)により算出された一定量の情報をコンパクトにまとめるデータのことです。
情報が少しでも変更されると、計算されるハッシュ値は全く異なるものになります。

ブロックチェーンの特徴

ブロックチェーンの特徴は、一部のコンピューターで取引データを改ざんしても、他のコンピューターとの多数決によって正しい取引データが選ばれるため、記録の改ざんや不正取引を防げる点にあります。
もし仮に、過去に生成したブロック内の情報を改ざんしようと試みた場合、変更したブロックから算出されるハッシュ値は以前と異なることから、後続するすべてのブロックのハッシュ値も変更しなければならず、そうした変更は事実上困難です。
このように、ブロックチェーンは改ざん耐性に優れたデータ構造を有しているのが大きな特徴です。
取引データを収集管理する大規模コンピューターを必要とせず、コンピューターが分散型ネットワークで構成できるため、低コストでの運用が期待されています。
またブロックチェーンは特定の管理者がいなくても取引データの信頼性を保てるため、非中央集権(ディセントラリゼーション:decentralization)の仕組みとしても注目されています。

ブロックチェーンの技術

ブロックチェーンはデータ構造に加えて、データの管理方法にも改ざんを防ぐ仕組みを備えています。
ブロックチェーンは、「分散型の台帳」と言われます。
ブロックチェーンはネットワーク内で発生した全ての取引を記録する「台帳」としての役割を持ち、ネットワークに参加している全てのユーザーが同一の「台帳」を共有することで、情報の信ぴょう性を確保しています。
そのほか、ブロックチェーンは「P2Pネットワーク」や「コンセンサスアルゴリズム」「スマートコントラクト」「偽造防止・暗号化技術」といった複数の技術の組み合わせで実現されます。

・契約の自動化を実現する「スマートコントラクト」
契約行動をプログラム化し、自動的に実行しようとする仕組みが「スマートコントラクト」です。
スマートコントラクトはブロックチェーン上で動くエージェント・プログラムです。
特定の条件を満たした場合に契約を行うなど、さまざまな業務処理を記述することが可能です。
(実現性の程度はブロックチェーン基盤によります)

・偽造防止・暗号化技術
ブロックチェーンでは、公開鍵暗号技術により電子署名を用いて相手との安全な取引を実現したり、台帳情報の共有による取引の透明性とプライバシー保護を両立したりしています。

・全体の合意形成で正当性を確認する「コンセンサスアルゴリズム
中央集権的な管理者を持たないブロックチェーンでは、台帳情報をネットワーク上の全員で共有するため、全体の合意形成を行います。
そうした合意を行う方法が「コンセンサスアルゴリズム」です。
コンセンサスアルゴリズムには、ビットコイン等に用いられるProof of Work(PoW)やHyperledger Fabric等に用いられるEndorse+Ordering Serviceなど複数の方法があります。

・分散型の台帳管理を支えるP2Pネットワーク
ブロックチェーンのデータ管理の役割を担うのが、P2Pネットワークです。
P2Pネットワークはクライアント=サーバー型とは異なり、特定のサーバーやクライアントを持たずにノードと呼ばれる各端末が対等に直接通信することで、ユーザー同士の情報共有や決済のやりとりを可能にします。
既存の決済システムのようにサーバー側で情報を集約して管理する場合には、そこが障害時の弱点(単一障害点)となりますが、ブロックチェーンの場合にはユーザー全員が同じ情報を持っているため、複数のノードに障害が発生してもシステムを維持できます。

ブロックチェーンのプラットフォーム

現在、数多くのブロックチェーンプラットフォーム(実装基盤)がリリースされており、仮想通貨やトークン、金融取引に特化したもの、幅広い業界への活用を目指すものなど各々に特徴があります。
この背景には、仮想通貨に特化した最初のブロックチェーン実装であるBitcoinが登場した後、仮想通貨以外の領域でもブロックチェーンを活用したいというニーズが出てきました。
しかし、Bitcoinの機能が仮想通貨以外の領域で使用するには不十分であったため、それらの不足を補う、あるいは一部のニーズに特化させた新たなブロックチェーンプラットフォームの必要性が高まったということがあります。
この一方で、ユーザーは数多くのプラットフォームのなかから、メリット・デメリットを考慮し、自身のニーズを満たすものを選択することが難しくなってきています。

ブロックチェーンの今後

ブロックチェーンは、仮想通貨などフィンテックを語る上で欠かせない技術です。
政府や銀行などが介入せず、取引に関するデータが分散し、すべての人がデータを確認できることから改ざんが起こりにくいというメリットがあります。
またブロックチェーンは、仮想通貨だけではなく、決済や送金、証券取引などの金融業界の他、ポイント管理など小売業界、不動産業界、サプライチェーンやトレーサビリティなど物流業界や流通業界、電子カルテや処方せんの受付など医療業界、アート作品の所有権や音楽著作権の管理などエンターテインメント業界、など幅広く広がりつつあります。
いまだ課題もあり発展途中でもありますが、今後、更に進化しつつさまざまなビジネスにおいて新しい価値を提供していくでしょう。
AIやIoTとの連携も、そのスピードに拍車をかけることでしょう。

WeCodeではプロフェッショナルからなる専門の開発チームがお客様のアイデアを形にします。 お気軽にお問い合わせください。
無料見積・無料相談実施中!
www.wecode-inc.com | 〒305-0047茨城県つくば市千現2-1-6 | contact@wecode-inc.com | Tel 080-7094-9386

WeCode Inc

アプリ開発のフレームワークは何を選ぶべきか?

f:id:wecodeinc:20201102181236p:plain

クロスプラットフォーム開発の際にどのフレーム枠を選択するかは重要な問題です。
ロスプラットフォームのモバイルアプリ開発フレームワークのトップ3の「React Native」「Flutter」「Ionic」は、次世代の最新のアプリ開発の最有力候補です。
これらのフレームワークは従来のものと比べ他大きなメリットがあります。

Reactnative

「Reactnative」は、2015年にFacebookが開発したモバイル用のJavaScriptフレームワークの「React」をモバイルで利用できるようにしたものです。

・Flutter

「Flutter」 は、2018年にGoogleによって開発された「Dart」という言語を使って開発を行うモバイルアプリフレームワークです。デザイン性が評価されています。

・Ionic

Ionic は Cordova 上で使う UI フレームワークとしても、最も人気のあるフレームワークの一つです。Apache Cordova の上に構築されHTML5 を用いたクロスプラットフォームのハイブリットアプリケーションを開発できます。

3つのフレームワークともiOSとAndroidモバイルアプリを構築
これらのプラットフォームを使用すれば開発者は、単一のソースコードを使用して、iOSAndroid両方のアプリをすばやく作成できます。
ネイティブアプリの開発には優れたパフォーマンスという独自のメリットがありますが、クロスプラットフォームはより少ないリソース、時間の短縮、大幅なコスト削減をしてアプリを作成できます。

「ReactNative」「Flutter」「Ionic」フレームワークを7つのポイントごとに比較してみます。

1. プログラミング言語

React NativeはJavaScriptに基づいており、FlutterはGoogleの社内プログラミング言語であるDartを使用していますが、Ionicは複数の言語を使用しています。
React Nativeは、ハイブリッドアプリの開発で現在最も人気があり動的な言語の1つであるJavaScriptに基づいているため、開発者の人気を最も得る可能性があります。さらに、このフレームワークJavaScriptとReactのすべての利点を組み合わせており、Facebookに支えられています。React Nativeが他のプログラミング言語と一線を画しているのは、必要に応じてSwift、Objective-C、またはJavaでいくつかのコンポーネントを記述できることです。

FlutterAndroidiOS、およびWeb用のアプリケーションの開発に役立つDartという言語を使用しています。JavaScriptと比較すると、Dartはまだ新しい言語でが、この新しい言語は今後数年間で業界を席巻する大きな可能性を秘めています。

Ionicは、複数のテクノロジーHTML5CSS、JSを含む)を使用してアプリケーションの開発および実行し、Cordovaラッパーにアクセスしてネイティブプラットフォームコントローラーを使用します。コードの品質を向上させるために、Ionicの使用中にTypeScriptを使用することもできます。

2. コードの実行と再利用性

クロスプラットフォームアプリケーションの開発者を雇う場合、コードの再利用性も大きな関心事です。
3つのフレームワークはすべて、異なるコード実行戦略を使用します。
React Nativeは「一度学習すればどこでも書く」に従い、Ionicは「1つのコードベース、任意のプラットフォーム」を使用し、Flutterはコーディングプロセスを促進するための高度な機能セットを提供します。

React Nativeは使用してコードを作成する主な原則が明確に示されています。
単一のコードベースを使用して、AndroidiOSWindowsなどのさまざまなプラットフォーム向けの複数のアプリを開発できます。
これにより、開発者は短期間でより優れたアプリを構築できます。
Flutterの人気が高まっている背景には、開発者がすぐに使用できるウィジェットAPI、および独自のレンダリングエンジンを備えた最新のアプリを作成するのに役立つ包括的なツールが提供されていることです。Flutterの豊富なツールを活用することで、開発者は美しいモバイルエクスペリエンスを作成できます。

Ionicは、「1つのコードベース、任意のプラットフォーム」とシンプルな構造はさまざまなアプリケーションでコードベースの再利用に優れています。
同じコードベースを使用することで、開発者は非常にインタラクティブなアプリを短期間で構築できます。

3. 人気とコミュニティ

最も古いフレームワークの人気とコミュニティサポートが最も高いと想定している場合は、この時点で誤解されている可能性があります。統計調査会社のStatistaによると、React Nativeは開発者の42%によって使用されています。

Flutterは新しいフレームワークであるにもかかわらず、開発者の39%によって使用され、Ionicは開発者の18%によって使用されています。
これら3つのフレームワークすべてを比較すると、ReactNativeがトップの位置にある可能性があります。2019年と比べIonicは28%から18%に減少しましたが、Flutterは30%から39%に上昇しています。

React Nativeは、最も重要なWeb開発言語であるJavaScriptに基づいており、人気のあるReactライブラリを利用しているため、開発者のネットワークはFlutterやIonicと比較して急速に成長しています。しかし、ソースコード管理サービスのGithubによると、React Nativeには89.7Kのスター、3.7Kのフォロー、19.9Kのフォークがあります。

Flutterはコミュニティ向けに最近リリースされたフレームワークであるため、React NativeやIonicと比較すると、小さなコミュニティがあります。
しかし、Googleの強力なバックアップによって人気が急速に高まっているという事実は、すぐにこのフレームワークをモバイルの世界で主要なものにするでしょう。
さらに、Flutterはわずかな時間で99.2Kのスター、13.7Kのフォークを達成し、React NativeとIonicを除いて、3Kの開発者によってフォローされています。

Ionicは、最も古いフレームワークの1つであるため、Ionicはフレームワークを改善することがよくあります。
2番目に高いコミュニティサポートと素晴らしい市場があります。
人気の面では、41.6Kのスター、13.3Kのフォークがあり、1.8Kの開発者がフォローしています。

4. パフォーマンス

どのビジネスでも、アプリのパフォーマンスは最も重要な決定要因の1つです。
アプリのパフォーマンスは、特定のフレームワークでのコード記述の効率など、さまざまな要因によって異なります。ただし、ここでは、アプリのランタイムを分析するだけでパフォーマンスを評価します。

React Nativeは、ネイティブAPIコンポーネントを使用するため、ネイティブのルックアンドフィールを提供するアプリケーションを構築するのに役立ちます。

Ionicは、他のフレームワークとは異なり、IonicはHTML、CSSJavaScriptなどの高度なWebテクノロジーを使用しており、高性能のハイブリッドアプリの作成に役立ちます。
ただし、アプリケーションをネイティブカバーでラップするには、プラグインサードパーティパッケージが必要です。

間違いなくReact NativeとIonicはどちらも優れたパフォーマンスを提供しますが、Flutterは、すぐに使用できるプラグイン、さまざまなウィジェット、美しく高性能なクロスビルドを支援する独自のレンダリングエンジンを提供しているため、一歩先を進んでいます。

5. ユーザーインターフェース

ユーザーがアプリを使用し続けるか、アンインストールするかを決定するのに重要なのは、アプリのデザインとユーザーインターフェースです。
React NativeはReactライブラリを使用してUIを整理し、IonicはHTMLとCSSを使用しますが、Flutterは他のプラットフォームと比較して最高のユーザーインターフェイスを保証します。

React Nativeは、ネイティブのようなアプリエクスペリエンスを提供するために、ReactNativeは素晴らしいUIを提供するReactライブラリを利用しています。

Ionicは、ネイティブタイプのアプリエクスペリエンスを提供するためにHTMLやCSSなどのWebテクノロジーに完全に依存していますが、ネイティブアプリのルックアンドフィールを取得するためにCordovaにもアクセスします。

Flutterは、ネイティブコンポーネントとのインタラクティブなブリッジをスキップするだけで、最高のユーザーインターフェイスを提供します。
そのため、多くのモバイルアプリ開発会社は、クロスプラットフォームアプリの開発にFlutterを使用することを好みます。

Ionicは、クロスプラットフォームアプリケーションを提供できますが、JavaScriptの実行にCordovaを使用しているため、FlutterとReactNativeの方が効率とパフォーマンスでは優っています。

6. 現在の使用状況

テクノロジーに感銘を受けるのはまったく問題ありませんが、現実の世界がそのフレームワークをどのように使用するか、またはそれについてどのように考えるかが本当に重要となります。

React Nativeは、モバイルまたはWebアプリの開発に関するものであるかどうかにかかわらず、JavaScriptプログラミング言語の王様です。
上位5つのプログラミング言語での地位を維持しているだけでなく、アプリ開発業界でもその重要性を維持しています。
React NativeはJavascriptに基づいているため、FacebookAirbnbなどの大手企業がこのフレームワークを開発に採用しています。
ただし、一方でAirbnbが後に別のテクノロジーに切り替えたという事実を無視することはできません。
そして、この動きのためにReact Nativeチームは、ライブラリの制限と問題のいくつかを取り除くことに取り組んでいます。

Flutterは、比較的新しいものですが、開発者に完全なソフトウェア開発キットを提供するだけで、開発業界のベンチマークをすでに設定しています。
Flutterを使用すると、美しいアプリを簡単に作成できるだけでなく、ホットリロード機能を使用してコードをすばやく編集することもできます。
Flutterは多くの高度な機能を備えており、すでに開発者の約39%に感銘を与えており、GoogleAdWordsを含むいくつかの主要なアプリケーションの構築に使用されています。Flutterの人気と使用法が増加している方法で、Flutterを使用してより優れたアプリが開発されることを予測するのは安全です。必要なのは、このフレームワークの確かなコマンドを持つアプリ開発者を雇うことです。

Ionicは、最も古いフレームワークですが、それでも画期的で優れたアプリを開発していません。それでも、86,400の開発チームがIonicを活用してAndroidおよびiOSアプリを開発しています。

7. アプリ開発のコスト

スタートアップ企業であろうと起業家であろうと、アプリ開発コストは誰にとっても大きな懸念事項の1つです。
アプリ開発のコストは、アプリの開発にかかる時間、開発者のコ​​スト、および使用するライブラリに直接関係しています。

React Nativeオープンソースフレームワークであり、開発者は幅広い選択肢のライブラリに無料でアクセスできます。
このフレームワークの最大のメリットを享受するために必要なのは、熟練したチームを持つソフトウェア開発会社を雇うことだけです。

Flutterは、開発者がウィジェット、ライブラリ、APIの幅広い選択肢に無料でアクセスできるようにするオープンソースプラットフォームでもあります。
さらに世界中でFlutterアプリ開発者は簡単に見つけることができます。

Ionicは、無料のオープンソースクロスプラットフォームモバイルアプリフレームワークですが、専門的な開発環境では、有料版を選択する必要があります。

ただし、Iconic Proを使用すると、開発プロセスを簡単に迅速化でき、開発者がリアルタイムでアプリケーションを簡単に作成できるようになります。

【まとめ】クロスプラットフォームアプリ開発にはどのフレームワークを選択すべきか?

7つのポイントを比較しましたが、「ReactNativ」「Flutter」「Ionic」は、それぞれ特徴があり優れています。
開発者は、そのアプリの開発に適したものを選択する必要があります。
この記事全体を読んだ後でも、どフレームワークを選ぶかの判断は難しいでしょうか?
ではもっとシンプルにてみましょう。
ラップされたアプリソリューションを探しているなら、Ionicはぴったりのソリューションですが、グラフィックを多用するアプリの開発には適していません。
効率とパフォーマンスで選ぶならFlutterまたはReactNativeをお勧めします。
Ionicは、超高速の開発エクスペリエンスを保証し、1つのスタックで2つのアプリをより短い時間で構築できるようにします。
パフォーマンスとさまざまなネイティブデバイス機能の必要性が優先事項である場合は、FlutterまたはReactNativeがベストの選択肢になるでしょう。
これらを踏まえて、開発するサービスの特徴、開発コストをよく整理してどのフレームワークを選択するか判断するのが良いのではないでしょうか。

WeCodeでは60名以上のプロフェッショナルからなる専門の開発チームがお客様のアイデアを形にします。
お気軽にお問い合わせください。 無料見積・無料相談実施中!
www.wecode-inc.com | 〒305-0047茨城県つくば市千現2-1-6 | contact@wecode-inc.com | Tel 080-7094-9386

SB- WeCode Inc

LAMP Vs. MEAN Stack Development

f:id:wecodeinc:20201028183633j:plain

LAMP Vs. MEAN Stack Development

In a business, when you are developing an application from scratch, it is necessary to understand the standardization, consistency, utilization and scalability of the software. Businesses nowadays are very selective for web stack development, especially while creating professional applications like blogs, web service apps etc.

In this article, we will cover the two important development stacks – LAMP and MEAN. We will uncover the technology used in the database, server environment, and backend language during the development process in these two web stacks.

LAMP Stacks: Definition
In simple terms, the full form of LAMP is Linux, Apache, MySQL and PHP. The LAMP is a set of software and subsystems that can perform tasks without any dependency on any external software and data. The LAMP works in a bunch of software, and it allows smooth integration between each other softwares, which makes it the most suitable platform for web application development.

LAMP stacks have the oldest and largest community and a wide range of libraries and tools. The LAMP stacks could be the best platform for hosting & development of high performing web applications. Its components include. 

  1. Linux (Operating System)
  2. Apache (Web Server)
  3. MySQL (Code Managing the Database)
  4. PHP (Programming Language)

The LAMP is used by many popular industry leaders like Oracle, Zenda & Linux and many others. LAMP is highly considered for creating high-end performing enterprise applications.

Pros of LAMP Stacks

  1. The LAMP stacks offers a wide range of support services. PHP and MySQL backend support is provided by many hosting providers.
  2. The LAMP is an open source technology therefore the end-user and source can be changed according to developer needs.
  3. PHP & MySQL are easy to understand, therefore it becomes easier of beginners to adopt this technology.

Cons of LAMP Stacks

  1. The LAMP stack only supports Linux and its variant operating system technology.
  2. Switching between technology like PHP to python is very difficult in LAMP.

MEAN Stacks: Definition
The MEAN contains some software in the bundle known as MongoDB, ExpressJS, AngularJS, and NodeJS. The primary programming language of MEAN stacks is Javascript, and when all these software work together, it makes it easier for developers to build web applications. The database stored all the data in JavaScript Object Notation (JSON) format because every component is written in Javascript language.

  • MongoDB (data persistence)
  • Express.js (server-side application framework)
  • Angular (client-side application)
  • Node.JS (server-side environment)

The applications developed using MEAN stack technologies are easily scalable, flexible, and extensible. MEAN stacks is an ideal option for cloud application hosting.

Pros of MEAN Stacks

  • The MEAN stack uses a single programming language – JavaScript, which makes it most preferred sacks among developers. It also allows easily switching between client and server.
  • Due to its open-source solutions the application developed using MEAN stack technology is easy to maintain and robust.
  • The MEAN stack offers real time application demonstration. In this modern era the real time app demo can be beneficial for subscribers and users.
  • The primary advantage of MEAN stack is it allows cloud computing technology. Therefore it makes it easy for various users to access large information at the same time.

Cons of MEAN Stacks

  • MongoDB is not suitable for large enterprises, because there seems to be large data loss when developers try to accomplish network partitioning. 
  • The Express.Js consider as poor isolation for the server from business logic.

SB-

www.wecode-inc.com