【New PCセットアップ01】外部ディスプレイの接続とChrome、Google日本語入力の導入

f:id:sugalog:20200930092751j:plain

New PCセットアップ第01回の記事です。

情報系大学生が新しくPCを買ったらどんなことをするのか!
…の記事ですが、半ば自分用のメモになりそうです笑

さて今回の内容は、

です。
さすがにこのくらいのは分かるという方は本記事は飛ばしてください。


Who I am

記事の根拠付けのためにかんたんに。私はこのような者です:

  • 理工系大学の情報学部所属
  • 部活でプログラミングをしてロボットを動かしてます
  • 現在オンライン留学でAIの勉強中
  • 専攻分野はAI、深層学習、画像処理


外部ディスプレイの接続

f:id:sugalog:20200930110421j:plain
セットアップが終わり、記事執筆時にはこんな感じです

リモートワークが盛んになり、家で作業することの方が多いと思います。(実験科目すら家から動画でという大学もあるとか…)
そんな方におすすめしたいのがモニターに繋いで画面を拡張すること!
便利ですよ…!!

  1. PCと外部ディスプレイを(HDMI)ケーブルつないでおく

  2. 設定を開く:Win + i
    f:id:sugalog:20200930111540p:plain:w300

  3. システム → ディスプレイを開く
    f:id:sugalog:20200930111430p:plain:w300

  4. マルチディスプレイ 複数のディスプレイ のプルダウンを開き、「表示画面を複製する」を選択する
    f:id:sugalog:20200930111435p:plain:w300

  5. 成功!
    f:id:sugalog:20200930111441p:plain

おまけ:正面の外部ディスプレイをメインのデスクトップにしたい

  1. ディスプレイの2の方を選択(選択すると画像のように青くなる)
    f:id:sugalog:20200930111449p:plain:w300

  2. マルチディスプレイ これをメインディスプレイにするにチェックを入れる
    f:id:sugalog:20200930111453p:plain:w300

  3. 成功!
    f:id:sugalog:20200930111458p:plain


マウスの接続

いらないかな?と思いつつも、念の為載せておきます。

  1. 設定を開く:Win + i
    f:id:sugalog:20200930111540p:plain:w300

  2. バイスBluetoothとその他のデバイス
    f:id:sugalog:20200930113521p:plain:w300

  3. 流れに身を委ねる…
    f:id:sugalog:20200930113525p:plain:w200 f:id:sugalog:20200930113529p:plain:w200 f:id:sugalog:20200930113533p:plain:w200

  4. 成功!
    f:id:sugalog:20200930113516p:plain:w300


Google Chromeのインストール

Google Chromeをインストールする。
FireFoxChromeで悩むと思いますが、私はChromeを使っています。
(Edge?ああ、あのやけに重たいChromeインストーラーのことですね)

さて、インストール手順は以下の通り:

  1. Ghromeのインストーラ Edgeを立ち上げる。最初なのでポチポチ
    f:id:sugalog:20200930121021p:plain:w640
    f:id:sugalog:20200930121029p:plain:w640
    f:id:sugalog:20200930121036p:plain:w640

  2. Chromeで検索 f:id:sugalog:20200930121041p:plain:w640

  3. 一番上のサイトをクリック
    f:id:sugalog:20200930121047p:plain:w640

  4. Chromeをダウンロードをクリック
    f:id:sugalog:20200930121051p:plain:w640

  5. ダウンロードすると左下に出てくるChromeSetup.exeをクリックして起動
    f:id:sugalog:20200930121056p:plain:w640

  6. インストーラーの指示に従ってポチポチする
    f:id:sugalog:20200930121103p:plain:w300

  7. Chromeを起動(デスクトップにできたショートカット/Windowsメニューから)
    今回はすでにアカウントを持っているのでChromeをすでにご利用の場合はログインをクリック
    f:id:sugalog:20200930121107p:plain:w400

  8. メアドを入れる
    f:id:sugalog:20200930121112p:plain:w400

  9. パスワードを入れる
    f:id:sugalog:20200930121116p:plain:w400

  10. 成功!
    f:id:sugalog:20200930121000p:plain:w400

