とあるIT屋の独白

ITや経営について主に書きます

関数型プログラミングについて調べてみた

近頃、関数型プログラミングについて目にすることが多いですね。私もScalaを触っていることもあり、あらためて少し調べてみました。
関数型プログラミングと言う以上、ソースコードが基本的に関数で構成されるのが、大きな特徴です。関数で構成されているとは、得られる結果は渡した引数のみに依存するということです。通常のプログラミング言語(命令型と呼ばれている)との違いは、下記の記事にまとめられています。

関数型プログラミング
https://tech.nikkeibp.co.jp/atcl/learning/lecture/19/00031/00005/

この形にすることの大きなメリットは、副作用を発生させないことができる点です。副作用とはざっくり言うと、変数への値の再代入になります。変数の再代入が発生すると、値の変化が追いにくくなったりテストコードが作成しにくかったりするので、副作用を減らすことは意義があるわけてます。

【今注目されている!関数型プログラミングとは【初心者向け】】
https://techacademy.jp/magazine/16381

これらが特徴の関数型プログラミングですが、言語はいくつかの区分に分けられます。純粋関数型に区分されるのはHaskellとCleanだけで、Scala関数型プログラミングが可能な言語と位置付けられています(副作用をバリバリ書くこともできます)。

関数型言語
https://dic.nicovideo.jp/t/a/%E9%96%A2%E6%95%B0%E5%9E%8B%E8%A8%80%E8%AA%9E

上記の記事で、JavaScript関数型プログラミングが可能、とされてることは少し注目したい点かなと。フロントエンドは副作用をバリバリ使われてるイメージがありますが、Reactなどのフレームワークでは副作用を減らすような、お作法になってたりします。ここら辺の思想などは、下記の記事にまとめられています。

【なぜ昨今のJavaScriptではイミュータブルであるべきと言えるのか歴史的背景を踏まえて言語化する】
https://qiita.com/ttiger55/items/dc18b5ea2180b5059f26

また、JavaScript以外の言語でも、関数型プログラミングにあるようなメソッドもあったりするので、関数型の知識があることは無駄にはならないと感じます。

主体性とは何かについて考えてみる

よく職場で主体性を持って仕事しろ、と言われることがあると思います。もちろん主体性はあったほうがよいし、言われなくても仕事をしてくれる人は組織において、重宝されるでしょう。ただ、この主体性という言葉、ちゃんと意味を認識した上で使ってる人はほぼいないと思われる(意識する必要があるかは微妙だが…)ので、今回考えてみることにしました。
まず主体性の言葉の意味について、下記の記事にかかれています。主体的とは、自分で考え判断し行動できることで、やるべきことを言われる前にやる自主的とは分けて考えられています。

【「主体性・自主性」意味の違いとは?主体的な人材を育てるディズニーの教え方】
http://u-note.me/note/47485918

人に主体性を持たせると言っても、まだ経験が浅いのに主体的になれといっても厳しいので、非主体的な環境で訓練する必要があります。監督者はフィードバックを与え続けて、自ずから主体的になるのを見守る必要があります。

【「主体性」を育成したい人が、もれなく「葛藤」と「反発」の渦に巻き込まれる理由!?】
http://www.nakahara-lab.net/blog/archive/7414

さて、組織の中で経験を積み一人で主体的に仕事ができるようになったとして、それは本当に主体的なの?、という疑問は残ります。もちろん組織に貢献してはいるものの、それって組織に都合がいいように動けているだけで、自分自身の主体性が発揮できてるとは言えない状況も、ありえるわけです。

【上司が得意げに言う「主体性を持て」のワナ】
https://toyokeizai.net/articles/-/37582

下記の記事のような事例に、出くわしたことがある人もいるかと思いますが、自分がよかれと思ってやったことが組織にとってはマイナスになる可能性もあるわけです。もちろん、自分の主体性が組織の方向性と合ってれば存分に力を発揮できますが、そうじゃない場合も多いと思います。

