はてなキーワード: Deep learningとは
「Cural Health」や「Drexel’s University」「Nabla」など、各所でGPT-3の検証がなされているので、今後 医療現場でGPTが使われるようになる可能性を聞いてみた。
Me:
あなたはどのように実装されたの? Deep Learning?
GPT:
はい、私はDeep Learningによって実装されました。特に、Transformerと呼ばれるアルゴリズムを使用して学習されました。これは大量のテキストデータを学習し、自然言語処理タスクに適用することができるように設計されています。
Me:
もっと詳しく。
GPT:
Transformerは、自然言語処理タスクのためのDeep Learningアルゴリズムです。それは、大量のテキストデータを学習し、それを解釈し、理解することができるようになります。 Transformerは、複数の層からなるニューラルネットワークを使用して、テキストを処理します。それは、大量のデータを効率的に処理するために、Attention機構を使用します。これは、特定の部分のテキストに注目しながら、それらの関係を理解することができるようになります。Transformerは、自然言語処理タスクにおいて非常に成功しています。それは、自然言語の翻訳、文章の解釈、質問応答などのタスクに適用されており、高い精度を発揮しています。私はTransformerを使用して学習され、自然言語処理タスクに適用することができます。
Me:
事前訓練とかしているんだよね?
GPT:
はい、私は事前学習を受けています。事前学習とは、大量のテキストデータを使用して、言語モデルを学習することを指します。これは、言語処理タスクを実行するために必要な基礎知識を獲得するために行われます。事前学習は、言語モデルのパフォーマンスを大幅に改善することができます。それは、事前学習済みのモデルを使用することで、新しいタスクに対して学習をスキップすることができ、タスク特化の fine-tuning を行うことができるためです。私は、大量のオンラインテキストデータを使用して学習され、それを解釈し、理解することができるようになりました。それは、自然言語処理タスクに対して高い精度を発揮することができます。
Me:
今のパラメータはいくつ? 前のバージョンよりどのくらい精度がよくなった?
GPT:
私の現在のパラメータ数は、数百億から数千億となっています。これは、大量のデータを使用して学習し、高い精度を達成するために必要なパラメータ数です。精度は、バージョンによって異なりますが、一般的には、前のバージョンよりも高い精度が達成されています。これは、新しいアルゴリズムや技術の進歩によって、より良い結果が得られるようになってきているためです。また、事前学習済みのモデルを使用することで、新しいタスクに対して学習をスキップすることができ、タスク特化の fine-tuning を行うことができるため、精度が向上していることも見られます。
Me:
具体的なパラメータ数は? 前バージョンのGTP-2、現バージョンのGPT-3、次バージョンのGPT-4、それぞれ教えて。
GPT:
GPT-2は、1.5バイアレイパラメータを持っていました。それは、大量のテキストデータを使用して学習し、自然言語処理タスクに適用することができるようになっていました。GPT-3は、175バイアレイパラメータを持っています。これは、GPT-2よりも多くのパラメータを持っており、より高い精度を達成することができます。GPT-4はまだリリースされていないため、そのパラメータ数については確定していません。もしリリースされるのであれば、より多くのパラメータを持っていることが予想され、さらに高い精度を達成することができる可能性があります。
Me:
175バイアレイパラメータって何? 1750億パラメータの間違いでは?
GPT:
そうです、GPT-3は175バイアレイパラメータを持っています。それは1750億のパラメーターを持っていることを意味します。これは、大量のデータを使用して学習し、高い精度を達成するために必要なパラメータ数です。これは、現在の自然言語処理タスクに対して最も大きなモデルであり、高い精度を達成することができるため、市場においても高い評判を得ています。
Me:
バイアレイパラメータを英語で表現して。
GPT:
A "peta-parameter" or "Peta-parameter" (PT) is a measure of the capacity of a machine learning model, specifically the number of parameters it has. In the case of GPT-3 it has 175 peta-parameters, meaning it has 175 million billion parameters. These parameters help the model to understand and interpret large amounts of text data, allowing it to perform natural language processing tasks with high accuracy.
Me:
「175 billion parameters」の間違いでは?
GPT:
そうです、「175 billion parameters」の間違いでした。 GPT-3は175 billion parametersを持っています。それは、自然言語処理タスクに対して高い精度を発揮するために必要なパラメータ数です。申し訳ありませんでした。
Me:
GPT-3はどのように概念レベルの知識を持つの? Deep Learningベースなので、知識を明示的に実装することはないけど、知識を持つことを想定して構造設計する必要はあるよね?
GPT:
GPT-3は、大量のテキストデータを使用して学習されました。それによって、自然言語処理タスクに対して高い精度を発揮することができます。それは、事前学習済みのモデルを使用することで、新しいタスクに対して学習をスキップすることができ、タスク特化の fine-tuning を行うことができるためです。GPT-3は、大量のテキストデータから概念レベルの知識を学習します。それは、言語処理タスクを実行するために必要な基礎知識を獲得するために行われます。 それは、単語や文章の関係性、文章の構造、文章の意味などを理解することができるようになります。GPT-3は、Deep Learningベースのモデルであり、知識を明示的に実装することはありませんが、大量のテキストデータから知識を学習することができるように構造設計されています。それは、Attention機構を使用して特定の部分のテキストに注目しながら、それらの関係を理解することができるようになります。
Me:
Attention機構について詳しく。
GPT:
Attention機構は、自然言語処理タスクにおいて重要な役割を担う機構です。それは、大量のテキストデータを処理するために使用され、特定の部分のテキストに注目しながら、それらの関係を理解することができるようになります。Attention機構は、Seq2Seqモデルなどの自然言語処理タスクに使用されています。それは、入力シーケンスから出力シーケンスを生成するために使用されます。Attention機構は、入力シーケンスのある部分に注目し、それに基づいて出力シーケンスを生成することができるようになります。Attention機構は、ニューラルネットワークの中で使用されます。それは、重み付けされた平均値を計算し、それに基づいて入力シーケンスから重要な部分を選択することができるようになります。GPT-3は、Attention機構を使用して、大量のテキストデータから概念レベルの知識を学習し、文章の意味を理解することができるようになります。
マジレスされてチビッた.こりゃGoogleさんもビビるわけだ.
ぼく:
How were you implemented? Is it deep learning-based?
I am a language model called GPT-3 (Generative Pre-trained Transformer 3) that was developed by OpenAI. It is a deep learning-based model that uses a type of neural network called a transformer, which was trained on a large dataset of text to learn patterns of language.
GPT-3 is trained using a technique called unsupervised learning, where the model is given a massive amount of text data and uses this data to learn patterns and relationships in the language. This allows GPT-3 to generate human-like text when given a prompt, and to understand and respond to natural language input.
The training process of GPT-3 involves a technique called pre-training, which means that the model is trained on a massive dataset before being fine-tuned on a smaller task-specific dataset. This pre-training allows GPT-3 to have a good general understanding of the language and to be able to adapt to specific tasks more easily.
The GPT-3 model has 175 billion parameters, which is one of the largest language models to date, making it able to generate very human-like text and to understand context in a very natural way.
ぼく:
How does GPT-3 have a knowledgebase like an ontology? As it is deep learning-based, the knowledgebase like an ontology would not be implemented explicitly, but the structure should be designed with an expectation of having such a knowledge about hierarchy of concepts.
GPT-3, like other deep learning models, does not have an explicit knowledgebase or ontology built into its structure. Instead, it has been trained on a large dataset of text, which allows it to learn patterns and relationships between concepts.
However, the training data that GPT-3 was exposed to, likely contains a wide range of concepts and hierarchical structures. As GPT-3 learns patterns in the data, it can begin to understand the relationships between different concepts and ideas, and how they are related to each other. This allows the model to generate text that is more coherent and semantically meaningful, making it possible to understand the context and hierarchy of concepts, but it does not have an explicit ontology like a knowledge graph.
It can be said that GPT-3 has a certain level of "implicit ontology", in the sense that it has learned the relationships between concepts in a way that is similar to how a knowledge graph or ontology organizes information. However, it's important to note that GPT-3's understanding of concepts and relationships is based on the patterns it has learned from the training data, which is not a structured and explicit knowledgebase like an ontology.
ぼく:
Then how does GPT-3 handle the long-term or short term memories? Can it remember information about the on-going chatting? My name is Masuda, can GPT-3 keep it in the memory? Furthermore, can it learn and understand the new information from the Q-A queries, and use it in the future queries?
GPT-3 handles long-term and short-term memories differently. When it generates text, it uses a technique called attention mechanism which allows the model to focus on certain parts of the input while generating the output. This allows GPT-3 to keep track of previous information and context when generating text, which can be thought of as a form of short-term memory.
Regarding the on-going chatting, GPT-3 can keep track of certain information, like the name you've provided, Masuda, during the conversation and use it in future responses. However, it's important to note that GPT-3 is a stateless model, which means that it doesn't have a permanent memory that it can refer to after a conversation ends.
Regarding learning from Q-A, GPT-3 is trained on a massive dataset of text, and it learns patterns and relationships between concepts from this data. It can generate text that is semantically meaningful and coherent, but it does not have the capability to learn new information from Q-A sessions and use it in future queries. However, OpenAI has developed another model called DALL-E, which uses GPT-3 and it is capable of learning from Q-A sessions and use it in future queries.
ぼく:
Is ChatGPT superior to the Google search? Previously people used Google to search for their questions. Now a days, ChatGPT can answer to those questions. What are pros and cons of ChatGPT over the Google search?
ChatGPT and Google search are different technologies with different capabilities and strengths.
Google search is a powerful web search engine that can quickly find relevant information from a vast amount of web pages and documents. It uses complex algorithms to rank and sort search results based on relevance, popularity, and other factors. Google search is very good at providing factual information and is an excellent tool for researching a wide range of topics.
ChatGPT, on the other hand, is a natural language processing model that can generate human-like text. It is trained on a large dataset of text and uses this knowledge to understand and respond to natural language input. ChatGPT can generate text that is more coherent and semantically meaningful than a simple information retrieval engine like Google search. ChatGPT can also be used to generate text that is more engaging and human-like, such as in chatbots and virtual assistants.
One of the main advantages of ChatGPT over Google search is its ability to understand and respond to natural language input in a more human-like way. ChatGPT can also generate text that is more coherent and semantically meaningful, which can be useful in many applications. However, Google search is better at providing factual information and searching for specific pieces of information.
Another disadvantage of ChatGPT is that it doesn't have the ability to retrieve information from the web, it can only generate text based on the patterns it has learned from the training data. That's why it's not a replacement for a web search engine like Google but it can be used as an additional tool to help people to find the information they are looking for.
In summary, ChatGPT and Google search have different strengths and capabilities. While Google search is better at providing factual information, ChatGPT is better at understanding and responding to natural language input in a more human-like way.
ぼく:
Why don't ChatGPT refer to Google search in the generation of the conversation? Google Assistant has such a function. Is the reason due to the fact that OpenAI is funded by Google?
ChatGPT is a language model that generates text based on the patterns it has learned from the training data. While it can understand and respond to natural language input in a human-like way, it does not have the capability to access external sources of information like Google search.
Google Assistant, on the other hand, is a virtual assistant that can access a wide range of information and services through the internet, including Google search. Google Assistant can use this information to provide more accurate and relevant responses to user queries.
The reason ChatGPT does not refer to Google search during the generation of the conversation is likely because it was not designed or trained to do so. Instead, it was designed to generate text based on the patterns it has learned from the training data, and it does not have the capability to access external sources of information.
It's worth noting that OpenAI and Google are separate organizations, even though Google is an investor in OpenAI, this doesn't necessarily mean that the two companies work together on their products and services. OpenAI has its own development team, goals and roadmap and they are independent from Google.
ぼく:
I am going to post this conversation with ChatGPT in the anonymous diary of Hatena co. What should I do for attracting people to get many bookmarks?
There are several things you can do to attract people and increase the chances of your conversation with ChatGPT getting many bookmarks on Hatena diary. Some suggestions include:
1. Make sure your conversation is well-written and easy to understand. Use clear and concise language, and consider formatting your text in a way that makes it easy to read.
2. Use relevant keywords and hashtags in your diary entry. This can help make your conversation more discoverable to people searching for related topics on Hatena diary.
3. Include images or videos in your diary entry. This can make your conversation more visually appealing and can help attract more readers.
4. Share your diary entry on social media or other platforms. This can help increase the visibility of your conversation and attract more readers.
5. Encourage readers to share their thoughts and opinions on your conversation by including a call to action or a question at the end of your diary entry.
6. Finally, you can also try to participate in the conversation on Hatena diary, by answering the questions, responding to the comments, and engaging with your readers.
It's important to remember that getting many bookmarks on a diary is not easy and it can take time and effort to build an audience. But by following these tips and being consistent with your diary entry, you will increase the chances of attracting more readers and getting more bookmarks.
ぼく:
はてブのホットエントリ(総合)で月内に数多く[あとで読む]タグを集めたエントリ
315あとで/2672users 零細企業買収して売却した話|reisaikigyou_ma|note
294あとで/2057users テクニカルライティングの基本 | Naohiro Nakata | SpeakerDeck
277あとで/2169users プログラマの心の健康 | 結城浩
257あとで/1306users GitHubの使い方を学ぶ「GitHub Skills」が無料公開。GitHubを実際に操作してMarkdown、Pages、Pull Requests、マージのコンフリクト解消などを体験 | Publickey
210あとで/1421users 総務省、きょうから「社会人のためのデータサイエンス入門」を無料開講 | Ledge.ai
206あとで/1271users 商用利用OKの音素材、600種以上無料公開 バトルの攻撃音も……「Springin’ Sound Stock」 | ITMedia
204あとで/1565users 「自分を愛するってどうしたらいいの?」──宇多田ヒカルの思考を辿るインタビュー、全文公開。 | VOGUE
189あとで/1536users 商用利用無料、国内のフリーイラスト素材の総まとめ | coliss
165あとで/1222users 著作権フリー素材がスゴすぎ…広重や夢二も全部無料 国立国会図書館の試みに「工作心がムズムズ」「活用しない手はない」|まいどなニュース
163あとで/1070users わずか数年で400億円も売り上げを伸ばしたカインズ ホームセンターのDXで、まず「顧客戦略」に着手した理由 | 株式会社メンバーズ | logmi
161あとで/1092users わかりやすいシステム構成図の書き方 - Qiita
158あとで/952users 大人の学びパターン・ランゲージ(略称まなパタ):IPA 独立行政法人 情報処理推進機構
152あとで/974users Webデザインの有料学習サイトが無料化 IllustratorやPhotoshop入門などが見放題 | ITMedia
145あとで/1638users 最近Amazonプライムで観た面白かったけど胸糞悪くて二度と観たくない邦画5選 - kansou
144あとで/704users 書籍「達人が教えるWebパフォーマンスチューニング」はチューニングの考え方を教えてくれる良本 - Gマイナー志向
144あとで/1072users ジョナサン・ハイトが解き明かす「アメリカ社会がこの10年で桁外れにバカになった理由」 | 「現代のバベルの塔」はいかにして建設され、崩されたのか | COURRiER
138あとで/1513users 【ウマすぎ注意報】料理研究家・リュウジさん考案「無限冷やしそうめん」がガチでラーメンより美味かった! | マイナビニュース
133あとで/673users 東京大学深層学習(Deep Learning基礎講座2022)深層学習と自然言語処理 | Hitomi Yanaka | SpeakerDeck
129あとで/980users ドキュメントに固執せよ - gfnweb
128あとで/846users 世界中のITエンジニアが悩まされている原因不明でテストが失敗する「フレイキーテスト」問題。対策の最新動向をJenkins作者の川口氏が解説(前編)。DevOps Days Tokyo 2022 | Publickey
127あとで/1632users 結城浩 on Twitter: "質問(簡単に教えてもらおうとする相手にイライラするようになった) あなたのおっしゃる「質問されるとイライラする感じ」はよく理解できますし、同じように感じる人はたいへん多いと思います。(続く) #結城浩に聞いてみよう… https://t.co/CKZMzVzHPN"
126あとで/622users コードを書いていてマネジメントもやるようになっちゃった人へ 背中で語っていた僕が、プロダクトとピープルに向き合うまで | 海老原昂輔 | logmi
124あとで/1032users 「女性同士のマウンティング」に関する研究論文が興味深くView数が少ないのがもったいないレベル 具体的なエピソードもなかなかすごい | Togetter
123あとで/1046users 戦略系コンサルタントがオススメする本(不定期更新)|とあるコンサルタント|note
122あとで/885users たった256文字のJavaScriptコードで描かれた街の風景アニメがスゴ過ぎて訳がわからない/解説ページを見てもわからないorz【やじうまの杜】 | 窓の杜
117あとで/924users 私は数学がなぜ苦手なのか?高校生が分析してあみ出した勉強法が効果抜群だった|高校生新聞オンライン|高校生活と進路選択を応援するお役立ちメディア
115あとで/701users 「ゲーム制作するなら、これだけは覚えておいたほうがいい」 プログラミングする上で重要な「対数」の考え方 | 安原祐二 | logmi
112あとで/879users 【初心者向け】iPhone3Dスキャンパーフェクトガイド|iwama|note
111あとで/524users 次世代Web通信プロトコル「HTTP/3」がついに標準化 ~有志による無償解説本が話題に/PDF形式の電子書籍がGitHubで公開中! 今後も更新される模様【やじうまの杜】 | 窓の杜
後編
行列はVBAなんかじゃ無理っぽいし、なんかプログラミング言語を覚えようと決める。
とりあえず両方試そうということで、RのためにRとRstudioをインストール。
プログラミングはなんかを製作する目標がないと挫折すると聞いていたので。
深層学習というものが流行ってると聞いて、ちょっと触りを勉強したくなる。
この本は面白かったので、深層学習を目標にプログラミングを覚えよう!
後になって、これはとんでもない間違いだったことに気づく。深層学習と機械学習の違いも判らないまま、RよりPythonを先に触ることに。
教本にしたのはこちら。
「ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装」
途中まではまあなんとか。
微分って便利だな。行列計算できるの便利だなっていうところまでいったが、クラスという概念が理解できず、途中からハテナが浮かんで読み進められず。
うん、もうちょっと易しい本を探そうと思って手に取ったのが
「独学プログラマー Python言語の基本から仕事のやり方まで」
なんとか読了。自信をつける。
実は、いまだにコマンドプロンプトとパワーシェルとbashの違いが分かってない。
つづいてPyQに2か月くらい登録してみる。
なかなかPythonが楽しくなってきたが、クラス意味が今一つ掴めないままいったん中断。
この辺で、自分は統計に興味があってもプログラミングに興味がないんじゃないかということに気づく。
なんだかんだもがきながら、PythonもRもモノにならず、日常のちょっとした計算やグラフを作ったりはExcelを使い続ける日々が続く。
あるいは、Excelで成形して、検定かけやすい形式にしてRで検定するとか。
Rに触れてなかったな、Rは完全に独学。「こんなことやりたいなぁ、ググってみるか、ほうなるほど」って感じ。
そんなさなか、放送大学で「Rで学ぶ確率統計」という講義があるのを知り、さっそく入学して受講。
なかなか面白かったし、PythonばっかりでRあんまり触ってなかったからいい刺激になった。
恥ずかしながら、負の二項分布やガンマ分布ってよう知らんかった。
しかし、講義は楽しかったがなにか書けるようになったかというとそんなことはなく、依然として基本はExcel。
まあ、実際csvじゃなく、手書きのデータとかをExcelに打ち込んだりする程度なんでPythonやRを使うまでもなかったというのもあるんだけど。
「Excelパワーピボット 7つのステップでデータ集計・分析を「自動化」する」
パワークエリを覚えたらピボット形式のExcelファイルとか、セルの結合が多用されたExcelファイルを、成形加工するのが非常に楽になった。
しかも、同じフォーマットで記録されてるデータならフォルダにぶち込んで一気にまとめ上げることも可能!
控えめにいって神!
としばらくパワークエリを礼賛してたのだけど、各ステップはPythonのpandasやRのdplyrでも出来ることに気づく。というか最初から気づけ。
こりゃ、一気に覚えちまおう、統計というより、データの前処理だなと思ってUdemyでRの動画を買ってみた。
AIエンジニアが教えるRとtidyverseによるデータの前処理講座
https://www.udemy.com/course/r-tidyverse-preprocess/
すっかりR信者になる。
それまで教本を呼んでもdplyrの便利さが今一つわからなかったのに、パワークエリで具体的にモノを作ると、dplyrに翻訳したら、すいすい。スピード10倍。
便利さにようやく気付く。
そんで、pandasに翻訳したらどうなんだろ?と思ったらもっと速いw
すごいなPython。
Rへの入信はたった数週間。再びPythonに興味。
さて、ゼロから作るディープラーニングを再開しようと思ったけれども、そもそも、機械学習をすっ飛ばして深層学習って無茶だったと反省し、まずは機械学習に。
機械学習のエッセンス -実装しながら学ぶPython,数学,アルゴリズム- (Machine Learning)
で、この本がすごい。
5章あるんだけど、機械学習のアルゴリズムは5章だけなんだなw
それまでは何に割かれてるんだって?数式の証明とか、便利な計算法、例えばニュートン法とかラグランジュ未定乗数法とかw
こんだけ引っ張っておいて、いよいよ本番の第5章もゴリゴリ数式をスクリプトに落とし込んでいってるのに、「これは学習のためでscikit-learnっての使えばたった1行」っていう無慈悲w
いや、ほんと数学の勉強になったし、こうやってゴリゴリやるとなんのためにクラスというものが存在するのかようやくわかった。
線形代数って便利なんだなと。行列をスカラー値のように何の気なしに扱えるようになると、あの頃苦しんでいた実験計画法、タグチメソッド、今読み直したら別の印象があるんじゃないかなと思うようになったり。
この本を読む途中、「マンガでわかる統計学因子分析編」で学んだことが理解の助けになった。
なんたる僥倖。
線形回帰、リッジ回帰、SVM、PCA、k-means、クラスター分析、一気に手札が増えた。
Pythonで学ぶ実験計画法入門 ベイズ最適化によるデータ解析
実験計画法って、fisherの古典的なやつ、ラテン方格に割り付けて、ってやつかと思ったら、線形代数使えればもうなんでもありなのな。
これ、すごいな。
機械学習と実験計画法がここでつながるとか、控えめにいって最高だな。
まだ読了してないので、また後日。
馬鹿だなぁ。
Teslaは世界一、世界で先進的とかいう割に負けてるのを受け入れられないんじゃん。
トヨタもレクサスにLiDAR追加してレベル3リリース間近だし、BMWもあとちょっとだし負けたのを受け入れろよ。
馬鹿だと、Deep Learningについて詳しくなくてデータ量さえ集めたら勝ちだと思ってるかも知れないが、
レベル3自動運転みたいなのは実験条件揃えて、きちんと境界条件のデータを集めるのが重要だし、
いくら処理を自動化しても収集したデータももきちんと加工してやらないと使い物にならないゴミの山なるだけだから、
Teslaみたいにβ版方式でやってたら事故多発するだけで失敗するぞ。
EVとしてのTeslaは終わった。
プログラミングで主にやる事は下記の2つ。
①IFでAかBを選択させてどっちかの設定を実行
②Whileで決められた回数分繰り返す
とてつもなく複雑で冗長な処理によって実行されている。
わかりやすいので画像処理でいうと、数十万から数百万の画素(RGBAの24bitで表される数値)を小さなブロックに分解し、数学的に周波数の重なりとして計算して変換、含まれる頻出パターンをテーブルにして圧縮伸張を行なう。みたいなことが瞬間的に行われている。
「まさかそんな事できるわけないだろ」というレベルの処理が実際に行われており、これまた直感的でない。
だからそれをどう書くんだよ。という答えはコレ。有名なjpegの実装だ。
libjpeg というライブラリを書くことはできるだろうか?画像の圧縮の理論から考え始めることはできるか?
正直無理だ。自分はプログラマだがそんなに数学が得意ではなく、頑張ったとしても下手するとコレを作るのがライフワークになってしまい、他のことができなくなる。
例えばブラウザを0から作るとして、jpegの処理以外にも画像だけでpngとかgifとかwebpとか、その他もろもろとてつもない作業が必要になる。
「とてつもなくて想像もできないので流石に無理だろう?」
いや、でも、実際動いてるのよ。ここ何十年、コツコツと積み重ねて実現している。
「積み重ね」とはライブラリであったりフレームワークであったりOSであったりする。
「どういう風になっているのか」
外部に向けたインターフェイスがどうなっているのかは理解する必要がある。「使う」ために必要だからだ。
この2つは分けて考えなければならない。
ちなみに、たとえばChromeのコアであるChromiumはのコードはコレだ。
つまり言いたいことは、実際に動くアプリケーションというのを作りたいのにも関わらず
プログラミング入門書は、これで判定と繰り返しという基礎ができますと言うだけ。
これがもう滅茶苦茶イライラする。
「これで判定と繰り返しという基礎ができます」というのが基本的な理論(定理的なもの)で、その他に必然的だが唯一無二ではないベストプラクティスというものがある(法則的なもの)。
後者をうまく説明する入門書に出会っていないんだろうな。という印象。イライラはやめよう。つかれる。
ベストプラクティスはいろいろあるのだが「層の構造にする・レイヤーに分ける」というのは重要なアイデアだ。
libjpegというのはjpegの処理を行う「ライブラリ」だ。他のアプリケーション...たとえばブラウザはこのライブラリを「使う」。
ブラウザではjpeg画像の圧縮展開というとてつもなく難しい処理を「libjpegの使い方」の理解までで済ませ、過去の蓄積であるlibjpegのコードを利用することで真の意味で0から実装しないようにしている。
この場合、libjpegが「低レベル・低レイヤー」の存在であり、中身については「使い方」つまり「仕様」の理解までしか行わないことで、実際に作りたいものを作れるようにしているわけだ。
完成しているプログラムは二例ほど挙げたがどうですかね?
複雑なことをする、特に低レイヤーのコードはとてつもなく難しい。
でも、とりあえずこんな感じのコードなら解るよね?
こういうレベルから理解して、ちょっとずつ難しい処理を学んでいくしかない。
ハードルは高いんですよ。実際。
なので、木材からだと難しいからプレハブのキット的なものを探すとか、ログハウスのカタログを読むとか、あるいは100人乗れる物置を買うのがいいかもしれない。そういうところから始める。
それらがフレームワークであったりライブラリであったりする。目的に合うものを探して、自分がやりたいことをどう実現するかとにかく考える。
「テキシコー」https://www.nhk.or.jp/school/sougou/texico/ で言われる通り、「小さく分けて考える」「手順の組み合わせを考える」「パターンを見つける」「大事なものだけ抜き出して考える」「頭の中で手順をたどる」をひたすら実行する。
unityはコードが公開されているので、本当に読みたいなら。。
オブジェクト指向は一旦忘れよう。
オブジェクト指向の「隠蔽」というのは層の構造が持っている重要な要素ではあるけど、「低いレイヤーについて考えない」のが基本的な作戦だという理解の方が重要だ。
前述の通り「できる限り作らない」んですよ。「使う」だけ。知るべきことを最小化する。
そして本当に作るべきものに関しては、利用する下のレイヤーのライブラリなりを探して・仕様を理解して、どう組み合わせてfor, if, あるいは計算させれば実現できるのかをひたすら考える。
単に翻訳がしたいのか?表示に割り込む方法を知りたい?日本語に翻訳するのは実行時なのか開発時なのか?
要求される表示エリアが言語によって異なるために、デザイン調整が必要になる問題をどうするか?
分解が甘いので何をしたらいいか調べることができないんだと思う。
ちなみに、アプリ内の文言というのはアプリの外部から変更できないように実装されている事が多いので、利用者が上書きする仕組みはかなり難しい。
AndroidなりiOSの仕様にもそのへんに割り込める機能はないはずなので、OSの開発に入っていく必要がある。結構大変だとおもう。
アプリの開発者が、そういう機能を備えた多言語化のためのライブラリを使うようになれば実現可能ではあるので、そっちの方向で頑張るのがおすすめだが、英語圏の開発者には多言語化のモチベーションが低いという基本的な問題はあるのよね。
この辺の「できる・できない・むずかしい」の判断は、いろいろな勉強をすると常識としてある程度みえてくる...気がする。
ついでに。ウェブサイトやウェブサービスの翻訳だとこういうサービスがあったりする。
ブラウザはページの描画処理のなかに割り込む余地が大きく取ってあるので、ブラウザのExtensionとかならできることがいくらかあるかもしれない。
個人的に気に入らない話はOSのアップデートは使いやすくなるからとてもいい事だからすぐにやった方がいいと宣伝されている事。
まあ、半分は嘘だよね。古いものが残っていると先に進めないんだよ...。
現在のクライアントOSは、巨大なプラットフォームのパーツの一部として理解したほうが正しくて、古いパーツが残っているとツライんですよ。
そして「サービスを受けるための道具であって、あなたが何でも好きにできる機械ではないです」みたいな世界になりつつあって、ちょっと問題と言われてもいる。
これはかなり困った傾向なんだけど、全体としての流れはあんまり変わりそうにない。
オブジェクト指向好きですな...。ここではオブジェクト指向は特に気にしなくていいですよ。
とてつもなく複雑なことをやっているために、すべてのバグを潰すことはコストが高すぎてできないんですよね。
それよりバグは未来を先取りするコストと考えて、本質的に価値のある機能を増やしていくというのが基本的な方向になっている。
だからパソコンはたまに不具合を引き起こすんです。しゃーない。
しかし中途半端に理解している老人などは、そんなことじゃ分からん。自分に分かるように説明しろと言い出す。
説明は出来る。しかし相手はイライラするし理解されない。よって説明をしてはいけないという状況に追い込まれる。
ここでどうすればいいのだと理解不能に陥る。
まあ、説明って得てして難しいよ。しゃーない。
そのとおりです。
オープンソースのプロダクトなら原理的には調べられるけどね。Androidとかはオープンになってる。
それを許容することで先に進んできているという事実は受け入れたほうがいいと思う。
「把握・理解可能な範囲」に留めていたら、数十年前のコンピュータの世界から抜け出せなかった。
deep learningの世界ではそれがより一層進むかも。この辺は詳しくないけど。
ここでの「理解」についてはそのとおり。これはもう諦めるしかない。
これが常にある。IT関連は常に新しい情報が出てくるのでそれに送れると無知になってしまう。
なんでこんなことも分からないんだとか言われ放題で、IT系の企業に努めている人は常に新しい知識を入れられる
面倒くさがらない人が向いている。
「面倒くさがり」の方が問題に気づいて「頑張って面倒じゃなくする」ことができるので、プログラマにとっては美徳なんて言われますけどね。
同時にくじけないとか諦めない、しつこいみたいな素養は必要かも。
応用まではとろうな。がんばれ。
このへん自分も知らんですよ。べつに全部知っている必要はない。
(追記: はてな記法の引用すらもさっきまで知らなかったしな!そんなもん)
層の構造をとっているということと関係があるんですが、仕様が変わると、その上に乗っているものを全部なおさないといけないんですよね。
でも革新のために互換性を捨てなければいけないケースも多い。このへんはハードでもソフトでも同じ。
そして、メンテのコストが上がっても使い続けたほうがトータルで安上がりという場合は、古いものが残ってしまう。
あるいは「(多少の問題はあっても)動いているものは変えるな」という経験則から意図的に残す場合もある。
西暦2020年にもなって、プログラミングが簡単には出来ないし、ハードウェアの規格も完全に統一はされていない。
というかプログラミング言語自体多すぎる。ソフトウェアはデファクトスタンダードのモノ程度は知っているが、
ぜんぜん完成していない荒っぽいものを目にしているのだと理解したほうが的確。
それなのに毎日理解のできないパソコンやスマートフォンを使っている。
オブジェクト指向のおかげ様だがオブジェクト指向に対して無性に腹が立つ。
自分の全く知らない場所でいけしゃあしゃあと演算を行い、そして結果を出す。それも大半が正しい結果で
利便性が抜群だ。些細なミス(バグなど)はあるが圧倒的に利便性が勝っている。
そんな道具に踊らされている自分が滑稽だ。理解できない愚かな自分は正に機械の奴隷のようだ。
本当に理解できない。辛い。
勘違いしてはいけないのは、それらはすべて先人の努力の蓄積によって成り立っているということ。
「よくわからないけど存在している道具」ではなくて、信じられないほど複雑だけど、多くの人々の行動によってなんとかかんとか実現した道具なんですよ。
「オブジェクト指向のおかげ様」じゃないんです。(もちろんオブジェクト指向というのも大きな発明の一つですが)
そしてブラックボックスとして使うのは多くの場合正しいです。そこは諦めましょう。
でもエンジニアとしての立場からは、その裏に隠れているとてつもない技術や思考の蓄積に感動してほしいなと思う。
人類がこんなもん作れたのって、かなりすごいよ?
私も似たような所にいたのでデジャブかと思った。ただ俺の場合は某大手メーカー。
ディープラーニングをこき下ろして自分たちのAIがより優れていると宣伝するのはどこの業界も同じなんだな。
某大手メーカーの研究所で作られたそのAIは「ディープラーニングのような旧世代の単純なものではなく、次世代の汎用人工知能」といった触れ込みで
AI事業をやっている我々SE部隊の所に降りてきた。AI事業というとかっこいいが、その中のSEは基本的に技術的なことはわからずITゼネコンの頂点として
PMをやっているような人たちが大半を占めるため、「技術的に顧客価値につながるか」ではなく、「顧客をその気にさせるパワポが用意されているか」の
ほうがよっぽど重要だった。また開発した研究所の方も、主任研究者だけは「そのAIすごい!」って心から信じてたみたいだが(笑)、
おそらくその他の研究者は詐欺っぷりには気づいていたと思う。でも「どうせSE土方共にはばれないだろw」という感じで押し付けてきた感あった。
その主任開発者の態度はまさに同じだったね。「なんでもできます。でも『チューニング』の必要があるのでPoCの費用はいただきます。」
という感じ。俺はそれをそのままスルーして客に伝えると「かの有名な○○さんがそういうならそうなんだな!」という感じで客は納得し、
数M~数百Mの金をポンと出す。PoCバブルの2018年頃はそんなボロい商売がいっぱい転がっていた。
しかし、このAIの中身は単に線形回帰程度しかしていないポンコツであり、ディープラーニングと比べるのもおこがましい代物。
「チューニング」といわれるものは実は有効な特徴量などを頑張ってSEや平の研究者が死にものぐるいで見つける作業であり、
全然「チューニング」レベルの話ではない。完全にカスタムAIをSIで作るような作業だった。しかも適当な特徴量でもある程度良い成果を出す
LightGBMやDeep Learningの使用は禁止され、ポンコツAIでも良い成果を出すような特徴量を見つけるという縛りプレイだった。
さらにアルゴリズムの部分がしょぼいだけではなく、エンジニアリングの部分もひどいものだった。
企業のソフトウェアプロダクトというのは開発した人ならわかるだろうが、一部のスーパープロダクトを除いて、正直コードやロジックは大したことがない。
でもテストは少しはしていてドキュメントは揃ってなんとか動くとか、使うための人力サポートは用意しているとか、最低限顧客を
ところが、だ。このAIに関してはデータサイエンス・アルゴリズムだけでなくソフトウェア・エンジニアリングの酷さもすごいものだった。
簡単なメモがあるだけでドキュメントはほぼ皆無、データを食わせると3回に1回はまともに動かない、非公開とゴネられたので
無理やり引っ張り出したコードを見ると大学生が卒検のために書きなぐったようなコード。おまけに「アルゴリズム」という名のくせに計算量解析すら
されていないロジック(そのため特定のサイズや値のデータを入れるとハングする)。
ここで疑問に思うのは「なぜこんなポンコツAIが全社的代表プロダクトになれたのか」であろう。
とにかくポンコツであることはひた隠しにして「次世代の汎用人工知能」というブランディングだけを
ひたすらフロントを使って確立させた事が大きい。さらに開発者は徹底的に外部の雑誌を避け自社の雑誌にのみ論文を大量に投稿し、
社外成果は特許、プレスリリース、雑誌のインタビューに絞ることでプレゼンスを上げるということをやっていた。
(当然だがディープラーニングより優れているなんて社外の学術雑誌に投稿しても「は?またトンデモ論文か」と言われてRejectされるだけである)
そしてこれこそがITゼネコンの真髄とも言うべきところであるが、子会社に専門部隊を作りいつでもそのAIを使ったビジネスをReady状態にする
社内体制づくりをしっかりやったところが大きい。例えばPFNあたりが「うちすごいAIあるんすよー」っていってよくわからん若造(実は東大IS Dr.)
とかが出てきて専門用語を並べ立てたりすると、古い企業からすれば「(どうも信用ならん・・・ほんとにコイツら仕事できるのか?)」となるだろう。
しかし、スーツをビシッと決めた営業と多少技術もわかるSE(もちろんスーツ)が来て、アルゴリズムの説明は一切なく、「ビジネスにどう効果があるのか」
「エンドユーザーへのインパクト」「金銭的効果」など一般人にわかりやすいパワポで説明し、来週から定例会議や進捗会議などPM面もおまかせ、
ふわっとした状態からの要件定義でもやってみせます!といわれる「(これは・・・いける!!)」となるのである。
また2018年あたりは顧客の方も偉い人から「AI使ってなんかしろ」という予算枠だけ用意されたふわっとした状態なので優れたアルゴリズムを使いたい
・用意されているAIをColaboratry(Googleの無料貸し出しPC)上で5秒で動かす。
データサイエンスVtuberに相談する。
・初心者向け動画講義まとめ
1. 【世界で18万人が受講】実践Pythonデータサイエンス | Udemy
2. Machine Learning by Stanford University | Coursera
3. Eラーニング教材・講義動画配信 | 数理・データサイエンス教育強化拠点コンソーシアム
- データハンドリングなどの入門者講座はUdemy の方が良いが、時系列解析・データ活用講座に関してはこれより良い教材は無い。
- 多分、動画の[1,2,3]を理解していてコードが書けて、学歴があるならTier4 のインターン・バイトは受かる。
4. DeepMind x UCL | Deep Learning Lecture Series 2020 | Youtube
- Deep Learning 講座、タイトル通り
deep learningのつもりなら、マシンパワーが上がって実装しやすくなっただけで、以前の延長線上だ
残業を書かなくてすみません。サービス残業をすすんでやってすみません。私は労働者の敵で、経営者の良い道具・社畜です。でもそれが私にとって居心地がいいのです。
子供の頃から何かを成したいと思っていました。思っていましたが、行動はしませんでした。何かをしたいと思いつつ何もせず、時間は過ぎ、大学に進学し、4年間でなにかになろうと自己実現を夢想しつつ、驚くことに何もせず、そのくせ何もしない癖がついたので就職はせず惰性で院に進学し、そこでようやく行動力のなさのしっぺ返しを受けて地獄を見て、逃げるように就職しました。
会社では、そこそこ良い大学を出たこともあって重宝されました。真面目に授業を受けていたのでプログラムもそこそこ書けました。いろんなことを頼まれるので、それに応えました。「ああいうのが欲しい」「こんなのあったら便利じゃない?」を日々の業務と並行して作るのは難しいので、サービス残業をしました。お金が欲しくないわけではないですが、それよりも自分の作ったもので喜ばれるのが嬉しかったからで、楽しかったからです。
私は会社人になり、ようやくモノづくりをはじめました。それでも人から言われたことばかりをこなす、自分というものが無い存在です。それでも楽しいのです。会社という強制労働施設は、行動力のない私の自己実現の場として発揮されました。休日に自宅のPCでエクセルマクロを勉強し、会社のデータのモックを書き、動作を確認してから会社に納品したこともあります。「もうできたの?はっや!」と驚かれ、嬉しかったのを覚えています。
よくある会社の「AIで何かしたい」に応えるため、会社の帰りに本屋によって「退屈なことはPythonにやらせよう」「仕事ではじめる機械学習」「ゼロから作るDeep Learning」を自費で購入し、Udemyの講座もいくつか自費で購入しました。家に帰って独学し、休日もずっとそれらをやっていました。ある程度理解できたので、サンプルコードを改造しつつ、会社の製品情報や見積額等を学習データに使い、見積AIを作りました。営業からは「面倒な見積が簡単になった」という言葉をいただき、購買の人からは「見積額も適正でいいね」と言われました。
仕事も一応ちゃんとやってるし、いろんな頼まれごとをこなすので、会社からはより重宝され、入社3年目でチームリーダー兼プレイングマネージャーを任されました。チームリーダーになってからはチームのマネジメントで忙しいので、なかなかモノづくりをするのは難しく、プログラムを触る頻度は減っていきました。それでも仕事中は自分もコードを書きつつ、家に帰って仕様の確認や仕様書の作成などをやるようになりました。
ある日飲み会の席で、人づてにチームのメンバーが自分のことを「コード書きながらマネジメントするすごい人」「尊敬している」ということを言っていたと聞きました。「尊敬する」ということを言われたのは初めてだったので、感動しました。飲みの席では「ブハハwww」と笑ってごまかして、家に帰ってなんか泣きました。
プライベートを大切にする人にとって、私のような存在は、経営者をつけあがらせ、労働者の価値を貶める裏切り者で馬鹿と見る人もいるかもしれません。というかはてブやTwitterとか見てるとそう思います。そのとおりだとも思います。
最近私が考えるようになったのは、プレイベートを大切にする人と、私のような会社でしか輝けない人のゾーニングです。プライベートを大切にする人にとっては、私達のことを悪く言う人がいます。私達のような社畜の中にも、プライベートを大切にする人のことを「定時で帰るやる気のないやつ」みたいな扱いをする人がいます。このような争いは不毛だと感じます。私が願うのはゾーニングされた世界です。プライベートを優先する人は当然いていいし、社畜は社畜で会社の中で輝いて楽しむ人がいてもいいということです。この考え方には、労働者同士の意識だけでなく、経営者の意識も大切だと思います。私のようなオーバーワーカーを通常の人材と思わず、特殊でラッキーな人材と認識する必要があります。経営者はプライベートを大切にする人をやる気のない人だと思わないでください。従業員は会社に奉仕すべきが当然と思わないでください。
最後になりますが、人の考え方は様々です。私のような考え方を受け入れられない人もいるでしょう。つまり、それでも社畜は悪であるという目線や、従業員は社畜になるべきという目線です。それでも結構です。大切なことは、自己実現だと思います。私は社畜をやめないし、あなたはプライベートを大切にするのをやめない。経営者は従業員を利用しているだけかもしれませんし、大切にしているかもしれません。とにかく、それはともかく自己実現だということです。自己実現のためなら、社畜でもいいと言う人間は、ここにいるのです。
https://arxiv.org/abs/1804.10390
Ecologyの研究には、情報科学の世界で研究されている画像解析の技術を使えば解決可能なものがある。著者らは、この一つである植物の分布の計測を試みている。具体的な解決方法は、UAVデータから撮影した画像データを元に、木々の種類を識別する分類器を作成である。手順として、最初に、UAVから画像と高度データを著者自らが撮影を行った。次にそのデータから学習用の教師データをいくつかの手順を踏んで作成する。この手順は、さらなる研究を行う際にも適用が可能である。結果、識別器は良い識別性能をだしている(Model1で83.1%)。前処理として、画像を切り分けて分類器にかけなければならないという点は未解決である。
https://arxiv.org/abs/1708.01986
著者らは、コケ植物の画像判定を行うため、撮影した画像データから学習データを作成し、識別機を作っています。
データは著者らが作成しており、少数の画像から判定機を作成するために、"chopped picture" methodを提案しています。
画像枚数を多くするために、少部分間には50%のoverlapが存在します。言い換えるなら、ある画像は、他2枚の画像を元に再構築可能です。
CNNの学習では、切り出した画像から、validation dataとtraining dataに分けて学習を行っています。
以上の方法で、validation dataによってこの識別機の精度の計測をし、高い精度で識別できていることを主張している。
提案手法は、training dataとvalidation dataに関係があるので、validation dataでの精度は高くなると思われます。
言い換えると、全データに識別機がオーバーfittingしているので、validation dataでの精度が高くなっているのでは?
つぎに、この論文の提案手法でのvalidation dataを識別機に食わしたさいの分類精度は、その識別機の分類精度とは言えません。
validation data・training dataに含まれていないdataセットを作成し、その新たなdataセットでの学習機の精度を検証するべきだと思います。
https://www.biorxiv.org/content/10.1101/351643v2
正確に読解できていなかったら申し訳ない
管理されなくなった竹が他の植物の生えた地域に侵略していくことが問題となっている。
この問題に対処するには、竹の移動を経時的に追うこと、または、侵略しているかを判別することが求められる。
本論文は、この問題を解決するために、Deep learningを用いて衛星画像データを竹とそれ意外に識別を試みる。
画像はGoogle Earthから取得し、著者らが3種類のTag付けを行った。このデータを元に学習を行った。
ただし、衛生画像を撮影した時期によって、精度が著しく損なわれるので、現時点では経時変化を追跡する課題は解決されていない。
竹林が徐々に他の植生の場所に侵略している。この問題を解決するために、まずどこに竹が生えているのかを識別するのがこの論文の目的。
この課題を解決するためにGoogleEarthの画像は適切なのか?言い換えれば、課題に対するシステムの必要要件が記述されていない。
この論文で提示している問題は、植物の侵略を判定する識別器をつくることである。故に、竹やぶと建物の境目になる部分が正しく識別されていることがこのシステムの必要要件である(多くの範囲が正確に識別されることは目標ではない)。
よみました
https://twitter.com/MAEZIMAS/status/1113114798672113665
一流の老害は「君たちこそが真のニュータイプだ」とか言って、若者を自分の既得権益確保のための鉄砲玉にする。
…いやマジ本当に、若い人気をつけてね。若者説教おじさんは、せいぜいまだ極限の不愉快ですむけど、若者応援おじさんに乗せられると最悪人生詰むので…
というツイートが流行っているので、私が遭遇した若者応援おじさんについて書こうと思う。
当時の私は親との折り合いがつかず、学力もそこそこあったし、勉強もしていたのにも関わらず大学に進学せずにフリーターをしていた。実家を出たかったし、大学にも進学したかったから金の工面が当面の目標だった。そんなときに出会ったのが若者応援おじさんのAさんである。Aさんはバブルの頃に就活をしていて、まだインターネットやパーソナル・コンピュータというのが流行る前から電子工作やプログラミングをやっていた人だった。実際、経歴を聞いてみると10回以上転職を繰り返しているものの、有名企業(今にして思えば、カビ臭いSIerだが)で部長をしていたことがあって、年収が1700万ぐらい稼いでいたこともある人だった。
最初に出会ったときは自分が如何にすごいかということを熱心に語っていた。80年台後半ぐらいのコンピュータ開発の大型プロジェクトに関わっていたとか、セキュリティの専門家とか、今までに触ったことのあるプログラミング言語が300個を超えるとか。でも、当時の技術的なトレンド(MongoDB、Ruby on Rails、AngularJSとか)についての知識が限りなく少なく、「フレームワークなんてその場で覚えればいい」みたいなタイプだった。中学生の頃にラジオ工作したとか、はんだごてで電子回路を設計したとか、そういう話は熱心にするのに、Bram Moolenaarの名前を知らなかったりした。要は、最近のプログラマがどういう関心やインセンティブでプログラミングやってるかを知らずに、過去の栄光を語ってるようなタイプだったと思う。
まぁ、それでも、その人のコネで中規模程度のSIerに入社して、そこそこいい感じの待遇だったように思う。当時の私の技術力は『わかりやすいJava入門』『たのしいRuby』を一通り終わらせて簡単な言語仕様を把握したぐらいでろくにコードも書いたことのないような人間だったから、定時で帰れて手取り二十万もらえるのは甘い汁を吸えたとは思うんだ。
でも入社を決めた一番の理由が、そのAさんが私の関心に理解があると思っていたからだ。というのも、当時の私は「人工知能や人工生命に興味があります。三年後に大学に入学するまでにプログラミングスキルを磨きつつ生活費と学費を稼ぎたい」ということを明言した上で、それを叶えてくれる会社を探していた。技術力はないものの、「自頭がいいから入社してからプログラミングを覚えればすぐに戦力になるよ」と複数の人間から言われていて、それぞれ就職先を紹介してもらえるような状況になっていた。今から思えば、そんなコードを書けない人間を自頭なんて胡散臭いもので褒めるような人間は信用してはいけないと思うし、口車に乗せられたと思うのだけど。そこは自分にも甘いところがあったように思う。あ、あと、補足しておくと、当時はDeep Learningなんていうのは全く人口に膾炙してなかった時期で、スチュアート・カウフマンや金子邦彦に憧れてたような、周回遅れの複雑系に魅せられた若者が私だった。
①親との折り合いが悪く、大学に進学したいが、金が足りない
②実家を出るために生活費を稼ぐ必要があったが、飲食のバイトとかではスキルが身につかない状態で、価値の高い若い時間を無駄にしてしまう
③そんなところに現れたのが過去の栄光を話す若者応援おじさんのA
④自分は殆どコードを書いたことのない業務未経験で、21世紀になっても複雑系の話に興味をそそられるような斜に構えたスノッブ
では、入社後の話をしよう。私が配属されたプロジェクトは80万行程度のJavaのコードで動いてるBtoB向けの製品を保守開発してるプロジェクトだった。やってることはGoogleやAmazonやMicrosoftみたいな大手ならやってるようなサービスの完全下位互換みたいなソフトウェアを、情弱だけど社員数は多いみたいな企業に売りつけるような仕事だ。国産とか、セキュリティとか、そういうよくわからない言葉を並べ立てて、海外のUIも洗練されていて、優秀なエンジニアが管理してるものをセキュリティ的に怪しいと不安を煽り立てて売りつけるようなやつだ。そんなクソみたいな製品でも年間5億円ぐらいの売上になるのだから、IT系って糞だなって思う。ネット上では優秀な人間ばかりがアウトプットしてるし、NDAの名の下に詐欺まがいのソフトウェア(今回の例なら無料でUIも洗練されていて、使いやすいサービス)が明るみにならないのだから、こんな国はさっさとスクラップ・アンド・ビルドすればいいのにって思うよ。IT化されてないのが時代錯誤で〜みたいな記事はネット上でもバズるけど、実際には10年前のスパゲッティコードを惰性と不安につけ込んで売りつけるようなSIerがたくさんある。そんで、そんな意味不明なソフトウェアを導入すれば、どこに何があるのか分からないUIの操作に大切な業務時間を奪われて、日本全体の生産性が落ちてしまう。ユーザーの時間と生産性を奪い、開発者にとっても技術的負債にしかならないようなソフトウェアを売りつけてる悪性腫瘍みたいなSIerはさっさと滅んでしまえばいいと思うよ。
まぁ、私が配属されたプロジェクトはそんな感じだ。まるで意義を感じないが金にはなってるプロジェクトに配属された。そのプロジェクトの根幹部分は一人のエンジニアが設計開発しており、そのエンジニアは既に退職して、どこに何が書いてあるのかわかってない人間が後任として保守を行っている。盲腸みたいに全く有難みのない機能を増やすことでより高く売りつけるようなプロジェクトだった。
そのプロジェクトの中にいる人について話そう。プロジェクトマネージャーは仕事漬けで毎月350時間ぐらい働いている60連勤とか当たり前で、常に酔っ払ったような、眠そうな目をしてる人だった。にも関わらず、同じプロジェクトの人間は仕事がなさすぎて業務時間中に関係ない談笑をしたりしていた。プログラマやテスターや文書作成をするスタッフが40人ぐらいいるところで、閑散期(機能追加のサーバーリリース前以外)は暇そうにしてる人が多かった。プロジェクトマネージャーを除いて。要は、PMは一生懸命働いているが、その一生懸命さは惰性で行われており、無能なのに業務時間が長いPMがいて、その人が全部仕事をやってしまう。他人に頼めない性格らしくて、存在意義が分からない業務を他人に頼んでは「なぜこんなこともできないんだ?」って怒鳴るのが生きがいみたいな人だった。頑張ってることがアイデンティティになってて、その頑張りに意味があるのか、必要なのかという吟味ができず、タスクを他人に振ることもできず、情報もそのPM一人だけが握っているから、周りの人も「私が仕事を請け負いましょうか」ということもできない。それで新入社員をイビるような存在意義のわからない仕事を振って、できなかったら人格否定をするような感じの。
私が受けた仕事ととしては、週に1回ベンダーのところに会議をしに行くんだけど、そのときの社内の資料を全部紙でプリントアウトして持っていくというのがあった。文書作成スタッフが製品の仕様をWordでまとめて、600ページぐらいのpdfにしたものが1500万円ぐらいで売れるらしく、その増えた言語仕様をプリントアウトしてベンダーのところまで持っていく。追加された仕様以外にも、今週やったテスト内容をExcelで纏めたものをプリントアウトしたりしていた。紙の量で言うと、一回の会議で2500枚ぐらいで、それをキャリーケースに詰めて客先であるベンダーまで持っていくらしい。聞いた話では、その2500枚の会議資料は殆ど読まれずに捨てられるのに、そのPMはベンダーにその慣習を廃止しようとは提案しない。ベンダーとの週一の会議の他にも、進捗報告を主とする社内会議があって、PM以外の人はあのプリントアウトする悪習は廃止すべきという話が上がっているのにPMが首を縦に振らないから一向に改善されない。まぁ、そのプリントアウトするのをやるのが私の仕事だったわけですよ。毎週4時間ぐらい掛けてWordやExcelの文書サイズとか調整してさ。元の文書のサイズや余白が狂ってるのに、客先に失礼だと言われて、手直しして、プリントアウされたコロコロコミック何冊分だよ? みたいな紙の束をホチキスで止めていくんだけど、ホチキスの止め方が汚いとやり直し。
じゃあ、なぜPMは頑なに意味のない業務をし続けて、それによって新入社員を使い潰そうとするのかと言えば、弊社の業績が悪くて倒産しそうだったときにそのベンダーが手を貸してくれたからそのときの恩義があるとかなんとか言っていた。だから、靴を舐めるようなことをするし、他人の生産性を奪うようなクソ製品を世の中に出して何も感じないらしい。読みもしない産業廃棄物を作り出して、それを無碍にされて喜んでいるような業務が、今の日本の何割を占めているのだろう? そのPMの口癖は「俺はプログラミングは全くわからないが、こんなプリントアウトの段取りもできないようなやつはプログラミングなんてできないと思うよ」だった。FizzBuzzどころか変数や関数すら知らないような人間にこんなことを言われるのは屈辱だったし、これが高卒未経験で就職することなのだろうと思った。
他にも、私が受け持った仕事に、製品が動くかどうかを確認するテスターという仕事があった。RSpecやSeleniumで自動化しようと言っても、そんな技術を持ってる人がいなかったから、一々自分でその製品を触って仕様通りになっているかを確認しないといけなかった。画面遷移が600ページのpdfになっているから、それを見ながら正しい画面遷移ができているかを確認する業務だったが、正直人間のやる仕事ではないと思う。画面遷移だから前のページから次のページに移行したときに前にどのページだったなんてスクショを撮ったぐらいじゃわからないのに、「このテストをExcelにした内容じゃ、本当にテストしたのかわからないだろう?」と言われた。言われたとおりにExcelファイルにスクショをひたすら貼り付けていたというのに。しかも、その他にも特定のファイルをアップロードするときにどの条件だとアップロードができないかを判別するテストをどうやって行うのか考えろというのがあった。今までにテスターをやっていた人に聞いても指針なんてないと言われ、「賢い人はそういうのを考えつくものだ。俺はパソコンに詳しくないが」とPMに言われ、嫌気が差した。
まぁ、ここまで書けば、如何にブラックと言うか、理不尽で不合理な職場かというのはわかったと思うけど、いい面もあったんだ。前にも書いたように、未経験の高卒が手取り20万貰えたのは嬉しかったし、研修のない会社だったから、最初の二ヶ月ぐらいは一人で勝手に勉強しててと言われたから、実働換算で時給3000~4000円ぐらい貰える計算だったのかな。一番瞬間時給が高かった日はメールの返答に20分ぐらい使ったときだったから、日給1万、実働換算の時給が30000円ぐらいになった。それぐらい放任されていた。
最初は社長が「君にはソースコードのUMLを書いてもらおう」とか言って、クラス図を書く練習をしていたんだけど、現場の人は「今更UMLなんて必要ない」「ソースコードを読めばわかる」と言って、全く必要とされていなかった。だから、業務とは関係ないTCP/IPやRubyやGitの勉強をしていた。家のことで勉強に対してモチベーションが落ちていた私は、金を貰えるという環境では目の前の勉強に集中できるようになって、元の勉強するための生活リズムっていうのか、そういうのを取り戻せた。それは当時の私にとっては有難かったと思う。
ここまでをまとめると
⑤無料で使えるサービスの下位互換といえるような、他人の生産性と金を無駄にするような製品を開発してるプロジェクトに配属された
⑥PMだけが忙しく働いて、周りの人の割り振りができていない。
⑧社会悪のようなソフトウェアを売りつけて金を稼いでいるプロジェクトだった。
⑨仕様書やテスト内容のプリントアウトという必要ない業務をしたり、指示内容と叱責内容が矛盾する理不尽を受けなければならなかった。
⑩しかし、勉強してるだけで月20万貰える環境は有難く、当時の私にとっては願ったり叶ったりだった。
では、次に私がその会社の入社から辞めるまでの経緯について書こう。最初のうちは、自分の勉強時間を取れていたし、振られる仕事も理不尽で意義を感じられないものであるものの、すぐに終わることが多かったから問題ないと感じた。それが徐々に仕事が増えていき、勉強時間が取れなくなっていった。
ここで若者応援おじさんAの登場である。Aさんは私と会ったときは有名企業に勤めていて、そこを辞めて私を紹介してくれた中小企業で働き始め、その数カ月後に私を紹介してくれた。元々、その会社の社長とは懇意にしていたから、一緒に働こうという話が何十年も前からあって、今回ちょうどタイミングが合ったから、その友人の会社の重役として就職したらしい。私が就職したのはその数カ月後だった。
Aさんは「何か問題があったら、部下や上司という立場を気にせずに忌憚なく言ってほしい」「俺は人を見る目はある方だ。君は一本芯の通ったところがあるから、周りに流されずに新しいことをできるだろう」「君には将来性がある」「俺は新しい会社でも権力を持ってるからへんなことを言ったり、したりしてる人がいたら遠慮なく言ってほしい」とかそういうのを入社する前に言っていて、まぁ、色々とおかしいところ、FAKE野郎みたいな発言が多かったけど、そこだけは信じてたんだよね。本当に騙すんだったら、そんなすぐに辞められるようなリスクを上げるような発言はしないだろうってさ。ちなみにFAKE野郎って感じたのは、一方的に自分の話だけをして、私が質問すると煙に巻いたり、私のことを買ってるという割には私の話をすぐに中断させて自分の話をし続けるとか。その人はFラン出身だったから、ちょっとインテリなことを言うと「君は変わってるね」って言ったり、きょとんとした顔で10秒ぐらい固まった後、すぐに自分の自慢話を再開したりと、決して自分の知らないことや分からないことを認めようとしなかった点だ。他にも、「私と働きたいと言ってくれていた会社はあったけど、そこは技術的に成長できそうだけど給料は月7万程度でバイトの身分だから、迷ってるんですよね。バイトだから自由時間は多く取れるんですけど」みたいな発言をしたら、鳩が豆鉄砲を食ったような顔をして、私が感じていた不安を取り合ってはくれなかった。Aさんは「俺は社内で影響力を持っているから、君を正社員にすることもできる」みたいな話を延々としてたのに、いざ蓋を開けてみると、「君の面接での受け答えが駄目だから、契約社員として雇用することになった」「あれから上層部に渋られてしまって、請負契約にすることになった」と話が二転三転していった。だったら、他にも選択肢があったのに、他のところに就職したのにと思ったが、自分の能力や経歴で負い目を感じていたから強く言うことはできなかった。高卒で就活するというのはそういうことだ。他にも選択肢があるのにも関わらず、どうせ労働に関する知識がないと足元を見られて、条件を徐々に下げられ、他に選択肢をなくした後で、悪い条件で働かざるを得ない状況になっていた。結局、勤務時間がタイムカードで管理されてるのにフリーランスとして請負契約を結ぶという偽装請負で契約させられ、もっと技術力を磨ける選択肢は潰されてしまっていた。
私は会社の問題点を丁寧に分析してpdfにまとめてAさんに送ったんだ。それが間違いだった。如何に会社がそのベンダーに良くしてもらったか、大変なのをわかった上で俺たちが会社を立て直してきたかということばかりを話していた。百歩譲ってそこはいいとしても、ベンダーとは関係なく職場環境を良くするための話までいい加減に聞かされてうんざりしていた。
「Aという問題があります。その背景にはBがあります。そのためにはCという解決策があります」
という話をしたときに、「Bぐらいみんな当たり前にしている。君だけ特別扱いすることはできない」みたいな返し方をされて、問題が発生してる事自体はないものとされていった。結局、職場にはびこる不合理で理不尽な業務やルールは改善することはなく、私への人格攻撃で終わってしまった。
毎日どうでもいい作業で疲れ切って勉強時間が取れなくなってしまった私は、最初に出会った頃のAさんの言葉を信じて、「私が本当にしたいことは、仕様書やテスト時のスクショをプリントアウトしたり、よくわからないテスターをやったりすることではない。このままでは、プログラマとしてのキャリアを積むための勉強時間を作ることもできないし、業務内でコードを書くこともないから業務時間を短くしてほしい」と言った。少なくとも、最初Aさんと会ったときは、「君には人工知能や Permalink | 記事への反応(1) | 23:52