プロトソリューションは、2015年に子育てサポート企業として「くるみんマーク」を取得、2018年に女性活躍推進企業として「えるぼし(三つ星)」の認定、2020年に「イクメン企業アワード2020」特別賞(地方特別)の受賞など、働きやすい職場環境づくりに力を入れております。

この度、2022年度(2022年4月~2023年3月)における男性社員の育休取得率が100%を達成いたしました。

■男性社員の育休取得率推移

年度 男性社員育休取得率 対象者数 取得者数
2019 37.5% 16 6
2020 87.5% 8 7
2021 81.8% 11 9
2022 100.0% 10 10

■取組み概要

・社員からの報告を受け、一人ひとりに育児休業に関する制度の説明や取得フローの案内を実施

・イントラネットやメールマガジンにて、最新情報の提供および育休取得者の感想などを発信

・ご本人のみならず、各部署責任者および人事と連携をとり、育休を取得しやすい環境づくりを促進

■今後の課題

・男性育休取得率は100%を達成したものの、平均取得日数は26.2日と1ヶ月を割り込んでおり、短期間取得者の長期化が今後の課題と言えます。

 状況確認やご本人のみならず、管理職への啓蒙など、取得しやすい環境づくりを促進していきます。

■男性社員 育休取得者からの声

「産後の妻が、体調が戻るのに時間がかかったため、そばにいてあげられたのは良かった」

「育休取得中に料理をするようになり、復帰後に子の体調不良があったときでも、どちらでも対応できるようになったのは、共働きとしてはありがたい。」

「授乳以外は、男女ともにできるお世話は変わらないんだと気付けた」

「(育休を)取得しやすい雰囲気になったのは良かった」

「取得することでキャリアに影響があるかと思ったが、望んだ業務を行うことができている」

<男性育休取得促進の背景>

 男性育休取得促進の取組みは、女性社員へもポジティブな影響を与え、女性のキャリアアップ意識向上に繋がることも、社員の声として挙がっており、社内プロジェクト「DIP(ダイバーシティ&インクルージョンプロジェクト)」にて取組みを推進しております。

 働きやすい職場環境づくりが、社員一人ひとりの働きがいに繋がると考え、今後も取組みを強化してまいります。

コイバナプロジェクトとは、沖縄県内の小学生、中学生、高校生の皆さんに向けて、ITの楽しさを伝えるプロジェクトです。

沖縄IT業界の土壌づくりを目的としたCSR活動の一環として、コイバナプロジェクトの取組みをご紹介いたします。

2023年7月21日に渡嘉敷島の​​阿波連小学校に訪問し、小学1年生から6年生までの合計16名の子供達に向けて職業人講話と体験学習を実施してきました!

阿波連小学校へ向かう道中、とても綺麗な海が見え、すごく感動しました。



職業人講話ではグーネットの制作を例に、デザイナー/コーダー/システムエンジニアの

3職種のお話をさせていただきました。

阿波連小学校の子供たちの認知度は…

・システムエンジニアを知っている/聞いたことがある・・・14名

・デザイナーを知っている/聞いたことがある・・・5名

・コーダーを知っている/聞いたことがある・・・0名

デザイナーとコーダーの認知度は低く、もっと頑張らないといけないなと思いました!笑



仕事内容や、やりがい・大変なことをお話しして、皆へ職種の理解を深めてもらったあとは、いよいよ体験会です!今回は1〜3年生と、4〜6年生の2グループにわかれて体験会を行いました!

4〜6年生のグループは、コーディング体験を行いました。

最初は「絶対できない」という声が多数あがっていましたが、実際に体験を始めるとみんな夢中になり、HTMLやCSSを使ってサイト内の文章を変更したり、色を変えたり。教えてもらったことをどんどん吸収し、思い思いの形でサイト制作を行っていました。

1〜3年生は、塗り絵が動くAR体験を行いました。

