PANTONE COLOR OF THE YEAR 2023はViva Magenta(ビバマゼンタ)

PANTONEからカラーオブザイヤー2023が発表されました。
PANTONE COLOR OF THE YEAR 2023

2023年のトレンドカラーは「PANTONE 18-750 Viva Magenta(ビバマゼンタ)」。
青味がかった彩度の低い、自然な赤色ですね。

PANTONEのCOLOR OF THE YEAR、Viva Magenta 18-750 は、鮮やかで活力に満ちています。赤系の自然に根ざし、新たな力強さを表現する色合いです。ビバ マゼンタは勇敢で恐れを知らず、脈動する色であり、その活気が喜びに満ちた楽観的なお祝いを促進し、新しい物語を書きます。
今年のCOLOR OF THE YEARはパワフルで力を与えてくれます。それは、純粋な喜びに満ちた生き生きとした赤であり、抑制のない実験と自己表現を奨励し、刺激的で、際立ったステートメントとして現れる無限の色合いです。PANTONE 18-1750 Viva Magenta は、同じ生命力と反骨精神を持つすべての人を歓迎します。大胆で機知に富み、すべてを包括する色です。

カラーデータ

HEX #BE3455
sRGB 190 52 85
LAB 46.05, 58.95, 17.38

Photoshopのカラーピッカーではこんな感じです。

PANTONE CONNECT

PANTONE CONEECTではAdobe系のカラースウォッチで使えるASEファイルがダウンロードできます。
また、Viva Magentaを元にしたカラーパレットやシェードも用意されています。
PANTONE CONNECT(要会員登録)

CSSグリッドレイアウトについて

前提知識

・ブロックレベル要素
・インライン要素

グリッドレイアウトを理解するためには、上記2つの理解が必須です。

CSSグリッドとは

CSSグリッドについて説明します。
CSSグリッドとは、CSSでレイアウトを組む際によく使用される方法の1つで
縦横の格子状に分割してレイアウトを構成する手法です。


縦(赤線)がcolumn(列)、横(青線)がrow(行)です。
コーディングの際にこの「column」と「row」が出てきます。

今回はグリッドを使用して、2枚目の画像のようにレイアウトを整えていきます。


HTMLのみの状態


CSSでレイアウトを整えた状態
レイアウト調整後

コーディングにあたり、今回はCodePenというサイトを使用します。
グリッドレイアウトの仕組みを理解することが目的なので、環境構築などは行わずブラウザ上で動作させます。

CodePenにてコーディングを行なっていきましょう。
試しに以下ソースをCodePenのHTMLエディタに入力してみてください。
レイアウト調整前の背景色のみが装飾された結果が出力されます。

HTML

<div id="container"> <!-- コンテナ -->
  <div id="boxA">boxA</div> <!-- アイテム -->
  <div id="boxB">boxB</div> <!-- アイテム -->
  <div id="boxC">boxC</div> <!-- アイテム -->
  <div id="boxD">boxD</div> <!-- アイテム -->
</div>

CSS

#boxA {
  background-color: #ff7f7f;
}
#boxB {
  background-color: #7fbfff;
}
#boxC {
  background-color: #7fff7f;
}
#boxD {
  background-color: #ffff7f;
}

恐らくこちらの画像のような表示になったかと思います。

レイアウトを整える

早速今回の本題であるグリッドレイアウトでレイアウトを整えていきます。
CSSを以下ソースに置き換えてください。

#container {
  display: grid;
  grid-template-columns: 400px 1fr;
  grid-template-rows: 100px 100px 100px;
  grid-template-areas:
    "boxA boxB boxB"
    "boxA boxC boxC"
    "boxA boxD boxD";
}

#boxA {
  background-color: #ff7f7f;
  grid-area: boxA;
}
#boxB {
  background-color: #7fbfff;
  grid-area: boxB;
}
#boxC {
  background-color: #7fff7f;
  grid-area: boxC;
}
#boxD {
  background-color: #ffff7f;
  grid-area: boxD;
}

以下画像のような表示になりましたか?

では一つずつ説明していきます。
グリッドレイアウトで使用するプロパティは全部で6つ。

親要素(コンテナ)で指定するプロパティ

  • display
  • grid-template-columns
  • grid-template-rows
  • grid-template-areas

子要素(アイテム)で指定するプロパティ

  • grid-area

各プロパティの説明

display

要素の表示形式を指定します。
今回の場合グリッドレイアウトなので「grid」を指定します。

display: grid;

他にもブロックレベル要素と指定する「block」や
フレックスボックスを指定する「flex」が存在します。