おまけ:タスクバーにピン留めしておく

タスクバー上のアイコンを右クリックでできる

おまけ:Chromeを規定のウェブブラウザに設定する

  1. 設定を開く:Win + i
    f:id:sugalog:20200930111540p:plain:w300

  2. アプリ → 規定のアプリ にて、Webブラウザのプルダウンを開き、 Google Chromeに変更する
    f:id:sugalog:20200930121005p:plain:w300

  3. 成功!
    f:id:sugalog:20200930121010p:plain:w300


私はGoogleアカウントを2つ使い分けているので、以上の手順を繰り返してこのようにしました↓ f:id:sugalog:20200930121014p:plain


Google日本語入力のインストール

IMEがデフォルトであるのに、何故わざわざインストールする必要があるかですが、変換の精度が全く異なるんです!
実際使用してみると、違いを実感できると思います。

  1. ChromeGoogle 日本語入力を検索
    f:id:sugalog:20200930133952p:plain:w400

  2. 1番上のサイトをクリック
    f:id:sugalog:20200930133956p:plain:w400

  3. Windows版をダウンロードをクリック
    f:id:sugalog:20200930134001p:plain:w400

  4. 同意してインストールをクリック
    f:id:sugalog:20200930134006p:plain:w400

  5. 保存先を指定して保存
    f:id:sugalog:20200930134010p:plain:w400

  6. ダウンロードが終わったら、Chrome上の左下からGoogleJapaneseInputSetup.exeをクリックしてインストーラーを起動
    f:id:sugalog:20200930134015p:plain:w400
    f:id:sugalog:20200930134019p:plain:w250

  7. すべてチェックを入れて(ると良いと思います)、OKを押す
    f:id:sugalog:20200930134023p:plain

  8. タスクバーに以下のように、青い丸が出たら成功!
    f:id:sugalog:20200930141335p:plain

おまけ:ユーザー辞書を使うべし

例えば名前、学籍番号、住所、郵便番号やメールアドレスなどを登録しておくとタイプが少なく済み、非常に楽になります。

  1. タスクバーの青い丸を右クリック → 辞書ツール を開く
    f:id:sugalog:20200930134032p:plain

  2. こんなのが開くので、
    f:id:sugalog:20200930134037p:plain

  3. このように登録する
    f:id:sugalog:20200930143001p:plain


終わりに

外部ディスプレイ・マウスの接続、ChromeGoogle日本語入力のインストールが今回の内容でした。
しかし、Google日本語入力を使わずデフォルトのIMEを使っていた方は多かったのではないでしょうか?
使ってみればわかりますので、ぜひインストールしましょう!

New PCセットアップ第01回の記事は以上になります。
次回はWindowsの基本的な設定をいじっていきます。 次次回はタスクバーをカスタマイズする 7+Taskbar Tweaker を導入していきます。

ではまた :)

【New PCセットアップ00】新しくPCを買いました。Inspiron 14 5000(5405)レビュー

f:id:sugalog:20200930103416j:plain

Introduction

先日新しくPCを買いました!Dell製のInspiron 14 5000シリーズ(5405)です。
それが届いたので、セットアップのためにやったことと、レビューを半分自分のために書いていきます。

今回は実機を触ってみたレビューです。
追記:2週間使ってみての感想を追記しました。

Contents

Who I am

記事の根拠付けのためにかんたんに。私はこのような者です:

  • 理工系大学の情報学部所属
  • 部活でプログラミングをしてロボットを動かしてます
  • 現在オンライン留学でAIの勉強中
  • 専攻分野はAI、深層学習、画像処理

Why I Update my PC

これまではYoga 330を使っていました。
3万円程度の低スペックPCですが、大学1・2年はOfficeとテキストエディタが動けばそれで十分でした。
しかしニューラルネットワークの分類器に学習させた際、友人のPCでは1時間切ったプログラムに4時間かかってしまい、「これはダメだな…」と購入を決意しました。

前々から、zoomを使用しながらExcelを開くなど複数の作業を同時に行うともっさりしていたので良い機会だと思ったのでした。

What I Bought

f:id:sugalog:20200930100314j:plain
公式サイトより