みんな黒い線を潰さないように一生懸命色を塗っていましたよ!

現実では見ない、個性あふれるカラフルな車や動物が端末上に浮き出た時には、隣の教室まで聞こえてくるほどの歓声が教室中に響き渡っていました。


最後の質疑応答の時間も、「英語ができなくてもコーダーになれますか?」や「今から勉強したら自分でもIT企業にはいれますか?」など沢山の質問があがり、皆の将来の就職の選択肢のひとつにIT企業が生まれたことに嬉しさを感じました!

今後もコイバナプロジェクトを通して、沖縄県内の子どもたちにITの楽しさを伝えていきます!

はじめに

ソリューション開発部2に所属している上間と申します!

主な業務内容としてはグーネット沖縄・グーバイク沖縄・グーホーム・グーホーム賃貸のPLで、サイトの運用と開発を行っています。

営業の方からAWSの費用を少しでも抑えられないかと依頼があったため、そちらの紹介をしたいと思います。

やること

指定の時間になったらAWS Lambdaで複数のEC2サーバーを起動・停止させます。

以下がざっくりとした概要になります。

1. IAMポリシー・ロールの作成

2. Lambda関数の作成・実装・テスト

3. Amazon EventBridgeで Lambdaを実行する時間を指定

1.IAMポリシー・ロールの作成

まずはIAMのポリシーを作成しましょう!

IAMのコンソールを開き、「ポリシー」を選択します。

次に「ポリシーを作成」を押下し、「JSON」タブを選択します。

ポリシーエディタに以下を記述します。


{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": "arn:aws:logs:*:*:*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:Start*",
                "ec2:Stop*"
            ],
            "Resource": "*"
        }
    ]
}

「次へ」を押下し、ポリシー名を入力して「ポリシーの作成」で作成完了です。

本記事では例として「ServerStartStop」をポリシー名とします。

作成したポリシーをロールにアタッチします。

IAMのコンソールから、「ロール」を選択し、「ロールを作成」を押下します。

信頼されたエンティティタイプは「AWSのサービス」、ユースケースは「Lambda」を選択し、「次へ」を押下します。

許可ポリシーは先ほど作成したポリシーを検索し、選択後に「次へ」を押下します。

ポリシーと同様にロール名と説明に何をするロールなのかを分かるように記述をして「ロールを作成」で作成完了です。

2.Lambda関数の作成・実装・テスト

Lambdaのコンソールを開き、「関数」を選択します。

次に「関数の作成」を押下し、「一から作成」を選択します。

関数名の入力と実行ロールを「既存のロールを使用する」にします。

作成したロールを選択後に「関数の作成」で作成完了です。

作成した関数の実装になります。

「コード」タブのlambda_function.pyに以下を記述します。

「region」には起動・停止したいEC2サーバーのリージョンを記述し、「instances」にはインスタンスIDを指定してください。

「Deploy」を押下し、コードを保存します。

※ 後ほどのテストで実際に起動・停止を行うので、開発など停止していいインスタンスを指定してください。


import boto3
import os
region = 'ap-northeast-1'
instances = ["i-xxxxxxxxxxxxxxx","i-xxxxxxxxxxxxxxx"]

def lambda_handler(event, context):
    ec2 = boto3.client('ec2', region_name=region)
    action = event["Action"]

    if action == "Start":
        ec2.start_instances(InstanceIds=instances)
        print('started instance')
    elif action == "Stop":
        ec2.stop_instances(InstanceIds=instances)
        print('stopped instance')
    else:
        print('Lamdba function could not be executed.')

Lambdaの設定は完了となりますが、実際にテストをして起動・停止できるか試してみましょう!

「テスト」タブにて、イベントアクションを「新しいイベントを作成」にします。

イベント名を設定し、イベントJSONには以下コードを記述します。

【インスタンスを起動する場合】


{
  "Action": "Start"
}

【インスタンスを停止する場合】


{
  "Action": "Stop"
}