grid-template-columns

グリッドレイアウトの横幅を指定します。

grid-template-columns: 400px 1fr;

値400pxはboxAの横幅を指定しています。
値1frは閲覧しているPCの横幅を自動的に算出し指定しています。
今回は先に400pxを指定しているため、画面最大幅-400pxで算出された横幅が指定されます。

grid-template-rows

グリッドレイアウトの縦幅を指定します。
今回は3行あるため値を3つ指定しています。

grid-template-rows: 100px 100px 100px;

100pxを各行の縦幅として指定しています。

grid-template-areas

各アイテムの配置を行うプロパティです。
「”」で囲うことで、画面に表示させたいレイアウトを簡単に可視化できます。
以下で指定している「boxA」や「boxB」は後ほど紹介するgrid-areaを使用して指定します。

“boxA boxB boxB”

例えばこちらのソースを書くと

     grid-template-areas:
    "boxA boxB boxB"
    "boxA boxC boxC"
    "boxA boxD boxD";

1列目は全てboxA
1行目の2列目〜3列目はboxB
2行目の2列目〜3列目はboxC
3行目の2列目〜3列目はboxD
という感じでこちらの結果が表示されます。

同じく、こちらを入力すると

    grid-template-areas:
    "boxA boxB boxB"
    "boxC boxC boxC"
    "boxD boxD boxD";

こちらの結果が表示されます。

このように、列(行)単位で「”」で囲い、その中にgrid-areaで指定した名前を
スペース区切りで入力することで簡単にレイアウトを整えることが可能です。

grid-area

grid-template-areasで指定する際の名前をつけるプロパティです。
このプロパティで指定した名前とgrid-template-areasで指定した名前が一致していれば任意の名前をつけることが可能です。
cssで各要素に対して指定してあげます。

#boxA {
  grid-area: boxA;
}
#boxB {
  grid-area: boxB;
}
#boxC {
  grid-area: boxC;
}
#boxD {
  grid-area: boxD;
}

おわり

CSSグリッドに関する説明は以上です。
floatプロパティを勉強した人はとても簡単に感じませんでしたか?
私がこのグリッドレイアウトの存在を知った時はもう衝撃すぎて体が震えました…(floatは難しすぎる)
ぜひこちらの記事で少しでもCSSレイアウトに対する興味が湧いていただけると嬉しいです!

パクることは決して悪いことではない

新人教育で伝えていること。

「パクることは決して悪いことではない」

TTP(徹底的にパクる)

某企業で受け継がれるTTPという言葉。

  • T
    徹底
  • T
    的に
  • P
    パクる

営業やマーケティングなどビジネス用語として使われる言葉ですが、エンジニア初心者の方に知ってほしいため、この言葉を伝えております。

パクるって良いの?

パクる
決して良い言葉として捉えることができませんが、グーグル検索・先輩からのアドバイス、これ全てパクる(=真似る)と考えます。
もちろん、著作権的な問題はNGですけどね。

分からないことは、

真似る⇒真似ぶ⇒学ぶ

「学ぶ」の語源は「真似ぶ」であるという説があることから、パクることは決して悪いことでないと考えています。

パクるから進化

パクった情報を、InputしてOutputすることで、自身のスキルとなります。
例えば、Outputとして、誰かに教えた際に、相手の理解度が低い際には、自身の理解度が低いのか?もう少し分かりやすい説明は無いのか?と自問自答して解決することで、自身のスキルアップに繋がります。

おわり

分からないことは、決して、恥ずべきことではなく、当たり前のことです。

先ずは真似ることです:v:

真似たら、InputしてOutputしましょう。

私が考えるInputは・・・

  1. パクって良いコードはデバッグして流れを掴む単純に真似ると意味ないです。
  2. パクって良いコードを少し変えてみる。(例えば、条件式を変えてみる)

私が考えるOutputは・・・

  1. 誰かに説明する。(ブログではなく、直接!)

Output少ない^^

【未経験OK】【応募資格見て欲しい!】Webサイト制作チームでの制作運用業務 

ホームページ制作にかかる運用業務に携わっていただきます。


時給:1,100円~
勤務時間:9:30~18:00
※沖縄は、渋滞多いからうれしい時間♪
※状況によっては時短OKのため、まずは弊社にお問い合わせくださいね!


お仕事内容

ホームページの数値などデータをPowerPointに貼るなど簡単なお仕事です。IT分からないけど、PowerPointやExcelはショートカットキーくらいなら知っている方であれば、すぐに活躍できるようしっかりとした研修制度、サポート制度が備わっております。