改めて、買ったのはDell製のInspiron 14 5000シリーズ(5405)です。PCを探す際の基準は

  • 予算は8万円(高いのは嫌でした)
  • 画面は13インチ以上(現在のが11.6で小さく感じていました)
  • CPUはCore i5程度(Celeronはもう嫌)
  • メモリは8GB以上(4GBには限界があるのです)

と欲張ったので、あまり該当の機種はありませんでした。
その中でInspiron 14 5405はこの要求をすべて満たしてくれました!

スペック比較は下に貼っておきます。どうもCoreシリーズには縁がないようです笑

Inspiron 14 5405 Yoga 330
価格(税抜) ¥53,882(2020年8月30日時点) ¥33,000(あいまい)
OS Windows 10 Home Windows 10 Home
CPU AMD Ryzen 5 4500U Celeron N4000
メモリ 8GB 4GB
ストレージ SSD 256GB eMMC 128GB
ディスプレイサイズ 14インチ 11.6インチ
ディスプレイ フルHD:1920×1080
非光沢
広視野角液晶
1366×768
光沢あり
タッチ可
バッテリー(実測) 約7時間 約10時間(あいまい)
重さ 1.40kg 1.25kg

How About the PC

詳細な解説は他サイト(↓)に任せて、私からは触ってみてのいち意見を。
デルInspiron14 5000(5405)の実機レビュー - the比較

First impression

梱包をといて最初に思ったのは「エデンって青いんだ…」です。
実機は結構青みがかっているので、グレーをイメージしていた私には少しショックでした。

f:id:sugalog:20200930072553j:plain:h200 f:id:sugalog:20200930072557j:plain:h250

AMAZING performance!

Zoomで話しながらでも、Chromeのタブ開きまくっても、Word・Excel・PPT・Teams・OneNoteを同時に開らいても、一切問題なく動きました!
前のYogaの性能に慣れきっていた私には驚愕の出来事でした。

CPUはAMD Ryzen 5 4500UでIntel製でないので性能がイメージしづらかったのですが、こちらもまた高性能でした。
私のようなPCゲームをしない大学生が、大学の課題やブラウジングに使うためには十分すぎる性能だと確信した瞬間でした。


P.S.

2週間使ってみて、気になったところ、気にならなかったところを追記しました。
キーボード周りが多いです。

f:id:sugalog:20200930082125j:plain:w300

気になったところ

  • deleteキーが押しづらい
    deleteキーは普通なら右上隅にあると思いますが、そこには電源ボタンがあります。
    deleteキーにはホームポジションのFとJにあるようなポッチがついていますが、それでも押しにくいです。
    Shift + deleteで完全削除などよく使うのに…。

  • home/endキーが使いづらい
    以前のYogaではFn + ←/→でhome/endだったのですが、今回はFn + F11/F12になっています。ひじょーに使いづらいです。

  • 指紋認証センサーがほとんど働かない
    オプションで付けた指紋認証センサですが、5回に1回ほどしか反応せず、今では最初からPINを打ち込んでいます。つける必要ないと思います。

  • 電池が持たない
    持ち運び用のYogaを使っていたため余計感じるのですしょうか。新品でも7時間しか持ちません :(

  • 画面がやや暗い
    晴れた日に明るい窓際で作業していると、ふとした時に感じました。それでも普通に使う分には問題ないと思います。

気にならなかったところ

  • 重くない
    前のYogaよりスマートフォン一個分重いので心配していたのですが、全く気になりませんでした。
    コロナ禍の影響で長距離の持ち運びはしていないので、断言はできませんが30分の通学では問題なしです!

  • ¥やBackspaceは問題なく押せる
    合体して小さくなっている¥とBackspaceや、少し小さい右Shiftですが、押し間違いはほぼありませんでした。この点は気にする必要はないと思います。


Summary

f:id:sugalog:20200930095802j:plain

いえいえ、控えめに言って 最高 です。
もちろん1kg切ったり、電池の持ちがもっと良かったり、グラフィックもスペックの良いものもあります。 しかし税込59,270円ですよ!これ以上何を望みましょうか…。

文系はもちろん、大半の理系大学生にも自信を持っておすすめできます!

私は大学入学当初はPCのことをよく知らなかったので、気軽に壊せるように3万円のYogaを2年間使いました。
しかし壊す予定がなく、4年間使いたいけどよく分からない人には超おすすめします。
※ ただし、3Dモデリングや動画編集などをしたい場合はメモリ16GBは必須だと思うので、ご注意ください。

価格.comと公式サイトのリンクを貼っておくので、参考にしてください :-)
価格.com - Dell Inspiron 14 5000 プレミアム Ryzen 5 4500U・8GBメモリ・256GB SSD搭載モデル
AMD Ryzen CPU搭載のInspiron 14インチ5405スリム ノートパソコン | Dell 日本