「保存」でテストイベントを保存し、「テスト」を押下すると実行されます。

EC2のコンソールから対象のインスタンスを確認して、起動 or 停止していれば成功となります!

3.Amazon EventBridgeで Lambdaを実行する時間を指定

EventBridge のコンソールを開き、「ルール」を選択します。

次に「ルールを作成」を押下します。

まずはサーバー起動のルールを作成しましょう!

名前を入力し、ルールタイプは「スケジュール」を選択します。

問題なければ「続行してルールを作成する」を押下します。

起動したい時間に設定します。私は朝の9時にしたいので、「cron(0 0 ? * * *)」で設定します。

時間はUTCなので、時差を考慮してください。

設定したら「次へ」を押下します。

ターゲットタイプは「AWSのサービス」を選択します。

ターゲットを選択では、「Lambda関数」と作成した関数名を設定し、「次へ」を押下します。

タグについては今回は設定せず、「次へ」を押下します。

確認画面になりますので、問題なければ「ルールを作成」を押下します。

これでサーバー起動の設定は完了です。

停止のルールも同じように作成すれば全ての設定は完了となります!

これで時間通りに自動でサーバーの起動・停止できるようになりました!

最後に

私は9時に起動・18時に停止の設定をしました。

その結果、24時間起動だったサーバーが9時間の起動になりましたのでかなりコストの削減になりました!

関数を複製し、他のサーバーに適用するともっと削減できるかと思いますので試してみてくださいー!!

参考

EC2インスタンス起動/停止をLambdaで自動化してみた

一つのLambdaで複数のEC2 インスタンスを起動・停止を行う

プロジェクトマネージャー

プロジェクトマネージャー

沖縄本社では、一緒に働くITエンジニアを募集しています

AIエンジニア、システムエンジニア、その他多数募集中!

こんにちは、プロトソリューションの福田です。

沖縄も旅行客を多く見かけるようになり、いよいよ夏本番。すでに7月前半で最高気温は33.3度を超えました!

夏は海水浴や旅行、花火大会などワクワクするイベントが満載ですが、日差しが強いので熱中症対策として水分をしっかりと摂ること。ポイントは「喉が乾く前に飲む」だそうです◎

さて、アツいといえば我々プロトソリューションがスポンサードしているFC琉球も激アツです!

今回は、7/8タピック県総ひやごんスタジアムにて行われた冠試合「プロトソリューション プレゼンツ グー沖縄・グーホームSPECIAL MATCH」の応援と、スタジアム場外特設ブースに、CYCY(サイサイ)の試乗コーナーを設置したので、その取材に行って来ました!

■CYCYとは?

icon_cycy


icon_cycy


株式会社プロトソリューションが2019年10月より開始したシェアサイクル事業です。ICTを活用し、地域に根ざしたシェアサイクル事業を行うことで、観光客の利便性向上を図り、交通渋滞緩和、環境への配慮を目指します。なお、本サービスは、OpenStreet株式会社が提供する自転車シェアリングシステム「HELLO CYCLING」を活用して行います。

沖縄のシェアサイクル CYCY(サイサイ)の利用方法はこちら


■タピック県総ひやごんスタジアムに到着

会場は既に、イベントを楽しむ方の熱気で包まれていました!
試合開始までの間、キッチンカーでお腹を満たします。食べ歩きをするのも一つの楽しみ♪



武敏さん、いたー!!!!

CYCYブースに到着。CYCYを運営する武敏さんが元気に迎えてくれます!



CYCYブースでは無料試乗会を実施!

この機会にCYCYの電動アシスト自転車の推進力を体験できちゃう♪

無料で試せて、冷た〜いドリンクももらえる試乗会♪



イベント会場を歩く方へ声をかけて、CYCYを体験してもらいます!

CYCY試乗会への呼び込みをする、グー沖縄とグーホームメンバー



たくさんの人が試乗に来てくれました!