もし、今後、Webコーダー、Webディレクターへのキャリアアップを目指しているのではあれば、おすすめしたい環境なんです♪


実際にIT未経験の方が3名配属されました。

そして・・・

前職から給与UPを実現しております!

 


ほんとに??
応募お待ちしております。(^^♪

 

募集要項

職種

【未経験OK】【教育制度完備】Webサイト制作チームでの制作運用業務 B02

給与

時給1,100円〜
基本時給:1000円 手当を時給は別に支給 業務手当:50円~100円/時間あたり スキルアップ手当:50円~200円/時間あたり

試用・研修

試用期間あり (3か月)

雇用条件は本採用時と同じ

待遇・福利厚生

  • 社会保険あり
  • 資格取得支援制度
  • 残業手当
  • 休日手当
正社員登用制度あり

交通費

規定支給(1日支給上限 567円)

勤務地

うるま市

応募資格

パソコン基本操作 エクセルやワード、パワーポイントの利用

勤務時間

9:30~18:00

勤務曜日

月・火・水・木・金

休日休暇

有給休暇

土日祝休み 平均月1度の有給休暇利用

勤務期間

最低勤務期間:3ヵ月更新

チームラボ ボタニカルガーデン大阪 レポート

先日、チームラボ ボタニカルガーデン大阪に伺いましたので感想など。
公式HP→https://www.teamlab.art/jp/e/botanicalgarden/

チームラボ ボタニカルガーデン大阪は、長居公園内にある大阪市立長居植物園の一角をアート空間にしています。
屋外での光のアートということで、入場は夜の19:30以降です。

まずは人が近づくと木の下から照らす光が強くなり、周辺の木へとその光が伝播するアート「呼応するサルスベリ」。
ちょうどサルスベリの花が綺麗に咲いている様子がライトアップされて、非常に美しかったです。

その先には、展示内容の案内が表示されるアプリのインストールを促す案内が。
夜の屋外ですので、屋内のように展示案内が書かれていても暗くて読めないので、スマホで閲覧できるのはとても良い手法だと思いました。
広い園内に10を超える展示があるのですが、GPSで現在地に近い展示案内がすぐに読めるようになっています。
ただ、GPSの精度の問題かと思うのですが、目の前にある展示の案内が出ないことが多々あり、惜しいなと感じました。

チームラボのデジタルアート作品は、『見る』だけでなく『触れる』展示があるのも特徴のひとつで、今回も人の背丈よりも大きな卵型のオブジェがあり、皆さん思い思いに触れて写真を撮られていました。

ボタニカルガーデン大阪は常設展示なので、夜のお散歩やデートに出掛けてみてはいかがでしょうか。

以下、展示の一部を写真でご紹介します。

ツバキ園の呼応する小宇宙-固形化された光の色
風の中の散逸する鳥の彫刻群

Power Automate Desktopでメールを一括送信するフロー

今回はPower Automate Desktopを使った「メール一括送信フロー」をご紹介します!

フロー概要

今回ご紹介する「メール一括送信フロー」の概要は以下の通りです。
担当Aさんが、異なった職種を希望する複数の派遣スタッフさんにメールを送ります。

事前準備

フローを作成する前に、送信対象リストとメールテンプレートを用意しましょう。

  1. 送信対象リスト
    今回はExcelでメール送信する対象者リストを作成します。
    氏名
    カナ
    メールアドレス
    テンプレート
  2. メールテンプレート
    送信対象リストのテンプレートに記述された、テンプレートを作成します。
    ● プログラマー希望.txt
    ● 事務職.txt

フローの作成

  1. Excel の起動
    ”パラメーターの選択”の各項目について、それぞれ設定して保存ボタンを押下しましょう。
    【全般】
    Excelの起動:次のドキュメントを開く
    ドキュメントパス:送信対象リストのパスを指定
    インスタンスを表示する:ON
    読み取り専用として開く:OFF
    【詳細】
    ※変更なし
    【生成された変数】
    ExcelInstance
  2. Excel ワークシートから最初の空の列や行を取得
    ”パラメーターの選択”の各項目について、それぞれ設定して保存ボタンを押下しましょう。
    【全般】
    Excelインスタンス:%ExcelInstance%
    【生成された変数】
    FirstFreeColumn
    FirstFreeRow
  3. Excel ワークシートから読み取り
    ”パラメーターの選択”の各項目について、それぞれ設定して保存ボタンを押下しましょう。
    【全般】
    Excelインスタンス:%ExcelInstance%
    取得:セル範囲の値
    先頭列:1
    先頭行:1
    最終列:%FirstFreeColumn – 1%
    最終行:%FirstFreeRow – 1%
    【詳細】
    セルの内容をテキストとして取得:OFF
    範囲の最初の行に列名が含まれています:ON
    【生成された変数】
    sendList

  4. 現在の日時を取得します
    ”パラメーターの選択”の各項目について、それぞれ設定して保存ボタンを押下しましょう。
    【全般】
    取得:現在の日時
    タイムゾーン:システムタイムゾーン
    【生成された変数】
    CurrentDateTime

  5. 変数の設定
    変数:thisMonth
    値:%CurrentDateTime.Month%

  6. 変数の設定
    変数:newColum
    値:5

  7. 変数の設定
    変数:newRow
    値:2

    *-*-* 以下のように表示されているとOKです! *-*-*
    *-*-*
  8. For each
    ”パラメーターの選択”の各項目について、それぞれ設定して保存ボタンを押下しましょう。
    反復処理を行う値:%sendList%
    保存先:CurrentItem

    ※以下は1~5はFor each内に設定します。

    1. 変数の設定
      変数:plan
      値:%CurrentItem[‘テンプレート’]%
    2. ファイルからテキストを読み取ります
      ”パラメーターの選択”の各項目について、それぞれ設定して保存ボタンを押下しましょう。
      【全般】
      ファイル パス:メールテンプレートのファイルパスを指定
      ※最後に%plan%.txtとしましょう。

      内容の保存方法:単一のテキスト値
      エンコード:UTF-8
      【生成された変数】
      template

    3. テキストを置換する
      ”パラメーターの選択”の各項目について、それぞれ設定して保存ボタンを押下しましょう。
      【全般】
      解析するテキスト:%template%
      検索するテキスト:#NAME#
      検索と置換に正規表現を使う:OFF
      大文字と小文字を区別しない:OFF
      置き換え先のテキスト:%CurrentItem[‘氏名’]%
      エスケープ シーケンスをアクティブ化:OFF
      【生成された変数】
      template

    4. テキストを置換する
      ”パラメーターの選択”の各項目について、それぞれ設定して保存ボタンを押下しましょう。
      【全般】
      解析するテキスト:%template%
      検索するテキスト:#MONTH#
      検索と置換に正規表現を使う:OFF
      大文字と小文字を区別しない:OFF
      置き換え先のテキスト:%thisMonth%
      エスケープシーケンスをアクティブ化:OFF
      【生成された変数】
      template
    5. メールの送信
      ”パラメーターの選択”の各項目について、それぞれ設定して保存ボタンを押下しましょう。
      ※今回Gmailからのメールを行いますが、Gmailでアプリパスワード発行が必要です。コチラ
      【SMTPサーバー】
      SMTPサーバー :smtp.gmail.com
      サーバーポート :465
      SSL有効 :ON
      SMTPサーバーには認証が必要 :ON
      ユーザー名:送信元メールアドレス
      パスワード :アプリパスワード
      信頼されていない証明書を受け入れます:ON
      【全般】
      送信元 :送信元メールアドレス
      送信者の表示名:○○○株式会社
      送信先 :%CurrentItem[‘メールアカウント’]%
      CC :未入力
      BCC :未入力
      件名 :%thisMonth%月の案件情報
      本文:%template%
      本文はHTML:OFF
      添付ファイル:未入力

      ※メールアドレスの誤り等、メール送信できない場合に、エラー発生時についての処理も必要ですが、今回は割愛させて頂きます。
      *-*-* 以下のように表示されているとOKです! *-*-**-*-*
  9. Excelを閉じる
    ”パラメーターの選択”の各項目について、それぞれ設定して保存ボタンを押下しましょう。
    【全般】
    Excelインスタンス:%ExcelInstance%
    Excelを閉じる前:ドキュメントを保存しない

  10. メッセージを表示
    ”パラメーターの選択”の各項目について、それぞれ設定して保存ボタンを押下しましょう。
    【全般】
    メッセージ ボックスのタイトル:メール送信
    表示するメッセージ:OK
    メッセージ ボックス アイコン:いいえ
    メッセージ ボックス ボタン:OK
    既定のボタン:最初のボタン
    メッセージ ボックスを常に手前に表示する:OFF
    メッセージ ボックスを自動的に閉じる:OFF
    【生成された変数】
    ButtonPressed
    *-*-* 以下のように表示されているとOKです! *-*-*
    *-*-*

実行

実行ボタンを押しましょう
メールが送られていることを確認ください!

おわり

以上でメールを一括送信するフローのご紹介終了となります。
ぜひ、試していただき、皆様の業務改善に繋がると嬉しいです!

『Android Java』の【ROOM】について 2/2


今回はAndroid開発にてDBを楽に扱える【ROOM】の紹介2/2です。
前回(2022/4/18) ⇒ 『Android Java』の【ROOM】について 1/2

※Android開発には『Kotlin』もあるのですが今回は『Java』を使用しています。

■リポジトリを作成する

DAOを作成すると次に、リポジトリを作成します。
リポジトリとは、複数のデータソースへのRepositoryアクセスを抽象化します。
リポジトリはアーキテクチャコンポーネントライブラリの一部ではありませんが、コードの分離とアーキテクチャのベストプラクティスとして推奨されています。Repositoryクラスは、アプリケーションの残りの部分へのデータアクセスのためのクリーンなAPIを提供します。

package ○○.model;

import android.app.Application;
import android.util.Log;

import androidx.lifecycle.LiveData;

import java.util.List;

import ○○.db.AppDatabase;
import ○○.db.user_table.User;
import ○○.db.user_table.UserDao;

public class UserRepository {
    private UserDao mUserDao;
    private LiveData<User> mLoginUser;
    private int flag = 0;
    //コンストラクタ
    public UserRepository(Application application) {
        AppDatabase db = AppDatabase.getDatabase(application);
        mUserDao = db.userDao();
    }
    //ログインしているユーザーを取得する
    public LiveData<User> getLoginUser(String name, String pass){
        mLoginUser = mUserDao.getLoginUser(name,pass);
        return mLoginUser;
    }
    //ユーザーを追加する
    public void insert(User user){
        AppDatabase.databaseWriteExecutor.execute(() -> {
            mUserDao.insertAcount(user);
        });
    }
}

■View Modelを作成する

リポジトリの次に、View Modelを作成していきます。
UIにデータを提供し、構成の変更に耐えることです。
ViewModelは、リポジトリとUIの間のコミュニケーションセンターとして機能します。ViewModelを使用して、フラグメント間でデータを共有することもできます。
ViewModelは ライフサイクルライブラリの一部です。

package ○○.viewmodel.user;

import android.app.Application;

import androidx.lifecycle.AndroidViewModel;

import ○○.db.user_table.User;
import ○○.model.Common;
import ○○.model.UserRepository;


public class UserDataViewModel extends AndroidViewModel {
    private UserRepository mRepository;

    public UserDataViewModel (Application application) {
        super(application);
        mRepository = new UserRepository(application);
    }

    //リポジトリにユーザー追加の処理を依頼する。
    public void insert(String name,String pass) {
        User user = new User(name,pass);
        mRepository.insert(user);
    }

    public void logout(Common common) {
        common.setId(0);
        common.setName(null);
    }
}

■Viewを作成する

次にViewを作成していきます!
Viewはその名の通り、フロント画面となります。
Viewは好きに自由に作ってください!

■初期データを登録する

最初のアクセスにてDBの中身を作ることもできるんです!
前回の最後に作成したRoomDatabaseに以下を追加していきます。

    private static RoomDatabase.Callback sRoomDatabaseCallback = new RoomDatabase.Callback(){
        @Override
        public void onCreate(@NonNull SupportSQLiteDatabase db) {
            super.onCreate(db);

            databaseWriteExecutor.execute(() -> {
                UserDao udao = INSTANCE.userDao();

                User userInfo = new User("User","Sample");
                udao.insertAcount(userInfo);
                User userInfo = new User("GustUser","password");
                udao.insertAcount(userInfo);
                User userInfo = new User("abridge","password");
                udao.insertAcount(userInfo);
            });
        }
    };

■Activityを作成する

最後にActivityを作ります。
Activityの中で、LiveModelとの接続すれば完成です!!
(※UserのDBを作成しましたので、ログイン画面の実装をしたいと思います。)

package abridge.example.vocabularybooks.view.login;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.ViewModelProvider;
import ○○.viewmodel.user.LoginViewModel;

public class LoginActivity extends AppCompatActivity implements View.OnClickListener {

    private LoginViewModel loginViewModel;
    private ProgressBar progressBar;
    private Common common;
    Button loginButton;
    Button gustlogin;
    EditText username;
    EditText password;
    TextView errortext;

    //Activityの作成処理
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);//親クラスの実行
        setTheme(R.style.AppTheme_NoTitleBar);//タイトルバーの非表示
        setContentView(R.layout.activity_login);//表示する画面の設定:ログイン画面
        common = (Common) this.getApplication();//APPLICATIONクラスの読み込み
        loginViewModel = new ViewModelProvider(this).get(LoginViewModel.class);//LiveDataクラスとの接続

        //UIの読み込み:ボタンやテキスト関連
        loginButton = (Button) findViewById(R.id.loginButton);
        gustlogin = (Button) findViewById(R.id.gustLogin);
        progressBar = findViewById(R.id.progressbar);
        username = (EditText) findViewById(R.id.userName);
        password = (EditText) findViewById(R.id.password);
        errortext = (TextView) findViewById(R.id.errorText);
        progressBar.setVisibility(android.widget.ProgressBar.INVISIBLE);
        loginButton.setOnClickListener(this);
        gustlogin.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.loginButton://ログインボタン押下時
                String input_name = String.valueOf(username.getText());
                String input_pass = String.valueOf(password.getText());
                //DB接続時にインジケーターの表示
                progressBar.setVisibility(android.widget.ProgressBar.VISIBLE);
                if (textcheck(input_name,input_pass)) {//空欄チェックが通ると下を実施
                    // getUserFlashCard()によって返されるLiveData
                    loginViewModel.getLoginUser(input_name,input_pass).observe(this, loginUser -> {
                        if(loginUser != null){
                            common.setId(loginUser.getUser_id());
                            common.setName(loginUser.getUser_name());
                            // MainActivityに遷移させる
                            Intent intent = new Intent(getApplication(), MainActivity.class);
                            intent.putExtra("Dialogflag",1);
                            startActivity(intent);
                            finish();
                        }else{
                            errortext.setText("※ユーザ名 または パスワードが間違っています");
                        }
                        progressBar.setVisibility(android.widget.ProgressBar.INVISIBLE);//インジケーターの非表示
                    });
                }
            break;
            case R.id.gustLogin://ゲストログインボタン押下時
                //DB接続時にインジケーターの表示
                progressBar.setVisibility(android.widget.ProgressBar.VISIBLE);
                //getUserFlashCard()によって返されるLiveData
                loginViewModel.getLoginUser("Sample","Sample").observe(this, loginUser -> {
                    if(loginUser != null){
                        common.setId(loginUser.getUser_id());
                        common.setName(loginUser.getUser_name());
                        // MainActivityに遷移させる
                        Intent intent = new Intent(getApplication(), MainActivity.class);
                        intent.putExtra("Dialogflag",1);
                        startActivity(intent);
                        finish();
                        progressBar.setVisibility(android.widget.ProgressBar.INVISIBLE);//インジケーターの非表示
                    }
                });
            break;
        }
    }

    public boolean textcheck(String username,String password){
        if (username.isEmpty() || password.isEmpty()) {
            errortext.setText("※ユーザ名 と パスワードは必須項目です");
            return false;
        } else {
            errortext.setText("");//エラーメッセージ欄のクリア。
            return true;
        }
    }
}