次回からはPCの環境のセットアップでやったことをつらつらと記事にしていきます。
次回からがほんとうに自分用のメモになりますね笑
では。

【RaspberryPi】ハードPWMではなくソフトPWMでサーボモータを制御 with C++

f:id:sugalog:20191003054017j:plain

ラズパイで同時に複数のサーボを使いたかった!

ラズパイでpwmを出力しようとすると、GPIO18(物理12pin)を使うのがフツーだと思います。
これがググるといっぱい出てくるハードpwmで、ハード的にpwm波を作ってくれます。

しかし「いっぱいサーボを使うんだ!」ということで、他の普通のGPIOピンからソフト的にpwm波を作り、サーボを制御させてみました。

言語はC++です。
Python?だって…C++の方が画像処理が速いんだい…(今は関係ない)

結論から言っておくと、サーボはうまくいきませんでした。
±2度程度をキュイキュイ言ってます(; x ;)


コンテンツ

使ったもの

raspberry pi zero 2でも3でも(多分4でも)変わらないです。
・sg90
  【仕様】  周期 :20 [ms]
       パルス幅:0.5~2.4[ms]
       回転角 :0~180 [度]

また以下の二つのライブラリを使いました。

・wiringPi.h
・softPwm.h

インストール方法はGoogle先生にお任せします。


配線

ラズパイ  16      39
      |      |
 sg90  オレンジ 赤  茶
          |  |
電池(5v)    (+)(-)

ラズパイはどちらも物理ピン番号です。


使った関数

int wiringPiSetup()

wiringPi.hよりGPIOピンの初期化です。
失敗すると-1を返します。

int softPwmCreate(int output_pin, int initial_phase, int palse_cycle)

softPwm.hよりソフトpwmを出力するピンのセットアップです。
成功で0を返します。
各パラメータは以下の通りです。

int output_pin
 出力するピンをwiringPi番号(BCM番号でも物理番号でもない)で指定。
 今回はwiringPi番号4(BCM番号23、物理番号16)を使用します。

