ねこきっくぱんちのメモ帳

ITに関することいろいろめも。たまにアニメ。

新着メールの本文に、自分の名前が入っていたらslackに通知する

仕事でチームメーリスを利用していると、自分に関係がないメールもバンバン飛んできてしまう。
そうするとメールを見なくなってしまうが、自分宛てのものはすぐレスしたい。
けど自分宛てがきてるか探す必要があるが、探すのがめんどくさい。
だいたい一括チェック→既読にする(ぽちっ)の流れになる。

といったことを解消しようと、以下のサービスを利用してみましたが、結構使えそうなのでメモです。

■サービス
Microsoft Flow
・Slack

■設定
・MS Flowからテンプレートを選ぶ
・流れをGUIで設定する(プログラムは一切不要。すべてGUIのドラッグ&ドロップで設定可能)

■参考URL
[業務効率化] Microsoft FlowでSlackへの通知を自動化する | Developers.IO
Slack | Microsoft Flow
Office 365 のメール通知を Slack チャネルに転送する | Microsoft Flow

slackbotの利用サンプル

最近会社で初めた、ITやslackがわからない人でも簡単に設定できる、
slackbotで少々仕事が楽しくなる・便利になる工夫です。
※非IT企業での利用を想定しています。また、自分が実験中のものです。

■設定方法
 1.左ツリーから「slackをカスタマイズ」を選択
 2.slackタブを押す
 3.左にインプット文言、右にアウトプット文言を入れて保存
 ※インプットは基本、完全一致となる。
 ※アウトプットは、改行することでランダム表示ができる。


■設定事例

1.ものの貸し借り
チーム内で利用しているある物の貸し借りを以前はExcelでやっていた。
これをslackのチャンネルで管理するように変更。
→ただの記入だと誰もやらないので、入れるとちゃんとかわいいbotが返事くれることで、
みんながちゃんと書き込むようになる効果があった٩( 'ω' )و

IN
・借ります!/返しました!

OUT
・いってらっしゃい!
・ちゃんと返してくださいね?
・許可します!
・お疲れ様でした!


2.ディレクリのパス
月1でしか使わないようなファイルサーバのパスを探さなくてもよくなり便利

IN
・会議資料
OUT
ディレクトリまでの絶対パス(E:¥チーム名¥会議資料¥2018) など


3.メールの宛先
メーリスがない場合や、チーム内の数名だけに直で送りたい場合に便利

IN
・開発部
・営業部
OUT
・xx@aaa.com, yy@aaa.com, zz@aaa.com(コピペしてToやCCに貼り付けでOK)
・aa@aaa.com, bb@aaa.com, cc@aaa.com

4.今日の運勢
IN
今日の運勢,占い,運勢
OUT
◯△×など

5.社員情報
IN
田中太郎
OUT
社員番号:xxxxx  xx部xxチーム 社用ケータイ:080-1234-5678


実験中ですが、1がめちゃ利用頻度が高く、他はぱっとしない反応な状況。

VBA1 Book1の内容をコピーし、Boo2へペースト

■準備
excel(mac)
・環境設定>リボンとツールバー>メインタブ選択>開発にチェックを入れ適用

■マクロ
・ブック1の一部をコピー
・ブック2を開き、ペースト

■なかみ

Sub Macro1()
'
' Macro1 Macro
'

