【Slack】【Google Drive】【サイボウズ】クラウドツールを活用しまくろう!【チャットワーク】【backlog】

こんにちは!bibiです。

日々のコミュニケーションツール、活用していますか?

メールでやり取りを積み重ねているあなた!

電話で話したリマインドをメールで共有しているあなた!!

あの時の内容が乗っているメールどこだっけ・・・?
いつの電話であの案件のその内容、話したっけ・・・?

そんなことにならないように、やり取りができるクラウドのご紹介です!
もちろんっ全部無料!!

1.slack
使いやすさ★★★☆☆
共有しやすさ★★★☆☆
使い込み度★★★☆☆
https://slack.com/intl/ja-jp
UIはお洒落で、直感的に使えるので、相手とのやり取りに最適!
ただ、海外発のツールなせいか、シンプルすぎて素っ気ないと思うところもありますね。。

2.google drive (+スプレッドシート)
使いやすさ★★★★☆
共有しやすさ★★★★★
使い込み度★★★★★
https://www.google.com/intl/ja_ALL/drive/
グーグルに登録していれば誰でも使えます!
ドライブで素材受け渡しは容量多く使え、スプレッドシートではほぼエクセルを、クラウドで共有できます。
クライアントとのやり取りやイメージの共有、議事録共有など、これさえあればメールなんて何それ美味しいの?という感じです!

3.サイボウズ
使いやすさ★★★☆☆
共有しやすさ★★★☆☆
使い込み度★★★★☆
https://cybozulive.com
グループチャット、スケジュール管理、Todoリスト、共有フォルダなど、多機能で使い勝手がいいこのツール。
惜しむらくは、2019年4月にサービス終了との事・・・

4.backlog
使いやすさ★★★☆☆
共有しやすさ★★★★☆
使い込み度★★★★★
https://backlog.com/ja/
タスク管理・進捗管理などを多用するならこれ!元からgitが組み込まれているなど、諸々機能があるのでいろいろやりたい方はおススメ!
ただ、無料バージョンだとそこそこ制限がかかるので、ある程度使い込んだ後に有料化してもいいかも。。

5.チャットワーク
使いやすさ★★★★★
共有しやすさ★★★★☆
使い込み度★★☆☆☆
https://go.chatwork.com/ja/
グループチャット、ファイル共有、それに加えてユーザー追加もしやすく、かゆいところに手が届きまくっているツール!
直感的に把握しやすいため、とっかかり~中級者は愛用間違いなしです!
ただこれも、無料版だとグループ作成制限などあるので、使い込む場合は有料版をお勧めします。

僕は先方とのやりとりはgoogle driveのスプレッドシートちゃん、社内での案件共有はチャットワークちゃんと、使い分けております!

皆様も自分に合ったクラウドツールを使って、快適なWEBライフを☆彡

イラレ(illustrator)の機能!

どうも!ここ最近illustratorをさわることが多いtaeminです!

Photoshopは使えるけど、illustratorは苦手・・・・・・そんな人も多いのでは??
実は私もそうでした、、
レイヤーの概念、解像度、ベジェ曲線、などなどなど・・・Photoshopとは違う、このちょっと一癖あるillustrator・・・
けれど使い慣れてしまうと非常に使いやすいアプリケーションです!

今回は、illustratorを使ってみて、
「こんな便利な機能があったんだ!もっと早くに知りたかった!」
と思ったことを自分の覚書のためにも書いてみようと思います٩(‘ω’)و

 

まずは整列

こんな風にバラバラに並んだオブジェクトを横一列に整列させたい!
そんな時!

整列させたいオブジェクトを全て選択して、

整列パネル「オブジェクトの整列」の赤丸のところをクリック!

すると横一列になりました!

さらに等間隔にしたい時には、
「等間隔に分布」に赤丸をクリック!

すると綺麗な等間隔に!

何も知らない頃は、いちいち間隔を測って調整してました(;;)

ここで注意しなければならないのは、
同じグループのオブジェクト同士は整列できないということ。
一度グループ解除をしてから整列をしないと、一つのオブジェクトとして認識されるため整列ができません。
これはしばらく悩みました。。解決した時の喜びといったら・・・!!!一瞬バグかと思いましたもん・・・

Photoshopまたは、Photoshopに似た操作をするアプリケーションを長年使ってさわり慣れてるユーザーなら概念がそもそも違うのでillustratorは始め苦戦するかもしれません・・・
けれど一度使い慣れてしまえばillustratorは本当に使いやすく便利なアプリケーションです。
まず始めはいきなり一から作成しようとはせず、既存のillustratorデータを改変したりして操作や概念に慣れてから、その後で自分で作成してみたりすると飲み込み早く覚えられる気がします٩(‘ω’)و

Digital再考〜 唐揚げからDigitalを考える

こんにちは!鳩豆です!

Blogネタに困ったぞ、ということで、PCネタを書いていきます。
自分のためのメモ書きとして、鳩豆メモ略して「はとまめも」!

何はともあれ、Back to the Basic!
何事も基本から〜を軸にくだらない閑話をして参ります。