int inital_phase
 …初期値を指定するらしい。
 らしい、というのもよく分かってないからです。
 とりあえず0にしておけ、と(^^;

int palse_cycle
 pwm波の周期を100[μs]単位で指定。
 サーボの仕様によるので、今回はsg90の仕様から200(20[ms])を指定します。

void softPwmWrite(int output_pin, int palse_width)

softPwm.hよりソフトpwm波を出力します。
この関数で別にスレッドを立てて、そこで時間を刻んでパルス波を出力する感じみたいです。
各パラメータは以下の通りです。

int output_pin
 出力ピン。
 こっちもwiringPi番号でピンを指定するので、今回は4。

int palse_width
 パルス幅を100[μs]単位で指定。
 サーボはこのパルス幅によってどの位置を向くかが決まる。
 sg90なら0.5~2.4[ms]でそれぞれ0~180度を向く。


テストコード

0から180の入力を待ち、それに応じた角度を向かせるようにしました。
終了時は”end"と打てば終了です。

入力が数字でない時にstoi関数が例外を投げるので、例外処理を入れました。
その入力は無視して、再入力を求めるようになっています。


コードは以下のようになってます。

#include <wiringPi.h>
#include <softPwm.h>
#include <iostream>
#include <string>

using namespace std;

float computePalseWidth(int angle) {
   // Servo can position only 0-180
   angle = angle >   0 ? angle :   0;
   angle = angle < 180 ? angle : 180;
   // Palse-width must be 0.5-2.4[ms]
   return angle / 180.0 * 1.9 + 0.5;
}

int main() {
   const int PWM_OUT = 4; //wPi番号
   const int PALSE_RANGE = 20; //[ms]

   // Init
   wiringPiSetup();
   softPwmCreate(PWM_OUT, 0, 10*PALSE_RANGE);

   cout << "When you finish : end" << endl;
   while (true) {
      float palseWidth;

      try {
         string angle;
         cout << "(0 ~ 180) -> ";
         cin >> angle;
         if (angle == "end") break;

         palseWidth = computePalseWidth( stoi(angle) );

      } catch (...) { /* Skip */ continue; }

      softPwmWrite(PWM_OUT, 10*palseWidth);
      delay(500);
   }

   // Finalize
   // Do nothing
}

そういえば、ハードpwmの時には出力を停止してあげる必要がありましたね?
そこはソフトpwmですから。
プログラムが終了すると自動で出力はなくなり、終了時に忘れずにやらなきゃいけないことはないのです!

見たまんまですが、computePalseWidth()ではパルス幅を0.5~2.4[ms]で求めています。


結果!

f:id:sugalog:20191003071757j:plain
駄目でした (omg!!

というのも、動くには動いたのですが、どうもパルス波が安定しない様子。
±2度くらいをキュイキュイ行ったり来たりです…。

配線が切れかかってるんだ!
と現実逃避気味にハードpwmでやってみると、お察しの通りピタっと止まってくれますね。

単純にソフトpwmの限界だろうと結論づけます ( ; ; )



ちなみに、地味にsoftPwmCreate()の第三引数とsoftPwmWrite()の第二引数が0.1[ms]単位なのに気づかず30分くらいはまりました。
intで表したい、かつ分解能がそんなに高くない、ということでのこの単位なのでしょうが…分かりにくいやい!


LEDとかの明るさを制御するためなら全然使えると思いますが、サーボでは使えませんね。
ラズパイで複数のサーボを別々に制御するために何か代案がないものか…要検討です、
といったところで、今回は終しまいです :)

【プログラマ必読】リーダブルコードに学ぶきれいなコードの書き方

リーダブルコードーより良いコードを書くためのシンプルで実践的なテクニック

f:id:sugalog:20190922103806j:plain 

 先日読んだこの本がとんでもなくためになったので、ぜひ紹介したいです!

 きれいなコードを書くためのポイント(?)みたいなのを知ることができます。

  この本は技術的に難しい例は扱っておらず、「きれいにプログラムを書くには」ということに焦点を当てているので、プログラム初心者でも読んで理解できると思います。1つでも言語の文法を理解していれば大丈夫そうな程度です。

 また私は、ある程度慣れてきた中級者にこそおすすめしたいですね!

 

各章 内容まとめ

 

2章 名前の情報を詰め込む】

  • 明確な単語を選ぶ

 例えばGetではなくFetchDownloadを使う

  • tmpretvalなどの汎用的な名前は避ける

 ただし、明確な理由があれば○

  • 具体的な名前を使って、物事を細かく説明する

 ServerCanStart()よりCanListenOnPort()の方が明確

  • 変数名に大切な情報を追加する

 ミリ秒を表す変数には_msを、エスケープが必要な変数名には前にraw_を付ける

  • スコープの大きな変数には長い名前を付ける

 逆にスコープが数行の変数には簡単な名前でかまわない

  • 大文字やアンダースコアに意味を込める

 クラスのメンバ変数の末尾にアンダースコアを付けてローカル変数と区別する

 

3章 誤解されない名前】

  • 誤解されない名前を検討する
  • 単語に対するユーザーの期待も考慮する

 例えばget()size()には軽量なメソッドが期待される

  • 上下の限界値を決めるときにはmax/minを用いる
  • 包含関係ならfirst/lastも可
  • 包含/排他関係ならばbegin/endがベター
  • ブール値はそれがブール値だと分かる様に、is/has/can/shouldなどを使う

 

4章 美しさ】

  • 繰り返されるコメントは上部でまとめて行う
  • 繰り返しのテストなどでシルエットがまとまらない場合は、思い切って関数化してしまう
  • 縦について整列させる

 引数の比較などがしやすくなる

  • ある場所でABCと並んでいたものを、他の場所でBACなどと並び替えない。
  • 空行を使って大きなブロックを論理的な段落に分ける

 分けた段落ごとにコメントを残すとより分かりやすくなる

 

5章 コメントすべきことを知る】

 コメントの目的はコードの意図を読み手に理解してもらうことである!

 コメントすべきでないこと:

  • コードからすぐに分かること
  • ひどいコード(例えばひどい名前の関数)のための補助コメント

 コメントを書くのではなくコードを直せ

 記録すべき自分の考え:

  • なぜコードが他のやり方でなくこうなっているか
  • コードの欠陥・修正ポイントなど

TODO

後で手を付ける

FIXME

既知の不具合があるコード

HACK

あまりきれいじゃない解決策

XXX

危険!大きな問題あり   などを使う

  • 定数値にまつわる背景

 読み手の手になって考える:

  • コードを読んだ人が「えっ?」と思うことを予想してコメントを
  • 平均的な読み手が驚くような動作

 data.clear()ではなく、vector<float>().swap(data)をメモリの解放をするために呼ぶことなど

  • ファイルやクラスには全体像のコメントを書く
  • 読み手が細部にとらわれないように、コードブロックにコメントを付けて要点をまとめる

 理解の補助になる。日本語の方が脳死できるぜ

 

6章 コメントは正確で簡潔に】

  • 複数のものを指す可能性があるそれ・これなどの代名詞を避ける
  • 関数の動作はできるだけ正確に説明する
  • コメントに含める入出力の実例はより有効なものを考える
  • コードの意図は詳細レベルではなく、高レベルで記述する

 × listを逆順にイテレートする

 〇 値段の高い順に表示する

  • よくわからない引数(ブール変数など)にはインラインコメントを使う

 例:Function(/* arg = */ …)

  • 多くの意味が詰め込まれた言葉や用言を使ってコメントを簡潔にする

 

【7章 制御フローを読みやすくする】

  • 比較はより安定した値を右に配置する

 while (bytes_received < bytes_expected)

  • if/else文のブロックは一般的に、肯定系・単純・目立つものを先に処理する
  • 3演算子do/whileループ・gotoなどは積極的に代替していく
  • ネストを浅くする

 早めに返す、特にガード節は有効・continueを使ってネストを削除するなど

 

【8章 巨大な式を分割する】

  • 説明変数を使う

 ・巨大な式を2段階に分けて理解していける

 ・簡潔な名前で式を説明することで、コードを文書化できる。要約変数ともいえる

  • ド・モルガンの法則を使って、論理式を整理する

 

【9章 変数と読みやすさ】

  • 変数を削除する

 ・制御フロー変数を削除する

  プログラムの実行を制御するためだけの変数で、実際のプログラムには関係ないデータを持つ変数

  • 複数のネストから抜けるために、ループを関数化してしまう

 breakが使えないからと、専用の変数を作らずに、ループ内部やループ全体を関数にする

  • 変数のスコープを縮める

 ・クラスのメンバ絵のアクセスを制御するために、メソッドをできるだけstaticにする

   メンバ変数とは関係がないことを明示できる

 ・C++if

   if (PaymentInfo* info = database.ReadPaymentInfo())

 ・JavaScriptの変数宣言にはvarをつける

  • 一度だけ書き込む変数を使う

 const/finalなどでイミュータブルにする

 また、変数に書き込む処理もできるだけ減らす

 

【10章 無関係の会問題を抽出する】

  • プロジェクト固有のコードから汎用コードを分離する

 言い換えると、無関係の下位問題を積極的に見つけて抽出する

  • 汎用コードは特別なディレクトリ(例:util/)に入れておく

 

【11章 一度に1つのことを】

  • 一度に1つのタスクを行う

 読みにくいコードがあれば、そこで行われているタスクをすべて列挙する。

 それらを別の関数(やクラス)に分割できないかトライ

 残ったものも、関数の論理的な段落として区分する

 

【12章 コードに思いを込める】

  • プログラムを言葉にする

 何をしたいのかを言葉にすることで、コードがより自然になる

 

【13章 短いコードを書く】

  • 不必要な機能をプロダクトから削除する。過剰な機能は持たせない
  • 最も簡単に解決できるような要求を考える
  • 定期的にAPIを呼んで、標準ライブラリに慣れ親しむ

 

【14章 テストと読みやすさ】

  • テストのトップレベルはできるだけ簡潔にする

 入出力のテストはひとパターンがコード1行で記述できると良い

  • バグの発見や修正がしやすいようなエラーメッセージを表示する
  • テストに有効な最も単純な入力値を使う

 穴をつぶすように一つの機能に対して、複数回のテストをするとよい

  • テスト関数に説明的な名前をつける

 test_<関数名>_<状況>など

 

【15章 「分/時間カウンタ」を設計・実装する】

例を用いたおさらい。

 

リーダブルコードを読んでみて

  あーなるほど、と思うことが散らばっており、久しぶりに他の人におすすめしたい本に会えたような気がします。

 また、本書の解説では、

  • 実際にやる
  • 当たり前にする
  • コードで伝える

の3ステップで定着させるよう提案しています。

 この本を読んだだけで、一朝一夕にはきれいなコードを書けるようにはなりませんが、読み返し読み返しコツコツやっていきましょう!ということだそうです。

 ご一緒にコツコツとやっていきませんか?というお誘いでした :)

 