■データに接続する

アプリを起動すると、そのままDBが作られるので、ログインに成功するはずです!

以上で、『Android Java』の【ROOM】について2/2 終了となります。
ぜひ、AndroidのアプリでDBを扱う時がありましたら、【ROOM】を使用してみてください。

cssでチェックボックスとラジオボタンの装飾


よく使うので忘備録を兼ねてご紹介します。

■チェックボックス

See the Pen
checkbox
by matsu (@pochi__2828)
on CodePen.


HTML

  • ラベルをクリックした際もチェックされるように、<input>を<label>で囲む。
  • <input>の後に<span>を追加してクラス名を付与。

CSS

  • display:none;で元のチェックボックスを非表示に。
  • .check::beforeでチェックされる前の枠を装飾。
  • input[type=”checkbox”]:checked + .check::beforeでチェックされた後の枠を装飾。
  • input[type=”checkbox”]:checked + .check::afterでチェックマークを装飾。
  • マークはボーダーで生成。
  • safariは全体が下にずれるので、枠とチェックマークのtopを上方向にずらす。

■ラジオボタン

See the Pen
radio
by matsu (@pochi__2828)
on CodePen.


HTML

  • ラベルをクリックした際もチェックされるように、<input>を<label>で囲む。
  • <input>の後に<span>を追加してクラス名を付与。