記念すべき初回は「Digital」とはなんぞや?のところから。
うむ。初回にふさわしい。

デジタル大辞泉さんの解説を見ると、、

「デジタル」とは

連続的な量を、段階的に区切って数字で表すこと。
計器の測定値やコンピューターの計算結果を、数字で表示すること。数字表示。

最後の「数字表示。」がなんかすごいシンプルで良い。

よく言われる
『デジタルってやつぁさあ、0か1の世界なのよ、要するにそういうこと。わかったな。それ以上聞かれても困るぞ。』などど自分も訳知り顔で言っていた。。。

『PCは基盤の上の電流の有無を表現するのに、つまりONとOFFを表現するのに0 と 1 が適していた。だから2進数が根本にある。つまり、デジタルとはさー、「ある」のか「ない」のかの情報のみを取り扱う世界なのさー。それ以外の情報はアナログなんよー』、、と。

しかし鳩豆は0と1の間の存在が気になっていた。

「0」とは「無い」を表す数字だ。「1」とは「ある」を表す一番最初の数字だ。そこで鳩豆は思った。

「あれ?0と1の間には、0.1があり、0.01があり、0.001があり、、、、無限じゃん。」「無限じゃん。」

そうなのだ。上の説明にどこか物足りない印象を持っていたのである。

そこで再考するにあたり、
鳩豆は唐揚げが大好きであるが、これを例に「Digital」を考えてみた。

「唐揚げを今食べたいか?」
という問いに対して「0」と「1」で考えてみたい。

A:「全く食べたくない、もう金輪際食べない!」(0)
B:「まさに今食べたかった!全部ちょうだいね!」(1)

しかし日常にはこれ以外の答えが無数にある。

C:「いやー昨日、居酒屋ですんごい食べたのよー、んもう、10個は食べたかなー、いや、ほんとは好きなのよ、ほんとに。」

D:「今はなー・・・、今日晩御飯、とんかつにしようかと思っててさー、夜にガツンとしたの食べるじゃない。ただ明日は食べたい。食べる!!明日もまた貰えるの?いいの?いいのね?明日は絶対食べるからね。とっといてよ!」

上の説明ルールを適用すると、
AとBがデジタル、CとDはアナログとなる。た、多分。

((・・・なぜだろう?どうでもいい話にどうでも良い例え話を乗っけてしまっている感じがする・・・))

しかーーーし、
ここで「デジタル大辞泉さん」のデジタルについての解説を思い出して欲しい。
「連続的な量を、段階的に区切って数字で表すこと。」

置き換えると

唐揚げが好きということ自体はおそらくこの先も連続的で変わらず、
その量(食べたい度数)が段階的にある、と
そう!CとDもしようと思えば数字で表現できる。た、多分。

例えば、
Cさんは「ほんとは好きなのに昨日も食べたから」と言っているが決して頂戴とは言っていない。数字で言うと 0.001101 あたりとか表現できそうだ。
Dさんは明日はもらう気満々だ。なので 0.1111111・・・ と表現できる!

そうなんです!!

この行為自体、この考え方自体、、
つまり、デジタルとはすなわち、「0と1だけの世界」ではなく、

 

「全てを数字に置き換えること」
まさに簡潔に言うと「数字表示」!!!
いや、すでに数字そのものがデジタルだったんだ!!

これが鳩豆流のデジタルの正しい解釈だーーー。
とりゃーーーーー。とりゃーーーーー。とりゃーーーーー。・・・・・

 

 

というところで、次回は「0」と「1」の隙間に焦点を当てたい。
くだらない説明にお付き合い頂きありがとうございました。

初詣に行って来ました!

どうもtaeminです!ヾ(*’▽’*)o
明けましておめでとうございます〜!
本年も宜しくお願いいたします〜!

今週頭に社員一同、明治神宮に初詣に行って来ました〜〜!
サプライドは明治神宮に隣接したビル内にあるオフィスなので、新年早々 明治神宮のパワーを頂いてきちゃいました٩( ‘ω’ )و

東京のど真ん中なのにも関わらず、こんなにも樹々が多くてとても神聖な感じです。

御殿が見えてきました!

社員みんなでお賽銭入れてご祈願してきましたよ(*’ω’*)
みんな何を願ったのでしょうね??( ̄人 ̄)oO(今年こそ素敵な彼氏くんができますように)

社員さんから聞いたのですが、拝殿の前にある2本の楠木は「夫婦楠」と言って、「夫婦円満」「家内安全」の象徴の御神木だそうです( ̄人 ̄)oO(どうか私の祈りを聞き届けたまへええ、、、あ、けど、夫婦楠だから既に相手がいないとダメなのかも??!Σ(T▽T;)わーん)

冗談はさておき、、、
参拝にて明治神宮のパワーも貰い、今年2018年もサプライドはさらに邁進いたす所存ですので、みなさま本年もお付き合いのほど宜しくお願いいたします!

それではtaeminでした~~~ヾ(*’▽’*)o マタネー♪