グー沖縄、グーホームメンバーでサポートしながら安全に乗ってもらいます♪



そして今回、タピック県総ひやごんスタジアムにCYCYで来てくれた先着10名の方にCYCY割引クーポンとCYCYステッカーをプレゼント!

CYCY割引クーポンとオリジナルステッカーをGETしたユーザーの方々♪

■その他のブース

イベント会場では、FC琉球のマスコットキャラクター「ジンベーニョ」の缶バッジ作りが体験できたり、ミニ動物園にてリクガメやヤギ、モルモットにヨナグニウマなど、多種多様な動物とふれあえるブースも♪



そして、毎度お馴染みの抽選会へ!

前回は2等をひいたラッキーボーイ福田だが・・・!?

今回は「ご来場有難うございます」をいただきました!!

綺麗な字でしたためられた抽選くじに感動する福田

■イベントを終えて


たくさんの方がブースに来てくれました。

CYCYを体験してもらえて、私たち運営メンバーも心から嬉しいです!

■試合会場の様子

さて、試合会場はというと・・・!?

試合会場の様子



すごい熱気と盛り上がりです!

この日の来場者は4,396人。

そして、試合結果は『2-1』で最高の逆転劇をみせてくれたFC琉球の勝利!!

最後は打ち上げ花火が上がりました♪

■最後に

今回「シェアサイクル CYCY OKINAWA」の試乗会では、たくさんのお客さんにCYCYを体験してもらい、CYCYを知ってもらうことが出来ました!

CYCYを試乗頂いた皆さま、暑い中有難うございました!

そして当社のメディア事業部推進室、グーホーム、グー沖縄の社員の皆さん、ブース設営から実施まで本当にお疲れ様でした!!

今後もプロトソリューションはFC琉球を応援していきます!

icon_福田

icon_福田

この記事を書いたひと:福田 聡樹(ふくだ さとき)

株式会社プロトソリューション Webソリューション部所属。自社ホームページ編集長。ブログ/インタビュー/動画などのコンテンツを使ってプロトソリューションの取り組み、サービスやタレント情報の発信をしています。
好きなもの:爬虫類、犬、本のにおい、オヤジギャグ。


<プロトソリューション団体観戦エリアの様子>

■7月8日(土)FC琉球 対 松本山雅FC

プロトソリューションは、2023年7月8日(土)タピック県総ひやごんスタジアムにて開催された「明治安田生命J3リーグ」ホーム戦において、FC琉球の冠試合を開催いたしました。

グーネット沖縄・グーホームpresentsでの冠試合で、シェアサイクル「CYCY」の試乗コーナーを設置するCYCYブースを設け、試乗者に向けたプレゼントキャンペーンなどを実施し、50名を超えるお客様にお越しいただきました。

ご来場いただいた皆さま、誠にありがとうございました。

今シーズン、ホーム戦最多となる4,396人の来場者数の中、2-1の逆転劇で見事勝利をおさめました。

弊社は、スポーツを通して地域社会とのつながりを深め、今後も地域に根差した活動を通じて地域・社会に貢献して参ります。

■FC琉球
https://fcryukyu.com/

■クルマ情報メディア「グーネット沖縄」
https://ok.goo-net.com/

■不動産情報メディア「グーホーム」
https://goohome.jp/

■グーネット沖縄・グーホームpresents 冠試合の様子

<キックインセレモニーの様子>
<FC琉球選手の皆さんもCYCYブースへお越しくださいました!>
<会場の様子>
<CYCY試乗コーナー>

2023年7月2日(日)、宮古島新城(アラグスク)海岸にて開催された、海辺のミライをみんなで守ろう「ほっとけないプロジェクト」に協賛し、活動に参加いたしました。

・イベント1
「海辺のミライ教室」
スペシャルゲスト「ココリコ・田中さん」を迎え、海洋ゴミや宮古島の海洋生物について学ぶ