CSS

  • display:none;で元のラジオボタンを非表示に。
  • .radio::beforeでチェックされる前の枠を装飾。
  • input[type=”radio”]:checked + .radio::afterでチェックマークを装飾。
  • safariは全体が下にずれるので、枠とチェックマークのtopを上方向にずらす。

新入社員座談会

 



私がエイブリッジを選んだ理由

S.S:就職活動中に求人サイトを見て、初めて「エイブリッジ」を知りました。(すみません^^)
その後、企業研究する中で、沖縄本社を置きながら、海外や県外に拠点があることや、社員に「ナナメを上を目指す」など、社員個々の挑戦を歓迎する社風に惹かれました。

I.S:進路指導の先生に就職について相談させて頂いた際に、「めっちゃ良い企業があるよ!」と薦められ、”めっちゃ”と言う言葉にそこまで推す企業ってどういう企業なのだろうと?コーポ―レートサイトを見て企業研究をしていく中で、興味を持ち、IT企業に進みたい希望があったため、応募しました。
S.Sさんと比較すると志望動機が弱くてすみません^^

U.I:中学生の頃からIT業界で働きたい思いがあり、沖縄県内のIT企業を探している際に、私もI.Sさんと同じく進路指導の先生に奨められました。もしかすると、進路指導の先生ではお薦めしたい企業沖縄No.1(笑)