'
    Range("A1:A5").Select
    Selection.Copy
    Workbooks.Open FileName:= _
        "/Users/userName/Desktop/data.xlsx"
    Range("B1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
End Sub

即戦力とは?

転職がしやすく人材の流動性がかつてないほど高まっている昨今、
即戦力という言葉があります。

しかし、この即戦力という言葉をネット上でいろいろ調べてみると、
適応力、人間力、コミュニケーション力など、定性的でふわっふわしており、
特に経験の浅い若い方にとって、「正直よーわからん」の一言ではないのか?と感じます。

そのため「即戦力」をなるべく「汎用的で具体性のある言葉」で定義してみたいと思います。
また、それに伴う「引き継ぎ」に関する内容を個人的な経験をもとに記載してみます。

■記事のターゲット
この記事は
・まだ仕事の経験年数が浅く、これから転職や新しいPJに参画する方 ←一番メイン
・これから誰かに引き継ぎをする側の方
・改めて業務を見直して業務プロセス改善をした方がよいと思っている方
を想定して記載しています。


■即戦力とは?

即戦力とは
 ・参画から1〜2週間以内であらゆる状況(以下に記載)が把握できている
 ・3週目以降は指示がなくとも能動的に計画立てて動けてる
状況を作れる人材を即戦力と呼ぶ傾向がある気がします。

ここで1つ問題があります。
引き継ぐだけの情報を、引き継ぎ元の担当者は事前に用意してくれのでしょうか?


■引き継ぎの実態
引き継ぎをしてくれる方は、往々にして「そうそうこれが知りたいんだよ!」という、
クリティカルで適切な内容をまとめてはくれていません。
各種URL、アカウント一覧、格納先の情報ぐらいがせいぜいな場合がほとんどだと思います。

そのため、自分自身が能動的に情報を引き出していく必要があります。

では、PJ参画時に我々はどんな情報を能動的にヒアリングすればよいのでしょうか?


■即戦力になるために、まず何を考えれば良いか?
本記事で一番伝えたい項目になります。

PJに参画したのち、とにかく以下3点を最優先で把握することが必要です。
引き継ぎをしてくれる方がいない、もしくはわからない場合は、
「この情報は誰に聞けば手に入るか?」をなんとかヒアリングします。

 1.組織(アクター)把握
 登場人物として、「企業、チーム、個人、関連会社」を聞きます。
 それぞれの発言力の強さ、権力バランス、指揮系統も聞けると尚良い。
 
 2.業務の流れ把握(物流、商流、システム)
 扱う内容に依存しますが、物理商品が存在する場合はその物流を、
 また受発注が行われる商流の流れ、物流と商流が絡み合う情報システムの流れを把握します。
 
 在庫管理、売上情報管理、問い合わせサポートなど、
 現在多くはwebサービス化しており、それらの基本的な利用方法を、
 業務の流れを踏まえどのように利用されているか?を確認します。
 
 3.ミッション把握(プロジェクト、企業、チーム、個人)
 プロジェクトとは、始まりと終わりがあるものを指します。
 ※プロジェクトの定義は様々であるため、PMPやPRINCEⅡなどを参考にすると良いかもしれません。
 
 そのプロジェクトはどのようなミッション(ROI)があるのか?を確認します。
 ※可能であれば、(まず無いですが)ビジネスケースのようなものを見せてもらうと良いです。
 また、そのPJを実行するための関連企業、チーム、そして自分自身には、
 どのようなことがミッションとして求められているのか?をヒアリングします。

上記3点を最優先で自分から確認することができれば、
おそらく多くの場面で「即戦力」「優秀な人材」とのラベルを獲得できると思います。

次点として余力があれば以下のことも聞けるだけ聞けると良いかもしれません。

 ・企業、チームのローカルルール、共通認識、共通言語
 ・会議体
 ・課題一覧 など

さらに踏み込むと、これらの問題点をexcelなどメモレベルで良いので記載し、
改善提案がすぐにできると、非常に高い信頼が生まれ、今後の単価交渉にネタにもできます。


■最後に...
雑でかつ偉そうにいろいろと記載していますが、僕自身のキャリアとして、現在は30歳前後となる年齢であり、2回の転職をしています。中小企業→ベンチャー企業(数名規模,FinTech絡み)→大手企業(←イマココ)という経緯を辿っており、いずれも金額や待遇は転職するたび大幅に上がっています。

業務内容としては、社内外にわたり、自社製品のプロダクトマネージャー、アジア海外支店の立ち上げ(1年程海外勤務)、新規webサイトの提案・設計・構築、アプリ開発(上流〜下流全て)など多岐にわたった業務をしてきました。
技術レベルは高くありませんが、サラリーマンとしてのOSというか仕事を前に進める力(段取り力、調整力、交渉力、問題解決能力、論理的思考など)が、どこにいっても高く評価されており、常に良いポジションを掴めています。
※私大文系卒で技術では勝てないので、得意な分野で勝負しています。

転職や人材の流動性が高い今の時代は、積極的に動いていかないと自らの理想に手が届きません。色々な情報商材がありますが、結局は自分で考えて自分で行動した結果だけが血肉になり、意味や価値があるものになると自分は考えています。

本記事はちょっとした経験則によるただの情報共有ですが、何かしらの参考になれば幸いです。

checkio home MonkeyTyping

checkio home MonkeyTyping

def count_words(text, words):
    
    cnt = 0

    for w in words:
        if (w in text.lower()) == True:
             cnt += 1
        else:
            continue #pass
    return cnt


if __name__ == '__main__':
    #These "asserts" using only for self-checking and not necessary for auto-testing
    assert count_words("How aresjfhdskfhskd you?", {"how", "are", "you", "hello"}) == 3, "Example"
    assert count_words("Bananas, give me bananas!!!", {"banana", "bananas"}) == 2, "BANANAS!"
    assert count_words("Lorem ipsum dolor sit amet, consectetuer adipiscing elit.",
                       {"sum", "hamlet", "infinity", "anything"}) == 1, "Weird text"
    print("Coding complete? Click 'Check' to review your tests and earn cool rewards!")

・単語が一致した場合にカウントアップ

checkio home Non-Unique Elements

checkio home Non-Unique Elements

def checkio(data):

    list = data
    list_cnt = []
            
    for n in list:
        if list.count(n) > 1:
            list_cnt.append(n)
        else:
            continue

    return list_cnt

#Some hints
#You can use list.count(element) method for counting.
#Create new list with non-unique elements
#Loop over original list


if __name__ == "__main__":
    #These "asserts" using only for self-checking and not necessary for auto-testing
    assert list(checkio([1, 2, 3, 1, 3])) == [1, 3, 1, 3], "1st example"
    assert list(checkio([1, 2, 3, 4, 5])) == [], "2nd example"
    assert list(checkio([5, 5, 5, 5, 5])) == [5, 5, 5, 5, 5], "3rd example"
    assert list(checkio([10, 9, 10, 10, 9, 8])) == [10, 9, 10, 10, 9], "4th example"
    print("It is all good. Let's check it now")

checkio home theMostWantedLetter

checkio home theMostWantedLetter

from collections import Counter
import re

def checkio(text):

    #1.文字列操作(データ加工)
    str = text.lower() #大文字から小文字
    str2 = str.replace(" ", "") #空白を削除
    str3 = re.sub(r'[!-/:-@[-`{-~]', "", str2) #ASCII記号を削除
    str4 = re.sub(r'[0-9]', "", str3) #数字を削除
    
    #2.各文字数をカウント
    mwl = Counter(str4)
    
    #3.文字数が最大のアルファベットのみ格納
    list = []
    cnt = 0    

    for key,value in mwl.most_common(): 
        if cnt <= value:
            list.append(key)
            cnt = value
        else:
            break
    print(list)
    
    #4.アルファベット順にソート 
    list.sort()

    return list[0]

#Lorem ipsum dolor sit amet
if __name__ == '__main__':
    #These "asserts" using only for self-checking and not necessary for auto-testing
    assert checkio("Hello World!") == "l", "Hello test"
    assert checkio("How do you do?") == "o", "O is most wanted"
    assert checkio("One") == "e", "All letter only once."
    assert checkio("Oops!") == "o", "Don't forget about lower case."
    assert checkio("AAaooo!!!!") == "a", "Only letters."
    assert checkio("abe") == "a", "The First."
    print("Start the long test")
    assert checkio("a" * 9000 + "b" * 1000) == "a", "Long."
    print("The local tests are done.")

・collections>Counter