・イベント2
「ビーチクリーン」
宮古島のビーチのゴミを拾い、みんなのチカラで宮古島のビーチをクリーンにする

プロトソリューションは、おきなわSDGsパートナーに参画し、SDGs達成に向けた取組みを推進しております。
本イベントでの学びと理解を活かし、実践につなげることで、沖縄の地域・社会への貢献してまいります。

<イベントの様子> ※プロトソリューション社員撮影

はじめに

みなさん、初めまして!
2023年4月よりプロトソリューション ソリューション開発部沖縄に新卒社員として入社した比嘉拓登と申します!
今回ストーリーを執筆する機会をいただき、とても嬉しく思っています。
以下では、私の自己紹介とPSに入社してからの変化についてお話しさせてください!

プロフィール

・出身地:沖縄県北中城村
・趣味:アウトドア全般、ものづくり、ドライブ
・沖縄国際大学 産業情報学部 企業システム学科 経営コース 卒業

生まれてからずっと沖縄県の北中城村で育ちました。昔は田舎感が濃い地域でしたが、
最近は大型ショッピングモールや隠れ家的なお店が増えて、とても住みやすい”トカイナカ”になっています!

学生時代は、小学校3年生から高校3年生までバスケットボール部に所属していましたが、
実はバスケよりも卓球が得意です!
大学に入学してからは、サークルや部活には所属せず、1人でできる趣味に夢中になりました!
アウトドア全般が趣味で、特に自然の中での遊びや、キャンプに魅了されています。
また、ものづくりも好きで、主に、趣味で使う道具などを自作して楽しんでいます。
学生時代は趣味に夢中になりすぎて、学業が疎かになる時期もありましたが、しっかりと立て直して、経営や企業システムについて学びました!

プロトソリューションに入社した理由

プロトソリューションに入社した理由は以下の2つです。

・未経験の私でも、エンジニアとしての経験を積むことができ、キャリアスタートにぴったりの環境だと感じたこと。
・挑戦により自己成長できる環境だと感じたこと。

学生時代、就職活動に消極的だった私は、大変そうだけど「これも1つの経験としてやってみよう!」という想いで就職活動を開始しました。働くなら、自分の技術や知識に価値がつく技術職として働きたいと考え、技術職の中でも特に興味があった、ITエンジニア職に絞って就職活動を行いました。

しかし、未経験で、技術も経験も知識も無い(やる気はありました!)私を採用してくれる企業はあるのかと不安が大きかったことを覚えています。

そんな中でプロトソリューションの存在を知り、説明会や選考に参加。
研修内容が充実しており、未経験でもエンジニアとしての経験を積む事ができる事。そして、定期面談等で意見を取り入れてくれる場があり、自分の意思で挑戦できる環境である事を知り、ここでならエンジニアとしても、人としても成長できると感じ入社を決めました!

入社してから今まで 〜変化〜

2023年4月に入社し、現在入社3ヶ月目です!

入社直後の4月に、人事研修を受けました。この研修では、社会人基礎力やプロトソリューションの理念について学びました。ディスカッションやグループワークを多く行い、論理的思考や、課題解決力を身につけると共に、同期との親睦を深めることができたと感じています。

大学時代は1人活動を好んでいたこともあり、同期と仲良くなるイメージはできていなかったのですが、
人事の方や、個性豊かで優しい同期との交流を通じて、人との関わりの楽しさを再認識することができました!素敵な同期に出会えたことに感謝です!!

そして、5月には部署研修が行われました。この研修では、Flutterを使用したモバイルアプリケーション開発と、PHPを使用したWEB開発の学習を行いました。Flutterに関しては初めて触る技術だったため、戸惑いもありましたが、先輩社員の方々が課題解決の考え方や、論理的思考について丁寧に指導してくださったおかげで、理解を深めながら学習を進めることができました。また、詰まった際には、同期にも相談し、技術の理解を深めていく事ができました。先輩社員の方々、同期には感謝しかありません。