S.Y:進学せずに就職をすると決め求人票を見ていると、漠然としていますが、幼少の頃から人の役に立つシステムを作りたいという願望があり、「農業 × IT」や海外など幅広く様々な挑戦をしているエイブリッジであれば、その夢を叶えられると思い応募しました。


全員が知らなかった「エイブリッジ」、知れば知るほどその魅力に惹かれたようです。


内定から入社までの気持ち

I.S:採用面接の際に、面接官の方に伝えたいことが伝えられずに、お見送りを覚悟していました(笑)どうして採用して頂いたのか聞いてみたいです^^
そのこともあり、ミスマッチが生じか無いか不安でしたね。ここだけの話、直ぐ辞めると思っていました。

S.Y:皆さん同じかと思いますが、やはり、社会人未経験及び、未知の世界であるIT業界で、これから一生続けられるか不安でした。その時に友人が気にかけてくれて、東京旅行に行きました。(周りから見ても、不安そうだったのかな)
そこで、電車内やカフェなどで技術書を読みながらプログラミング学習や資格試験の勉強をしている高校生などを見て、「不安に思うくらいなら、まずは行動しよう」と思い、それから、自身に何が足りないのかを問うて、社会人スキルについての本を買いました。

S.S:そりゃ、もう不安で不安でした。大学が文系ということもあり、IT知識ゼロで業界に入ることがとってもとっても不安でした。
また、面接から内定までTさん・Sさんのお2人しかお会いしていないため、会社で働いている方々の雰囲気が分からないため不安でした。
ただ、その不安は、入社して3日後程度して解消されました^^その当時の私に「大丈夫!心配しないで!」と言いたいですね。
とにかく親身になって私たちに寄り添って頂きました。研修スペースの隣のスペースでは、経理の皆さんが業務されていらっしゃいますが、皆さん全員でお顔合わせの練習に付き合って下さいました。
改めて、Tさん、Uさん、Oさんありがとうございます!