【天才と仕事するのがしんどい】
https://www.yutorism.jp/entry/2019/11/17/090648

結論としては、組織で強要される主体性は自分が考える主体性とずれてる可能性があるということです。自分の主体性を発揮するには、まずそれがどういうものかを認識し、どういう環境なら発揮できるのかを考えるところから始める必要があると感じます。

口コミビジネスについて考えてみる

少し前に食べログの口コミの信頼性について、話題になった通り、口コミビジネスについて岐路にたっている感じを個人的にしています。というわけで、今回はこの口コミビジネスについて、取り上げてみたいと思います。
まず、この口コミですが信頼性のない情報も、多く含まれていて、ユーザ側も参考にしてよいものなのか判断に迷うと思います。気軽にユーザが口コミ投稿できるようにすること自体は良いと思うのですが、信頼性の低い情報も含まれてしまい、サービス側も品質維持の為の対応をせざるをえないし、ユーザ側も情報を吟味することが必要になり、悩ましい状況かなと思います。

【「信頼性の無い口コミ・評判」「無意味なインフルエンサー」はインターネット社会を壊す一歩前? | 人間力向上メディア】
https://iandyou-hitotoau.com/work/%E3%80%8C%E4%BF%A1%E9%A0%BC%E6%80%A7%E3%81%AE%E7%84%A1%E3%81%84%E5%8F%A3%E3%82%B3%E3%83%9F%E3%83%BB%E8%A9%95%E5%88%A4%E3%80%8D%E3%80%8C%E7%84%A1%E6%84%8F%E5%91%B3%E3%81%AA%E3%82%A4%E3%83%B3%E3%83%95.html

下記の記事にある通り、特に飲食店は来店した人の好みであったり通った頻度も口コミに影響してくるので、一律の評価は難しいかなと思います。逆に家電のように人の好みが評価に影響しにくいものなら、ある程度参考にしても大丈夫そうとのこと。

【「食べログ頼みの人」が知らない良店の見つけ方】
https://toyokeizai.net/articles/-/306209

人の好みによって評価が分かれるサービスは、評価者がどのような嗜好で、どのような背景の人かが大事な気がしてます。ので、オープンな評価の仕方ではなく、クローズドなコミュニティの中での評価が信頼性の高い情報になってくるのかなと感じます。

ライブコマースについて調べてみた

最近ニュースで、ちょくちょく目にするようになったライブコマース。今回はこのライブコマースについて取り上げてみます。
まずライブコマースとは何かというと、すごくざっくりいうとネット版の通販番組です。テレビと違う点は、リアルタイムで配信されるのと双方向のコミュニケーションが可能な点が挙げられます。また、日本でもライブコマースが出来るサービスがありまして、タレントが配信するものもあれば出品者ができるのもあったりします。

【2時間で3億円稼ぐユーザーも!? ライブコマースの市場規模や認知度、国内の代表サービス6選】
https://gaiax-socialmedialab.jp/post-53681/

中国ではライブコマースが盛り上がっていて、日本よりもインフルエンサーが購買に影響を与えているそう。また、実店舗をもつ事業者も活用しているようです。

【盛り上がる中国のライブコマース  日本ではどこまで普及してる?】
https://www.live-commerce.com/ecommerce-blog/china-live-commerce/

かたや日本では中々広がっていないというのが、現状だそう。もちろんインフルエンサーとかは配信自体は行っているものの、よりよいコンテンツ化という点では、まだ十分ではなさそうな感じ。

【期待が外れた「スマホで通販番組」 広がらないライブコマースの市場規模】
https://weekly.ascii.jp/elem/000/000/418/418205/

テクニカルライティングとは何か

ITエンジニアといえどコードを書くだけでなく、ドキュメント作成やコミュニケーションをとるときなど文章を書く場面があります。文章による伝達が上手にできると、無駄なコミュニケーションのコストが減るし、よりコードを書いたりすることなどに時間が割けるので、身につけておくべきスキルと私は感じています。
技術文書の作成方法について、「テクニカルライティング」と呼ばれています。下記の記事にテクニカルライティングが必要な状況等、取り上げられていますが、技術的な成果について非エンジニアに説明するのは中々骨が折れるし、理解もしてもらいづらいかなと思います。ので、いかに相手に伝えるかというスキルが必要になってくるわけです。