そして、現在、6月になりテストチームに配属され、本格的に業務に取り組んでいます。新しい環境での業務に少し緊張もありますが、目の前の業務に一生懸命取り組みたいと思っています。また、テストの業務を通じて、テスト視点からサービスについて学び、将来のキャリアに活かしていきたいと考えています!

テストチームでの業務の様子↑

これからやっていきたいこと、将来像

まずは、1人前のエンジニアとして技術力を身につけ、プロトソリューションのサービス向上に貢献できる人材になりたいです!そのためにも、常に新しい技術やツールに目を向け、自己学習を行い、自身のスキルを高めていきたいと思っています。

また、将来的には、自身のアイデアが反映されたサービスを立ち上げ、運用することが目標です。そのためには、開発者としての技術力だけでなく、上流工程で重要となるコミュニケーション能力やマネジメント力など様々なスキルが必要となります。そのため、業務内外問わず様々なことに積極的に挑戦し、幅広い知識と経験を積みながら、サービス開発におけるさまざまな側面に関わっていきたいと考えています。

入社して2ヶ月と半分。わからないことだらけで涙目になることもありますが、
日々成長を積み上げていき、目標を達成できるよう精進していきます!

最後までご覧いただきありがとうございました!

プロジェクトマネージャー

プロジェクトマネージャー

沖縄本社では、一緒に働くITエンジニアを募集しています

ITエンジニア、システムエンジニア、その他多数募集中!

こんにちは、プロトソリューションの福田です。

食品ロスの削減は、持続可能な社会の実現や資源の効果的な活用に向けて今や世界的な課題となっています。

食品ロスとは、まだ食べられるのに廃棄される食品のことです。日本では、まだ食べられるのに廃棄される食品、いわゆる「食品ロス」は523万トン(※)。これは、世界中で飢餓に苦しむ人々に向けた世界の食料支援量(2021年で年間約440万トン)の1.2倍に相当します。

出典:消費者庁 食品ロスとは?なぜ食品ロスの削減が必要なの? より

今回のFUKU LABでは、食品ロスが発生している沖縄県産品の“黒糖”に焦点をあててみました。

余った黒糖

2021年〜2022年に生産した黒糖が、2023年の現在も余剰が出ています。

コロナ禍でのお土産品店の集客減により、沖縄黒糖の消費自体が減少しているのが理由です。

沖縄県黒砂糖協同組合に加盟する製糖工場の在庫は5,768トン(2021年9月末時点)となっていて、現在でも多くの在庫を抱えています。

出典:沖縄県黒砂像協同組合/工業会 データページ「沖縄黒糖生産実績」より
https://www.okinawa-kurozatou.or.jp/data

食品ロスへの取り組みと想い

おきなわSDGsパートナーとして地域の食品ロス削減に取り組む「新広堂株式会社(以下、新広堂)」では、地元食品メーカーと連携した新たな取り組みで持続可能な未来を目指しています。

新広堂の代表取締役である新垣さんは過去に、余剰生産分のパンをプロトソリューションの社員へ提供する取り組みを実施しました。

新垣さんの取り組みにより、廃棄されるはずだったパンを消費することができ、社員満足度も向上。食品ロスだけでなく、企業の福利厚生にも繋がりました!

そして今回、沖縄県産品の黒糖の余剰に目を向けた新垣さんは、「廃棄パンの提供」でタイアップした、メディア事業部役員の西村さんと解決策を模索。「在庫過多の黒糖をパッケージして自社サービスのノベルティとしてクライアントに配ることで、事業のプロモーションにもなるし、黒糖を有効的に消費できるのではないか?」という解決案が出たのです!

黒糖を使ったノベルティー


どれだけの黒糖を消費できたか?

新垣さんの協力により、黒糖を使用して作ったノベルティは11,600袋。

なんと、全てを配布することができました!