U.I:不安?無かったです。

S.Y:ないんか~い!

I.S:その自信はどこから。

U.I:悩んでも仕方ないことなので、根拠ないです(笑)


それぞれの不安を抱えながら入社。今現在の4人を見ているとその不安は解消されたように感じます。


エイブリッジの雰囲気

U.I:オフィスの皆さんが優しい!社会人として分からない・知らないことが多い、私たちに対して、「こんなことも分からないの?」ではなく、「なぜ、ダメなのか?」を含め、丁寧にご指摘頂きました。
そのご指摘がなかったら、恐らく、お客様の前で恥をかいたと思います。

I.S:そうですね、「なぜ、それがいけないのか?」と丁寧に指摘して頂けるので理解しやすかったです。また、顔合わせの練習を通常は1日に2時間程度ですが、6時間ほど練習にお付き合いして頂きました。

S.Y:上司のお2人(Tさん・Sさん)は厳しいですが、研修を終えて振り返ると私たちのことを思ってのこと分かり、とても感謝しています。もし、エイブリッジにご入社頂いた際には、真摯に受け止めて改善して欲しいなと思います。
(補足です、お2人は業務終了すると気さくな方なのでご心配には及びません。)

I.S:しっかりフォロー(笑)初めの1ヶ月は怖かったー。

S.S:皆さんと同じで、言葉が正しいのか分かりませんが、ファミリーのように「時に厳しく、時に優しく」でした。