Amazon リーダブルコード

Google Apps Scriptを使ってシンプルなチャットアプリを作った

Google Apps Scriptとは

f:id:sugalog:20190919214127p:plain 

 Googleが提供するプラットフォームで、Google DriveGmailなどを容易にいじることができます。またGoogleアカウントを持ってさえいれば、ブラウザから自由に開発することができます。 

 サーバーを用意しなくても日付や時間などをトリガーに様々なことをやらせることができるので、習得必至の技術だと思われます!

 今回はそんなGASを使って何かを作りたいなと思い、GASとチャットワークを連携させた簡単な予算管理アプリを作りました!

 

まずはGASの勉強から

 GASはJava Scriptベースなのですが、JSに触れるのは初めてです。そこでGASの勉強から始めました。

  参考にしたのはタカハシ(@ntakahashi0505)さんの以下のサイトです。 

f:id:sugalog:20190919220609p:plain

  https://tonari-it.com/google-apps-script-manual/

 この内、GASの基礎とスプレッドシート、チャットワーク関連のを見ながらやったのですが…なにもかも載ってました(^^;

 あとはこれの継ぎはぎでできそうです笑

 

GAS・チャットワークを使った班予算管理アプリ

 少し仲間内でこういうのあったらいいよねーと話していたこともあり、班の予算を管理を目的に作成しました。

 具体的には班費を使って買い物をした時、買ったもの・値段・個数をチャットワークに投稿することで、それをドライブ上のスプレッドシートに記録し、残りの班費を計算する、というものです。

 完成品は…

f:id:sugalog:20190919222551p:plain

f:id:sugalog:20190919222604p:plain

 上々じゃないでしょうか!!(だだ甘)

 タカハシさんのところで学んだlivedoorのサービスも利用して、天気予報も見られるようになってますね笑

 


 はい、というわけで、タカハシさんのサイトを紹介して完成品を載せて終わりました!

 書きたいことは色々あったのですが、全部書いてたらきりがない!なにせ全部が全部初めましてでしたからね…。

 細かいコードについても、暇を見つけて整理・投稿出来たらと思いながら、筆を置くことにします :)

 

参考

【保存版】初心者向け実務で使えるGoogle Apps Script完全マニュアル

Hello Hatena Blog World!

やりっぱなしはよくない。 

 折角何かを作ったのだから振り返りの意味も込めて、その軌跡をブログという形で残していこう!

と思っての初投稿です。

 

主な内容はプログラミング

に加えて、

  • HTML&CSSのお勉強
  • GASとSlackを連携させた簡単なチャットアプリ

などをとりあえずは書いていく予定です。

…書きあがるのはいつになることやら笑

 

 

Qiitaでもよかったのですが、何となく「ブログ」を書いてみたくて作ってみました!

こんなところで初投稿とさせてもらいます :)