重さにして約440キロの黒糖消費に貢献したことになります。

黒糖ノベルティ施策を終えて

新広堂の代表取締役である新垣さんは「沖縄を意識したパッケージを見たときに、いかにも販促物っぽい感じもなく、取り組みについてプロトソリューションさんが本気で考えてくれていると感動した。グー沖縄の販売店さまに知ってもらうだけでも、この取り組みが県民へのアプローチになる。沖縄で生まれた課題は私たち沖縄県民が率先して解決していかなければならない。

私の名刺の裏には食品ロスの削減に「取り組んでいます」ではなく、矜持の意味を込めて「実現しております」としている。今後も活動を通して地域に貢献できるよう取り組んでいきたい」と話しています。

ノベルティを手にする新垣さん。黒糖の袋詰めは就労支援の方々によって行われました。

まとめ

余剰生産された食品を調達し、企業との協働によって新しい消費をつくった新広堂の取り組みは、食品ロスの削減だけではなく、パートナーシップの可能性も広げています。

一方で、個人でも「フードバンク」に寄付をするなどして、食品を必要としている方々へ貢献することもできます。

また「食べる分を買う」「買ったら賞味期限の近いものから消費する」など少しの工夫で、ごみが出ることを防げますし、ごみが減ることで、ごみを燃やす際に発生する二酸化炭素の削減になり、地球温暖化の抑制にもつながります。

日常生活を振り返ってみると、持続可能な未来につながる行動がきっとあると思います。

持続可能な未来は私たちの未来。

SDGsの達成に向けて出来ることから始めてみませんか?

icon_福田

icon_福田

この記事を書いたひと:福田 聡樹(ふくだ さとき)

株式会社プロトソリューション Webソリューション部所属。自社ホームページ編集長。ブログ/インタビュー/動画などのコンテンツを使ってプロトソリューションの取り組み、サービスやタレント情報の発信をしています。
好きなもの:爬虫類、犬、本のにおい、オヤジギャグ。


はじめに

初めまして、プロトソリューションの前原と申します。

2022年に入社し、AIテクノロジー推進室という部署でAIやアプリ開発などに携わっています。

現在は、スマホアプリの開発に奮闘中です。

開発で使っているFirebaseがとても便利でしたので、

この記事では、Firebaseの機能のひとつであるFirestoreをローカルで立ち上げて、Flutterと連携するまでを紹介していきます。

Firebaseをローカル環境で実行してみよう

早速ですが、手順を紹介していきます。

注意点として、Flutterの環境構築はこの記事で解説していません。

外部の記事にやり方はたくさんあるので、この記事では割愛させていただきます。

最初のステップとして、Firebaseのプロジェクトを作成します。

名前は任意で大丈夫ですが、この記事では「firebase-demo」とします。

Google アナリティクスは扱いませんのでオフに設定して、プロジェクトを作成します。

Firebaseプロジェクトが作成できました。

次に以下のコマンドを実行して、Flutterプロジェクトを作成します。

アプリ名は任意で大丈夫です。


flutter create firebase_demo

Firebase CLIをインストールして、コマンドラインからFirebaseを実行できるようにします。


npm install -g firebase-tools

Firebaseにログインします。

ログインには、Googleアカウントが必要になります。

 
firebase login

次にFlutterFireをコマンドラインで実行できるようにします。


dart pub global activate flutterfire_cli

FlutterにFirebaseの構成を追加するため、以下のコマンドを実行します。


flutterfire configure

今回は、iosを選択して進めますが、

Flutterは、android、macos、webにも対応しているので、ぜひ他のプラットフォームでも試してください。

 
? Which platforms should your configuration support (use arrow keys & space to select)? ›
      android
  ✔ ios
      macos
      web

FlutterでFirebaseを使うためのプラグインを追加します。


flutter pub add firebase_core

Firebaseに追加したプラグインの構成を反映するため、再度コマンドを実行します。