エイブリッジは社員をファミリーとして考えているようですね。初耳です。


就活生の皆さんへ伝えたい

S.S:就職活動は様々な企業を見ることが貴重な機会です。その機会を利用して、企業研究は必ずしてください。その際にご自身がその企業でやりたいこと、成し遂げたいことを見つけて満足の行く将来設計ができるよう頑張ってほしいです。エイブリッジは挑戦し続ける皆さんをサポートします!

S.Y:企業を探すうえで、まずは好きなことを中心に探すことも良いかと思います。会社に入るとやりたくない仕事もやらなければならないケースが出てきます。好きなことであれば、何とか続けることができると私は思っています。

U.I:恥じることを恐れずに、とりあえず挑戦してほしいです。やってしまえば、大したことないことが殆どです。会社訪問などやオンラインインターンシップをエイブリッジは随時開催しておりますので、是非、ご参加頂きたいです。

I.S:私もそうでしたが、なんとなくIT業界で働きたいなど、まだ明確になっていない方もいらっしゃと思います。怒られるかもしれませんが、仕事をしながらどのような人生を送りたいのかで選ぶという方法もあります。エイブリッジに入社して行く行くは起業したいなど、エイブリッジはご自身のステップアップも大歓迎です。

全員:大変ですが、楽しみ・悩みながら悔いのないよう、頑張ってください!

知っていないともったいない!Power Automate Desktopとは?

Windows11から標準搭載されている「Power Automate Desktop」は、これから業務においてドンドン活用されると予測される、便利な無償自動化ツールです。

今回は、その活用方法をご紹介いたします。

Power Automateとは?

Power Automateは、RPA(Robotic Process Automation)と呼ばれる自動化処理サービスです。

RPAのメリットは主に2つが挙げられます。

  1. 人件費の削減
    従来、人が行っていた作業をコンピューター(ロボット)が自動で実行してくれます。例えば、複数人で行っていた作業を1人で対応することが可能となり、その分の人件費を削減することができます。
  2. ミスを防止できる
    コンピューター(ロボット)が決められた処理に処理に従って作業を実行するため、ヒューマンエラーを防ぐことができます。手動で業務を行うと、抜け漏れのミスが発生しやすくなります。また、ダブルチェックなども不要となるため、業務における無駄を解消するきっかけになるかもしれません。

RPAのデメリットは、自動で実行してくれるため、RPAのコンピューター(ロボット)に指示した内容に誤りがあった場合、途中で止まることなく作業を実行し続けてしまいます。そのため、必ず検証を行い問題がないか確認したり、定期的なメンテナンスで改善をすることが重要です。

Power Automate Desktopとは?

Power Automate Desktopは、Power Automateの中のデスクトップのサービスです。2021年3月にMicrosoft社よりWindows10であれば無償提供することが発表されて以降、一気に注目を集めています。

Power Automate Desktopでできること

Power Automate Desktopでできることは、次のようなものが自動化できます。

  1. 顧客リストから請求書作成
  2. 毎月リマインドメールを一斉送信
  3. 経費精算における入力順作業
  4. OCR(画像から文字列抽出)

弊社活用事例

弊社ではこれまで100人以上を超えるスタッフに給与明細を手作業によるメールで送信していました・・・。(3人5時間)

そこで、Power Automate Desktopを活用することで、1時間でメール送信することで、大幅な作業削減となりました。

Power Automate Desktopは難しい?

他のRPAツールにも同様のことが言えますが、プログラムコードの専門知識は一切不要です。視覚的・直感的にプログラムを作成することができるため、非常に簡単です。

実際の画面を見てみましょう。

例えば、Excelを起動させたい場合、アクション(操作)から「Excel」と検索して、「Excelの起動」をドラッグアンドドロップするのみです。

※動画

また、ブラウザ(例えばChrome)の立ち上げも同様に「新しいChromeを起動する」のアクションを追加することで設定が可能です。

Power Automate Desktopのインストール方法

Microsoftのページを参考にしてください。

まとめ

今回、ご紹介したメール送信以外にも様々なアクションが約340種類以上搭載されており、細かい指示を積み重ねて、処理を作成していきますが、必要なアクションを追加していくのみで、専門的な知識がほとんどありません。

是非、業務改善の1つツールとして利用してはいかがでしょうか。

★沖縄にてお仕事説明会開催中★

お仕事お探しの方 説明会を開催しております 

【日時】

平日 午前10時~11時/午後3時~4時 

20~30代で業界への希望されている方

お問い合わせお待ちしております。
https://abridge-co.jp/contact.html