【成果を生み出すテクニカルライティング ―トップエンジニア・研究者が実践する思考整理法】
https://gihyo.jp/book/2019/978-4-297-10406-1/content/preface

テクニカル・ライティングが対象とする範囲ですが、技術関連の論文やレポートを対象とするのが狭義の意味ですが、最近は『正確かつ効果的に伝達するための文書作成技法』という解釈で使われていることもあるそう。なので、エンジニアのみならずビジネスに関わる人なども学ぶべき領域なのかなと。

【テクニカル・ライティングとは】
http://www.logicalskill.co.jp/writing/tw.htm

具体的にどのように文章を作成すれば良いか、下記の記事で触れらています。基本的には結論から書くことを意識して、短時間で相手が理解できるように心がけると良いかなと思います。結論・その理由・エビデンスが揃っていると、けっこう論理的な文章に見えたりすると感じます。

【実用文で「起承転結」はNG! 伝わりやすいテクニカルライティングを実践する4つのコツ】
https://codezine.jp/article/detail/11196

ウルトラワイドバンド(UWB)とは何か

少し前に、iPhone11に搭載されたことで話題になった「ウルトラワイドバンド(UWB)」。今回はこのウルトラワイドバンドとはなんぞや、ということについて取り上げます。
UWB自体はけっこう前からある無線の技術で、帯域幅を広くとることで高速化を実現します。帯域幅を広くとるということは、他の無線で使っている帯域もあるので、干渉しないようにするような工夫もしているそう。

【ITレポート(キーワード3分間講座)UWB
https://tech.nikkeibp.co.jp/it/article/Keyword/20070205/260724/

ただ、帯域幅が広いゆえに規格化するのが困難で、最近までチップの製造もほとんどされなかったようです。また、測位精度も高まったこともあってか、iPhoneへの搭載が決まって再び脚光をあびた形になります。

【「UWB」とは? - いまさら聞けないスマートフォン用語】
https://news.mynavi.jp/article/20190912-smartphone_word/

iPhone以外だと、IoTでの活用も検討されているそう。ようやく普及の目処がたったところで、チップメーカーも参入してきてるみたいです。

UWB、IoT市場で復活の兆し】
https://eetimes.jp/ee/spv/1802/28/news031.html

SREの役割とする範囲

最近はSREという言葉も、しばしば聞くようになってきて、システムの現場でも認知されつつあるのかなと思います。本ブログでも以前にSREについて取り上げましたが、あらためてSREってどういう担当領域になるのかというのを、今回書いてみたいと思います。
https://toaruit.hatenablog.com/entry/2018/01/02/015328

まずSREというと、インフラ担当というイメージがあると思います。下記はfreeeの事例なのですが、元々freeeではSREがサービスを横断するインフラに関する強い権限が与えられた結果、インフラ周りに関する運用やトラブル対応の負荷が上がってしまったそう。なので、負荷分散するために各サービスで変更等ができるような体制に変更したとのこと。

【「インフラ怖い」が生んだSREの業務負担――freeeはどう改善したか】https://www.atmarkit.co.jp/ait/spv/1907/22/news006.html

SREの認知度は高くなってきてますが、あまりがっちりとした役割定義がされていないのが現状かなと感じます。ので、SREを自社で設置する際は何をやるのかを、ある程度決めるべきかなと思います。
役割を決めるにあたって以下の記事は、参考になると思います。基本的な方針としては信頼性向上のために、いかに運用の設計をしたり自動化したりするのを実現していくか、というのがポイントかなと。

【今更だけど、SREとは何かについてまとめる】
https://qiita.com/masao-kunii/items/f96a89a0cdff66c108fd