プラットフォームの選択は、上記と同じiosにします。


flutterfire configure

FlutterにFirebaseの構成ファイルをインポートします。

lib/main.dartに、Firebaseを初期化するコードを加えます。


import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';

 main() async {
    // Firebaseを初期化
    WidgetsFlutterBinding.ensureInitialized()
    await Firebase.initializeApp(
        options: DefaultFirebaseOptions.currentPlatform,
    )
    runApp(const MyApp())
}

アプリを起動します。

正常に起動できたら、FlutterとFirebaseを連携する手順は完了です。


flutter run

 

次のステップは、ローカル環境でFirestoreを立ち上げるまでを紹介します。

Firebaseに、Firestoreを追加します。

以下のコマンドから、FirestoreとEmulatorsを追加します。


firebase init

FirestoreとEmulatorsを選択して進めます。


? Which Firebase features do you want to set up for this directory? Press Space to select features, then ? Which Firebase emulators do you want to set up? Press Space to select emulators, then Enter to confirm your choices. (Press <space> to select,
 <a> to toggle all, <i> to invert selection, and <enter> to proceed)
 ◯ Authentication Emulator
 ◯ Functions Emulator
 ◉ Firestore Emulator
 ◯ Database Emulator
 ◯ Storage Emulator

エミュレータで使用するFirebaseの機能を追加します。

この記事では、Firestoreを選択します。

エミュレータを立ち上げます。


firebase emulators:start

コマンドラインのリンクからアクセスして、エミュレータが表示されたら成功です。

選択したFirestoreが、Onになっていることが確認できます。

データを追加してみます。

Start collectionをクリックして、項目を入力後にSaveします。

データが追加されました。

Firestoreのエミュレータはデータの保持ができないため、停止するとデータが消えてしまいます。

データを残したい場合は、エミュレータのデータをエクスポートして次の起動時に読み込む必要があります。

エミュレータを実行したまま、別ターミナルを開きます。

以下のコマンドを実行し、データをエクスポートします。


firebase emulators:export ./emulators_data

次の起動時に、エクスポートしたデータを読み込むときは以下のコマンドを実行します。


firebase emulators:start --import ./emulators_data

ここで上記2つのコマンドを毎回やるのは大変ですので、インポートとエクスポートを同時に実行できるようにします。

以下のコマンドを実行することで、エクスポートとインポートが同時にできるので、データ保持を意識せずFirestoreを使えます。


firebase emulators:start --import ./emulators_data --export-on-exit

最後はFlutterに、ローカルのFirestoreを読み込む処理を追加します。


void main() async {
    // Firebaseを初期化
    WidgetsFlutterBinding.ensureInitialized();
    await Firebase.initializeApp(
        options: DefaultFirebaseOptions.currentPlatform,
    );
    // ローカルのFirestoreを読み込む
    if (kDebugMode) {
        try {
            FirebaseFirestore.instance.useFirestoreEmulator('localhost', 8080);
            debugPrint('Use local emulator.'); } catch(e) {
            print(e); }
    }
    runApp(const MyApp());
}

lib/main.dartに、エミュレータ起動時のコードを加えます。


firebase init

Flutterを起動すると、ローカルのFirestoreを読み込みます。


flutter run

 

まとめ

FlutterとFirebaseを連携させ、ローカルのFirestoreを起動するまでを紹介しました。

Firebaseは使いやすくFirestore以外にもプッシュ通知やストレージ、機械学習など幅広く活用できるので、ぜひ使ってみてください。

  

  

SaaSエンジニア

SaaSエンジニア

仙台本社では、一緒に働く自社プロダクト(SaaS)開発エンジニアを募集しています

社内インフラ、その他多数募集中!

プロジェクトマネージャー

プロジェクトマネージャー

沖縄本社では、一緒に働くITエンジニアを募集しています

AIエンジニア、システムエンジニア、その他多数募集中!

ページトップへ戻る