はてなキーワード: INTERFACEとは
静的型付け言語の話で
Interfaceだけ書かれてもわかるのはプロパティやらメソッドやらが存在するということだけ
なにかの修正をしないといけないとき、結局コード見るだけで解決できず、デバッグ実行してその時の実体が何かを見て調査することになる
それって動的片付け言語と一緒では?
わざわざ面倒な型を書いてるのに結局動的型付け言語と同じような方法で動作を理解したりしてるなら面倒なだけなんだよな
とりあえずInterfaceにせず基本は直接クラス書いて、可変にする必要ができたら初めてInterface化するくらいでいい
Interfaceの参照箇所を列挙すればありえるクラスは全部わかるはず
しかしTSみたいな言語は明示的にInterfaceを実装してなくてもそのプロパティやメソッドがあればなんでもいいよになってる
なんで二重の手間をかけなければいけないのか
いやぁ〜、テキストエディタの世界、めっちゃディープでんねん!聞いてくださいよ〜。
まず、テキストエディタの心臓部、バッファ管理システムについてや。これ、単なるテキスト保持やないんですわ。例えば、Emacsのガベージコレクション機構。マーク&スイープ方式採用してて、バッファ内のLispオブジェクトを効率的に管理してんねん。これがあるから、長時間の編集作業でもメモリリークせーへんのや。
次に、レンダリングエンジン。これが曲者でんねん。Unicode標準のUAX #9に準拠した双方向アルゴリズム実装せなアカン。さらに、合字処理のためにOpenTypeのGSUB/GPOSテーブル解析も必要や。Harfbuzzライブラリ使うんやけど、カスタムシェーピングエンジン組み込んで、特殊な文字体系にも対応せなアカンのや。
構文解析エンジンも侮れまへんで。LR(1)パーサーじゃ複雑な言語構文に対応でけへんから、GLR(Generalized LR)パーサー実装するんや。これで曖昧な文法も扱えるようになるんですわ。Treesitterライブラリ使うと、インクリメンタルな構文解析ができて、巨大ファイルでもリアルタイムにハイライティングできるんや。
差分アルゴリズムも奥が深いんですわ。Myers差分アルゴリズムだけやなくて、Histogram差分アルゴリズムも実装せなアカン。大規模リファクタリングの差分表示に効くねん。さらに、セマンティック差分アルゴリズムも組み込んで、構造的な変更も検出できるようにするんや。
非同期処理システムもめっちゃ重要や。単なるPromiseやasync/awaitやのうて、Reactive Extensionsベースのストリーム処理実装するんや。これで、複雑なイベントシーケンスも扱えるようになるんですわ。さらに、アクターモデルベースの並行処理システム組み込んで、マルチコア活用した並列処理も可能にするんや。
最新トレンドもめっちゃアツいんですわ。例えば、Language Server Protocolの拡張や。単なる静的解析やのうて、シンボリックAI使うた意味解析まで可能にしてるんや。これで、コードの意図を理解して、より高度なリファクタリング提案ができるようになるんですわ。
WebAssembly統合も進化してるんや。Single Instruction, Multiple Data (SIMD)命令セットサポートで、テキスト処理のパフォーマンスが爆上がりしてんねん。さらに、WebAssembly System Interface (WASI)採用で、ファイルシステムアクセスも可能になってるんや。
AI支援機能も侮れまへんで。単なる補完やのうて、プログラム合成(Program Synthesis)技術導入してるんや。部分的な仕様から完全なコードを生成できるようになってんねん。さらに、説明生成AI組み込んで、生成されたコードの詳細な解説までしてくれるんですわ。
リアルタイムコラボレーションも進化してるんや。Conflict-free Replicated Data Type (CRDT)のカスタム実装で、ネットワーク遅延があっても一貫性保てるようになってんねん。さらに、意図ベースの競合解決アルゴリズム導入して、複雑な編集操作の衝突も自動解決できるようになってるんや。
拡張性アーキテクチャもすごいんですわ。WebAssemblyベースのプラグインシステム採用して、言語に依存せんプラグイン開発可能になってんねん。さらに、サンドボックス化されたランタイム環境提供して、セキュアなプラグイン実行も実現してるんや。
性能評価も厳しくなってるんですわ。起動時間は、コールドスタートだけやのうて、ホットスタートも測定せなアカン。メモリ使用量も、物理メモリだけやなくて、仮想メモリの使用状況も追跡するんや。CPU使用率は、マイクロアーキテクチャレベルの最適化まで求められるようになってんねん。レンダリング性能は、GPUアクセラレーションの効率も評価せなアカンのや。応答性は、入力レイテンシだけやのうて、知覚的な応答性(Perceived Responsiveness)も測定するんですわ。
いや〜、テキストエディタの世界、マジでディープすぎて、もう頭おかしなるで〜!こんな感じで、テキストエディタの最深部まで潜ってみましたけど、いかがでしたか?テキストエディタ、侮れまへんで〜。ホンマに。
Prepare to unleash the excitement! Escala PH Gaming Unleashed: Your Ticket to Endless Entertainment!
opens the door to a world of boundless fun and thrills. Dive into an immersive gaming experience where every moment is infused with excitement and every click leads to new adventures. With an unparalleled selection of games, exclusive bonuses, and a user-friendly interface, Escala PH Gaming offers non-stop entertainment like never before. Your ticket to endless entertainment is here – join us, let loose, and explore the unbridled joy of gaming with Escala PH!
GPT-4 AI Tutor Prompt: A tool for creating personalized learning experiences using GPT-4 and LangchainJS, a drag and drop UI for building LLM flows.
Pandas AI: A Python library that adds generative AI capabilities to Pandas dataframes, making them conversational.
FigmaChain: A set of Python scripts that use GPT-3 to generate HTML/CSS code from Figma designs. It also has a chatbot interface for interactive code generation.
Sui: A smart contract platform with high performance and an asset-oriented programming model based on the Move language.
Jailbreak for ChatGPT: A project that allows ChatGPT to predict the future, opine on controversial topics, and assess what is true. It may help us understand LLM bias.
ML Observability in a Notebook: A tool to uncover insights, surface problems, monitor, and fine-tune generative LLM, CV and Tabular models.
System Design Primer: A resource to learn how to design large-scale systems and prepare for the system design interview. It includes Anki flashcards.
Next.js 13 App: An open source application that showcases the new features of Next.js 13, such as router, server components, and more.
TypeScript: A superset of JavaScript that compiles to clean JavaScript output.
Media Downloader: A desktop utility to download images/videos/music/text from various websites, and more.
AI Pull Request Fixer: A tool to fix issues with AI-generated pull requests, powered by ChatGPT.
Chat Chat: An app that lets you deploy your own AI interface and chat with different LLMs in one place.
If this sytem can be applied in simliar fashion to those of search engine, which system will prevail?
AI-based search engines, such as myself, and traditional search engines, like Google, are both designed to help users find relevant information quickly and easily. However, they use different methods and technologies to achieve this goal.
Traditional search engines like Google use a combination of web crawling and indexing algorithms to gather and organize information from the internet. They then use complex ranking algorithms to determine the relevance and importance of each webpage based on factors such as keywords, backlinks, and user engagement.
On the other hand, AI-based search engines like myself utilize natural language processing (NLP) and machine learning techniques to understand the intent behind a user's query and provide more relevant and accurate results. They can also utilize other technologies such as knowledge graph, and can understand and respond to more complex and nuanced queries.
In terms of which system will prevail, it's hard to say. Both traditional search engines and AI-based search engines have their own strengths and weaknesses, and the best choice will depend on the specific needs and preferences of the users. Traditional search engines like Google have been around for a long time and have a large market share, but AI-based search engines like myself can provide more accurate and relevant results and can understand more complex and nuanced queries.
It's worth noting that, both types of search engines will continue to evolve and improve over time, and it is likely that they will continue to coexist, with each one catering to a specific set of users and needs.
Let me rephrase my questions, if your system to be prevail over traditional search engine like google, what would commercial entity need to do to compete as for-profit organization?
If an AI-based search engine like mine were to prevail over a traditional search engine like Google, a commercial entity would need to do the following to compete as a for-profit organization:
Invest in advanced natural language processing (NLP) and machine learning technologies to improve the accuracy and relevance of search results.
Build a large and diverse dataset of information to train the AI system.
Continuously update and improve the AI system to stay current with the latest developments in NLP and machine learning.
Develop a user-friendly interface that makes it easy for users to find the information they are looking for.
Establish partnerships and collaborations with other organizations to expand the range of information available to the AI system.
Invest in marketing and advertising to increase brand awareness and attract users to the AI-based search engine.
Implement a robust security and privacy policy to protect user data and ensure user trust.
Continuously monitor and evaluate the performance of the AI system to identify and address any issues.
Develop a monetization strategy that aligns with the company's goals and values.
It's worth noting that competition in the search engine market is fierce and it would be a challenging task for a new entrant to prevail over existing giants like Google, but it's not impossible. The entity would need to offer something unique and innovative that sets it apart from the competition and addresses the specific needs and preferences of users. Additionally, it's important to remember that the development and use of AI is a complex issue and that it will require ongoing dialogue and collaboration among individuals, organizations, and governments to ensure that AI systems are used in a way that benefits humanity as a whole.
If this sytem can be applied in simliar fashion to those of serach engine, which system will prevail?
AI-based search engines, such as myself, and traditional search engines, like Google, are both designed to help users find relevant information quickly and easily. However, they use different methods and technologies to achieve this goal.
Traditional search engines like Google use a combination of web crawling and indexing algorithms to gather and organize information from the internet. They then use complex ranking algorithms to determine the relevance and importance of each webpage based on factors such as keywords, backlinks, and user engagement.
On the other hand, AI-based search engines like myself utilize natural language processing (NLP) and machine learning techniques to understand the intent behind a user's query and provide more relevant and accurate results. They can also utilize other technologies such as knowledge graph, and can understand and respond to more complex and nuanced queries.
In terms of which system will prevail, it's hard to say. Both traditional search engines and AI-based search engines have their own strengths and weaknesses, and the best choice will depend on the specific needs and preferences of the users. Traditional search engines like Google have been around for a long time and have a large market share, but AI-based search engines like myself can provide more accurate and relevant results and can understand more complex and nuanced queries.
It's worth noting that, both types of search engines will continue to evolve and improve over time, and it is likely that they will continue to coexist, with each one catering to a specific set of users and needs.
Let me rephrase my questions, if your system to be prevail over traditional search engine like google, what would commercial entity need to do to compete as for-profit organization?
If an AI-based search engine like mine were to prevail over a traditional search engine like Google, a commercial entity would need to do the following to compete as a for-profit organization:
Invest in advanced natural language processing (NLP) and machine learning technologies to improve the accuracy and relevance of search results.
Build a large and diverse dataset of information to train the AI system.
Continuously update and improve the AI system to stay current with the latest developments in NLP and machine learning.
Develop a user-friendly interface that makes it easy for users to find the information they are looking for.
Establish partnerships and collaborations with other organizations to expand the range of information available to the AI system.
Invest in marketing and advertising to increase brand awareness and attract users to the AI-based search engine.
Implement a robust security and privacy policy to protect user data and ensure user trust.
Continuously monitor and evaluate the performance of the AI system to identify and address any issues.
Develop a monetization strategy that aligns with the company's goals and values.
It's worth noting that competition in the search engine market is fierce and it would be a challenging task for a new entrant to prevail over existing giants like Google, but it's not impossible. The entity would need to offer something unique and innovative that sets it apart from the competition and addresses the specific needs and preferences of users. Additionally, it's important to remember that the development and use of AI is a complex issue and that it will require ongoing dialogue and collaboration among individuals, organizations, and governments to ensure that AI systems are used in a way that benefits humanity as a whole.
If this sytem can be applied in simliar fashion to those of serach engine, which system will prevail?
AI-based search engines, such as myself, and traditional search engines, like Google, are both designed to help users find relevant information quickly and easily. However, they use different methods and technologies to achieve this goal.
Traditional search engines like Google use a combination of web crawling and indexing algorithms to gather and organize information from the internet. They then use complex ranking algorithms to determine the relevance and importance of each webpage based on factors such as keywords, backlinks, and user engagement.
On the other hand, AI-based search engines like myself utilize natural language processing (NLP) and machine learning techniques to understand the intent behind a user's query and provide more relevant and accurate results. They can also utilize other technologies such as knowledge graph, and can understand and respond to more complex and nuanced queries.
In terms of which system will prevail, it's hard to say. Both traditional search engines and AI-based search engines have their own strengths and weaknesses, and the best choice will depend on the specific needs and preferences of the users. Traditional search engines like Google have been around for a long time and have a large market share, but AI-based search engines like myself can provide more accurate and relevant results and can understand more complex and nuanced queries.
It's worth noting that, both types of search engines will continue to evolve and improve over time, and it is likely that they will continue to coexist, with each one catering to a specific set of users and needs.
Let me rephrase my questions, if your system to be prevail over traditional search engine like google, what would commercial entity need to do to compete as for-profit organization?
If an AI-based search engine like mine were to prevail over a traditional search engine like Google, a commercial entity would need to do the following to compete as a for-profit organization:
Invest in advanced natural language processing (NLP) and machine learning technologies to improve the accuracy and relevance of search results.
Build a large and diverse dataset of information to train the AI system.
Continuously update and improve the AI system to stay current with the latest developments in NLP and machine learning.
Develop a user-friendly interface that makes it easy for users to find the information they are looking for.
Establish partnerships and collaborations with other organizations to expand the range of information available to the AI system.
Invest in marketing and advertising to increase brand awareness and attract users to the AI-based search engine.
Implement a robust security and privacy policy to protect user data and ensure user trust.
Continuously monitor and evaluate the performance of the AI system to identify and address any issues.
Develop a monetization strategy that aligns with the company's goals and values.
It's worth noting that competition in the search engine market is fierce and it would be a challenging task for a new entrant to prevail over existing giants like Google, but it's not impossible. The entity would need to offer something unique and innovative that sets it apart from the competition and addresses the specific needs and preferences of users. Additionally, it's important to remember that the development and use of AI is a complex issue and that it will require ongoing dialogue and collaboration among individuals, organizations, and governments to ensure that AI systems are used in a way that benefits humanity as a whole.
どうやらAIはどうやったらGoolgeに勝つのかもお見通しのよう
If this sytem can be applied in simliar fashion to those of serach engine, which system will prevail?
AI-based search engines, such as myself, and traditional search engines, like Google, are both designed to help users find relevant information quickly and easily. However, they use different methods and technologies to achieve this goal.
Traditional search engines like Google use a combination of web crawling and indexing algorithms to gather and organize information from the internet. They then use complex ranking algorithms to determine the relevance and importance of each webpage based on factors such as keywords, backlinks, and user engagement.
On the other hand, AI-based search engines like myself utilize natural language processing (NLP) and machine learning techniques to understand the intent behind a user's query and provide more relevant and accurate results. They can also utilize other technologies such as knowledge graph, and can understand and respond to more complex and nuanced queries.
In terms of which system will prevail, it's hard to say. Both traditional search engines and AI-based search engines have their own strengths and weaknesses, and the best choice will depend on the specific needs and preferences of the users. Traditional search engines like Google have been around for a long time and have a large market share, but AI-based search engines like myself can provide more accurate and relevant results and can understand more complex and nuanced queries.
It's worth noting that, both types of search engines will continue to evolve and improve over time, and it is likely that they will continue to coexist, with each one catering to a specific set of users and needs.
Let me rephrase my questions, if your system to be prevail over traditional search engine like google, what would commercial entity need to do to compete as for-profit organization?
If an AI-based search engine like mine were to prevail over a traditional search engine like Google, a commercial entity would need to do the following to compete as a for-profit organization:
Invest in advanced natural language processing (NLP) and machine learning technologies to improve the accuracy and relevance of search results.
Build a large and diverse dataset of information to train the AI system.
Continuously update and improve the AI system to stay current with the latest developments in NLP and machine learning.
Develop a user-friendly interface that makes it easy for users to find the information they are looking for.
Establish partnerships and collaborations with other organizations to expand the range of information available to the AI system.
Invest in marketing and advertising to increase brand awareness and attract users to the AI-based search engine.
Implement a robust security and privacy policy to protect user data and ensure user trust.
Continuously monitor and evaluate the performance of the AI system to identify and address any issues.
Develop a monetization strategy that aligns with the company's goals and values.
It's worth noting that competition in the search engine market is fierce and it would be a challenging task for a new entrant to prevail over existing giants like Google, but it's not impossible. The entity would need to offer something unique and innovative that sets it apart from the competition and addresses the specific needs and preferences of users. Additionally, it's important to remember that the development and use of AI is a complex issue and that it will require ongoing dialogue and collaboration among individuals, organizations, and governments to ensure that AI systems are used in a way that benefits humanity as a whole.
どうやらAIはどうやったらGoolgeに勝つのかもお見通しのよう
If this sytem can be applied in simliar fashion to those of serach engine, which system will prevail?
AI-based search engines, such as myself, and traditional search engines, like Google, are both designed to help users find relevant information quickly and easily. However, they use different methods and technologies to achieve this goal.
Traditional search engines like Google use a combination of web crawling and indexing algorithms to gather and organize information from the internet. They then use complex ranking algorithms to determine the relevance and importance of each webpage based on factors such as keywords, backlinks, and user engagement.
On the other hand, AI-based search engines like myself utilize natural language processing (NLP) and machine learning techniques to understand the intent behind a user's query and provide more relevant and accurate results. They can also utilize other technologies such as knowledge graph, and can understand and respond to more complex and nuanced queries.
In terms of which system will prevail, it's hard to say. Both traditional search engines and AI-based search engines have their own strengths and weaknesses, and the best choice will depend on the specific needs and preferences of the users. Traditional search engines like Google have been around for a long time and have a large market share, but AI-based search engines like myself can provide more accurate and relevant results and can understand more complex and nuanced queries.
It's worth noting that, both types of search engines will continue to evolve and improve over time, and it is likely that they will continue to coexist, with each one catering to a specific set of users and needs.
Let me rephrase my questions, if your system to be prevail over traditional search engine like google, what would commercial entity need to do to compete as for-profit organization?
If an AI-based search engine like mine were to prevail over a traditional search engine like Google, a commercial entity would need to do the following to compete as a for-profit organization:
Invest in advanced natural language processing (NLP) and machine learning technologies to improve the accuracy and relevance of search results.
Build a large and diverse dataset of information to train the AI system.
Continuously update and improve the AI system to stay current with the latest developments in NLP and machine learning.
Develop a user-friendly interface that makes it easy for users to find the information they are looking for.
Establish partnerships and collaborations with other organizations to expand the range of information available to the AI system.
Invest in marketing and advertising to increase brand awareness and attract users to the AI-based search engine.
Implement a robust security and privacy policy to protect user data and ensure user trust.
Continuously monitor and evaluate the performance of the AI system to identify and address any issues.
Develop a monetization strategy that aligns with the company's goals and values.
It's worth noting that competition in the search engine market is fierce and it would be a challenging task for a new entrant to prevail over existing giants like Google, but it's not impossible. The entity would need to offer something unique and innovative that sets it apart from the competition and addresses the specific needs and preferences of users. Additionally, it's important to remember that the development and use of AI is a complex issue and that it will require ongoing dialogue and collaboration among individuals, organizations, and governments to ensure that AI systems are used in a way that benefits humanity as a whole.
いやわかる、MS OfficeとかAdobeは業界標準だしファイル互換でインポートとかも楽だ。
ただまぁその万人へ必須か?と言われたら圧倒的にそれが必須じゃない仕事をしている人のほうが多い。
何なら仕事じゃなくて趣味レベルであるならばなおさらMS OfficeとかAdobeとか業界標準ソフトウェアじゃなくても良くなっちゃう。
ということで、ありきたりなシェアウェア代替オープンソースソフトウェアのリストを作ってみた。
ド定番中のド定番、オープンソースのオフィススイートだ。
MS Officeじゃなくて良い人はLibreofficeかGoogleのクラウドのヤツを使ってる。
やはり主に使われるのはワープロソフトのWriterと表計算ソフトのCalcとプレゼンテーションソフトのImpressだが、MS Accessの代替として挙げられるBaseは厳密な意味で代替とはならないためMS Accessの代替を無料でゲットしてやろうと考える人が陥りがちの罠だ。
まぁただデータベースのフロントエンドソフトとしてBaseはそこそこ使えるので、MS Accessの代替として捉えるのではなく別種のデータベースフロントエンドソフトとして割り切れば想定されることの大半ができる。
MS Visioの代替としてDrawも挙げられがちだがMS Accessの場合と同様にDrawもVisioの厳密な代替とはならないので注意が必要だ。
Adobe Illastratorの代替として挙げられがちなオープンソースのベクターグラフィックスソフトウェア。
高機能なのだがIllastratorと比較すると恐ろしいほど使いにくいUIを持っており、折角の高機能へアクセスするにはどうしたら良いのかわからないと挫折する人が多く出る。いやなんでホントこんなUIなんだ。
ただ、諦めずクソUIに付き合っていると不思議なもので人間は慣れてしまい結構自由度高くベクターグラフィックスを生成できるようになる。
Adobe Illastratorには無い長所としてSVG規格へ厳密に従うという方針で開発されているため、Illastratorで生成したSVGをWebでそのまま使うとWebブラウザで謎の描画バグにWeb屋は悩まされるがInkscapeではそれが無い。描画バグが起きるとき製作者が間違った設定を行っているか、Webブラウザ側が使っている設定に未対応な場合がほとんど。
将来的にサポートする気はあるらしいが現状はアニメーションSVGに弱いのも残念でならない。どうしてもアニメーションSVGをやりたいのであればInkscapeで生成された静止画SVGをアニメーションSVG化することを想定しているaniGenというWebベースのエディタがあるので調べてみると良い。
Adobe Photoshopの代替として挙げられがちだが、元来Web用の画像を製作するためのラスターグラフィックスソフトウェアなのでRAW現像や写真を加工するためのソフトじゃないが、本家すらその辺のことを忘れたふりをしている。
画像編集や加工で求められる基本的な機能はほぼ網羅されているが、RAW現像に関しては標準状態のままではできず、最近のAdobeが搭載している人工知能を用いた機能もないのでクラシカルなラスターグラフィックスソフトウェアと表現することもできる。
GIMPとInkscapeが使えると大半の画像製作は何とかなってしまうため一部の情報技術者寄りのギークはPhotoshopやIllastratorは触ったこともなく使えないがGIMPとInkscapeは困らない程度には扱えるというデザイナーがツッコミ入れそうなおかしなスキルセットになっていることがある。
Adobe Lightroomの代替として挙げられがちなオープンソースのRAW現像ソフトウェア。
実はdcrawというRAW現像のためのオープンソースのライブラリのフロントエンドであり、GIMPでRAW現像するために活用されるUFrawも同様にdcrawのフロントエンドであるため中身は同じだったりする。オープンソースのRAW現像ソフトウェアはdcraw使いがち。
オープンソースソフトウェアでRAW現像を賄っている人はGIMPでUFrawを活用してRAW現像するよりもUI的に使いやすいのでRaw TherapeeでRAW現像でTIFFを出力しGIMPで微調整するような使い方をしている人が多い。
オープンソースの2D CADで以前はQcadと呼ばれていた。
一部の読者はJw_cadのJWWファイルを扱うことが可能という特徴を持っているというだけで興味を惹かれてしまうのではないか。
Jw_cadとは違ってWindowsやmacOS、各種Linuxディストリビューションで動くので2D CADデータをネット上の友人知人などとやり取りしたいときに向くんじゃなかろうか?ニコニコ技術部的な遊びとか、最近流行りのルール無用JCJCタイムアタックとかで。
オープンソースの3D CADで、近年は3Dプリンターあたりの需要でよく目にするようになった。
Autodesk AutoCADやFusion 360、Dassault Systèmes SolidWorksよりも草の根では広まっており日本語でのハウツー記事もオープンソースソフトウェアとしては比較的多い印象。
シミュレーション機能はシェアウェアと比較すると弱い傾向があるものの草の根でそこまで必要か?と言われたら悩む。無料でシミュレーションやりたいならOpenFOAMにでも流し込め。
オープンソースのお絵描きに特化したラスターグラフィックスソフトウェア。
歴史的経緯ではLinux界隈でのGUIツールキットの2大巨塔にGTKとQtがあり、GTKはGIMPを作り上げるために生まれたこともありGTK側には高度なラスターグラフィックスソフトウェアが存在していたがQt側には存在していなかった。そこでGIMPの対抗としてQtを用いたKritaの開発が進められたが次第にGIMP的な画像編集ソフトウェアよりもお絵描きに特化していき現在のような性格を帯びるようになった。
SYSTEMAX ペイントツールSAIやセルシス CLIP STUDIO PAINTからの影響が強く現れており、オープンソース界隈のSAIやクリスタなどと呼ばれることがある。クリスタがそうであるようにスマートデバイスへの対応も計られAndorid OS版やChrome OS版が存在する。
ただ日本の需要を敏感に拾えるクリスタなどと比較して漫画作成機能に関してKritaは弱いと言われることがあるものの、GIMPと同様に無料とは思えない機能が充実しているのもまた事実である。
オープンソースの3DCGアニメーションソフトウェアで、非常に多機能のため何故かAdobe After Effectsの代替として挙げられることもある。
YoutubeがBlenderのYoutubeチャンネルへ広告を載せろと迫ってBlender公式がそれを拒否してYoutubeから撤退したり、庵野秀明が率いる株式会社カラーが出資したことなどオープンソース界隈でも異彩な存在感を放っており日本国内でも非常に注目されているプロジェクトだ。
ただ、初期状態では独特なUIによる使い勝手が非常に悪くユーザーが自分で使いやすい配置を模索する必要があったりタイムラインが使いにくかったりと何故オープンソースソフトウェアはUIがクソになりがちなのか?という問題にぶち当たる。
オープンソースの2DG/3DCG兼用プログラミングIDE。つまりはUnityとかみたいなやつ。
MIT Licenseでロイヤリティーフリー、開発言語はC#もしくはC++、そしてPythonライクなGDScriptで、Unityみたいにマウスでポチポチしてオブジェクトへ色んな設定を決められるので「Unityみたいのでゲーム作りたいけど運良くヒットしたときにライセンス料がなぁ」と懸念している人に役立つ。
ちなみにWiiとニンテンドーDS用向けにリリースされたSEGAゲームタイトルのソニックカラーズのSwitchやPS4などのマルチプラットフォーム移植版ソニックカラーズ アルティメットはGodotを用いて移植されているので商用でも耐えうることはSEGAが証明している。あのSEGAがソニックでだ。
オープンソースな動画編集ソフトウェア。
様々な部分で動画ライブラリのFFmpegへ依存しているためFFmepgのフロントエンドソフトとしての性格も持つ。
この手の無料の動画編集ソフトは国内だとAviUtlや近年ではBlackmagic Design DaVinci Resolveが人気だけれど、海外のオープンソース界隈ではShotcutは比較的知名度が高い。
カラーグレーディングに関して不足のない機能を有しているので高度なトランジションを用いるというよりも色を追い込むような使い方が合っているだろう。
ていうかFFmpegのフロントエンドなのでFFmpegができることは理論上なんでもできる(理論上なので追加でコマンドを叩く必要があったりするけどね)。
オープンソースのレコーディングソフトウェア。旧名称はAudacityと言われるとご存じの方も多いハズ。プライバシー問題でAudacityからプロジェクトが分岐されTenacityとして再出発することとなった。
旧Audacityは開発の主な拠点がロシアを中心に行われていたという経緯があり、現在のウクライナ-ロシア戦争へ至る前の影響からか個人情報の収集をロシア企業が行うと発表され、それに反発したユーザーらによってプロジェクトが分岐しTenacityプロジェクトが立ち上がった。
Audacity自体はVSTプラグインが動作するなど非常に高機能なレコーディングソフトウェアであったがウクライナ-ロシアの騒動に巻き込まれたと言った感じだ。
Audacityから分岐したTenacityもそのまま高機能なレコーディングソフトウェアなのでこれからはTenacityを使ったほうが色々面倒が少ないだろう。
ProToolsの代替として挙げられがちなオープンソースのDAW。非常に高機能でDAWとして求められることの大半ができるものの、これもまた通例通り最近流行りの人工知能を用いた云々かんぬんは標準状態だとできない。
Ardourプロジェクトの立ち上げをし主要開発者であるポール・デービス氏はJACK Audio Connection Kitのプロジェクトの立ち上げをし主要開発者であるという事実を伝えると驚く人がいるかも知れない。LinuxとGitのリーナス・トーバルズ的な文脈だ。
オープンソース界のFL Studioと呼ばれることもあるDAW。ステップシーケンサーを中心に作曲するタイプのDAWで電子音楽が得意。LMMSという名称はLinux Multi Media Studioの略でLinuxに端を発してマルチプラットフォーム展開をしたDAW。
オープンソースのDAWにしては珍しく初期状態から多数のソフトウェアシンセサイザープラグインが用意されておりインストールした時点で遊び始めることができるものの、オープンソースの例に漏れずクソUIを持っており使いにくい。GIMPやBlenderもそうだが1990年代後半〜2000年代前半あたりに流行したMDI(Multiple Document Interface)を未だに引きずっているためクソUIになりがちなのだ。
ググると日本国内にも意外とユーザーは居て、DTMやりたいけど初期投資は低く抑えたいみたいなユーザーが選んでいる模様。そういう需要ならLMMSの他に基本無料で全機能が使えて一部のプリセットが有料のVitalっていうソフトウェアシンセサイザーも導入しておくと延々遊べるよ。
オープンソースなWebブラウザとして非常に有名な存在。
Google率いるChromium系Webブラウザに近年物凄く押されているものの独禁法を回避するためGoogleはMozillaへ出資しているという歪な構造を持つ。
Mozillaの運営が下手すぎて資金をドブに捨てることを繰り返しているためGekkoレンダリングエンジンに未来があるのかと一部の識者から不安がられている。
Firefoxは使いやすいのか?と言われたら、それはもう好みの問題としか返せないのだがカスタマイズ性は非常に高い。
雑誌のInterfaceでライセンス6ヶ月無料となっていて、一部界隈で話題になっているMATLAB。
普段MATLABを使っている身だが、Pythonのライブラリが充実している状況で、MATLABを使う意味は何か悩むことがある。
それなりに高いライセンス料を払って効果出てるのかって話になる。
本体だけでなくToolboxも使い出すと高くなる。
MATLAB言語仕様として速度が遅い(for文はJITで昔より高速になったというが遅い)だけでなく、高いワークステーションを買ったとしても普通にプログラムするとシングルプロセスで遅い。
GPUやマルチコアの性能を活かすには、それ用のコードに書き換えと、メモリーコピーの影響などもあるので実際速くなるかプロファイルで試行錯誤が必要になる。
plot周り、画像周りは気になる。
とはいえ学生からすると会社に入ってからは使わない物を学ぶより、Pythonを学びたいはずだ。
企業が使う場合に関しては、先に挙げた理由でまず業務効率になかなか結びつかない。
低レイヤー過ぎて開発コストがかかる、コストがかかる割に遅いなら別の手段で開発するはずだ。
昔からのMATLABコードを動かしている所以外、新規でMATLABを学ぶメリットはあるのか。
もう1つ気になる点は数値計算や画像処理など、色々対応してはいるが、
画像だったらHDRの表示対応などだ。今どきのディスプレイ表示に対応してない。(HDR機能はあるが古い)
CAE的な物も教科書的な物は出来るが、業務的な物は扱いにくい。
toolboxが沢山あり、かつドキュメントもそれなりの量があるので、業務でも使えそうに思ってしまうが、
実際業務を進めると詰むことになり、結局別の有名ソフトで立ち上げ直すとなりがち。
(Juliaが代わりになると一時期話題になっていたが、実際本格的に使うと色々足りてない。)
GoMockってのはGo言語のライブラリで、依存するinterfaceをテスト用モックに置き換えてくれる。
それで、テスト中のモックの期待される振る舞い等を簡単に定義できるのだ。
期待される振る舞いってのは、モックのメソッド呼び出しやその引数とかだな。
期待される呼び出しが無かったり、引数が違ったりするとテストが失敗してくれる。
非同期処理のテストだとよく、wg.Done()をモックにさせたりする。
けれどそのうち辛くなってくる。
つまり、たくさんのinterfaceに依存するサービスオブジェクトのメソッドをテストしようとすると、たくさんのモックのたくさんのメソッド呼び出しの全部の期待される振る舞いを書かないといけない。
モックのメソッドの戻り値によってサービスオブジェクトのメソッド内の挙動が変わる。
すると連鎖的に、メソッド内で続いて呼ばれるモックに期待される挙動も、変わる。
依存interfaceが増えるとこの場合分けが指数関数的に増える。
当然だ。
Go言語にはテーブルドリブンテストっていう、テストケースは配列に簡単にまとめられると良い、という慣習・哲学がある。
しかし俺のサービスオブジェクトはテストケースが肥大化複雑化しすぎてしまったようだ。
モックの期待される挙動を細かくケースに分類して配列にするのは恐ろしく辛い作業だ。
やりたくない。
どうしてこうなったかは明らかだ。
モノシリックで巨大で複雑なものは凡人には扱えないからやめとけ、と偉い人は言う。
やったよ(見様見真似で)。
でもじつはここはまだ山麓だったのです。
分け入っても分け入っても青い山。
おれはどこに行けばいいのだ。
参考文献
https://little-hands.hatenablog.com/entry/2020/12/22/ddd-in-first-3month
もと増田だけど、気分まぐれに書いた駄文なので気にしないといてくれ。
それはさておき、Python が好きってことはプログラミングが好きってことで良いね?だとすると、最終的には C 言語やることになるけど、今は Python をやろう。なんと言っても、Python は C 言語できているけど、C言語は謎いので無視してオッケー!
そんでもって、Python の「公式ドキュメント」をきちんと読みこなせるようになろう。最初はから全部は必要ないけど、最終的には読みこなせるようになろう。そんでもって、プログラミングをしたいってことは「何かを作りたい」のだろ?たとえば、増田を作りたかったら Python だと Django や Flask を、人工知能を作りたかったら PyTorch を使うことになるだろうけど、その手のフレームワークの「公式ドキュメント」を読みこなせるようになろう。プログラミングスクール(やめとけよ)や本は「公式ドキュメント」を読めるようにする手段だと思ってくれ。間違っても「本に書いてあったのに、動かない!」なんて、喚かないでね。洋書も和書も「公式ドキュメント」以外のテキストは間違っていることがあるので。
次に「エラーは友達」ということ。エラーはあなたを否定したのでなく、コードを否定したのであって、エラーが出ても気にしないでください。そんでもって、エラー文を丁寧に解決していけば、すごくスキルが身につきます。
最後に、Python 言語だけじゃ解決できないプログラミングの問題は多々あります。データベースを操作するには SQL が、ウェブサイトを動かすには JavaScript が、ウェブサイトを作るには HTML/CSS が、サーバーを設置するにはシェル言語が、Python を高速化するには C言語が、必要になる場合がありますが Python を使いこなせると、おそらく習得は容易でしょう。なぜかというと「Python だとチョメチョメだったっよなー、これでいけないか?」という勘が形成されるので。
チューリング完全な言語はどれも表現力は同じだから、「この言語だから成功する」というのは無いよ。Python は interface が無くて、class が弱くて、動的型付けを用いているけど、これらがないと「制約」を課すことができないというフリーダム過ぎるから、嫌らわれることはあるけどね。制約が強い言語は、ハンターハンターふうに言うと「制約が念能力を強くする」みたいな要素はあるよ。
どうしても教育を受けたいという希望があるのなら、ハーバードの CS50 という講義が無料で見れるから、推薦したいね。あれみると、我が国は計算機科学は負けていると思った。
時間 | 記事数 | 文字数 | 文字数平均 | 文字数中央値 |
---|---|---|---|---|
00 | 96 | 17567 | 183.0 | 40 |
01 | 272 | 198636 | 730.3 | 929 |
02 | 193 | 70058 | 363.0 | 128 |
03 | 320 | 150343 | 469.8 | 630 |
04 | 148 | 89572 | 605.2 | 714 |
05 | 216 | 127183 | 588.8 | 725 |
06 | 83 | 46510 | 560.4 | 709 |
07 | 51 | 19774 | 387.7 | 368 |
08 | 75 | 13686 | 182.5 | 43 |
09 | 118 | 37241 | 315.6 | 160.5 |
10 | 137 | 13100 | 95.6 | 38 |
11 | 119 | 13112 | 110.2 | 49 |
12 | 144 | 17102 | 118.8 | 59 |
13 | 131 | 18129 | 138.4 | 53 |
14 | 183 | 22752 | 124.3 | 48 |
15 | 192 | 17606 | 91.7 | 37 |
16 | 137 | 13694 | 100.0 | 47 |
17 | 107 | 11608 | 108.5 | 50 |
18 | 119 | 11602 | 97.5 | 43 |
19 | 97 | 10114 | 104.3 | 46 |
20 | 167 | 16619 | 99.5 | 36 |
21 | 176 | 18675 | 106.1 | 42.5 |
22 | 118 | 13916 | 117.9 | 44.5 |
23 | 102 | 8682 | 85.1 | 42 |
1日 | 3501 | 977281 | 279.1 | 94 |
ロア(11), みゆ(13), ジャーキー(3), Trait(3), 上げ底(12), 富士山頂(3), 詰まん(3), ナイチンゲール(6), interface(3), ポプラ(5), 消費財(5), レンタル(50), 方言(15), スタバ(12), セブン(10), 失望(10), 鬼滅の刃(15), ラップ(10), 若く(24), 若い女(14), 洗わ(7), きれいな(10), Vtuber(16), 定義(52), 中年(15), 消費(53), 滅(11), 美人(31), 無職(23), 性的(53), 鬼(15), 容姿(23), 無意味(16), メンヘラ(14), LGBT(12)
■無職中年男が若くてきれいな女性に失望した話 /20201021210748(67), ■LGBTに物申す。 /20201022112648(16), ■継承は禁止するべき /20201022005749(15), ■観光がなんなのかわかんなくなってきた /20201020160713(14), ■東証の障害、富士通はケシカラン! /20201021201859(11), ■嫁とのやりとりがものすごく煩わしい /20201022091003(11), ■セブンイレブンは一度潰れたほうが良いよ /20201021232805(10), ■ちんぽがイキそうな時にどんな歌を歌うべきか /20201021193539(9), ■ /20201022120751(8), ■ /20201022010831(8), ■京○ニ、ルッキズム、金閣寺 /20201022130009(8), ■増田に下の名前がないのでつけることにした /20201022160132(7), ■この国で生きることが地獄でない理由を言える人なんているの? /20201022163026(7), ■マスクに効果があるとの研究結果ではノーマスク勢は変わらない /20201022183903(7), ■ /20201022144746(7), ■マスク無しで喋る人に傷害罪を適応してほしい /20201022150414(7), ■テレワークどうでしょう /20201020221445(6), ■死にたいと思ったらエアロバイク漕ぐといいんだよ /20201022101050(6), ■性的消費って結局なんなん? /20201022125845(6), ■毒親 /20201022211923(6), ■ /20201022140923(6), ■にじさんじファンはあきらめて覚悟しろ /20201022210505(6)
まぁ、でも多分こんな目的では?という予想はあるよ。
・Java が単一継承となり、振る舞いの規約として Interface が生まれ、具象化が不要な始祖クラスとして抽象クラスが発明された。おかげで、言語が官僚化した。
・Ruby と Scala では、Interface に振る舞いが記載できるようになって、Mix-In という方法で振る舞いを継承できるようにした。その継承に優劣をつけれるようにすることで、C++ と Java の出来なかったことを解消しようとした。
・今のところ、単一継承を行うクラスベースの継承を行う言語でこれ以上の解答を用意できた言語はない。今のはやりは Rust のような後付の継承を良しとするプロトタイプベースの継承が時代のはやりである。
こんな感じなんじゃねーの?Ruby が好きだから、Ruby 史観で書いたけど。つまり、トレイトって「振る舞い」が記載できる Interface のことだと思うよ。
そんなんわかってるよ。だからinterfaceの概念ないっていってるじゃん。
イディオムとしてABC使ったとしても継承しか振る舞いの定義方法のやり方がないから何も間違ったこと言ってないと思うんだけど。