【中級者向け】ゲーム設計で学ぶobserverパターン!

こんにちは!
今日はプログラムの設計でよく見るobserverパターンについてだよ!

「こういう処理が走ったら、特定のオブジェクトにこういう処理をさせたい!」って時よくあるよね???ゲーム設計に限らずだと思うけど!

その時にif文case文地獄にならないように設計できるのがobserverパターン!

用意するのはざっくり2つ!

1、「こういう処理が走ったら」を感知するsubject

2、その感知に対してどういう処理を行うかのObserver

subjectがObserverを管理して登録したり削除したり感知するメソッドを用意!
Observerは感知された時に呼び出される処理を書く!

今回は花壇に水をやってそれを感知する花と花壇の水量を観察するクラスを作っていきましょう!
今回はC#で書くかphpで書くか迷ったけど最近phpばっかだからphp(言語は違っても考え方は同じだから!!!)

まずは花壇クラスを作成!上で言うsubjectの部分!
Flowerbed.php

<?php 
/**
 * Subjectクラス+ConcreteSubjectクラスに相当する
 */ 
class Flowerbed { 
  private $waterCnt; 
  private $listeners; 
  public function __construct() { 
    $this->listeners = array();
    $waterCnt = 0;
  }

  /**
  * 植物に水を与えたときに呼ぶメソッド
  */
  public function addWater()
  {
    $this->$waterCnt++;
    $this->notify();
  }

  /**
  * 水を与えた回数を取得
  */
  public function getWaterCnt()
  {
    return $this->$waterCnt;
  }

  /**
  * Observerを登録するメソッド
  */
  public function addListener(PlantListener $listener)
  {
    $this->listeners[get_class($listener)] = $listener;
  }

  /**
  * Observerを削除するメソッド
  */
  public function removeListener(PlantListener $listener)
  {
    unset($this->listeners[get_class($listener)]);
  }

  /**
  * Observerへ通知するメソッド
  */
  public function notify()
  {
    foreach ($this->listeners as $listener) {
      $listener->update($this);
    }
  }
}
?>

次はインターフェース部分!抽象メソッドを定義するよ!
PlantListener.php

<?php
interface PlantListener {
    public function update(Flowerbed $flowerbed);
}
?>

次は花壇の水量を観察するクラスを作っていこう!(上で言うObserverのとこ!)
AmountWater.class.php

<?php
  require_once 'PlantListener.php';
/** 
* Observerクラスに相当する 
*/
class AmountWater implements PlantListener { 
  public function __construct() { } 
  public function update(Flowerbed $flowerbed) {
   echo '現在の水量は'.$flowerbed->getWaterCnt().'です';
 }
}
?>

次は具体的な花のクラスを作るよ!今回はアサガオと向日葵!
Asagao.class.php

<?php
require_once 'PlantListener.php';

/**
 * Observerクラスに相当する
 */
class Asagao implements PlantListener
{
    public function __construct(){}
    public function update(Flowerbed $flowerbed)
    {
     echo 'アサガオが水をもらいました';
    }
}
?>

Himawari.class.php

<?php
require_once 'PlantListener.php';

/**
 * Observerクラスに相当する
 */
class Himawari implements PlantListener
{
    public function __construct(){}
    public function update(Flowerbed $flowerbed)
    {
      echo '向日葵が水をもらいました';
    }
}
?>

これで準備おK! あとは水をあげるボタンを用意してそれぞれのオブジェクトをよぼう!
observer_client.php

<?php
 require_once 'Flowerbed.php';
 require_once 'Himawari.class.php';
 require_once 'Asagao.class.php';
 require_once 'AmountWater.class.php'; 
//花壇と花を作成してSubjectに登録 
function createCart() { 
 $flowerbed = new Flowerbed(); 
 $flowerbed->addListener(new Himawari());
 $flowerbed->addListener(new Asagao());
 $flowerbed->addListener(new AmountWater());
 return $flowerbed;
}

session_start();
$flowerbed = isset($_SESSION['flowerbed']) ? $_SESSION['flowerbed'] : null;

if (is_null($flowerbed)) {
 $flowerbed = createCart();
 $_SESSION['flowerbed'] = $flowerbed;
}

$mode = (isset($_POST['mode']) ? $_POST['mode'] : '');

//水をあげた時にFlowerbedのaddWater関数を呼ぶ
if ($mode != '') {
 $flowerbed->addWater();
}

?>
<form method="post" action="">
 <input type="hidden" name="mode" value="add">
 <input type="submit" value="水をあげる">
</form>

これでobserver_client.phpを開いて水をあげれば下記のようになるよ!

今回は文字を表示させているだけだけど、実際に走らせたい処理を書いてあげるといいよ!
花が増えたり、観測者を増やしたいなら別途そのオブジェクトを管理するファイルを作って登録させるだけ!
これで条件分岐地獄にはならずにオブジェクトごとに管理もしやすくてバグも起こりにくいよ!

ちょっと長かったけどぜひこの設計やって見てね!
以上!河条でした^o^